aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.in19
-rw-r--r--erts/aclocal.m42
-rw-r--r--erts/configure.in1
-rw-r--r--erts/doc/src/erlang.xml8
-rw-r--r--erts/doc/src/notes.xml2
-rw-r--r--erts/emulator/beam/atom.names1
-rw-r--r--erts/emulator/beam/beam_bif_load.c16
-rw-r--r--erts/emulator/beam/beam_emu.c11
-rw-r--r--erts/emulator/beam/bif.c190
-rw-r--r--erts/emulator/beam/big.c6
-rw-r--r--erts/emulator/beam/big.h4
-rw-r--r--erts/emulator/beam/binary.c103
-rw-r--r--erts/emulator/beam/erl_alloc.c190
-rw-r--r--erts/emulator/beam/erl_alloc.types57
-rw-r--r--erts/emulator/beam/erl_alloc_util.c28
-rw-r--r--erts/emulator/beam/erl_alloc_util.h3
-rw-r--r--erts/emulator/beam/erl_bif_ddll.c13
-rw-r--r--erts/emulator/beam/erl_bif_info.c6
-rw-r--r--erts/emulator/beam/erl_bif_port.c9
-rw-r--r--erts/emulator/beam/erl_bif_re.c18
-rw-r--r--erts/emulator/beam/erl_db_hash.c32
-rw-r--r--erts/emulator/beam/erl_db_tree.c64
-rw-r--r--erts/emulator/beam/erl_drv_thread.c7
-rw-r--r--erts/emulator/beam/erl_lock_check.c10
-rw-r--r--erts/emulator/beam/erl_lock_check.h2
-rw-r--r--erts/emulator/beam/erl_nif.c4
-rw-r--r--erts/emulator/beam/erl_port_task.c3
-rw-r--r--erts/emulator/beam/erl_printf_term.c101
-rw-r--r--erts/emulator/beam/erl_printf_term.h4
-rw-r--r--erts/emulator/beam/erl_process.c208
-rw-r--r--erts/emulator/beam/erl_process.h4
-rw-r--r--erts/emulator/beam/erl_trace.c22
-rw-r--r--erts/emulator/beam/global.h21
-rw-r--r--erts/emulator/beam/io.c106
-rw-r--r--erts/emulator/beam/safe_hash.c2
-rw-r--r--erts/emulator/beam/utils.c37
-rw-r--r--erts/emulator/hipe/hipe_bif2.c26
-rw-r--r--erts/emulator/hipe/hipe_mkliterals.c12
-rw-r--r--erts/emulator/sys/common/erl_check_io.c5
-rw-r--r--erts/emulator/sys/common/erl_mseg.c35
-rw-r--r--erts/emulator/sys/common/erl_mseg.h11
-rw-r--r--erts/emulator/sys/common/erl_poll.c7
-rw-r--r--erts/emulator/sys/win32/erl_poll.c2
-rw-r--r--erts/emulator/test/binary_SUITE.erl123
-rw-r--r--erts/emulator/test/code_SUITE.erl2
-rw-r--r--erts/emulator/test/driver_SUITE.erl94
-rw-r--r--erts/emulator/test/process_SUITE.erl40
-rw-r--r--erts/etc/common/erlexec.c14
-rw-r--r--erts/etc/unix/cerl.src66
-rwxr-xr-xerts/etc/win32/nsis/find_redist.sh15
-rw-r--r--erts/include/internal/erl_printf_format.h2
-rw-r--r--erts/include/internal/libatomic_ops/ethr_atomic.h26
-rw-r--r--erts/include/internal/sparc32/atomic.h29
-rw-r--r--erts/include/internal/tile/atomic.h33
-rw-r--r--erts/lib_src/common/erl_printf_format.c29
-rw-r--r--lib/asn1/doc/src/notes.xml2
-rw-r--r--lib/asn1/test/test_inline.erl6
-rw-r--r--lib/common_test/doc/src/notes.xml2
-rw-r--r--lib/compiler/doc/src/compile.xml2
-rw-r--r--lib/compiler/doc/src/notes.xml2
-rw-r--r--lib/debugger/doc/src/notes.xml2
-rwxr-xr-xlib/dialyzer/doc/src/notes.xml2
-rw-r--r--lib/docbuilder/doc/src/character_entities.xml4
-rw-r--r--lib/docbuilder/doc/src/inline_tags.xml7
-rw-r--r--lib/edoc/doc/src/notes.xml2
-rw-r--r--lib/erl_docgen/priv/bin/specs_gen.escript101
-rw-r--r--lib/erl_docgen/priv/xsl/db_html.xsl556
-rw-r--r--lib/erl_docgen/priv/xsl/db_man.xsl424
-rw-r--r--lib/erl_docgen/priv/xsl/db_pdf.xsl451
-rw-r--r--lib/erl_docgen/src/otp_specs.erl14
-rw-r--r--lib/erl_interface/doc/src/notes.xml2
-rw-r--r--lib/erl_interface/src/legacy/erl_connect.c5
-rw-r--r--lib/et/src/et_wx_contents_viewer.erl4
-rw-r--r--lib/et/src/et_wx_viewer.erl6
-rw-r--r--lib/hipe/doc/src/notes.xml2
-rw-r--r--lib/inets/doc/src/httpc.xml69
-rw-r--r--lib/inets/doc/src/httpd.xml14
-rw-r--r--lib/inets/doc/src/inets.xml54
-rw-r--r--lib/inets/doc/src/mod_esi.xml29
-rw-r--r--lib/inets/doc/src/mod_security.xml4
-rw-r--r--lib/inets/doc/src/notes.xml137
-rw-r--r--lib/inets/src/ftp/ftp.erl259
-rw-r--r--lib/inets/src/http_client/httpc.erl82
-rw-r--r--lib/inets/src/http_client/httpc_handler.erl274
-rw-r--r--lib/inets/src/http_client/httpc_handler_sup.erl8
-rw-r--r--lib/inets/src/http_client/httpc_manager.erl509
-rw-r--r--lib/inets/src/http_client/httpc_request.erl104
-rw-r--r--lib/inets/src/http_lib/http_internal.hrl6
-rw-r--r--lib/inets/src/http_lib/http_transport.erl99
-rw-r--r--lib/inets/src/http_lib/http_util.erl18
-rw-r--r--lib/inets/src/http_server/httpd_file.erl17
-rw-r--r--lib/inets/src/http_server/httpd_log.erl4
-rw-r--r--lib/inets/src/http_server/httpd_request_handler.erl6
-rw-r--r--lib/inets/src/http_server/httpd_sup.erl47
-rw-r--r--lib/inets/src/http_server/httpd_util.erl38
-rw-r--r--lib/inets/src/http_server/mod_esi.erl8
-rw-r--r--lib/inets/src/inets_app/inets.appup.src16
-rw-r--r--lib/inets/test/ftp_SUITE.erl53
-rw-r--r--lib/inets/test/httpc_SUITE.erl418
-rw-r--r--lib/inets/test/httpd_basic_SUITE.erl56
-rw-r--r--lib/inets/test/httpd_mod.erl5
-rw-r--r--lib/inets/test/inets_app_test.erl14
-rw-r--r--lib/inets/test/inets_test_lib.erl11
-rw-r--r--lib/inets/test/inets_test_lib.hrl2
-rw-r--r--lib/inets/vsn.mk2
-rw-r--r--lib/jinterface/doc/src/notes.xml2
-rw-r--r--lib/kernel/doc/specs/.gitignore1
-rw-r--r--lib/kernel/doc/src/Makefile40
-rw-r--r--lib/kernel/doc/src/application.xml234
-rw-r--r--lib/kernel/doc/src/auth.xml51
-rw-r--r--lib/kernel/doc/src/code.xml6
-rw-r--r--lib/kernel/doc/src/disk_log.xml451
-rw-r--r--lib/kernel/doc/src/erl_boot_server.xml44
-rw-r--r--lib/kernel/doc/src/erl_ddll.xml129
-rw-r--r--lib/kernel/doc/src/error_handler.xml44
-rw-r--r--lib/kernel/doc/src/error_logger.xml135
-rw-r--r--lib/kernel/doc/src/file.xml895
-rw-r--r--lib/kernel/doc/src/gen_sctp.xml237
-rw-r--r--lib/kernel/doc/src/gen_tcp.xml163
-rw-r--r--lib/kernel/doc/src/gen_udp.xml101
-rw-r--r--lib/kernel/doc/src/global.xml176
-rw-r--r--lib/kernel/doc/src/global_group.xml157
-rw-r--r--lib/kernel/doc/src/heart.xml16
-rw-r--r--lib/kernel/doc/src/inet.xml193
-rw-r--r--lib/kernel/doc/src/inet_res.xml271
-rw-r--r--lib/kernel/doc/src/net_adm.xml74
-rw-r--r--lib/kernel/doc/src/net_kernel.xml90
-rw-r--r--lib/kernel/doc/src/notes.xml2
-rw-r--r--lib/kernel/doc/src/os.xml44
-rw-r--r--lib/kernel/doc/src/pg2.xml66
-rw-r--r--lib/kernel/doc/src/rpc.xml330
-rw-r--r--lib/kernel/doc/src/seq_trace.xml95
-rw-r--r--lib/kernel/doc/src/specs.xml33
-rw-r--r--lib/kernel/doc/src/wrap_log_reader.xml66
-rw-r--r--lib/kernel/include/inet.hrl15
-rw-r--r--lib/kernel/src/application.erl172
-rw-r--r--lib/kernel/src/auth.erl16
-rw-r--r--lib/kernel/src/disk_log.erl252
-rw-r--r--lib/kernel/src/disk_log.hrl24
-rw-r--r--lib/kernel/src/erl_boot_server.erl28
-rw-r--r--lib/kernel/src/erl_ddll.erl49
-rw-r--r--lib/kernel/src/error_handler.erl13
-rw-r--r--lib/kernel/src/error_logger.erl79
-rw-r--r--lib/kernel/src/file.erl375
-rw-r--r--lib/kernel/src/gen_sctp.erl148
-rw-r--r--lib/kernel/src/gen_tcp.erl82
-rw-r--r--lib/kernel/src/gen_udp.erl52
-rw-r--r--lib/kernel/src/global.erl92
-rw-r--r--lib/kernel/src/global_group.erl58
-rw-r--r--lib/kernel/src/global_search.erl5
-rw-r--r--lib/kernel/src/heart.erl10
-rw-r--r--lib/kernel/src/inet.erl96
-rw-r--r--lib/kernel/src/inet_res.erl176
-rw-r--r--lib/kernel/src/inet_udp.erl6
-rw-r--r--lib/kernel/src/net_adm.erl41
-rw-r--r--lib/kernel/src/net_kernel.erl37
-rw-r--r--lib/kernel/src/os.erl23
-rw-r--r--lib/kernel/src/pg2.erl68
-rw-r--r--lib/kernel/src/rpc.erl192
-rw-r--r--lib/kernel/src/seq_trace.erl44
-rw-r--r--lib/kernel/src/wrap_log_reader.erl35
-rw-r--r--lib/mnesia/doc/src/notes.xml2
-rw-r--r--lib/mnesia/src/mnesia_dumper.erl8
-rw-r--r--lib/mnesia/src/mnesia_schema.erl5
-rw-r--r--lib/mnesia/test/.gitignore9
-rw-r--r--lib/mnesia/test/mnesia_durability_test.erl4
-rw-r--r--lib/mnesia/test/mnesia_qlc_test.erl3
-rw-r--r--lib/mnesia/test/mnesia_test_lib.erl90
-rw-r--r--lib/mnesia/test/mnesia_trans_access_test.erl36
-rw-r--r--lib/mnesia/test/mt.erl15
-rw-r--r--lib/observer/doc/src/notes.xml2
-rw-r--r--lib/odbc/doc/src/notes.xml2
-rw-r--r--lib/public_key/doc/src/notes.xml2
-rw-r--r--lib/reltool/src/reltool_server.erl189
-rw-r--r--lib/reltool/src/reltool_sys_win.erl26
-rw-r--r--lib/reltool/test/Makefile4
-rw-r--r--lib/reltool/test/reltool_server_SUITE.erl125
-rw-r--r--lib/reltool/test/reltool_server_SUITE_data/Makefile.src19
-rw-r--r--lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/ebin/x.app7
-rw-r--r--lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/src/mylib.erl4
-rw-r--r--lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/src/x.erl4
-rw-r--r--lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/ebin/y.app7
-rw-r--r--lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/src/mylib.erl4
-rw-r--r--lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/src/y.erl4
-rw-r--r--lib/runtime_tools/doc/src/notes.xml2
-rw-r--r--lib/sasl/Makefile4
-rw-r--r--lib/sasl/doc/src/notes.xml2
-rw-r--r--lib/sasl/doc/src/sasl_app.xml7
-rw-r--r--lib/sasl/examples/ebin/.gitignore0
-rw-r--r--lib/sasl/examples/src/Makefile78
-rw-r--r--lib/sasl/examples/src/target_system.erl259
-rw-r--r--lib/sasl/src/rb.erl14
-rw-r--r--lib/sasl/src/sasl.erl21
-rw-r--r--lib/sasl/test/.gitignore5
-rw-r--r--lib/sasl/test/Makefile91
-rw-r--r--lib/sasl/test/alarm_handler_SUITE.erl179
-rw-r--r--lib/sasl/test/installer.erl778
-rw-r--r--lib/sasl/test/overload_SUITE.erl175
-rw-r--r--lib/sasl/test/rb_SUITE.erl606
-rw-r--r--lib/sasl/test/release_handler_SUITE.erl1651
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/Makefile.src108
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/ebin/a.app8
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/src/a.erl47
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/src/a_sup.erl37
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/ebin/app1.app9
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1.erl22
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1_server.erl32
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1_sup.erl17
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/ebin/app2.app9
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2.erl17
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2_server.erl32
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2_sup.erl17
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/ebin/app1.app9
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/ebin/app1.appup4
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1.erl22
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1_server.erl35
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1_sup.erl17
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/ebin/app2.app9
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2.erl17
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2_server.erl32
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2_sup.erl17
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/c/aa.erl41
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/c/b.erl38
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/c/c.app8
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/c/c_sup.erl40
-rwxr-xr-xlib/sasl/test/release_handler_SUITE_data/clients/start_cli138
-rwxr-xr-xlib/sasl/test/release_handler_SUITE_data/clients/start_cli237
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/ebin/a.app8
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a.app8
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a.erl49
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a_sup.erl37
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/ebin/a.app8
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/ebin/a.appup3
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/src/a.erl54
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/src/a_sup.erl37
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/lib/installer-1.0/ebin/installer.app6
l---------lib/sasl/test/release_handler_SUITE_data/lib/installer-1.0/src/installer.erl1
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_atom.erl26
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_list.erl26
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_numeric.erl26
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_string.erl26
-rw-r--r--lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_tuple.erl26
-rwxr-xr-xlib/sasl/test/release_handler_SUITE_data/start29
l---------lib/sasl/test/release_handler_SUITE_data/target_system.erl1
-rw-r--r--lib/sasl/test/sasl.cover2
-rw-r--r--lib/sasl/test/sasl.spec1
-rw-r--r--lib/sasl/test/sasl_SUITE.erl98
-rw-r--r--lib/sasl/test/systools_SUITE.erl2112
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/ebin/db.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/ebin/db.appup20
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/src/db1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/src/db2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/ebin/fe.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/ebin/fe.appup27
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe3.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_appup/lib/fe-3.1/ebin/fe.app7
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_appup/lib/fe-3.1/ebin/fe.appup27
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/ebin/db.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/ebin/db.appup20
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/src/db1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/src/db2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/ebin/fe.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/ebin/fe.appup27
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe3.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/ebin/db.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/ebin/db.appup20
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/src/db2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/src/db3.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/ebin/fe.appup27
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe3.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/ebin/db.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/ebin/db.appup20
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/src/db1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/src/db2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/ebin/fe.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/ebin/fe.appup27
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe3.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-2.1/ebin/fe.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-2.1/ebin/fe.appup27
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-3.1/ebin/fe.app7
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/ebin/db.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/src/db1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/src/db2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/ebin/db.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/src/db1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/src/db2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/ebin/db.app7
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/ebin/db.appup20
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/src/db1.erl13
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/src/db2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/ebin/db.app7
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/ebin/db.appup20
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/src/db1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/src/db2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/ebin/fe.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe3.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/ebin/fe.app8
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe1.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe3.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/ebin/fe.app7
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/ebin/fe.appup27
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe1.erl7
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe2.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe3.erl2
-rw-r--r--lib/sasl/test/systools_SUITE_data/lib/kernel/ebin/kernel.app6
-rw-r--r--lib/sasl/test/systools_SUITE_data/lib/kernel/ebin/kernel.appup12
-rw-r--r--lib/sasl/test/systools_SUITE_data/lib/stdlib/ebin/stdlib.app6
-rw-r--r--lib/sasl/test/systools_SUITE_data/lib/stdlib/ebin/stdlib.appup12
-rw-r--r--lib/sasl/test/systools_rc_SUITE.erl488
-rw-r--r--lib/snmp/doc/src/files.mk1
-rw-r--r--lib/snmp/doc/src/notes.xml115
-rw-r--r--lib/snmp/doc/src/snmp_agent_config_files.xml60
-rw-r--r--lib/snmp/doc/src/snmp_agent_netif.xml198
-rw-r--r--lib/snmp/doc/src/snmp_community_mib.xml26
-rw-r--r--lib/snmp/doc/src/snmp_target_mib.xml24
-rw-r--r--lib/snmp/doc/src/snmpa.xml250
-rw-r--r--lib/snmp/doc/src/snmpa_conf.xml25
-rw-r--r--lib/snmp/doc/src/snmpm.xml559
-rw-r--r--lib/snmp/mibs/Makefile.in3
-rw-r--r--lib/snmp/mibs/TRANSPORT-ADDRESS-MIB.mib417
-rw-r--r--lib/snmp/priv/conf/agent/target_addr.conf10
-rw-r--r--lib/snmp/src/agent/snmp_community_mib.erl15
-rw-r--r--lib/snmp/src/agent/snmp_notification_mib.erl7
-rw-r--r--lib/snmp/src/agent/snmp_target_mib.erl168
-rw-r--r--lib/snmp/src/agent/snmpa.erl62
-rw-r--r--lib/snmp/src/agent/snmpa_acm.erl26
-rw-r--r--lib/snmp/src/agent/snmpa_agent.erl321
-rw-r--r--lib/snmp/src/agent/snmpa_authentication_service.erl9
-rw-r--r--lib/snmp/src/agent/snmpa_conf.erl63
-rw-r--r--lib/snmp/src/agent/snmpa_internal.hrl1
-rw-r--r--lib/snmp/src/agent/snmpa_mpd.erl44
-rw-r--r--lib/snmp/src/agent/snmpa_net_if.erl79
-rw-r--r--lib/snmp/src/agent/snmpa_trap.erl229
-rw-r--r--lib/snmp/src/agent/snmpa_usm.erl17
-rw-r--r--lib/snmp/src/app/snmp.appup.src118
-rw-r--r--lib/snmp/src/manager/snmpm.erl566
-rw-r--r--lib/snmp/src/manager/snmpm_internal.hrl7
-rw-r--r--lib/snmp/src/manager/snmpm_net_if.erl18
-rw-r--r--lib/snmp/src/manager/snmpm_server.erl684
-rw-r--r--lib/snmp/src/manager/snmpm_usm.erl5
-rw-r--r--lib/snmp/src/misc/snmp_conf.erl207
-rw-r--r--lib/snmp/src/misc/snmp_config.erl20
-rw-r--r--lib/snmp/src/misc/snmp_log.erl5
-rw-r--r--lib/snmp/src/misc/snmp_misc.erl11
-rw-r--r--lib/snmp/src/misc/snmp_pdus.erl44
-rw-r--r--lib/snmp/test/Makefile7
-rw-r--r--lib/snmp/test/snmp_agent_test.erl298
-rw-r--r--lib/snmp/test/snmp_agent_test_lib.erl15
-rw-r--r--lib/snmp/test/snmp_manager_test.erl1090
-rw-r--r--lib/snmp/test/snmp_manager_user.erl135
-rw-r--r--lib/snmp/test/snmp_pdus_test.erl55
-rw-r--r--lib/snmp/vsn.mk2
-rw-r--r--lib/ssl/doc/src/notes.xml84
-rw-r--r--lib/ssl/src/ssl.appup.src4
-rw-r--r--lib/ssl/src/ssl.erl4
-rw-r--r--lib/ssl/src/ssl_manager.erl30
-rw-r--r--lib/stdlib/doc/specs/.gitignore1
-rw-r--r--lib/stdlib/doc/src/Makefile15
-rw-r--r--lib/stdlib/doc/src/array.xml177
-rw-r--r--lib/stdlib/doc/src/base64.xml35
-rw-r--r--lib/stdlib/doc/src/beam_lib.xml271
-rw-r--r--lib/stdlib/doc/src/binary.xml150
-rw-r--r--lib/stdlib/doc/src/c.xml127
-rw-r--r--lib/stdlib/doc/src/calendar.xml226
-rw-r--r--lib/stdlib/doc/src/dets.xml705
-rw-r--r--lib/stdlib/doc/src/dict.xml212
-rw-r--r--lib/stdlib/doc/src/digraph.xml395
-rw-r--r--lib/stdlib/doc/src/digraph_utils.xml170
-rw-r--r--lib/stdlib/doc/src/epp.xml62
-rw-r--r--lib/stdlib/doc/src/erl_eval.xml153
-rw-r--r--lib/stdlib/doc/src/erl_expand_records.xml6
-rw-r--r--lib/stdlib/doc/src/erl_id_trans.xml6
-rw-r--r--lib/stdlib/doc/src/erl_internal.xml73
-rw-r--r--lib/stdlib/doc/src/erl_lint.xml50
-rw-r--r--lib/stdlib/doc/src/erl_parse.xml122
-rw-r--r--lib/stdlib/doc/src/erl_pp.xml123
-rw-r--r--lib/stdlib/doc/src/erl_scan.xml362
-rw-r--r--lib/stdlib/doc/src/ets.xml255
-rw-r--r--lib/stdlib/doc/src/file_sorter.xml266
-rw-r--r--lib/stdlib/doc/src/filelib.xml89
-rw-r--r--lib/stdlib/doc/src/filename.xml156
-rw-r--r--lib/stdlib/doc/src/gb_sets.xml288
-rw-r--r--lib/stdlib/doc/src/gb_trees.xml216
-rw-r--r--lib/stdlib/doc/src/gen_event.xml16
-rw-r--r--lib/stdlib/doc/src/io.xml354
-rw-r--r--lib/stdlib/doc/src/io_lib.xml179
-rw-r--r--lib/stdlib/doc/src/lib.xml37
-rw-r--r--lib/stdlib/doc/src/lists.xml764
-rw-r--r--lib/stdlib/doc/src/log_mf_h.xml31
-rw-r--r--lib/stdlib/doc/src/math.xml2
-rw-r--r--lib/stdlib/doc/src/ms_transform.xml25
-rw-r--r--lib/stdlib/doc/src/notes.xml2
-rw-r--r--lib/stdlib/doc/src/orddict.xml213
-rw-r--r--lib/stdlib/doc/src/ordsets.xml153
-rw-r--r--lib/stdlib/doc/src/pg.xml55
-rw-r--r--lib/stdlib/doc/src/pool.xml46
-rw-r--r--lib/stdlib/doc/src/proc_lib.xml163
-rw-r--r--lib/stdlib/doc/src/proplists.xml210
-rw-r--r--lib/stdlib/doc/src/qlc.xml646
-rw-r--r--lib/stdlib/doc/src/queue.xml286
-rw-r--r--lib/stdlib/doc/src/random.xml50
-rw-r--r--lib/stdlib/doc/src/re.xml131
-rw-r--r--lib/stdlib/doc/src/regexp.xml152
-rw-r--r--lib/stdlib/doc/src/sets.xml153
-rw-r--r--lib/stdlib/doc/src/shell.xml37
-rw-r--r--lib/stdlib/doc/src/slave.xml60
-rw-r--r--lib/stdlib/doc/src/sofs.xml1021
-rw-r--r--lib/stdlib/doc/src/specs.xml63
-rw-r--r--lib/stdlib/doc/src/string.xml230
-rw-r--r--lib/stdlib/doc/src/supervisor.xml218
-rw-r--r--lib/stdlib/doc/src/supervisor_bridge.xml47
-rw-r--r--lib/stdlib/doc/src/sys.xml212
-rw-r--r--lib/stdlib/doc/src/timer.xml173
-rw-r--r--lib/stdlib/doc/src/unicode.xml174
-rw-r--r--lib/stdlib/doc/src/win32reg.xml98
-rw-r--r--lib/stdlib/doc/src/zip.xml281
-rw-r--r--lib/stdlib/include/zip.hrl4
-rw-r--r--lib/stdlib/src/array.erl111
-rw-r--r--lib/stdlib/src/base64.erl24
-rw-r--r--lib/stdlib/src/beam_lib.erl117
-rw-r--r--lib/stdlib/src/binary.erl37
-rw-r--r--lib/stdlib/src/c.erl66
-rw-r--r--lib/stdlib/src/calendar.erl91
-rw-r--r--lib/stdlib/src/dets.erl301
-rw-r--r--lib/stdlib/src/dict.erl99
-rw-r--r--lib/stdlib/src/digraph.erl159
-rw-r--r--lib/stdlib/src/digraph_utils.erl84
-rw-r--r--lib/stdlib/src/epp.erl43
-rw-r--r--lib/stdlib/src/erl_eval.erl134
-rw-r--r--lib/stdlib/src/erl_expand_records.erl6
-rw-r--r--lib/stdlib/src/erl_internal.erl39
-rw-r--r--lib/stdlib/src/erl_lint.erl31
-rw-r--r--lib/stdlib/src/erl_parse.yrl39
-rw-r--r--lib/stdlib/src/erl_pp.erl65
-rw-r--r--lib/stdlib/src/erl_scan.erl115
-rw-r--r--lib/stdlib/src/ets.erl148
-rw-r--r--lib/stdlib/src/file_sorter.erl119
-rw-r--r--lib/stdlib/src/filelib.erl39
-rw-r--r--lib/stdlib/src/filename.erl84
-rw-r--r--lib/stdlib/src/gb_sets.erl147
-rw-r--r--lib/stdlib/src/gb_trees.erl109
-rw-r--r--lib/stdlib/src/gen_event.erl11
-rw-r--r--lib/stdlib/src/io.erl195
-rw-r--r--lib/stdlib/src/io_lib.erl78
-rw-r--r--lib/stdlib/src/io_lib_fread.erl41
-rw-r--r--lib/stdlib/src/lib.erl20
-rw-r--r--lib/stdlib/src/lists.erl425
-rw-r--r--lib/stdlib/src/log_mf_h.erl21
-rw-r--r--lib/stdlib/src/ms_transform.erl16
-rw-r--r--lib/stdlib/src/orddict.erl98
-rw-r--r--lib/stdlib/src/ordsets.erl72
-rw-r--r--lib/stdlib/src/otp_internal.erl96
-rw-r--r--lib/stdlib/src/pg.erl28
-rw-r--r--lib/stdlib/src/pool.erl24
-rw-r--r--lib/stdlib/src/proc_lib.erl138
-rw-r--r--lib/stdlib/src/proplists.erl151
-rw-r--r--lib/stdlib/src/qlc.erl304
-rw-r--r--lib/stdlib/src/qlc_pt.erl18
-rw-r--r--lib/stdlib/src/queue.erl123
-rw-r--r--lib/stdlib/src/random.erl24
-rw-r--r--lib/stdlib/src/re.erl47
-rw-r--r--lib/stdlib/src/regexp.erl69
-rw-r--r--lib/stdlib/src/sets.erl74
-rw-r--r--lib/stdlib/src/shell.erl23
-rw-r--r--lib/stdlib/src/slave.erl52
-rw-r--r--lib/stdlib/src/sofs.erl545
-rw-r--r--lib/stdlib/src/string.erl175
-rw-r--r--lib/stdlib/src/supervisor.erl132
-rw-r--r--lib/stdlib/src/supervisor_bridge.erl18
-rw-r--r--lib/stdlib/src/sys.erl182
-rw-r--r--lib/stdlib/src/timer.erl142
-rw-r--r--lib/stdlib/src/unicode.erl51
-rw-r--r--lib/stdlib/src/win32reg.erl70
-rw-r--r--lib/stdlib/src/zip.erl185
-rw-r--r--lib/stdlib/test/dets_SUITE.erl26
-rw-r--r--lib/stdlib/test/erl_eval_SUITE.erl2
-rw-r--r--lib/stdlib/test/erl_pp_SUITE.erl2
-rw-r--r--lib/stdlib/test/sofs_SUITE.erl27
-rw-r--r--lib/stdlib/test/supervisor_SUITE.erl51
-rw-r--r--lib/stdlib/test/timer_simple_SUITE.erl31
-rw-r--r--lib/test_server/doc/src/notes.xml2
-rw-r--r--lib/tools/doc/src/notes.xml2
-rw-r--r--lib/tools/src/cover.erl1
-rw-r--r--lib/tools/test/cover_SUITE.erl4
-rw-r--r--lib/wx/doc/src/notes.xml2
-rw-r--r--lib/xmerl/doc/examples/Makefile61
-rw-r--r--lib/xmerl/doc/examples/mkdocs.erl9
-rw-r--r--lib/xmerl/doc/examples/sdocbook2xhtml.erl823
-rwxr-xr-xlib/xmerl/doc/examples/test_html.erl225
-rw-r--r--lib/xmerl/doc/examples/xmerl_test.erl522
-rwxr-xr-xlib/xmerl/doc/examples/xml/test.xml6
-rwxr-xr-xlib/xmerl/doc/examples/xml/test2.xml8
-rwxr-xr-xlib/xmerl/doc/examples/xml/test3.xml8
-rwxr-xr-xlib/xmerl/doc/examples/xml/test4.xml9
-rwxr-xr-xlib/xmerl/doc/examples/xml/test5.xml9
-rwxr-xr-xlib/xmerl/doc/examples/xml/testdtd.dtd17
-rwxr-xr-xlib/xmerl/doc/examples/xml/xmerl.xml523
-rw-r--r--lib/xmerl/doc/examples/xml/xmerl_xs.xml541
-rw-r--r--lib/xmerl/doc/examples/xserl_test.erl85
-rw-r--r--lib/xmerl/doc/src/notes.xml2
-rw-r--r--lib/xmerl/src/xmerl_sax_parser.erl5
-rw-r--r--lib/xmerl/src/xmerl_scan.erl2
-rw-r--r--lib/xmerl/src/xmerl_xsd.erl16
-rw-r--r--lib/xmerl/src/xmerl_xsd_type.erl4
-rw-r--r--lib/xmerl/test/Makefile127
-rw-r--r--lib/xmerl/test/ReadMe24
-rw-r--r--lib/xmerl/test/testcases.dtd103
-rw-r--r--lib/xmerl/test/xmerl.cover2
-rw-r--r--lib/xmerl/test/xmerl.spec1
-rw-r--r--lib/xmerl/test/xmerl_SUITE.erl634
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/cpd.tar.gzbin0 -> 2128 bytes
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/eventp/CMOM.xml30261
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/eventp/CelloMOM.stub14
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/eventp/CelloMOM.xml30261
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/eventp/mp.dtd274
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/eventp/wurfl.stub5
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/eventp/wurfl.xml9
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/misc.tar.gzbin0 -> 47121 bytes
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/documentRoot.xml43
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/e1074.xml18
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/e1075.xml18
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/e1076.xml13
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/e1077.xml16
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/e1078.xml11
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/motorcycles.xml25
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/myBS_model.xml6
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/purchaseOrder.xml36
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/xpath.xml25
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_abbrev.erl266
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_lib.erl184
-rw-r--r--lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_text.erl28
-rw-r--r--lib/xmerl/test/xmerl_app_test.erl242
-rw-r--r--lib/xmerl/test/xmerl_appup_test.erl392
-rw-r--r--lib/xmerl/test/xmerl_sax_SUITE.erl110
-rw-r--r--lib/xmerl/test/xmerl_sax_std_SUITE.erl25635
-rw-r--r--lib/xmerl/test/xmerl_std_SUITE.erl11799
-rw-r--r--lib/xmerl/test/xmerl_std_SUITE_data/ibm.tgzbin0 -> 112986 bytes
-rw-r--r--lib/xmerl/test/xmerl_std_SUITE_data/japanese.tgzbin0 -> 376850 bytes
-rw-r--r--lib/xmerl/test/xmerl_std_SUITE_data/oasis.tgzbin0 -> 26750 bytes
-rw-r--r--lib/xmerl/test/xmerl_std_SUITE_data/sun.tgzbin0 -> 23117 bytes
-rw-r--r--lib/xmerl/test/xmerl_std_SUITE_data/w3c-copyright-19980720.html81
-rw-r--r--lib/xmerl/test/xmerl_std_SUITE_data/xmltest.tgzbin0 -> 43920 bytes
-rw-r--r--lib/xmerl/test/xmerl_test_lib.erl92
-rw-r--r--lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE.erl24131
-rw-r--r--lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msx_failed_cases.log2234
-rw-r--r--lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msxsdtest.tar.gzbin0 -> 703416 bytes
-rw-r--r--lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html82
-rw-r--r--lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE.erl15962
-rw-r--r--lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nist_failed_cases.log894
-rw-r--r--lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nisttest.tar.gzbin0 -> 1113062 bytes
-rw-r--r--lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html82
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE.erl1148
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/4Q99.xml25
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/CxDataType_Rel5.xsd211
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/address.xsd69
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes.xsd112
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes1.xml44
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes2.xml44
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/enum_bug.xml2
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/enum_bug.xsd20
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/gpx/clementine_loop.gpx3594
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/gpx/gpx.xsd227
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/instance.xml149
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/int.xml4
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/ipo.xml32
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/ipo.xsd60
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_redefine.xml34
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_redefine.xsd73
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_substGroup.xml37
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_substGroup.xsd65
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/measCollec.xsd160
-rwxr-xr-xlib/xmerl/test/xmerl_xsd_SUITE_data/mim.xsd511
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/EricssonSpecificAttributes.5.1.xsd1531
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/EricssonSpecificAttributes.5.1Tran.xsd2164
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/ImportExportMap.xsd75
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/configData.xsd41
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/genericNrm.xsd230
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/geranNrm.xsd63
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/rnc.xml23763
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/utranNrm.xsd174
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po.xml32
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po.xsd67
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1.tab424
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1.tab2424
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1.xml36
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1.xsd64
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all.xsd65
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all1.xml36
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all2.xml35
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all_err1.xml37
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all_err2.xml28
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po1_global.xsd86
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po2.xml36
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po_attrGroup.xml32
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/po_attrGroup.xsd81
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/report.tab850
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/report.tab2850
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/report.xsd82
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/report2.xsd82
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/simple_int.xsd13
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/IntegratedSite.xsd5238
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/IsTypes.xsd42
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/MainSwitch_1.xsd1496
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/MyBsModel_1.xsd502
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/bs_mim.xml1187
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/dummy_action_mim.xml186
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/hwm_mim.xml631
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/instance.xml240
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/mim.xsd486
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/mim2.xsd506
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/nc.xsd14
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/sis/swm_mim.xml881
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/small.xml8
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/small.xsd60
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_7288.xml56
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_8599.xml6
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_8599.xsd17
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle.xml117
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle.xsd82
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle2.xml61
-rw-r--r--lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle3.xml117
-rw-r--r--lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE.erl812
-rw-r--r--lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/sun_failed_cases.log33
-rw-r--r--lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/suntest.tar.gzbin0 -> 21294 bytes
-rw-r--r--lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html82
-rw-r--r--lib/xmerl/test/xmerl_xsd_lib.erl321
-rw-r--r--lib/xmerl/test/xmlconf.xml53
-rw-r--r--lib/xmerl/test/xmlconformance.msxsl527
-rw-r--r--lib/xmerl/test/xmlconformance.xsl498
-rw-r--r--lib/xmerl/vsn.mk2
-rw-r--r--make/otp.mk.in5
642 files changed, 228935 insertions, 14486 deletions
diff --git a/Makefile.in b/Makefile.in
index ca92bf604d..b17713f182 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
#
# %CopyrightBegin%
#
-# Copyright Ericsson AB 1998-2010. All Rights Reserved.
+# Copyright Ericsson AB 1998-2011. All Rights Reserved.
#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
@@ -396,20 +396,25 @@ endif
release_docs docs: mod2app
ifeq ($(OTP_SMALL_BUILD),true)
cd $(ERL_TOP)/lib && \
- ERL_TOP=$(ERL_TOP) $(MAKE) TESTROOT=$(RELEASE_ROOT) $@
+ PATH=$(ERL_TOP)/bin:$${PATH} ERL_TOP=$(ERL_TOP) \
+ $(MAKE) TESTROOT=$(RELEASE_ROOT) $@
else
cd $(ERL_TOP)/lib && \
- ERL_TOP=$(ERL_TOP) $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) $@
+ PATH=$(ERL_TOP)/bin:$${PATH} ERL_TOP=$(ERL_TOP) \
+ $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) $@
cd $(ERL_TOP)/lib/dialyzer && \
- ERL_TOP=$(ERL_TOP) $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) $@
+ PATH=$(ERL_TOP)/bin:$${PATH} ERL_TOP=$(ERL_TOP) \
+ $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) $@
endif
cd $(ERL_TOP)/erts && \
- ERL_TOP=$(ERL_TOP) $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) $@
+ PATH=$(ERL_TOP)/bin:$${PATH} ERL_TOP=$(ERL_TOP) \
+ $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) $@
cd $(ERL_TOP)/system/doc && \
+ PATH=$(ERL_TOP)/bin:$${PATH} \
ERL_TOP=$(ERL_TOP) $(MAKE) TESTROOT=$(RELEASE_ROOT) $@
-mod2app:
- $(ERL_TOP)/lib/erl_docgen/priv/bin/xref_mod_app.escript -topdir $(ERL_TOP) -outfile $(ERL_TOP)/make/$(TARGET)/mod2app.xml
+mod2app:
+ PATH=$(ERL_TOP)/bin:$${PATH} escript $(ERL_TOP)/lib/erl_docgen/priv/bin/xref_mod_app.escript -topdir $(ERL_TOP) -outfile $(ERL_TOP)/make/$(TARGET)/mod2app.xml
# ----------------------------------------------------------------------
ERLANG_EARS=$(BOOTSTRAP_ROOT)/bootstrap/erts
diff --git a/erts/aclocal.m4 b/erts/aclocal.m4
index a1211bbf0c..f7e5c31910 100644
--- a/erts/aclocal.m4
+++ b/erts/aclocal.m4
@@ -1153,7 +1153,7 @@ case "$THR_LIB_NAME" in
AO_nop_full();
AO_store(&x, (AO_t) 0);
z = AO_load(&x);
- z = AO_compare_and_swap(&x, (AO_t) 0, (AO_t) 1);
+ z = AO_compare_and_swap_full(&x, (AO_t) 0, (AO_t) 1);
],
[ethr_have_native_atomics=yes
ethr_have_libatomic_ops=yes])
diff --git a/erts/configure.in b/erts/configure.in
index 31d1d55b8a..e4c6a7852f 100644
--- a/erts/configure.in
+++ b/erts/configure.in
@@ -769,6 +769,7 @@ if test "$enable_halfword_emulator" = "yes"; then
if test "$ARCH" = "amd64"; then
AC_DEFINE(HALFWORD_HEAP_EMULATOR, [1],
[Define if building a halfword-heap 64bit emulator])
+ ENABLE_ALLOC_TYPE_VARS="$ENABLE_ALLOC_TYPE_VARS halfword"
AC_MSG_RESULT([yes])
else
AC_MSG_ERROR(no; halfword emulator not supported on this architecture)
diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml
index 19f501391f..f98e15cb52 100644
--- a/erts/doc/src/erlang.xml
+++ b/erts/doc/src/erlang.xml
@@ -2356,6 +2356,14 @@ os_prompt%</pre>
<seealso marker="tools:instrument">instrument(3)</seealso>
and/or <seealso marker="erts:erl">erl(1)</seealso>.</p>
</item>
+ <tag><c>low</c></tag>
+ <item>
+ <p>Only on 64-bit halfword emulator.</p>
+ <p>The total amount of memory allocated in low memory areas
+ that are restricted to less than 4 Gb even though
+ the system may have more physical memory.</p>
+ <p>May be removed in future releases of halfword emulator.</p>
+ </item>
</taglist>
<note>
<p>The <c>system</c> value is not complete. Some allocated
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml
index f5607945a8..7383ea381d 100644
--- a/erts/doc/src/notes.xml
+++ b/erts/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/erts/emulator/beam/atom.names b/erts/emulator/beam/atom.names
index 327620772f..de76cb9680 100644
--- a/erts/emulator/beam/atom.names
+++ b/erts/emulator/beam/atom.names
@@ -76,6 +76,7 @@ atom allocator_sizes
atom alloc_util_allocators
atom allow_passive_connect
atom already_loaded
+atom amd64
atom anchored
atom and
atom andalso
diff --git a/erts/emulator/beam/beam_bif_load.c b/erts/emulator/beam/beam_bif_load.c
index 1ca405961f..d76a7d8e9f 100644
--- a/erts/emulator/beam/beam_bif_load.c
+++ b/erts/emulator/beam/beam_bif_load.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 1999-2010. All Rights Reserved.
+ * Copyright Ericsson AB 1999-2011. All Rights Reserved.
*
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
@@ -142,7 +142,7 @@ BIF_RETTYPE code_is_module_native_1(BIF_ALIST_1)
if ((modp = erts_get_module(BIF_ARG_1)) == NULL) {
return am_undefined;
}
- return (is_native(modp->code) ||
+ return ((modp->code && is_native(modp->code)) ||
(modp->old_code != 0 && is_native(modp->old_code))) ?
am_true : am_false;
}
@@ -175,8 +175,12 @@ check_process_code_2(BIF_ALIST_2)
Eterm res;
if (internal_pid_index(BIF_ARG_1) >= erts_max_processes)
goto error;
- rp = erts_pid2proc_not_running(BIF_P, ERTS_PROC_LOCK_MAIN,
- BIF_ARG_1, ERTS_PROC_LOCK_MAIN);
+#ifdef ERTS_SMP
+ rp = erts_pid2proc_suspend(BIF_P, ERTS_PROC_LOCK_MAIN,
+ BIF_ARG_1, ERTS_PROC_LOCK_MAIN);
+#else
+ rp = erts_pid2proc(BIF_P, 0, BIF_ARG_1, 0);
+#endif
if (!rp) {
BIF_RET(am_false);
}
@@ -187,8 +191,10 @@ check_process_code_2(BIF_ALIST_2)
modp = erts_get_module(BIF_ARG_2);
res = check_process_code(rp, modp);
#ifdef ERTS_SMP
- if (BIF_P != rp)
+ if (BIF_P != rp) {
+ erts_resume(rp, ERTS_PROC_LOCK_MAIN);
erts_smp_proc_unlock(rp, ERTS_PROC_LOCK_MAIN);
+ }
#endif
BIF_RET(res);
}
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c
index 32ea8588d2..fb90a7d4f7 100644
--- a/erts/emulator/beam/beam_emu.c
+++ b/erts/emulator/beam/beam_emu.c
@@ -1911,13 +1911,15 @@ void process_main(void)
* Note that for the halfword emulator, the two first elements
* of the array are used.
*/
- *((BeamInstr **) (UWord) c_p->def_arg_reg) = I+3;
+ BeamInstr** pi = (BeamInstr**) c_p->def_arg_reg;
+ *pi = I+3;
set_timer(c_p, unsigned_val(timeout_value));
} else if (timeout_value == am_infinity) {
c_p->flags |= F_TIMO;
#if !defined(ARCH_64) || HALFWORD_HEAP
} else if (term_to_Uint(timeout_value, &time_val)) {
- *((BeamInstr **) (UWord) c_p->def_arg_reg) = I+3;
+ BeamInstr** pi = (BeamInstr**) c_p->def_arg_reg;
+ *pi = I+3;
set_timer(c_p, time_val);
#endif
} else { /* Wrong time */
@@ -1974,7 +1976,8 @@ void process_main(void)
* we must test the F_INSLPQUEUE flag as well as the F_TIMO flag.
*/
if ((c_p->flags & (F_INSLPQUEUE | F_TIMO)) == 0) {
- *((BeamInstr **) (UWord) c_p->def_arg_reg) = I+3;
+ BeamInstr** p = (BeamInstr **) c_p->def_arg_reg;
+ *p = I+3;
set_timer(c_p, Arg(1));
}
goto wait2;
@@ -5322,7 +5325,7 @@ void process_main(void)
ep->code[3] = (BeamInstr) OpCode(apply_bif);
ep->code[4] = (BeamInstr) bif_table[i].f;
/* XXX: set func info for bifs */
- ((BeamInstr*)ep->code + 3)[-5] = (BeamInstr) BeamOp(op_i_func_info_IaaI);
+ ep->fake_op_func_info_for_hipe[0] = (BeamInstr) BeamOp(op_i_func_info_IaaI);
}
return;
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c
index b3325d635b..68b3350d7f 100644
--- a/erts/emulator/beam/bif.c
+++ b/erts/emulator/beam/bif.c
@@ -2168,20 +2168,146 @@ BIF_RETTYPE tl_1(BIF_ALIST_1)
/**********************************************************************/
/* return the size of an I/O list */
-BIF_RETTYPE iolist_size_1(BIF_ALIST_1)
+static Eterm
+accumulate(Eterm acc, Uint size)
{
- Sint size = io_list_len(BIF_ARG_1);
+ if (is_non_value(acc)) {
+ /*
+ * There is no pre-existing accumulator. Allocate a
+ * bignum buffer with one extra word to be used if
+ * the bignum grows in the future.
+ */
+ Eterm* hp = (Eterm *) erts_alloc(ERTS_ALC_T_TEMP_TERM,
+ (BIG_UINT_HEAP_SIZE+1) *
+ sizeof(Eterm));
+ return uint_to_big(size, hp);
+ } else {
+ Eterm* big;
+ int need_heap;
- if (size == -1) {
- BIF_ERROR(BIF_P, BADARG);
- } else if (IS_USMALL(0, (Uint) size)) {
- BIF_RET(make_small(size));
+ /*
+ * Add 'size' to 'acc' in place. There is always one
+ * extra word allocated in case the bignum grows by one word.
+ */
+ big = big_val(acc);
+ need_heap = BIG_NEED_SIZE(BIG_SIZE(big));
+ acc = big_plus_small(acc, size, big);
+ if (BIG_NEED_SIZE(big_size(acc)) > need_heap) {
+ /*
+ * The extra word has been consumed. Grow the
+ * allocation by one word.
+ */
+ big = (Eterm *) erts_realloc(ERTS_ALC_T_TEMP_TERM,
+ big_val(acc),
+ (need_heap+1) * sizeof(Eterm));
+ acc = make_big(big);
+ }
+ return acc;
+ }
+}
+
+static Eterm
+consolidate(Process* p, Eterm acc, Uint size)
+{
+ Eterm* hp;
+
+ if (is_non_value(acc)) {
+ return erts_make_integer(size, p);
} else {
- Eterm* hp = HAlloc(BIF_P, BIG_UINT_HEAP_SIZE);
- BIF_RET(uint_to_big(size, hp));
+ Eterm* big;
+ Uint sz;
+ Eterm res;
+
+ acc = accumulate(acc, size);
+ big = big_val(acc);
+ sz = BIG_NEED_SIZE(BIG_SIZE(big));
+ hp = HAlloc(p, sz);
+ res = make_big(hp);
+ while (sz--) {
+ *hp++ = *big++;
+ }
+ erts_free(ERTS_ALC_T_TEMP_TERM, (void *) big_val(acc));
+ return res;
}
}
+BIF_RETTYPE iolist_size_1(BIF_ALIST_1)
+{
+ Eterm obj, hd;
+ Eterm* objp;
+ Uint size = 0;
+ Uint cur_size;
+ Uint new_size;
+ Eterm acc = THE_NON_VALUE;
+ DECLARE_ESTACK(s);
+
+ obj = BIF_ARG_1;
+ goto L_again;
+
+ while (!ESTACK_ISEMPTY(s)) {
+ obj = ESTACK_POP(s);
+ L_again:
+ if (is_list(obj)) {
+ L_iter_list:
+ objp = list_val(obj);
+ hd = CAR(objp);
+ obj = CDR(objp);
+ /* Head */
+ if (is_byte(hd)) {
+ size++;
+ if (size == 0) {
+ acc = accumulate(acc, (Uint) -1);
+ size = 1;
+ }
+ } else if (is_binary(hd) && binary_bitsize(hd) == 0) {
+ cur_size = binary_size(hd);
+ if ((new_size = size + cur_size) >= size) {
+ size = new_size;
+ } else {
+ acc = accumulate(acc, size);
+ size = cur_size;
+ }
+ } else if (is_list(hd)) {
+ ESTACK_PUSH(s, obj);
+ obj = hd;
+ goto L_iter_list;
+ } else if (is_not_nil(hd)) {
+ goto L_type_error;
+ }
+ /* Tail */
+ if (is_list(obj)) {
+ goto L_iter_list;
+ } else if (is_binary(obj) && binary_bitsize(obj) == 0) {
+ cur_size = binary_size(obj);
+ if ((new_size = size + cur_size) >= size) {
+ size = new_size;
+ } else {
+ acc = accumulate(acc, size);
+ size = cur_size;
+ }
+ } else if (is_not_nil(obj)) {
+ goto L_type_error;
+ }
+ } else if (is_binary(obj) && binary_bitsize(obj) == 0) {
+ cur_size = binary_size(obj);
+ if ((new_size = size + cur_size) >= size) {
+ size = new_size;
+ } else {
+ acc = accumulate(acc, size);
+ size = cur_size;
+ }
+ } else if (is_not_nil(obj)) {
+ goto L_type_error;
+ }
+ }
+
+ DESTROY_ESTACK(s);
+ BIF_RET(consolidate(BIF_P, acc, size));
+
+ L_type_error:
+ DESTROY_ESTACK(s);
+ BIF_ERROR(BIF_P, BADARG);
+}
/**********************************************************************/
@@ -3215,20 +3341,32 @@ BIF_RETTYPE garbage_collect_1(BIF_ALIST_1)
BIF_ERROR(BIF_P, BADARG);
}
- rp = erts_pid2proc_not_running(BIF_P, ERTS_PROC_LOCK_MAIN,
+ if (BIF_P->id == BIF_ARG_1)
+ rp = BIF_P;
+ else {
+#ifdef ERTS_SMP
+ rp = erts_pid2proc_suspend(BIF_P, ERTS_PROC_LOCK_MAIN,
BIF_ARG_1, ERTS_PROC_LOCK_MAIN);
- if (!rp)
- BIF_RET(am_false);
- if (rp == ERTS_PROC_LOCK_BUSY)
- ERTS_BIF_YIELD1(bif_export[BIF_garbage_collect_1], BIF_P, BIF_ARG_1);
+ if (rp == ERTS_PROC_LOCK_BUSY)
+ ERTS_BIF_YIELD1(bif_export[BIF_garbage_collect_1], BIF_P, BIF_ARG_1);
+#else
+ rp = erts_pid2proc(BIF_P, 0, BIF_ARG_1, 0);
+#endif
+ if (!rp)
+ BIF_RET(am_false);
+ }
/* The GC cost is taken for the process executing this BIF. */
FLAGS(rp) |= F_NEED_FULLSWEEP;
reds = erts_garbage_collect(rp, 0, rp->arg_reg, rp->arity);
- if (BIF_P != rp)
+#ifdef ERTS_SMP
+ if (BIF_P != rp) {
+ erts_resume(rp, ERTS_PROC_LOCK_MAIN);
erts_smp_proc_unlock(rp, ERTS_PROC_LOCK_MAIN);
+ }
+#endif
BIF_RET2(am_true, reds);
}
@@ -3270,6 +3408,7 @@ BIF_RETTYPE ports_0(BIF_ALIST_0)
Eterm* dead_ports;
int alive, dead;
Uint32 next_ss;
+ int i;
/* To get a consistent snapshot...
* We add alive ports from start of the buffer
@@ -3281,21 +3420,18 @@ BIF_RETTYPE ports_0(BIF_ALIST_0)
erts_smp_atomic_set(&erts_dead_ports_ptr,
(erts_aint_t) (port_buf + erts_max_ports));
- next_ss = erts_smp_atomic_inctest(&erts_ports_snapshot);
+ next_ss = erts_smp_atomic32_inctest(&erts_ports_snapshot);
- if (erts_smp_atomic_read(&erts_ports_alive) > 0) {
- erts_aint_t i;
- for (i = erts_max_ports-1; i >= 0; i--) {
- Port* prt = &erts_port[i];
- erts_smp_port_state_lock(prt);
- if (!(prt->status & ERTS_PORT_SFLGS_DEAD)
- && prt->snapshot != next_ss) {
- ASSERT(prt->snapshot == next_ss - 1);
- *pp++ = prt->id;
- prt->snapshot = next_ss; /* Consumed by this snapshot */
- }
- erts_smp_port_state_unlock(prt);
+ for (i = erts_max_ports-1; i >= 0; i--) {
+ Port* prt = &erts_port[i];
+ erts_smp_port_state_lock(prt);
+ if (!(prt->status & ERTS_PORT_SFLGS_DEAD)
+ && prt->snapshot != next_ss) {
+ ASSERT(prt->snapshot == next_ss - 1);
+ *pp++ = prt->id;
+ prt->snapshot = next_ss; /* Consumed by this snapshot */
}
+ erts_smp_port_state_unlock(prt);
}
dead_ports = (Eterm*)erts_smp_atomic_xchg(&erts_dead_ports_ptr,
diff --git a/erts/emulator/beam/big.c b/erts/emulator/beam/big.c
index f47f5a9c0c..d18de9ae5d 100644
--- a/erts/emulator/beam/big.c
+++ b/erts/emulator/beam/big.c
@@ -1588,7 +1588,7 @@ big_to_double(Wterm x, double* resp)
/*
** Estimate the number of decimal digits (include sign)
*/
-int big_decimal_estimate(Eterm x)
+int big_decimal_estimate(Wterm x)
{
Eterm* xp = big_val(x);
int lg = I_lg(BIG_V(xp), BIG_SIZE(xp));
@@ -1602,7 +1602,7 @@ int big_decimal_estimate(Eterm x)
** Convert a bignum into a string of decimal numbers
*/
-static void write_big(Eterm x, void (*write_func)(void *, char), void *arg)
+static void write_big(Wterm x, void (*write_func)(void *, char), void *arg)
{
Eterm* xp = big_val(x);
ErtsDigit* dx = BIG_V(xp);
@@ -1681,7 +1681,7 @@ write_string(void *arg, char c)
*(--(*((char **) arg))) = c;
}
-char *erts_big_to_string(Eterm x, char *buf, Uint buf_sz)
+char *erts_big_to_string(Wterm x, char *buf, Uint buf_sz)
{
char *big_str = buf + buf_sz - 1;
*big_str = '\0';
diff --git a/erts/emulator/beam/big.h b/erts/emulator/beam/big.h
index f28a390aea..2afc37004f 100644
--- a/erts/emulator/beam/big.h
+++ b/erts/emulator/beam/big.h
@@ -114,9 +114,9 @@ typedef Uint dsize_t; /* Vector size type */
#endif
-int big_decimal_estimate(Eterm);
+int big_decimal_estimate(Wterm);
Eterm erts_big_to_list(Eterm, Eterm**);
-char *erts_big_to_string(Eterm x, char *buf, Uint buf_sz);
+char *erts_big_to_string(Wterm x, char *buf, Uint buf_sz);
Eterm small_times(Sint, Sint, Eterm*);
diff --git a/erts/emulator/beam/binary.c b/erts/emulator/beam/binary.c
index 9486602633..1fb39c6c67 100644
--- a/erts/emulator/beam/binary.c
+++ b/erts/emulator/beam/binary.c
@@ -32,11 +32,11 @@
#include "erl_bits.h"
#ifdef DEBUG
-static int list_to_bitstr_buf(Eterm obj, char* buf, int len);
+static int list_to_bitstr_buf(Eterm obj, char* buf, Uint len);
#else
static int list_to_bitstr_buf(Eterm obj, char* buf);
#endif
-static Sint bitstr_list_len(Eterm obj);
+static int bitstr_list_len(Eterm obj, Uint* num_bytes);
void
erts_init_binary(void)
@@ -355,21 +355,24 @@ BIF_RETTYPE bitstring_to_list_1(BIF_ALIST_1)
BIF_RETTYPE erts_list_to_binary_bif(Process *p, Eterm arg)
{
Eterm bin;
- int i;
+ Uint size;
int offset;
byte* bytes;
+
if (is_nil(arg)) {
BIF_RET(new_binary(p,(byte*)"",0));
}
if (is_not_list(arg)) {
goto error;
}
- if ((i = io_list_len(arg)) < 0) {
- goto error;
+ switch (erts_iolist_size(arg, &size)) {
+ case ERTS_IOLIST_OVERFLOW: BIF_ERROR(p, SYSTEM_LIMIT);
+ case ERTS_IOLIST_TYPE: goto error;
+ default: ;
}
- bin = new_binary(p, (byte *)NULL, i);
+ bin = new_binary(p, (byte *)NULL, size);
bytes = binary_bytes(bin);
- offset = io_list_to_buf(arg, (char*) bytes, i);
+ offset = io_list_to_buf(arg, (char*) bytes, size);
ASSERT(offset == 0);
BIF_RET(bin);
@@ -396,7 +399,8 @@ BIF_RETTYPE iolist_to_binary_1(BIF_ALIST_1)
BIF_RETTYPE list_to_bitstring_1(BIF_ALIST_1)
{
Eterm bin;
- int i,offset;
+ Uint sz;
+ int offset;
byte* bytes;
ErlSubBin* sb1;
Eterm* hp;
@@ -405,15 +409,19 @@ BIF_RETTYPE list_to_bitstring_1(BIF_ALIST_1)
BIF_RET(new_binary(BIF_P,(byte*)"",0));
}
if (is_not_list(BIF_ARG_1)) {
- goto error;
+ error:
+ BIF_ERROR(BIF_P, BADARG);
}
- if ((i = bitstr_list_len(BIF_ARG_1)) < 0) {
+ switch (bitstr_list_len(BIF_ARG_1, &sz)) {
+ case ERTS_IOLIST_TYPE:
goto error;
+ case ERTS_IOLIST_OVERFLOW:
+ BIF_ERROR(BIF_P, SYSTEM_LIMIT);
}
- bin = new_binary(BIF_P, (byte *)NULL, i);
+ bin = new_binary(BIF_P, (byte *)NULL, sz);
bytes = binary_bytes(bin);
#ifdef DEBUG
- offset = list_to_bitstr_buf(BIF_ARG_1, (char*) bytes, i);
+ offset = list_to_bitstr_buf(BIF_ARG_1, (char*) bytes, sz);
#else
offset = list_to_bitstr_buf(BIF_ARG_1, (char*) bytes);
#endif
@@ -422,20 +430,16 @@ BIF_RETTYPE list_to_bitstring_1(BIF_ALIST_1)
hp = HAlloc(BIF_P, ERL_SUB_BIN_SIZE);
sb1 = (ErlSubBin *) hp;
sb1->thing_word = HEADER_SUB_BIN;
- sb1->size = i-1;
+ sb1->size = sz-1;
sb1->offs = 0;
sb1->orig = bin;
sb1->bitoffs = 0;
sb1->bitsize = offset;
sb1->is_writable = 0;
- hp += ERL_SUB_BIN_SIZE;
bin = make_binary(sb1);
}
BIF_RET(bin);
-
- error:
- BIF_ERROR(BIF_P, BADARG);
}
BIF_RETTYPE split_binary_2(BIF_ALIST_2)
@@ -499,7 +503,7 @@ BIF_RETTYPE split_binary_2(BIF_ALIST_2)
*/
static int
#ifdef DEBUG
-list_to_bitstr_buf(Eterm obj, char* buf, int len)
+list_to_bitstr_buf(Eterm obj, char* buf, Uint len)
#else
list_to_bitstr_buf(Eterm obj, char* buf)
#endif
@@ -602,8 +606,8 @@ list_to_bitstr_buf(Eterm obj, char* buf)
return offset;
}
-static Sint
-bitstr_list_len(Eterm obj)
+static int
+bitstr_list_len(Eterm obj, Uint* num_bytes)
{
Eterm* objp;
Uint len = 0;
@@ -611,6 +615,26 @@ bitstr_list_len(Eterm obj)
DECLARE_ESTACK(s);
goto L_again;
+#define SAFE_ADD(Var, Val) \
+ do { \
+ Uint valvar = (Val); \
+ Var += valvar; \
+ if (Var < valvar) { \
+ goto L_overflow_error; \
+ } \
+ } while (0)
+
+#define SAFE_ADD_BITSIZE(Var, Bin) \
+ do { \
+ if (*binary_val(Bin) == HEADER_SUB_BIN) { \
+ Uint valvar = ((ErlSubBin *) binary_val(Bin))->bitsize; \
+ Var += valvar; \
+ if (Var < valvar) { \
+ goto L_overflow_error; \
+ } \
+ } \
+ } while (0)
+
while (!ESTACK_ISEMPTY(s)) {
obj = ESTACK_POP(s);
L_again:
@@ -621,9 +645,12 @@ bitstr_list_len(Eterm obj)
obj = CAR(objp);
if (is_byte(obj)) {
len++;
+ if (len == 0) {
+ goto L_overflow_error;
+ }
} else if (is_binary(obj)) {
- len += binary_size(obj);
- offs += binary_bitsize(obj);
+ SAFE_ADD(len, binary_size(obj));
+ SAFE_ADD_BITSIZE(offs, obj);
} else if (is_list(obj)) {
ESTACK_PUSH(s, CDR(objp));
goto L_iter_list; /* on head */
@@ -635,24 +662,44 @@ bitstr_list_len(Eterm obj)
if (is_list(obj))
goto L_iter_list; /* on tail */
else if (is_binary(obj)) {
- len += binary_size(obj);
- offs += binary_bitsize(obj);
+ SAFE_ADD(len, binary_size(obj));
+ SAFE_ADD_BITSIZE(offs, obj);
} else if (is_not_nil(obj)) {
goto L_type_error;
}
} else if (is_binary(obj)) {
- len += binary_size(obj);
- offs += binary_bitsize(obj);
+ SAFE_ADD(len, binary_size(obj));
+ SAFE_ADD_BITSIZE(offs, obj);
} else if (is_not_nil(obj)) {
goto L_type_error;
}
}
+#undef SAFE_ADD
+#undef SAFE_ADD_BITSIZE
DESTROY_ESTACK(s);
- return (Sint) (len + (offs/8) + ((offs % 8) != 0));
+
+ /*
+ * Make sure that the number of bits in the bitstring will fit
+ * in an Uint to ensure that the binary can be matched using
+ * the binary syntax.
+ */
+ if (len << 3 < len) {
+ goto L_overflow_error;
+ }
+ len += (offs >> 3) + ((offs & 7) != 0);
+ if (len << 3 < len) {
+ goto L_overflow_error;
+ }
+ *num_bytes = len;
+ return ERTS_IOLIST_OK;
L_type_error:
DESTROY_ESTACK(s);
- return (Sint) -1;
+ return ERTS_IOLIST_TYPE;
+
+ L_overflow_error:
+ DESTROY_ESTACK(s);
+ return ERTS_IOLIST_OVERFLOW;
}
diff --git a/erts/emulator/beam/erl_alloc.c b/erts/emulator/beam/erl_alloc.c
index 673eac7fea..cda404af5e 100644
--- a/erts/emulator/beam/erl_alloc.c
+++ b/erts/emulator/beam/erl_alloc.c
@@ -90,6 +90,10 @@ typedef union {
static ErtsAllocatorState_t sl_alloc_state;
static ErtsAllocatorState_t std_alloc_state;
static ErtsAllocatorState_t ll_alloc_state;
+#if HALFWORD_HEAP
+static ErtsAllocatorState_t std_alloc_low_state;
+static ErtsAllocatorState_t ll_alloc_low_state;
+#endif
static ErtsAllocatorState_t temp_alloc_state;
static ErtsAllocatorState_t eheap_alloc_state;
static ErtsAllocatorState_t binary_alloc_state;
@@ -166,6 +170,10 @@ typedef struct {
struct au_init binary_alloc;
struct au_init ets_alloc;
struct au_init driver_alloc;
+#if HALFWORD_HEAP
+ struct au_init std_alloc_low;
+ struct au_init ll_alloc_low;
+#endif
} erts_alc_hndl_args_init_t;
#define ERTS_AU_INIT__ {0, 0, GOODFIT, DEFAULT_ALLCTR_INIT, {1,1,1,1}}
@@ -193,6 +201,10 @@ set_default_sl_alloc_opts(struct au_init *ip)
#endif
ip->init.util.ts = ERTS_ALC_MTA_SHORT_LIVED;
ip->init.util.rsbcst = 80;
+#if HALFWORD_HEAP
+ ip->init.util.low_mem = 1;
+#endif
+
}
static void
@@ -256,6 +268,9 @@ set_default_temp_alloc_opts(struct au_init *ip)
ip->init.util.ts = ERTS_ALC_MTA_TEMPORARY;
ip->init.util.rsbcst = 90;
ip->init.util.rmbcmt = 100;
+#if HALFWORD_HEAP
+ ip->init.util.low_mem = 1;
+#endif
}
static void
@@ -275,6 +290,9 @@ set_default_eheap_alloc_opts(struct au_init *ip)
#endif
ip->init.util.ts = ERTS_ALC_MTA_EHEAP;
ip->init.util.rsbcst = 50;
+#if HALFWORD_HEAP
+ ip->init.util.low_mem = 1;
+#endif
}
static void
@@ -531,6 +549,20 @@ erts_alloc_init(int *argc, char **argv, ErtsAllocInitOpts *eaiop)
erts_allctrs[ERTS_ALC_A_SYSTEM].free = erts_sys_free;
erts_allctrs_info[ERTS_ALC_A_SYSTEM].enabled = 1;
+#if HALFWORD_HEAP
+ /* Init low memory variants by cloning */
+ init.std_alloc_low = init.std_alloc;
+ init.std_alloc_low.init.util.alloc_no = ERTS_ALC_A_STANDARD_LOW;
+ init.std_alloc_low.init.util.low_mem = 1;
+
+ init.ll_alloc_low = init.ll_alloc;
+ init.ll_alloc_low.init.util.alloc_no = ERTS_ALC_A_LONG_LIVED_LOW;
+ init.ll_alloc_low.init.util.low_mem = 1;
+
+ set_au_allocator(ERTS_ALC_A_STANDARD_LOW, &init.std_alloc_low);
+ set_au_allocator(ERTS_ALC_A_LONG_LIVED_LOW, &init.ll_alloc_low);
+#endif /* HALFWORD */
+
set_au_allocator(ERTS_ALC_A_TEMPORARY, &init.temp_alloc);
set_au_allocator(ERTS_ALC_A_SHORT_LIVED, &init.sl_alloc);
set_au_allocator(ERTS_ALC_A_STANDARD, &init.std_alloc);
@@ -576,7 +608,14 @@ erts_alloc_init(int *argc, char **argv, ErtsAllocInitOpts *eaiop)
start_au_allocator(ERTS_ALC_A_LONG_LIVED,
&init.ll_alloc,
&ll_alloc_state);
-
+#if HALFWORD_HEAP
+ start_au_allocator(ERTS_ALC_A_LONG_LIVED_LOW,
+ &init.ll_alloc_low,
+ &ll_alloc_low_state);
+ start_au_allocator(ERTS_ALC_A_STANDARD_LOW,
+ &init.std_alloc_low,
+ &std_alloc_low_state);
+#endif
start_au_allocator(ERTS_ALC_A_EHEAP,
&init.eheap_alloc,
&eheap_alloc_state);
@@ -612,11 +651,9 @@ erts_alloc_init(int *argc, char **argv, ErtsAllocInitOpts *eaiop)
erts_set_fix_size(ERTS_ALC_T_PROC, sizeof(Process));
erts_set_fix_size(ERTS_ALC_T_DB_TABLE, sizeof(DbTable));
erts_set_fix_size(ERTS_ALC_T_ATOM, sizeof(Atom));
- erts_set_fix_size(ERTS_ALC_T_EXPORT, sizeof(Export));
+
erts_set_fix_size(ERTS_ALC_T_MODULE, sizeof(Module));
erts_set_fix_size(ERTS_ALC_T_REG_PROC, sizeof(RegProc));
- erts_set_fix_size(ERTS_ALC_T_MONITOR_SH, ERTS_MONITOR_SH_SIZE*sizeof(Uint));
- erts_set_fix_size(ERTS_ALC_T_NLINK_SH, ERTS_LINK_SH_SIZE*sizeof(Uint));
erts_set_fix_size(ERTS_ALC_T_FUN_ENTRY, sizeof(ErlFunEntry));
#ifdef ERTS_ALC_T_DRV_EV_D_STATE
erts_set_fix_size(ERTS_ALC_T_DRV_EV_D_STATE,
@@ -626,6 +663,11 @@ erts_alloc_init(int *argc, char **argv, ErtsAllocInitOpts *eaiop)
erts_set_fix_size(ERTS_ALC_T_DRV_SEL_D_STATE,
sizeof(ErtsDrvSelectDataState));
#endif
+#if !HALFWORD_HEAP
+ erts_set_fix_size(ERTS_ALC_T_EXPORT, sizeof(Export));
+ erts_set_fix_size(ERTS_ALC_T_MONITOR_SH, ERTS_MONITOR_SH_SIZE*sizeof(Uint));
+ erts_set_fix_size(ERTS_ALC_T_NLINK_SH, ERTS_LINK_SH_SIZE*sizeof(Uint));
+#endif
#endif
#endif
@@ -638,6 +680,15 @@ set_au_allocator(ErtsAlcType_t alctr_n, struct au_init *init)
ErtsAllocatorInfo_t *ai = &erts_allctrs_info[alctr_n];
ErtsAllocatorThrSpec_t *tspec = &erts_allctr_thr_spec[alctr_n];
+#if HALFWORD_HEAP
+ /* If halfword heap, silently ignore any disabling of internal
+ * allocators for low memory
+ */
+ if (init->init.util.low_mem) {
+ init->enable = 1;
+ }
+#endif
+
if (!init->enable) {
af->alloc = erts_sys_alloc;
af->realloc = erts_sys_realloc;
@@ -1348,14 +1399,6 @@ handle_args(int *argc, char **argv, erts_alc_hndl_args_init_t *init)
argv[j++] = argv[i];
}
*argc = j;
-#if HALFWORD_HEAP
- /* If halfword heap, silently ignore any disabling of internal
- allocators */
- for (i = 0; i < aui_sz; ++i)
- aui[i]->enable = 1;
-#endif
-
-
}
static char *type_no_str(ErtsAlcType_t n)
@@ -1528,10 +1571,10 @@ erts_realloc_n_enomem(ErtsAlcType_t n, void *ptr, Uint size)
erts_alc_fatal_error(ERTS_ALC_E_NOMEM, ERTS_ALC_O_REALLOC, n, size);
}
-static ERTS_INLINE Uint
+static ERTS_INLINE UWord
alcu_size(ErtsAlcType_t ai)
{
- Uint res = 0;
+ UWord res = 0;
ASSERT(erts_allctrs_info[ai].enabled);
ASSERT(erts_allctrs_info[ai].alloc_util);
@@ -1563,6 +1606,49 @@ alcu_size(ErtsAlcType_t ai)
return res;
}
+#if HALFWORD_HEAP
+static ERTS_INLINE int
+alcu_is_low(ErtsAlcType_t ai)
+{
+ int is_low = 0;
+ ASSERT(erts_allctrs_info[ai].enabled);
+ ASSERT(erts_allctrs_info[ai].alloc_util);
+
+ if (!erts_allctrs_info[ai].thr_spec) {
+ Allctr_t *allctr = erts_allctrs_info[ai].extra;
+ is_low = allctr->mseg_opt.low_mem;
+ }
+ else {
+ ErtsAllocatorThrSpec_t *tspec = &erts_allctr_thr_spec[ai];
+ int i;
+# ifdef DEBUG
+ int found_one = 0;
+# endif
+
+ ASSERT(tspec->all_thr_safe);
+ ASSERT(tspec->enabled);
+
+ for (i = tspec->size - 1; i >= 0; i--) {
+ Allctr_t *allctr = tspec->allctr[i];
+ if (allctr) {
+# ifdef DEBUG
+ if (!found_one) {
+ is_low = allctr->mseg_opt.low_mem;
+ found_one = 1;
+ }
+ else ASSERT(is_low == allctr->mseg_opt.low_mem);
+# else
+ is_low = allctr->mseg_opt.low_mem;
+ break;
+# endif
+ }
+ }
+ ASSERT(found_one);
+ }
+ return is_low;
+}
+#endif /* HALFWORD */
+
Eterm
erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
{
@@ -1579,22 +1665,28 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
int code;
int ets;
int maximum;
+#if HALFWORD_HEAP
+ int low;
+#endif
} want = {0};
struct {
- Uint total;
- Uint processes;
- Uint processes_used;
- Uint system;
- Uint atom;
- Uint atom_used;
- Uint binary;
- Uint code;
- Uint ets;
- Uint maximum;
+ UWord total;
+ UWord processes;
+ UWord processes_used;
+ UWord system;
+ UWord atom;
+ UWord atom_used;
+ UWord binary;
+ UWord code;
+ UWord ets;
+ UWord maximum;
+#if HALFWORD_HEAP
+ UWord low;
+#endif
} size = {0};
- Eterm atoms[sizeof(size)/sizeof(Uint)];
- Uint *uintps[sizeof(size)/sizeof(Uint)];
- Eterm euints[sizeof(size)/sizeof(Uint)];
+ Eterm atoms[sizeof(size)/sizeof(UWord)];
+ UWord *uintps[sizeof(size)/sizeof(UWord)];
+ Eterm euints[sizeof(size)/sizeof(UWord)];
int want_tot_or_sys;
int length;
Eterm res = THE_NON_VALUE;
@@ -1646,7 +1738,11 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
atoms[length] = am_maximum;
uintps[length++] = &size.maximum;
}
-
+#if HALFWORD_HEAP
+ want.low = 1;
+ atoms[length] = am_low;
+ uintps[length++] = &size.low;
+#endif
}
else {
DeclareTmpHeapNoproc(tmp_heap,2);
@@ -1740,6 +1836,15 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
return am_badarg;
}
break;
+#if HALFWORD_HEAP
+ case am_low:
+ if (!want.low) {
+ want.low = 1;
+ atoms[length] = am_low;
+ uintps[length++] = &size.low;
+ }
+ break;
+#endif
default:
UnUseTmpHeapNoproc(2);
return am_badarg;
@@ -1769,7 +1874,7 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
ASSERT(length <= sizeof(atoms)/sizeof(Eterm));
ASSERT(length <= sizeof(euints)/sizeof(Eterm));
- ASSERT(length <= sizeof(uintps)/sizeof(Uint));
+ ASSERT(length <= sizeof(uintps)/sizeof(UWord));
if (proc) {
@@ -1788,8 +1893,8 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
for (ai = ERTS_ALC_A_MIN; ai <= ERTS_ALC_A_MAX; ai++) {
if (erts_allctrs_info[ai].alloc_util) {
- Uint *save;
- Uint asz;
+ UWord *save;
+ UWord asz;
switch (ai) {
case ERTS_ALC_A_TEMPORARY:
/*
@@ -1814,6 +1919,11 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
if (save)
*save = asz;
size.total += asz;
+#if HALFWORD_HEAP
+ if (alcu_is_low(ai)) {
+ size.low += asz;
+ }
+#endif
}
}
}
@@ -1821,7 +1931,7 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
if (want_tot_or_sys || want.processes || want.processes_used) {
- Uint tmp;
+ UWord tmp;
if (ERTS_MEM_NEED_ALL_ALCU)
tmp = size.processes;
@@ -1836,6 +1946,9 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
size.processes = size.processes_used = tmp;
+#if HALFWORD_HEAP
+ /* BUG: We ignore link and monitor memory */
+#else
erts_fix_info(ERTS_ALC_T_NLINK_SH, &efi);
size.processes += efi.total;
size.processes_used += efi.used;
@@ -1843,6 +1956,7 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
erts_fix_info(ERTS_ALC_T_MONITOR_SH, &efi);
size.processes += efi.total;
size.processes_used += efi.used;
+#endif
erts_fix_info(ERTS_ALC_T_PROC, &efi);
size.processes += efi.total;
@@ -1879,8 +1993,12 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
erts_fix_info(ERTS_ALC_T_MODULE, &efi);
size.code += efi.used;
size.code += export_table_sz();
+#if HALFWORD_HEAP
+ size.code += export_list_size() * sizeof(Export);
+#else
erts_fix_info(ERTS_ALC_T_EXPORT, &efi);
size.code += efi.used;
+#endif
size.code += erts_fun_table_sz();
erts_fix_info(ERTS_ALC_T_FUN_ENTRY, &efi);
size.code += efi.used;
@@ -1913,7 +2031,7 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
/* Print result... */
erts_print(to, arg, "=memory\n");
for (i = 0; i < length; i++)
- erts_print(to, arg, "%T: %beu\n", atoms[i], *uintps[i]);
+ erts_print(to, arg, "%T: %bpu\n", atoms[i], *uintps[i]);
}
if (proc) {
@@ -1926,9 +2044,9 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
if (only_one_value) {
ASSERT(length == 1);
hsz = 0;
- erts_bld_uint(NULL, &hsz, *uintps[0]);
+ erts_bld_uword(NULL, &hsz, *uintps[0]);
hp = hsz ? HAlloc((Process *) proc, hsz) : NULL;
- res = erts_bld_uint(&hp, NULL, *uintps[0]);
+ res = erts_bld_uword(&hp, NULL, *uintps[0]);
}
else {
Uint **hpp = NULL;
@@ -1938,7 +2056,7 @@ erts_memory(int *print_to_p, void *print_to_arg, void *proc, Eterm earg)
while (1) {
int i;
for (i = 0; i < length; i++)
- euints[i] = erts_bld_uint(hpp, hszp, *uintps[i]);
+ euints[i] = erts_bld_uword(hpp, hszp, *uintps[i]);
res = erts_bld_2tup_list(hpp, hszp, length, atoms, euints);
if (hpp)
break;
diff --git a/erts/emulator/beam/erl_alloc.types b/erts/emulator/beam/erl_alloc.types
index ca71798917..c6cc0e1fac 100644
--- a/erts/emulator/beam/erl_alloc.types
+++ b/erts/emulator/beam/erl_alloc.types
@@ -75,6 +75,11 @@ allocator EHEAP true eheap_alloc
allocator ETS true ets_alloc
allocator FIXED_SIZE true fix_alloc
++if halfword
+allocator LONG_LIVED_LOW true ll_alloc_low
+allocator STANDARD_LOW true std_alloc_low
++endif
+
+else # Non smp build
allocator TEMPORARY false temp_alloc
@@ -85,12 +90,18 @@ allocator EHEAP false eheap_alloc
allocator ETS false ets_alloc
allocator FIXED_SIZE false fix_alloc
++if halfword
+allocator LONG_LIVED_LOW false ll_alloc_low
+allocator STANDARD_LOW false std_alloc_low
++endif
+
+endif
allocator BINARY true binary_alloc
allocator DRIVER true driver_alloc
+
# --- Class declarations -----------------------------------------------------
#
# Syntax: class <CLASS> <DESCRIPTION>
@@ -125,14 +136,9 @@ class SYSTEM system_data
type PROC FIXED_SIZE PROCESSES proc
type ATOM FIXED_SIZE ATOM atom_entry
-type EXPORT FIXED_SIZE CODE export_entry
type MODULE FIXED_SIZE CODE module_entry
type REG_PROC FIXED_SIZE PROCESSES reg_proc
type LINK_LH STANDARD PROCESSES link_lh
-type MONITOR_SH FIXED_SIZE PROCESSES monitor_sh
-type MONITOR_LH STANDARD PROCESSES monitor_lh
-type NLINK_SH FIXED_SIZE PROCESSES nlink_sh
-type NLINK_LH STANDARD PROCESSES nlink_lh
type SUSPEND_MON STANDARD PROCESSES suspend_monitor
type PEND_SUSPEND SHORT_LIVED PROCESSES pending_suspend
type PROC_LIST SHORT_LIVED PROCESSES proc_list
@@ -175,7 +181,6 @@ type DRIVER STANDARD SYSTEM driver
type NIF DRIVER SYSTEM nif_internal
type BINARY BINARY BINARIES binary
type NBIF_TABLE SYSTEM SYSTEM nbif_tab
-type CODE LONG_LIVED CODE code
type ARG_REG STANDARD PROCESSES arg_reg
type PROC_DICT STANDARD PROCESSES proc_dict
type CALLS_BUF STANDARD PROCESSES calls_buf
@@ -193,10 +198,8 @@ type DB_FIXATION SHORT_LIVED ETS db_fixation
type DB_FIX_DEL SHORT_LIVED ETS fixed_del
type DB_TABLES LONG_LIVED ETS db_tabs
type DB_NTAB_ENT STANDARD ETS db_named_table_entry
-type DB_HEIR_DATA STANDARD ETS db_heir_data
type DB_TMP TEMPORARY ETS db_tmp
type DB_MC_STK TEMPORARY ETS db_mc_stack
-type DB_MS_PSDO_PROC LONG_LIVED ETS db_match_pseudo_proc
type DB_MS_RUN_HEAP SHORT_LIVED ETS db_match_spec_run_heap
type DB_MS_CMPL_HEAP TEMPORARY ETS db_match_spec_cmpl_heap
type DB_SEG ETS ETS db_segment
@@ -213,10 +216,8 @@ type LOGGER_DSBUF TEMPORARY SYSTEM logger_dsbuf
type TMP_DSBUF TEMPORARY SYSTEM tmp_dsbuf
type INFO_DSBUF SYSTEM SYSTEM info_dsbuf
# INFO_DSBUF have to use the SYSTEM allocator; otherwise, a deadlock might occur
-type SCHDLR_DATA LONG_LIVED SYSTEM scheduler_data
type SCHDLR_SLP_INFO LONG_LIVED SYSTEM scheduler_sleep_info
type RUNQS LONG_LIVED SYSTEM run_queues
-type DDLL_PROCESS STANDARD SYSTEM ddll_processes
type DDLL_HANDLE STANDARD SYSTEM ddll_handle
type DDLL_ERRCODES LONG_LIVED SYSTEM ddll_errcodes
type DDLL_TMP_BUF TEMPORARY SYSTEM ddll_tmp_buf
@@ -327,13 +328,45 @@ type SSB SHORT_LIVED PROCESSES ssb
+endif
++if halfword
+
+type DDLL_PROCESS STANDARD_LOW SYSTEM ddll_processes
+type MONITOR_LH STANDARD_LOW PROCESSES monitor_lh
+type NLINK_LH STANDARD_LOW PROCESSES nlink_lh
+type CODE LONG_LIVED_LOW CODE code
+type DB_HEIR_DATA STANDARD_LOW ETS db_heir_data
+type DB_MS_PSDO_PROC LONG_LIVED_LOW ETS db_match_pseudo_proc
+type SCHDLR_DATA LONG_LIVED_LOW SYSTEM scheduler_data
+type LL_TEMP_TERM LONG_LIVED_LOW SYSTEM ll_temp_term
+
+# no FIXED_SIZE for low memory
+type EXPORT STANDARD_LOW CODE export_entry
+type MONITOR_SH STANDARD_LOW PROCESSES monitor_sh
+type NLINK_SH STANDARD_LOW PROCESSES nlink_sh
+
++else # "fullword"
+
+type DDLL_PROCESS STANDARD SYSTEM ddll_processes
+type MONITOR_LH STANDARD PROCESSES monitor_lh
+type NLINK_LH STANDARD PROCESSES nlink_lh
+type CODE LONG_LIVED CODE code
+type DB_HEIR_DATA STANDARD ETS db_heir_data
+type DB_MS_PSDO_PROC LONG_LIVED ETS db_match_pseudo_proc
+type SCHDLR_DATA LONG_LIVED SYSTEM scheduler_data
+type LL_TEMP_TERM LONG_LIVED SYSTEM ll_temp_term
+
+type EXPORT FIXED_SIZE CODE export_entry
+type MONITOR_SH FIXED_SIZE PROCESSES monitor_sh
+type NLINK_SH FIXED_SIZE PROCESSES nlink_sh
+
++endif
+
+
#
# Types used by system specific code
#
type TEMP_TERM TEMPORARY SYSTEM temp_term
-type LL_TEMP_TERM LONG_LIVED SYSTEM ll_temp_term
-
type DRV_TAB LONG_LIVED SYSTEM drv_tab
type DRV_EV_STATE LONG_LIVED SYSTEM driver_event_state
type DRV_EV_D_STATE FIXED_SIZE SYSTEM driver_event_data_state
diff --git a/erts/emulator/beam/erl_alloc_util.c b/erts/emulator/beam/erl_alloc_util.c
index 84c72439a3..cc04ef65bf 100644
--- a/erts/emulator/beam/erl_alloc_util.c
+++ b/erts/emulator/beam/erl_alloc_util.c
@@ -1639,6 +1639,9 @@ static struct {
Eterm e;
Eterm t;
Eterm ramv;
+#if HALFWORD_HEAP
+ Eterm low;
+#endif
Eterm sbct;
#if HAVE_ERTS_MSEG
Eterm asbcst;
@@ -1724,6 +1727,9 @@ init_atoms(Allctr_t *allctr)
AM_INIT(e);
AM_INIT(t);
AM_INIT(ramv);
+#if HALFWORD_HEAP
+ AM_INIT(low);
+#endif
AM_INIT(sbct);
#if HAVE_ERTS_MSEG
AM_INIT(asbcst);
@@ -2168,6 +2174,9 @@ info_options(Allctr_t *allctr,
"option e: true\n"
"option t: %s\n"
"option ramv: %s\n"
+#if HALFWORD_HEAP
+ "option low: %s\n"
+#endif
"option sbct: %beu\n"
#if HAVE_ERTS_MSEG
"option asbcst: %bpu\n"
@@ -2185,6 +2194,9 @@ info_options(Allctr_t *allctr,
"option mbcgs: %beu\n",
topt,
allctr->ramv ? "true" : "false",
+#if HALFWORD_HEAP
+ allctr->mseg_opt.low_mem ? "true" : "false",
+#endif
allctr->sbc_threshold,
#if HAVE_ERTS_MSEG
allctr->mseg_opt.abs_shrink_th,
@@ -2243,6 +2255,9 @@ info_options(Allctr_t *allctr,
add_2tup(hpp, szp, &res,
am.sbct,
bld_uint(hpp, szp, allctr->sbc_threshold));
+#if HALFWORD_HEAP
+ add_2tup(hpp, szp, &res, am.low, allctr->mseg_opt.low_mem ? am_true : am_false);
+#endif
add_2tup(hpp, szp, &res, am.ramv, allctr->ramv ? am_true : am_false);
add_2tup(hpp, szp, &res, am.t, (allctr->t
? bld_uint(hpp, szp, (Uint) allctr->t)
@@ -3105,13 +3120,12 @@ erts_alcu_start(Allctr_t *allctr, AllctrInit_t *init)
goto error;
#if HAVE_ERTS_MSEG
- {
- ErtsMsegOpt_t mseg_opt = ERTS_MSEG_DEFAULT_OPT_INITIALIZER;
-
- sys_memcpy((void *) &allctr->mseg_opt,
- (void *) &mseg_opt,
- sizeof(ErtsMsegOpt_t));
- }
+ sys_memcpy((void *) &allctr->mseg_opt,
+ (void *) &erts_mseg_default_opt,
+ sizeof(ErtsMsegOpt_t));
+# if HALFWORD_HEAP
+ allctr->mseg_opt.low_mem = init->low_mem;
+# endif
#endif
allctr->name_prefix = init->name_prefix;
diff --git a/erts/emulator/beam/erl_alloc_util.h b/erts/emulator/beam/erl_alloc_util.h
index d296081714..ddf84c086c 100644
--- a/erts/emulator/beam/erl_alloc_util.h
+++ b/erts/emulator/beam/erl_alloc_util.h
@@ -38,6 +38,7 @@ typedef struct {
int tspec;
int tpref;
int ramv;
+ int low_mem; /* HALFWORD only */
UWord sbct;
UWord asbcst;
UWord rsbcst;
@@ -70,6 +71,7 @@ typedef struct {
0, /* (bool) tspec: thread specific */\
0, /* (bool) tpref: thread preferred */\
0, /* (bool) ramv: realloc always moves */\
+ 0, /* (bool) low_mem: HALFWORD only */\
512*1024, /* (bytes) sbct: sbc threshold */\
2*1024*2024, /* (amount) asbcst: abs sbc shrink threshold */\
20, /* (%) rsbcst: rel sbc shrink threshold */\
@@ -97,6 +99,7 @@ typedef struct {
0, /* (bool) tspec: thread specific */\
0, /* (bool) tpref: thread preferred */\
0, /* (bool) ramv: realloc always moves */\
+ 0, /* (bool) low_mem: HALFWORD only */\
64*1024, /* (bytes) sbct: sbc threshold */\
2*1024*2024, /* (amount) asbcst: abs sbc shrink threshold */\
20, /* (%) rsbcst: rel sbc shrink threshold */\
diff --git a/erts/emulator/beam/erl_bif_ddll.c b/erts/emulator/beam/erl_bif_ddll.c
index c9cdcb87a6..9631fb50db 100644
--- a/erts/emulator/beam/erl_bif_ddll.c
+++ b/erts/emulator/beam/erl_bif_ddll.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2006-2010. All Rights Reserved.
+ * Copyright Ericsson AB 2006-2011. All Rights Reserved.
*
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
@@ -146,7 +146,7 @@ BIF_RETTYPE erl_ddll_try_load_3(Process *p, Eterm path_term,
Eterm name_term, Eterm options)
{
char *path = NULL;
- int path_len;
+ Uint path_len;
char *name = NULL;
DE_Handle *dh;
erts_driver_t *drv;
@@ -221,9 +221,7 @@ BIF_RETTYPE erl_ddll_try_load_3(Process *p, Eterm path_term,
goto error;
}
- path_len = io_list_len(path_term);
-
- if (path_len <= 0) {
+ if (erts_iolist_size(path_term, &path_len)) {
goto error;
}
path = erts_alloc(ERTS_ALC_T_DDLL_TMP_BUF, path_len + 1 /* might need path separator */ + sys_strlen(name) + 1);
@@ -1878,7 +1876,7 @@ static Eterm mkatom(char *str)
static char *pick_list_or_atom(Eterm name_term)
{
char *name = NULL;
- int name_len;
+ Uint name_len;
if (is_atom(name_term)) {
Atom *ap = atom_tab(atom_val(name_term));
if (ap->len == 0) {
@@ -1890,8 +1888,7 @@ static char *pick_list_or_atom(Eterm name_term)
memcpy(name,ap->name,ap->len);
name[ap->len] = '\0';
} else {
- name_len = io_list_len(name_term);
- if (name_len <= 0) {
+ if (erts_iolist_size(name_term, &name_len)) {
goto error;
}
name = erts_alloc(ERTS_ALC_T_DDLL_TMP_BUF, name_len + 1);
diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c
index e50fc18e64..f264bf44df 100644
--- a/erts/emulator/beam/erl_bif_info.c
+++ b/erts/emulator/beam/erl_bif_info.c
@@ -1732,14 +1732,14 @@ info_1_tuple(Process* BIF_P, /* Pointer to current process. */
# define ERTS_ERROR_CHECKER_PRINTF_XML VALGRIND_PRINTF_XML
# endif
#endif
- int buf_size = 8*1024; /* Try with 8KB first */
+ Uint buf_size = 8*1024; /* Try with 8KB first */
char *buf = erts_alloc(ERTS_ALC_T_TMP, buf_size);
int r = io_list_to_buf(*tp, (char*) buf, buf_size - 1);
if (r < 0) {
erts_free(ERTS_ALC_T_TMP, (void *) buf);
- buf_size = io_list_len(*tp);
- if (buf_size < 0)
+ if (erts_iolist_size(*tp, &buf_size)) {
goto badarg;
+ }
buf_size++;
buf = erts_alloc(ERTS_ALC_T_TMP, buf_size);
r = io_list_to_buf(*tp, (char*) buf, buf_size - 1);
diff --git a/erts/emulator/beam/erl_bif_port.c b/erts/emulator/beam/erl_bif_port.c
index fbc92b9730..3fd35dd963 100644
--- a/erts/emulator/beam/erl_bif_port.c
+++ b/erts/emulator/beam/erl_bif_port.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2001-2010. All Rights Reserved.
+ * Copyright Ericsson AB 2001-2011. All Rights Reserved.
*
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
@@ -996,6 +996,7 @@ static byte* convert_environment(Process* p, Eterm env)
Eterm* hp;
Uint heap_size;
int n;
+ Uint size;
byte* bytes;
if ((n = list_length(env)) < 0) {
@@ -1039,15 +1040,15 @@ static byte* convert_environment(Process* p, Eterm env)
if (is_not_nil(env)) {
goto done;
}
- if ((n = io_list_len(all)) < 0) {
+ if (erts_iolist_size(all, &size)) {
goto done;
}
/*
* Put the result in a binary (no risk for a memory leak that way).
*/
- (void) erts_new_heap_binary(p, NULL, n, &bytes);
- io_list_to_buf(all, (char*)bytes, n);
+ (void) erts_new_heap_binary(p, NULL, size, &bytes);
+ io_list_to_buf(all, (char*)bytes, size);
done:
erts_free(ERTS_ALC_T_TMP, temp_heap);
diff --git a/erts/emulator/beam/erl_bif_re.c b/erts/emulator/beam/erl_bif_re.c
index d4a8a3aaa7..26891c4348 100644
--- a/erts/emulator/beam/erl_bif_re.c
+++ b/erts/emulator/beam/erl_bif_re.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2010. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2011. All Rights Reserved.
*
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
@@ -417,7 +417,7 @@ build_compile_result(Process *p, Eterm error_tag, pcre *result, int errcode, con
BIF_RETTYPE
re_compile_2(BIF_ALIST_2)
{
- int slen;
+ Uint slen;
char *expr;
pcre *result;
int errcode = 0;
@@ -444,7 +444,7 @@ re_compile_2(BIF_ALIST_2)
BIF_TRAP2(ucompile_trap_exportp, BIF_P, BIF_ARG_1, BIF_ARG_2);
}
- if ((slen = io_list_len(BIF_ARG_1)) < 0) {
+ if (erts_iolist_size(BIF_ARG_1, &slen)) {
BIF_ERROR(BIF_P,BADARG);
}
expr = erts_alloc(ERTS_ALC_T_RE_TMP_BUF, slen + 1);
@@ -795,8 +795,8 @@ build_capture(Eterm capture_spec[CAPSPEC_SIZE], const pcre *code)
memcpy(tmpb,ap->name,ap->len);
tmpb[ap->len] = '\0';
} else {
- int slen = io_list_len(val);
- if (slen < 0) {
+ Uint slen;
+ if (erts_iolist_size(val, &slen)) {
goto error;
}
if ((slen + 1) > tmpbsiz) {
@@ -851,7 +851,7 @@ re_run_3(BIF_ALIST_3)
const pcre *code_tmp;
RestartContext restart;
byte *temp_alloc = NULL;
- int slength;
+ Uint slength;
int startoffset = 0;
int options = 0, comp_options = 0;
int ovsize;
@@ -875,7 +875,7 @@ re_run_3(BIF_ALIST_3)
if (is_not_tuple(BIF_ARG_2) || (arityval(*tuple_val(BIF_ARG_2)) != 4)) {
if (is_binary(BIF_ARG_2) || is_list(BIF_ARG_2) || is_nil(BIF_ARG_2)) {
/* Compile from textual RE */
- int slen;
+ Uint slen;
char *expr;
pcre *result;
int errcode = 0;
@@ -889,7 +889,7 @@ re_run_3(BIF_ALIST_3)
BIF_TRAP3(urun_trap_exportp, BIF_P, BIF_ARG_1, BIF_ARG_2, BIF_ARG_3);
}
- if ((slen = io_list_len(BIF_ARG_2)) < 0) {
+ if (erts_iolist_size(BIF_ARG_2, &slen)) {
BIF_ERROR(BIF_P,BADARG);
}
@@ -1027,7 +1027,7 @@ re_run_3(BIF_ALIST_3)
restart.flags |= RESTART_FLAG_SUBJECT_IN_BINARY;
} else {
handle_iolist:
- if ((slength = io_list_len(BIF_ARG_1)) < 0) {
+ if (erts_iolist_size(BIF_ARG_1, &slength)) {
erts_free(ERTS_ALC_T_RE_SUBJECT, restart.ovector);
erts_free(ERTS_ALC_T_RE_SUBJECT, restart.code);
if (restart.ret_info != NULL) {
diff --git a/erts/emulator/beam/erl_db_hash.c b/erts/emulator/beam/erl_db_hash.c
index 9ef990cc4f..fdc82c8b88 100644
--- a/erts/emulator/beam/erl_db_hash.c
+++ b/erts/emulator/beam/erl_db_hash.c
@@ -105,7 +105,7 @@
#define NSEG_2 256 /* Size of second segment table */
#define NSEG_INC 128 /* Number of segments to grow after that */
-#define SEGTAB(tb) ((struct segment**)erts_smp_atomic_read(&(tb)->segtab))
+#define SEGTAB(tb) ((struct segment**)erts_smp_atomic_read_acqb(&(tb)->segtab))
#define NACTIVE(tb) ((int)erts_smp_atomic_read(&(tb)->nactive))
#define NITEMS(tb) ((int)erts_smp_atomic_read(&(tb)->common.nitems))
@@ -122,8 +122,8 @@
*/
static ERTS_INLINE Uint hash_to_ix(DbTableHash* tb, HashValue hval)
{
- Uint mask = erts_smp_atomic_read(&tb->szm);
- Uint ix = hval & mask;
+ Uint mask = erts_smp_atomic_read_acqb(&tb->szm);
+ Uint ix = hval & mask;
if (ix >= erts_smp_atomic_read(&tb->nactive)) {
ix &= mask>>1;
ASSERT(ix < erts_smp_atomic_read(&tb->nactive));
@@ -668,6 +668,7 @@ int db_create_hash(Process *p, DbTable *tbl)
else { /* coarse locking */
tb->locks = NULL;
}
+ ERTS_THR_MEMORY_BARRIER;
#endif /* ERST_SMP */
return DB_ERROR_NONE;
}
@@ -2085,7 +2086,14 @@ static void db_print_hash(int to, void *to_arg, int show, DbTable *tbl)
while(list != 0) {
if (list->hvalue == INVALID_HASH)
erts_print(to, to_arg, "*");
- erts_print(to, to_arg, "%T", make_tuple(list->dbterm.tpl));
+ if (tb->common.compress) {
+ Eterm key = GETKEY(tb, list->dbterm.tpl);
+ erts_print(to, to_arg, "key=%R", key, list->dbterm.tpl);
+ }
+ else {
+ Eterm obj = make_tuple_rel(list->dbterm.tpl,list->dbterm.tpl);
+ erts_print(to, to_arg, "%R", obj, list->dbterm.tpl);
+ }
if (list->next != 0)
erts_print(to, to_arg, ",");
list = list->next;
@@ -2342,7 +2350,7 @@ static int alloc_seg(DbTableHash *tb)
struct ext_segment* eseg;
eseg = (struct ext_segment*) SEGTAB(tb)[seg_ix-1];
MY_ASSERT(eseg!=NULL && eseg->s.is_ext_segment);
- erts_smp_atomic_set(&tb->segtab, (erts_aint_t) eseg->segtab);
+ erts_smp_atomic_set_relb(&tb->segtab, (erts_aint_t) eseg->segtab);
tb->nsegs = eseg->nsegs;
}
ASSERT(seg_ix < tb->nsegs);
@@ -2414,7 +2422,7 @@ static int free_seg(DbTableHash *tb, int free_records)
MY_ASSERT(newtop->s.is_ext_segment);
if (newtop->prev_segtab != NULL) {
/* Time to use a smaller segtab */
- erts_smp_atomic_set(&tb->segtab, (erts_aint_t)newtop->prev_segtab);
+ erts_smp_atomic_set_relb(&tb->segtab, (erts_aint_t)newtop->prev_segtab);
tb->nsegs = seg_ix;
ASSERT(tb->nsegs == EXTSEG(SEGTAB(tb))->nsegs);
}
@@ -2431,7 +2439,7 @@ static int free_seg(DbTableHash *tb, int free_records)
if (seg_ix > 0) {
if (seg_ix < tb->nsegs) SEGTAB(tb)[seg_ix] = NULL;
} else {
- erts_smp_atomic_set(&tb->segtab, (erts_aint_t)NULL);
+ erts_smp_atomic_set_relb(&tb->segtab, (erts_aint_t)NULL);
}
#endif
tb->nslots -= SEGSZ;
@@ -2526,9 +2534,9 @@ static void grow(DbTableHash* tb, int nactive)
}
erts_smp_atomic_inc(&tb->nactive);
if (from_ix == 0) {
- erts_smp_atomic_set(&tb->szm, szm);
+ erts_smp_atomic_set_relb(&tb->szm, szm);
}
- erts_smp_atomic_set(&tb->is_resizing, 0);
+ erts_smp_atomic_set_relb(&tb->is_resizing, 0);
/* Finally, let's split the bucket. We try to do it in a smart way
to keep link order and avoid unnecessary updates of next-pointers */
@@ -2560,7 +2568,7 @@ static void grow(DbTableHash* tb, int nactive)
return;
abort:
- erts_smp_atomic_set(&tb->is_resizing, 0);
+ erts_smp_atomic_set_relb(&tb->is_resizing, 0);
}
@@ -2604,7 +2612,7 @@ static void shrink(DbTableHash* tb, int nactive)
erts_smp_atomic_set(&tb->nactive, src_ix);
if (dst_ix == 0) {
- erts_smp_atomic_set(&tb->szm, low_szm);
+ erts_smp_atomic_set_relb(&tb->szm, low_szm);
}
WUNLOCK_HASH(lck);
@@ -2618,7 +2626,7 @@ static void shrink(DbTableHash* tb, int nactive)
}
/*else already done */
- erts_smp_atomic_set(&tb->is_resizing, 0);
+ erts_smp_atomic_set_relb(&tb->is_resizing, 0);
}
diff --git a/erts/emulator/beam/erl_db_tree.c b/erts/emulator/beam/erl_db_tree.c
index a59c0c258d..9a0ba3a418 100644
--- a/erts/emulator/beam/erl_db_tree.c
+++ b/erts/emulator/beam/erl_db_tree.c
@@ -111,7 +111,7 @@ static void release_stack(DbTableTree* tb, DbTreeStack* stack)
{
if (stack == &tb->static_stack) {
ASSERT(erts_smp_atomic_read(&tb->is_stack_busy) == 1);
- erts_smp_atomic_set(&tb->is_stack_busy, 0);
+ erts_smp_atomic_set_relb(&tb->is_stack_busy, 0);
}
else {
erts_db_free(ERTS_ALC_T_DB_STK, (DbTable *) tb,
@@ -179,7 +179,7 @@ static ERTS_INLINE TreeDbTerm* replace_dbterm(DbTableTree *tb, TreeDbTerm* old,
static TreeDbTerm *traverse_until(TreeDbTerm *t, int *current, int to);
static void check_slot_pos(DbTableTree *tb);
static void check_saved_stack(DbTableTree *tb);
-static int check_table_tree(TreeDbTerm *t);
+static int check_table_tree(DbTableTree* tb, TreeDbTerm *t);
#define TREE_DEBUG
#endif
@@ -194,8 +194,8 @@ static int check_table_tree(TreeDbTerm *t);
** Debugging dump
*/
-static void do_dump_tree2(int to, void *to_arg, int show, TreeDbTerm *t,
- int offset);
+static void do_dump_tree2(DbTableTree*, int to, void *to_arg, int show,
+ TreeDbTerm *t, int offset);
#else
@@ -1730,6 +1730,7 @@ static int db_select_delete_tree(Process *p, DbTable *tbl,
** Other interface routines (not directly coupled to one bif)
*/
+
/* Display tree contents (for dump) */
static void db_print_tree(int to, void *to_arg,
int show,
@@ -1740,7 +1741,7 @@ static void db_print_tree(int to, void *to_arg,
if (show)
erts_print(to, to_arg, "\nTree data dump:\n"
"------------------------------------------------\n");
- do_dump_tree2(to, to_arg, show, tb->root, 0);
+ do_dump_tree2(&tbl->tree, to, to_arg, show, tb->root, 0);
if (show)
erts_print(to, to_arg, "\n"
"------------------------------------------------\n");
@@ -2694,7 +2695,7 @@ static Sint do_cmp_partly_bound(Eterm a, Eterm b, Eterm* b_base, int *done)
while (1) {
if ((j = do_cmp_partly_bound(*aa++, *bb++, b_base, done)) != 0 || *done)
return j;
- if (*aa==*bb)
+ if (is_same(*aa, NULL, *bb, b_base))
return 0;
if (is_not_list(*aa) || is_not_list(*bb))
return do_cmp_partly_bound(*aa, *bb, b_base, done);
@@ -2742,7 +2743,7 @@ static Sint cmp_partly_bound(Eterm partly_bound_key, Eterm bound_key, Eterm* bk_
erts_fprintf(stderr," > ");
else
erts_fprintf(stderr," == ");
- erts_fprintf(stderr,"%T\n",bound_key); // HALFWORD BUG: printing rterm
+ erts_fprintf(stderr,"%R\n", bound_key, bk_base);
#endif
return ret;
}
@@ -3084,19 +3085,28 @@ static int doit_select_delete(DbTableTree *tb, TreeDbTerm *this, void *ptr,
}
#ifdef TREE_DEBUG
-static void do_dump_tree2(int to, void *to_arg, int show, TreeDbTerm *t,
- int offset)
+static void do_dump_tree2(DbTableTree* tb, int to, void *to_arg, int show,
+ TreeDbTerm *t, int offset)
{
if (t == NULL)
- return 0;
- do_dump_tree2(to, to_arg, show, t->right, offset + 4);
+ return;
+ do_dump_tree2(tb, to, to_arg, show, t->right, offset + 4);
if (show) {
- erts_print(to, to_arg, "%*s%T (addr = %p, bal = %d)\n"
- offset, "", make_tuple(t->dbterm.tpl),
+ const char* prefix;
+ Eterm term;
+ if (tb->common.compress) {
+ prefix = "key=";
+ term = GETKEY(tb, t->dbterm.tpl);
+ }
+ else {
+ prefix = "";
+ term = make_tuple_rel(t->dbterm.tpl,t->dbterm.tpl);
+ }
+ erts_print(to, to_arg, "%*s%s%R (addr = %p, bal = %d)\n",
+ offset, "", prefix, term, t->dbterm.tpl,
t, t->balance);
}
- do_dump_tree2(to, to_arg, show, t->left, offset + 4);
- return sum;
+ do_dump_tree2(tb, to, to_arg, show, t->left, offset + 4);
}
#endif
@@ -3106,7 +3116,7 @@ static void do_dump_tree2(int to, void *to_arg, int show, TreeDbTerm *t,
void db_check_table_tree(DbTable *tbl)
{
DbTableTree *tb = &tbl->tree;
- check_table_tree(tb->root);
+ check_table_tree(tb, tb->root);
check_saved_stack(tb);
check_slot_pos(tb);
}
@@ -3137,7 +3147,7 @@ static void check_slot_pos(DbTableTree *tb)
"element position %d is really 0x%08X, when stack says "
"it's 0x%08X\n", tb->stack.slot, t,
tb->stack.array[tb->stack.pos - 1]);
- do_dump_tree2(ERTS_PRINT_STDERR, NULL, 1, tb->root, 0);
+ do_dump_tree2(tb, ERTS_PRINT_STDERR, NULL, 1, tb->root, 0);
}
}
@@ -3152,14 +3162,14 @@ static void check_saved_stack(DbTableTree *tb)
if (t != stack->array[0]) {
erts_fprintf(stderr,"tb->stack[0] is 0x%08X, should be 0x%08X\n",
stack->array[0], t);
- do_dump_tree2(ERTS_PRINT_STDERR, NULL, 1, tb->root, 0);
+ do_dump_tree2(tb, ERTS_PRINT_STDERR, NULL, 1, tb->root, 0);
return;
}
while (n < stack->pos) {
if (t == NULL) {
erts_fprintf(stderr, "NULL pointer in tree when stack not empty,"
" stack depth is %d\n", n);
- do_dump_tree2(ERTS_PRINT_STDERR, NULL, 1, tb->root, 0);
+ do_dump_tree2(tb, ERTS_PRINT_STDERR, NULL, 1, tb->root, 0);
return;
}
n++;
@@ -3173,28 +3183,26 @@ static void check_saved_stack(DbTableTree *tb)
"represent child pointer in tree!"
"(left == 0x%08X, right == 0x%08X\n",
n, tb->stack[n], t->left, t->right);
- do_dump_tree2(ERTS_PRINT_STDERR, NULL, 1, tb->root, 0);
+ do_dump_tree2(tb, ERTS_PRINT_STDERR, NULL, 1, tb->root, 0);
return;
}
}
}
}
-static int check_table_tree(TreeDbTerm *t)
+static int check_table_tree(DbTableTree* tb, TreeDbTerm *t)
{
int lh, rh;
if (t == NULL)
return 0;
- lh = check_table_tree(t->left);
- rh = check_table_tree(t->right);
+ lh = check_table_tree(tb, t->left);
+ rh = check_table_tree(tb, t->right);
if ((rh - lh) != t->balance) {
erts_fprintf(stderr, "Invalid tree balance for this node:\n");
- erts_fprintf(stderr,"balance = %d, left = 0x%08X, right = 0x%08X\n"
- "data = %T",
- t->balance, t->left, t->right,
- make_tuple(t->dbterm.tpl));
+ erts_fprintf(stderr,"balance = %d, left = 0x%08X, right = 0x%08X\n",
+ t->balance, t->left, t->right);
erts_fprintf(stderr,"\nDump:\n---------------------------------\n");
- do_dump_tree2(ERTS_PRINT_STDERR, NULL, 1, t, 0);
+ do_dump_tree2(tb, ERTS_PRINT_STDERR, NULL, 1, t, 0);
erts_fprintf(stderr,"\n---------------------------------\n");
}
return ((rh > lh) ? rh : lh) + 1;
diff --git a/erts/emulator/beam/erl_drv_thread.c b/erts/emulator/beam/erl_drv_thread.c
index 39bbe9633b..dc578f6d2a 100644
--- a/erts/emulator/beam/erl_drv_thread.c
+++ b/erts/emulator/beam/erl_drv_thread.c
@@ -700,6 +700,13 @@ erl_drv_thread_join(ErlDrvTid tid, void **respp)
extern int erts_darwin_main_thread_pipe[2];
extern int erts_darwin_main_thread_result_pipe[2];
+int erl_drv_stolen_main_thread_join(ErlDrvTid tid, void **respp);
+int erl_drv_steal_main_thread(char *name,
+ ErlDrvTid *dtid,
+ void* (*func)(void*),
+ void* arg,
+ ErlDrvThreadOpts *opts);
+
int
erl_drv_stolen_main_thread_join(ErlDrvTid tid, void **respp)
diff --git a/erts/emulator/beam/erl_lock_check.c b/erts/emulator/beam/erl_lock_check.c
index 9e18997890..9180508a49 100644
--- a/erts/emulator/beam/erl_lock_check.c
+++ b/erts/emulator/beam/erl_lock_check.c
@@ -240,7 +240,7 @@ typedef struct erts_lc_locked_lock_t_ erts_lc_locked_lock_t;
struct erts_lc_locked_lock_t_ {
erts_lc_locked_lock_t *next;
erts_lc_locked_lock_t *prev;
- Eterm extra;
+ UWord extra;
Sint16 id;
Uint16 flags;
};
@@ -441,12 +441,12 @@ new_locked_lock(erts_lc_lock_t *lck, Uint16 op_flags)
}
static void
-print_lock2(char *prefix, Sint16 id, Eterm extra, Uint16 flags, char *suffix)
+print_lock2(char *prefix, Sint16 id, Wterm extra, Uint16 flags, char *suffix)
{
char *lname = (0 <= id && id < ERTS_LOCK_ORDER_SIZE
? erts_lock_order[id].name
: "unknown");
- if (is_boxed(extra))
+ if (is_not_immed(extra))
erts_fprintf(stderr,
"%s'%s:%p%s'%s%s",
prefix,
@@ -1260,7 +1260,8 @@ erts_lc_init_lock(erts_lc_lock_t *lck, char *name, Uint16 flags)
{
lck->id = erts_lc_get_lock_order_id(name);
- lck->extra = make_boxed(&lck->extra);
+ lck->extra = &lck->extra;
+ ASSERT(is_not_immed(lck->extra));
lck->flags = flags;
lck->inited = ERTS_LC_INITITALIZED;
}
@@ -1270,6 +1271,7 @@ erts_lc_init_lock_x(erts_lc_lock_t *lck, char *name, Uint16 flags, Eterm extra)
{
lck->id = erts_lc_get_lock_order_id(name);
lck->extra = extra;
+ ASSERT(is_immed(lck->extra));
lck->flags = flags;
lck->inited = ERTS_LC_INITITALIZED;
}
diff --git a/erts/emulator/beam/erl_lock_check.h b/erts/emulator/beam/erl_lock_check.h
index cdb06d4458..b67f36fa06 100644
--- a/erts/emulator/beam/erl_lock_check.h
+++ b/erts/emulator/beam/erl_lock_check.h
@@ -39,7 +39,7 @@ typedef struct {
int inited;
Sint16 id;
Uint16 flags;
- Eterm extra;
+ UWord extra;
} erts_lc_lock_t;
#define ERTS_LC_INITITALIZED 0x7f7f7f7f
diff --git a/erts/emulator/beam/erl_nif.c b/erts/emulator/beam/erl_nif.c
index 8b48444904..68421b4387 100644
--- a/erts/emulator/beam/erl_nif.c
+++ b/erts/emulator/beam/erl_nif.c
@@ -472,7 +472,7 @@ static void tmp_alloc_dtor(struct enif_tmp_obj_t* obj)
int enif_inspect_iolist_as_binary(ErlNifEnv* env, Eterm term, ErlNifBinary* bin)
{
struct enif_tmp_obj_t* tobj;
- int sz;
+ Uint sz;
if (is_binary(term)) {
return enif_inspect_binary(env,term,bin);
}
@@ -483,7 +483,7 @@ int enif_inspect_iolist_as_binary(ErlNifEnv* env, Eterm term, ErlNifBinary* bin)
bin->ref_bin = NULL;
return 1;
}
- if ((sz = io_list_len(term)) < 0) {
+ if (erts_iolist_size(term, &sz)) {
return 0;
}
diff --git a/erts/emulator/beam/erl_port_task.c b/erts/emulator/beam/erl_port_task.c
index 1b07024ca1..326021643f 100644
--- a/erts/emulator/beam/erl_port_task.c
+++ b/erts/emulator/beam/erl_port_task.c
@@ -658,8 +658,6 @@ erts_port_task_free_port(Port *pp)
when scheduled out... */
ErtsPortTask *ptp = port_task_alloc();
erts_smp_port_state_lock(pp);
- ASSERT(erts_smp_atomic_read(&erts_ports_alive) > 0);
- erts_smp_atomic_dec(&erts_ports_alive);
pp->status &= ~ERTS_PORT_SFLG_CLOSING;
pp->status |= ERTS_PORT_SFLG_FREE_SCHEDULED;
erts_may_save_closed_port(pp);
@@ -681,7 +679,6 @@ erts_port_task_free_port(Port *pp)
port_is_dequeued = 1;
}
erts_smp_port_state_lock(pp);
- erts_smp_atomic_dec(&erts_ports_alive);
pp->status &= ~ERTS_PORT_SFLG_CLOSING;
pp->status |= ERTS_PORT_SFLG_FREE_SCHEDULED;
erts_may_save_closed_port(pp);
diff --git a/erts/emulator/beam/erl_printf_term.c b/erts/emulator/beam/erl_printf_term.c
index b71404fd27..34da9cab84 100644
--- a/erts/emulator/beam/erl_printf_term.c
+++ b/erts/emulator/beam/erl_printf_term.c
@@ -114,13 +114,13 @@ do { \
/* return 0 if list is not a non-empty flat list of printable characters */
static int
-is_printable_string(Eterm list)
+is_printable_string(Eterm list, Eterm* base)
{
int len = 0;
int c;
while(is_list(list)) {
- Eterm* consp = list_val(list);
+ Eterm* consp = list_val_rel(list, base);
Eterm hd = CAR(consp);
if (!is_byte(hd))
@@ -226,17 +226,20 @@ static int print_atom_name(fmtfn_t fn, void* arg, Eterm atom, long *dcount)
#define PRT_LAST_ARRAY_ELEMENT ((Eterm) 7) /* Note! Must be last... */
static int
-print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
+print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount,
+ Eterm* obj_base) /* ignored if !HALFWORD_HEAP */
{
DECLARE_WSTACK(s);
int res;
int i;
Eterm val;
Uint32 *ref_num;
+ union {
+ UWord word;
+ Eterm* ptr;
+ }popped;
Eterm* nobj;
-#if HALFWORD_HEAP
- UWord wobj;
-#endif
+ Wterm wobj;
res = 0;
@@ -258,18 +261,17 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
PRINT_CHAR(res, fn, arg, '}');
goto L_outer_loop;
default:
-#if HALFWORD_HEAP
- obj = (Eterm) (wobj = WSTACK_POP(s));
-#else
- obj = WSTACK_POP(s);
-#endif
+ popped.word = WSTACK_POP(s);
+
switch (val) {
case PRT_TERM:
+ obj = (Eterm) popped.word;
break;
case PRT_ONE_CONS:
+ obj = (Eterm) popped.word;
L_print_one_cons:
{
- Eterm* cons = list_val(obj);
+ Eterm* cons = list_val_rel(obj, obj_base);
Eterm tl;
obj = CAR(cons);
@@ -288,27 +290,13 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
}
break;
case PRT_LAST_ARRAY_ELEMENT:
- {
-#if HALFWORD_HEAP
- Eterm* ptr = (Eterm *) wobj;
-#else
- Eterm* ptr = (Eterm *) obj;
-#endif
- obj = *ptr;
- }
+ obj = *popped.ptr;
break;
default: /* PRT_LAST_ARRAY_ELEMENT+1 and upwards */
- {
-#if HALFWORD_HEAP
- Eterm* ptr = (Eterm *) wobj;
-#else
- Eterm* ptr = (Eterm *) obj;
-#endif
- obj = *ptr++;
- WSTACK_PUSH(s, (UWord) ptr);
- WSTACK_PUSH(s, val-1);
- WSTACK_PUSH(s, PRT_COMMA);
- }
+ obj = *popped.ptr;
+ WSTACK_PUSH(s, (UWord) (popped.ptr + 1));
+ WSTACK_PUSH(s, val-1);
+ WSTACK_PUSH(s, PRT_COMMA);
break;
}
break;
@@ -325,8 +313,12 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
PRINT_CHAR(res, fn, arg, '>');
goto L_done;
}
-
- switch (tag_val_def(obj)) {
+#if HALFWORD_HEAP
+ wobj = is_immed(obj) ? (Wterm)obj : rterm2wterm(obj, obj_base);
+#else
+ wobj = (Wterm)obj;
+#endif
+ switch (tag_val_def(wobj)) {
case NIL_DEF:
PRINT_STRING(res, fn, arg, "[]");
break;
@@ -348,13 +340,13 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
int print_res;
char def_buf[64];
char *buf, *big_str;
- Uint sz = (Uint) big_decimal_estimate(obj);
+ Uint sz = (Uint) big_decimal_estimate(wobj);
sz++;
if (sz <= 64)
buf = &def_buf[0];
else
buf = erts_alloc(ERTS_ALC_T_TMP, sz);
- big_str = erts_big_to_string(obj, buf, sz);
+ big_str = erts_big_to_string(wobj, buf, sz);
print_res = erts_printf_string(fn, arg, big_str);
if (buf != &def_buf[0])
erts_free(ERTS_ALC_T_TMP, (void *) buf);
@@ -369,9 +361,9 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
case EXTERNAL_REF_DEF:
PRINT_STRING(res, fn, arg, "#Ref<");
PRINT_ULONG(res, fn, arg, 'u', 0, 1,
- (unsigned long) ref_channel_no(obj));
- ref_num = ref_numbers(obj);
- for (i = ref_no_of_numbers(obj)-1; i >= 0; i--) {
+ (unsigned long) ref_channel_no(wobj));
+ ref_num = ref_numbers(wobj);
+ for (i = ref_no_of_numbers(wobj)-1; i >= 0; i--) {
PRINT_CHAR(res, fn, arg, '.');
PRINT_ULONG(res, fn, arg, 'u', 0, 1, (unsigned long) ref_num[i]);
}
@@ -381,30 +373,30 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
case EXTERNAL_PID_DEF:
PRINT_CHAR(res, fn, arg, '<');
PRINT_ULONG(res, fn, arg, 'u', 0, 1,
- (unsigned long) pid_channel_no(obj));
+ (unsigned long) pid_channel_no(wobj));
PRINT_CHAR(res, fn, arg, '.');
PRINT_ULONG(res, fn, arg, 'u', 0, 1,
- (unsigned long) pid_number(obj));
+ (unsigned long) pid_number(wobj));
PRINT_CHAR(res, fn, arg, '.');
PRINT_ULONG(res, fn, arg, 'u', 0, 1,
- (unsigned long) pid_serial(obj));
+ (unsigned long) pid_serial(wobj));
PRINT_CHAR(res, fn, arg, '>');
break;
case PORT_DEF:
case EXTERNAL_PORT_DEF:
PRINT_STRING(res, fn, arg, "#Port<");
PRINT_ULONG(res, fn, arg, 'u', 0, 1,
- (unsigned long) port_channel_no(obj));
+ (unsigned long) port_channel_no(wobj));
PRINT_CHAR(res, fn, arg, '.');
PRINT_ULONG(res, fn, arg, 'u', 0, 1,
- (unsigned long) port_number(obj));
+ (unsigned long) port_number(wobj));
PRINT_CHAR(res, fn, arg, '>');
break;
case LIST_DEF:
- if (is_printable_string(obj)) {
+ if (is_printable_string(obj, obj_base)) {
int c;
PRINT_CHAR(res, fn, arg, '"');
- nobj = list_val(obj);
+ nobj = list_val_rel(obj, obj_base);
while (1) {
if ((*dcount)-- <= 0)
goto L_done;
@@ -418,7 +410,7 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
}
if (is_not_list(*nobj))
break;
- nobj = list_val(*nobj);
+ nobj = list_val_rel(*nobj, obj_base);
}
PRINT_CHAR(res, fn, arg, '"');
} else {
@@ -428,7 +420,7 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
}
break;
case TUPLE_DEF:
- nobj = tuple_val(obj); /* pointer to arity */
+ nobj = tuple_val(wobj); /* pointer to arity */
i = arityval(*nobj); /* arity */
PRINT_CHAR(res, fn, arg, '{');
WSTACK_PUSH(s,PRT_CLOSE_TUPLE);
@@ -440,13 +432,13 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
break;
case FLOAT_DEF: {
FloatDef ff;
- GET_DOUBLE(obj, ff);
+ GET_DOUBLE(wobj, ff);
PRINT_DOUBLE(res, fn, arg, 'e', 6, 0, ff.fd);
}
break;
case BINARY_DEF:
{
- ProcBin* pb = (ProcBin *) binary_val(obj);
+ ProcBin* pb = (ProcBin *) binary_val(wobj);
if (pb->size == 1)
PRINT_STRING(res, fn, arg, "<<1 byte>>");
else {
@@ -458,7 +450,7 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
break;
case EXPORT_DEF:
{
- Export* ep = *((Export **) (export_val(obj) + 1));
+ Export* ep = *((Export **) (export_val(wobj) + 1));
Atom* module = atom_tab(atom_val(ep->code[0]));
Atom* name = atom_tab(atom_val(ep->code[1]));
@@ -474,7 +466,7 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
break;
case FUN_DEF:
{
- ErlFunThing *funp = (ErlFunThing *) fun_val(obj);
+ ErlFunThing *funp = (ErlFunThing *) fun_val(wobj);
Atom *ap = atom_tab(atom_val(funp->fe->module));
PRINT_STRING(res, fn, arg, "#Fun<");
@@ -490,7 +482,7 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
break;
default:
PRINT_STRING(res, fn, arg, "<unknown:");
- PRINT_POINTER(res, fn, arg, (UWord) obj);
+ PRINT_POINTER(res, fn, arg, wobj);
PRINT_CHAR(res, fn, arg, '>');
break;
}
@@ -503,9 +495,10 @@ print_term(fmtfn_t fn, void* arg, Eterm obj, long *dcount)
}
int
-erts_printf_term(fmtfn_t fn, void* arg, unsigned long term, long precision)
+erts_printf_term(fmtfn_t fn, void* arg, unsigned long term, long precision,
+ unsigned long* term_base)
{
- int res = print_term(fn, arg, (Uint) term, &precision);
+ int res = print_term(fn, arg, (Eterm)term, &precision, (Eterm*)term_base);
if (res < 0)
return res;
if (precision <= 0)
diff --git a/erts/emulator/beam/erl_printf_term.h b/erts/emulator/beam/erl_printf_term.h
index 4f76028396..4ba22f12de 100644
--- a/erts/emulator/beam/erl_printf_term.h
+++ b/erts/emulator/beam/erl_printf_term.h
@@ -21,6 +21,6 @@
#define ERL_PRINTF_TERM_H__
#include "erl_printf_format.h"
-int erts_printf_term(fmtfn_t fn, void* arg, unsigned long term, long precision);
-
+int erts_printf_term(fmtfn_t fn, void* arg, unsigned long term, long precision,
+ unsigned long* term_base);
#endif
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index 31f23d3978..2704359a8f 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -166,9 +166,8 @@ static struct {
static struct {
erts_smp_mtx_t update_mtx;
- erts_smp_atomic32_t active_runqs;
+ erts_smp_atomic32_t no_runqs;
int last_active_runqs;
- erts_smp_atomic32_t used_runqs;
int forced_check_balance;
erts_smp_atomic32_t checking_balance;
int halftime;
@@ -965,7 +964,7 @@ sched_spin_wait(ErtsSchedulerSleepInfo *ssi, int spincount)
erts_aint32_t flgs;
do {
- flgs = erts_smp_atomic32_read(&ssi->flags);
+ flgs = erts_smp_atomic32_read_acqb(&ssi->flags);
if ((flgs & (ERTS_SSI_FLG_SLEEPING|ERTS_SSI_FLG_WAITING))
!= (ERTS_SSI_FLG_SLEEPING|ERTS_SSI_FLG_WAITING)) {
break;
@@ -1114,7 +1113,7 @@ scheduler_wait(int *fcalls, ErtsSchedulerData *esdp, ErtsRunQueue *rq)
else {
erts_aint_t dt;
- erts_smp_atomic32_set(&function_calls, 0);
+ erts_smp_atomic32_set_relb(&function_calls, 0);
*fcalls = 0;
sched_waiting_sys(esdp->no, rq);
@@ -1147,7 +1146,7 @@ scheduler_wait(int *fcalls, ErtsSchedulerData *esdp, ErtsRunQueue *rq)
nonblockable_aux_work(esdp, ssi, aux_work);
#endif
- flgs = erts_smp_atomic32_read(&ssi->flags);
+ flgs = erts_smp_atomic32_read_acqb(&ssi->flags);
if (!(flgs & ERTS_SSI_FLG_WAITING)) {
ASSERT(!(flgs & ERTS_SSI_FLG_SLEEPING));
goto sys_woken;
@@ -1333,6 +1332,76 @@ wake_all_schedulers(void)
}
}
+#define ERTS_NO_USED_RUNQS_SHIFT 16
+#define ERTS_NO_RUNQS_MASK 0xffff
+
+#if ERTS_MAX_NO_OF_SCHEDULERS > ERTS_NO_RUNQS_MASK
+# error "Too large amount of schedulers allowed"
+#endif
+
+static ERTS_INLINE void
+init_no_runqs(int active, int used)
+{
+ erts_aint32_t no_runqs = (erts_aint32_t) (active & ERTS_NO_RUNQS_MASK);
+ no_runqs |= (erts_aint32_t) ((used & ERTS_NO_RUNQS_MASK) << ERTS_NO_USED_RUNQS_SHIFT);
+ erts_smp_atomic32_init(&balance_info.no_runqs, no_runqs);
+}
+
+static ERTS_INLINE void
+get_no_runqs(int *active, int *used)
+{
+ erts_aint32_t no_runqs = erts_smp_atomic32_read(&balance_info.no_runqs);
+ if (active)
+ *active = (int) (no_runqs & ERTS_NO_RUNQS_MASK);
+ if (used)
+ *used = (int) ((no_runqs >> ERTS_NO_USED_RUNQS_SHIFT) & ERTS_NO_RUNQS_MASK);
+}
+
+static ERTS_INLINE void
+set_no_used_runqs(int used)
+{
+ erts_aint32_t exp = erts_smp_atomic32_read(&balance_info.no_runqs);
+ while (1) {
+ erts_aint32_t act, new;
+ new = (used << ERTS_NO_USED_RUNQS_SHIFT) | (exp & ERTS_NO_RUNQS_MASK);
+ act = erts_smp_atomic32_cmpxchg(&balance_info.no_runqs, new, exp);
+ if (act == exp)
+ break;
+ exp = act;
+ }
+}
+
+static ERTS_INLINE void
+set_no_active_runqs(int active)
+{
+ erts_aint32_t exp = erts_smp_atomic32_read(&balance_info.no_runqs);
+ while (1) {
+ erts_aint32_t act, new;
+ new = (exp & (ERTS_NO_RUNQS_MASK << ERTS_NO_USED_RUNQS_SHIFT)) | active;
+ act = erts_smp_atomic32_cmpxchg(&balance_info.no_runqs, new, exp);
+ if (act == exp)
+ break;
+ exp = act;
+ }
+}
+
+static ERTS_INLINE int
+try_inc_no_active_runqs(int active)
+{
+ erts_aint32_t exp = erts_smp_atomic32_read(&balance_info.no_runqs);
+ if (((exp >> ERTS_NO_USED_RUNQS_SHIFT) & ERTS_NO_RUNQS_MASK) < active)
+ return 0;
+ if ((exp & ERTS_NO_RUNQS_MASK) + 1 == active) {
+ erts_aint32_t new, act;
+ new = (exp & ~ERTS_NO_RUNQS_MASK) | active;
+ act = erts_smp_atomic32_cmpxchg(&balance_info.no_runqs, new, exp);
+ if (act == exp)
+ return 1;
+ }
+ return 0;
+}
+
+
static ERTS_INLINE int
chk_wake_sched(ErtsRunQueue *crq, int ix, int activate)
{
@@ -1344,9 +1413,7 @@ chk_wake_sched(ErtsRunQueue *crq, int ix, int activate)
iflgs = erts_smp_atomic32_read(&wrq->info_flags);
if (!(iflgs & (ERTS_RUNQ_IFLG_SUSPENDED|ERTS_RUNQ_IFLG_NONEMPTY))) {
if (activate) {
- if (ix == erts_smp_atomic32_cmpxchg(&balance_info.active_runqs,
- ix+1,
- ix)) {
+ if (try_inc_no_active_runqs(ix+1)) {
erts_smp_xrunq_lock(crq, wrq);
wrq->flags &= ~ERTS_RUNQ_FLG_INACTIVE;
erts_smp_xrunq_unlock(crq, wrq);
@@ -1363,8 +1430,9 @@ wake_scheduler_on_empty_runq(ErtsRunQueue *crq)
{
int ix = crq->ix;
int stop_ix = ix;
- int active_ix = erts_smp_atomic32_read(&balance_info.active_runqs);
- int balance_ix = erts_smp_atomic32_read(&balance_info.used_runqs);
+ int active_ix, balance_ix;
+
+ get_no_runqs(&active_ix, &balance_ix);
if (active_ix > balance_ix)
active_ix = balance_ix;
@@ -1416,7 +1484,7 @@ erts_sched_notify_check_cpu_bind(void)
int ix;
if (erts_common_run_queue) {
for (ix = 0; ix < erts_no_schedulers; ix++)
- erts_smp_atomic32_set(&ERTS_SCHEDULER_IX(ix)->chk_cpu_bind, 1);
+ erts_smp_atomic32_set_relb(&ERTS_SCHEDULER_IX(ix)->chk_cpu_bind, 1);
wake_all_schedulers();
}
else {
@@ -1871,8 +1939,7 @@ try_steal_task(ErtsRunQueue *rq)
ERTS_SMP_LC_CHK_RUNQ_LOCK(rq, rq_locked);
- active_rqs = erts_smp_atomic32_read(&balance_info.active_runqs);
- blnc_rqs = erts_smp_atomic32_read(&balance_info.used_runqs);
+ get_no_runqs(&active_rqs, &blnc_rqs);
if (active_rqs > blnc_rqs)
active_rqs = blnc_rqs;
@@ -1883,7 +1950,7 @@ try_steal_task(ErtsRunQueue *rq)
if (active_rqs < blnc_rqs) {
int no = blnc_rqs - active_rqs;
int stop_ix = vix = active_rqs + rq->ix % no;
- while (erts_smp_atomic32_read(&no_empty_run_queues) < blnc_rqs) {
+ while (erts_smp_atomic32_read_acqb(&no_empty_run_queues) < blnc_rqs) {
res = check_possible_steal_victim(rq, &rq_locked, vix);
if (res)
goto done;
@@ -1898,7 +1965,7 @@ try_steal_task(ErtsRunQueue *rq)
vix = rq->ix;
/* ... then try to steal a job from another active queue... */
- while (erts_smp_atomic32_read(&no_empty_run_queues) < blnc_rqs) {
+ while (erts_smp_atomic32_read_acqb(&no_empty_run_queues) < blnc_rqs) {
vix++;
if (vix >= active_rqs)
vix = 0;
@@ -1999,7 +2066,7 @@ check_balance(ErtsRunQueue *c_rq)
return;
}
- blnc_no_rqs = (int) erts_smp_atomic32_read(&balance_info.used_runqs);
+ get_no_runqs(NULL, &blnc_no_rqs);
if (blnc_no_rqs == 1) {
c_rq->check_balance_reds = INT_MAX;
erts_smp_atomic32_set(&balance_info.checking_balance, 0);
@@ -2038,7 +2105,8 @@ check_balance(ErtsRunQueue *c_rq)
forced = balance_info.forced_check_balance;
balance_info.forced_check_balance = 0;
- blnc_no_rqs = (int) erts_smp_atomic32_read(&balance_info.used_runqs);
+ get_no_runqs(&current_active, &blnc_no_rqs);
+
if (blnc_no_rqs == 1) {
erts_smp_mtx_unlock(&balance_info.update_mtx);
erts_smp_runq_lock(c_rq);
@@ -2052,8 +2120,6 @@ check_balance(ErtsRunQueue *c_rq)
if (balance_info.full_reds_history_index >= ERTS_FULL_REDS_HISTORY_SIZE)
balance_info.full_reds_history_index = 0;
- current_active = erts_smp_atomic32_read(&balance_info.active_runqs);
-
/* Read balance information for all run queues */
for (qix = 0; qix < blnc_no_rqs; qix++) {
ErtsRunQueue *rq = ERTS_RUNQ_IX(qix);
@@ -2387,7 +2453,7 @@ erts_fprintf(stderr, "--------------------------------\n");
}
balance_info.last_active_runqs = active;
- erts_smp_atomic32_set(&balance_info.active_runqs, active);
+ set_no_active_runqs(active);
balance_info.halftime = 1;
erts_smp_atomic32_set(&balance_info.checking_balance, 0);
@@ -2695,9 +2761,8 @@ erts_init_scheduling(int mrq, int no_schedulers, int no_schedulers_online)
erts_smp_atomic32_init(&schdlr_sspnd.msb.ongoing, 0);
erts_smp_atomic32_init(&schdlr_sspnd.active, no_schedulers);
schdlr_sspnd.msb.procs = NULL;
- erts_smp_atomic32_set(&balance_info.used_runqs,
- erts_common_run_queue ? 1 : no_schedulers_online);
- erts_smp_atomic32_init(&balance_info.active_runqs, no_schedulers);
+ init_no_runqs(no_schedulers,
+ erts_common_run_queue ? 1 : no_schedulers_online);
balance_info.last_active_runqs = no_schedulers;
erts_smp_mtx_init(&balance_info.update_mtx, "migration_info_update");
balance_info.forced_check_balance = 0;
@@ -2939,7 +3004,7 @@ sched_spin_suspended(ErtsSchedulerSleepInfo *ssi, int spincount)
erts_aint32_t flgs;
do {
- flgs = erts_smp_atomic32_read(&ssi->flags);
+ flgs = erts_smp_atomic32_read_acqb(&ssi->flags);
if ((flgs & (ERTS_SSI_FLG_SLEEPING
| ERTS_SSI_FLG_WAITING
| ERTS_SSI_FLG_SUSPENDED))
@@ -3068,7 +3133,7 @@ suspend_scheduler(ErtsSchedulerData *esdp)
wake = 0;
}
- flgs = erts_smp_atomic32_read(&ssi->flags);
+ flgs = erts_smp_atomic32_read_acqb(&ssi->flags);
if (!(flgs & ERTS_SSI_FLG_SUSPENDED))
break;
erts_smp_mtx_unlock(&schdlr_sspnd.mtx);
@@ -3292,7 +3357,7 @@ erts_set_schedulers_online(Process *p,
ErtsRunQueue *to_rq = ERTS_RUNQ_IX(ix % no);
evacuate_run_queue(from_rq, to_rq);
}
- erts_smp_atomic32_set(&balance_info.used_runqs, no);
+ set_no_used_runqs(no);
erts_smp_mtx_unlock(&balance_info.update_mtx);
erts_smp_mtx_lock(&schdlr_sspnd.mtx);
}
@@ -3346,7 +3411,7 @@ erts_set_schedulers_online(Process *p,
for (ix = erts_no_run_queues-1; ix >= no; ix--)
evacuate_run_queue(ERTS_RUNQ_IX(ix),
ERTS_RUNQ_IX(ix % no));
- erts_smp_atomic32_set(&balance_info.used_runqs, no);
+ set_no_used_runqs(no);
erts_smp_mtx_unlock(&balance_info.update_mtx);
erts_smp_mtx_lock(&schdlr_sspnd.mtx);
for (ix = no; ix < online; ix++) {
@@ -3443,7 +3508,7 @@ erts_block_multi_scheduling(Process *p, ErtsProcLocks plocks, int on, int all)
else {
erts_smp_mtx_unlock(&schdlr_sspnd.mtx);
erts_smp_mtx_lock(&balance_info.update_mtx);
- erts_smp_atomic32_set(&balance_info.used_runqs, 1);
+ set_no_used_runqs(1);
for (ix = 0; ix < online; ix++) {
ErtsRunQueue *rq = ERTS_RUNQ_IX(ix);
erts_smp_runq_lock(rq);
@@ -3580,7 +3645,7 @@ erts_block_multi_scheduling(Process *p, ErtsProcLocks plocks, int on, int all)
evacuate_run_queue(ERTS_RUNQ_IX(ix),
ERTS_RUNQ_IX(ix % online));
- erts_smp_atomic32_set(&balance_info.used_runqs, online);
+ set_no_used_runqs(online);
/* Make sure that we balance soon... */
balance_info.forced_check_balance = 1;
erts_smp_runq_lock(ERTS_RUNQ_IX(0));
@@ -3887,21 +3952,9 @@ handle_pend_sync_suspend(Process *suspendee,
}
}
-/*
- * Like erts_pid2proc() but:
- *
- * * At least ERTS_PROC_LOCK_MAIN have to be held on c_p.
- * * At least ERTS_PROC_LOCK_MAIN have to be taken on pid.
- * * It also waits for proc to be in a state != running and garbing.
- * * If ERTS_PROC_LOCK_BUSY is returned, the calling process has to
- * yield (ERTS_BIF_YIELD[0-3]()). c_p might in this case have been
- * suspended.
- */
-
-
-Process *
-erts_pid2proc_not_running(Process *c_p, ErtsProcLocks c_p_locks,
- Eterm pid, ErtsProcLocks pid_locks)
+static Process *
+pid2proc_not_running(Process *c_p, ErtsProcLocks c_p_locks,
+ Eterm pid, ErtsProcLocks pid_locks, int suspend)
{
Process *rp;
int unlock_c_p_status;
@@ -3928,7 +3981,7 @@ erts_pid2proc_not_running(Process *c_p, ErtsProcLocks c_p_locks,
c_p->suspendee = NIL;
ASSERT(c_p->flags & F_P2PNR_RESCHED);
c_p->flags &= ~F_P2PNR_RESCHED;
- if (rp)
+ if (!suspend && rp)
resume_process(rp);
}
else {
@@ -3992,6 +4045,8 @@ erts_pid2proc_not_running(Process *c_p, ErtsProcLocks c_p_locks,
}
/* rp is not running and we got the locks we want... */
+ if (suspend)
+ suspend_process(rp_rq, rp);
}
erts_smp_runqs_unlock(cp_rq, rp_rq);
}
@@ -4004,6 +4059,35 @@ erts_pid2proc_not_running(Process *c_p, ErtsProcLocks c_p_locks,
return rp;
}
+
+/*
+ * Like erts_pid2proc() but:
+ *
+ * * At least ERTS_PROC_LOCK_MAIN have to be held on c_p.
+ * * At least ERTS_PROC_LOCK_MAIN have to be taken on pid.
+ * * It also waits for proc to be in a state != running and garbing.
+ * * If ERTS_PROC_LOCK_BUSY is returned, the calling process has to
+ * yield (ERTS_BIF_YIELD[0-3]()). c_p might in this case have been
+ * suspended.
+ */
+Process *
+erts_pid2proc_not_running(Process *c_p, ErtsProcLocks c_p_locks,
+ Eterm pid, ErtsProcLocks pid_locks)
+{
+ return pid2proc_not_running(c_p, c_p_locks, pid, pid_locks, 0);
+}
+
+/*
+ * Like erts_pid2proc_not_running(), but hands over the process
+ * in a suspended state unless (c_p is looked up).
+ */
+Process *
+erts_pid2proc_suspend(Process *c_p, ErtsProcLocks c_p_locks,
+ Eterm pid, ErtsProcLocks pid_locks)
+{
+ return pid2proc_not_running(c_p, c_p_locks, pid, pid_locks, 1);
+}
+
/*
* erts_pid2proc_nropt() is normally the same as
* erts_pid2proc_not_running(). However it is only
@@ -4117,6 +4201,21 @@ handle_pend_bif_async_suspend(Process *suspendee,
}
}
+#else
+
+/*
+ * Non-smp version of erts_pid2proc_suspend().
+ */
+Process *
+erts_pid2proc_suspend(Process *c_p, ErtsProcLocks c_p_locks,
+ Eterm pid, ErtsProcLocks pid_locks)
+{
+ Process *rp = erts_pid2proc(c_p, c_p_locks, pid, pid_locks);
+ if (rp)
+ erts_suspend(rp, pid_locks, NULL);
+ return rp;
+}
+
#endif /* ERTS_SMP */
/*
@@ -4650,7 +4749,7 @@ internal_add_to_runq(ErtsRunQueue *runq, Process *p)
if (p->status_flags & ERTS_PROC_SFLG_INRUNQ)
return NULL;
else if (p->runq_flags & ERTS_PROC_RUNQ_FLG_RUNNING) {
- ASSERT(p->rcount == 0);
+ ASSERT(ERTS_PROC_IS_EXITING(p) || p->rcount == 0);
ERTS_DBG_CHK_PROCS_RUNQ_NOPROC(runq, p);
p->status_flags |= ERTS_PROC_SFLG_PENDADD2SCHEDQ;
return NULL;
@@ -4661,7 +4760,7 @@ internal_add_to_runq(ErtsRunQueue *runq, Process *p)
ERTS_DBG_CHK_PROCS_RUNQ_NOPROC(runq, p);
#ifndef ERTS_SMP
/* Never schedule a suspended process (ok in smp case) */
- ASSERT(p->rcount == 0);
+ ASSERT(ERTS_PROC_IS_EXITING(p) || p->rcount == 0);
add_runq = runq;
#else
ASSERT(!p->bound_runq || p->bound_runq == p->run_queue);
@@ -5097,7 +5196,7 @@ Process *schedule(Process *p, int calls)
esdp = erts_get_scheduler_data();
rq = erts_get_runq_current(esdp);
ASSERT(esdp);
- fcalls = (int) erts_smp_atomic32_read(&function_calls);
+ fcalls = (int) erts_smp_atomic32_read_acqb(&function_calls);
actual_reds = reds = 0;
erts_smp_runq_lock(rq);
} else {
@@ -5248,14 +5347,14 @@ Process *schedule(Process *p, int calls)
| ERTS_RUNQ_FLG_CHK_CPU_BIND
| ERTS_RUNQ_FLG_SUSPENDED)) {
if ((rq->flags & ERTS_RUNQ_FLG_SUSPENDED)
- || (erts_smp_atomic32_read(&esdp->ssi->flags)
+ || (erts_smp_atomic32_read_acqb(&esdp->ssi->flags)
& ERTS_SSI_FLG_SUSPENDED)) {
ASSERT(erts_smp_atomic32_read(&esdp->ssi->flags)
& ERTS_SSI_FLG_SUSPENDED);
suspend_scheduler(esdp);
}
if ((rq->flags & ERTS_RUNQ_FLG_CHK_CPU_BIND)
- || erts_smp_atomic32_read(&esdp->chk_cpu_bind)) {
+ || erts_smp_atomic32_read_acqb(&esdp->chk_cpu_bind)) {
erts_sched_check_cpu_bind(esdp);
}
}
@@ -5306,7 +5405,7 @@ Process *schedule(Process *p, int calls)
if (rq->flags & (ERTS_RUNQ_FLG_SHARED_RUNQ
| ERTS_RUNQ_FLG_SUSPENDED)) {
if ((rq->flags & ERTS_RUNQ_FLG_SUSPENDED)
- || (erts_smp_atomic32_read(&esdp->ssi->flags)
+ || (erts_smp_atomic32_read_acqb(&esdp->ssi->flags)
& ERTS_SSI_FLG_SUSPENDED)) {
ASSERT(erts_smp_atomic32_read(&esdp->ssi->flags)
& ERTS_SSI_FLG_SUSPENDED);
@@ -5350,7 +5449,7 @@ Process *schedule(Process *p, int calls)
* Schedule system-level activities.
*/
- erts_smp_atomic32_set(&function_calls, 0);
+ erts_smp_atomic32_set_relb(&function_calls, 0);
fcalls = 0;
ASSERT(!erts_port_task_have_outstanding_io_tasks());
@@ -5392,7 +5491,7 @@ Process *schedule(Process *p, int calls)
if (erts_common_run_queue->waiting)
wake_scheduler(erts_common_run_queue, 0, 1);
}
- else if (erts_smp_atomic32_read(&no_empty_run_queues) != 0) {
+ else if (erts_smp_atomic32_read_acqb(&no_empty_run_queues) != 0) {
wake_scheduler_on_empty_runq(rq);
rq->wakeup_other = 0;
}
@@ -7603,7 +7702,8 @@ continue_exit_process(Process *p
static void
timeout_proc(Process* p)
{
- p->i = *((BeamInstr **) (UWord) p->def_arg_reg);
+ BeamInstr** pi = (BeamInstr **) p->def_arg_reg;
+ p->i = *pi;
p->flags |= F_TIMO;
p->flags &= ~F_INSLPQUEUE;
diff --git a/erts/emulator/beam/erl_process.h b/erts/emulator/beam/erl_process.h
index 334ae5573f..296acc7367 100644
--- a/erts/emulator/beam/erl_process.h
+++ b/erts/emulator/beam/erl_process.h
@@ -1535,6 +1535,10 @@ erts_get_atom_cache_map(Process *c_p)
}
#endif
+Process *erts_pid2proc_suspend(Process *,
+ ErtsProcLocks,
+ Eterm,
+ ErtsProcLocks);
#ifdef ERTS_SMP
Process *erts_pid2proc_not_running(Process *,
diff --git a/erts/emulator/beam/erl_trace.c b/erts/emulator/beam/erl_trace.c
index c0397ca6c3..8833137112 100644
--- a/erts/emulator/beam/erl_trace.c
+++ b/erts/emulator/beam/erl_trace.c
@@ -1538,8 +1538,7 @@ erts_call_trace(Process* p, BeamInstr mfa[3], Binary *match_spec,
Eterm tracee;
#endif
Eterm transformed_args[MAX_ARG];
- DeclareTmpHeap(sub_bin_heap_et,ERL_SUB_BIN_SIZE,p);
- ErlSubBin *sub_bin_heap = (ErlSubBin *) sub_bin_heap_et;
+ DeclareTypedTmpHeap(ErlSubBin,sub_bin_heap,p);
ASSERT(tracer_pid);
if (*tracer_pid == am_true) {
@@ -1600,21 +1599,20 @@ erts_call_trace(Process* p, BeamInstr mfa[3], Binary *match_spec,
if (is_boxed(arg) && header_is_bin_matchstate(*boxed_val(arg))) {
ErlBinMatchState* ms = (ErlBinMatchState *) boxed_val(arg);
ErlBinMatchBuffer* mb = &ms->mb;
- ErlSubBin* sb = sub_bin_heap;
Uint bit_size;
ASSERT(sub_bin_heap->thing_word == 0); /* At most one of match context */
bit_size = mb->size - mb->offset;
- sb->thing_word = HEADER_SUB_BIN;
- sb->size = BYTE_OFFSET(bit_size);
- sb->bitsize = BIT_OFFSET(bit_size);
- sb->offs = BYTE_OFFSET(mb->offset);
- sb->bitoffs = BIT_OFFSET(mb->offset);
- sb->is_writable = 0;
- sb->orig = mb->orig;
-
- arg = make_binary(sb);
+ sub_bin_heap->thing_word = HEADER_SUB_BIN;
+ sub_bin_heap->size = BYTE_OFFSET(bit_size);
+ sub_bin_heap->bitsize = BIT_OFFSET(bit_size);
+ sub_bin_heap->offs = BYTE_OFFSET(mb->offset);
+ sub_bin_heap->bitoffs = BIT_OFFSET(mb->offset);
+ sub_bin_heap->is_writable = 0;
+ sub_bin_heap->orig = mb->orig;
+
+ arg = make_binary(sub_bin_heap);
}
transformed_args[i] = arg;
}
diff --git a/erts/emulator/beam/global.h b/erts/emulator/beam/global.h
index 96da894d90..499bdd77ba 100644
--- a/erts/emulator/beam/global.h
+++ b/erts/emulator/beam/global.h
@@ -183,7 +183,7 @@ struct port {
process to get (line oriented I/O)*/
Uint32 status; /* Status and type flags */
int control_flags; /* Flags for port_control() */
- Uint32 snapshot; /* Next snapshot that port should be part of */
+ erts_aint32_t snapshot; /* Next snapshot that port should be part of */
struct reg_proc *reg;
ErlDrvPDL port_data_lock;
@@ -527,11 +527,10 @@ union erl_off_heap_ptr {
/* arrays that get malloced at startup */
extern Port* erts_port;
-extern erts_smp_atomic_t erts_ports_alive;
extern Uint erts_max_ports;
extern Uint erts_port_tab_index_mask;
-extern erts_smp_atomic_t erts_ports_snapshot;
+extern erts_smp_atomic32_t erts_ports_snapshot;
extern erts_smp_atomic_t erts_dead_ports_ptr;
ERTS_GLB_INLINE void erts_may_save_closed_port(Port *prt);
@@ -541,12 +540,12 @@ ERTS_GLB_INLINE void erts_may_save_closed_port(Port *prt);
ERTS_GLB_INLINE void erts_may_save_closed_port(Port *prt)
{
ERTS_SMP_LC_ASSERT(erts_smp_lc_spinlock_is_locked(&prt->state_lck));
- if (prt->snapshot != erts_smp_atomic_read(&erts_ports_snapshot)) {
+ if (prt->snapshot != erts_smp_atomic32_read_acqb(&erts_ports_snapshot)) {
/* Dead ports are added from the end of the snapshot buffer */
Eterm* tombstone = (Eterm*) erts_smp_atomic_addtest(&erts_dead_ports_ptr,
-(erts_aint_t)sizeof(Eterm));
ASSERT(tombstone+1 != NULL);
- ASSERT(prt->snapshot == (Uint32) erts_smp_atomic_read(&erts_ports_snapshot) - 1);
+ ASSERT(prt->snapshot == erts_smp_atomic32_read(&erts_ports_snapshot) - 1);
*tombstone = prt->id;
}
/*else no ongoing snapshot or port was already included or created after snapshot */
@@ -1653,10 +1652,14 @@ struct Sint_buf {
};
char* Sint_to_buf(Sint, struct Sint_buf*);
+#define ERTS_IOLIST_OK 0
+#define ERTS_IOLIST_OVERFLOW 1
+#define ERTS_IOLIST_TYPE 2
+
Eterm buf_to_intlist(Eterm**, char*, int, Eterm); /* most callers pass plain char*'s */
int io_list_to_buf(Eterm, char*, int);
int io_list_to_buf2(Eterm, char*, int);
-int io_list_len(Eterm);
+int erts_iolist_size(Eterm, Uint *);
int is_string(Eterm);
void erl_at_exit(void (*) (void*), void*);
Eterm collect_memory(Process *);
@@ -1890,6 +1893,8 @@ erts_alloc_message_heap(Uint size,
# if defined(DEBUG)
# define DeclareTmpHeap(VariableName,Size,Process) \
Eterm *VariableName = erts_debug_allocate_tmp_heap(Size,Process)
+# define DeclareTypedTmpHeap(Type,VariableName,Process) \
+ Type *VariableName = (Type *) erts_debug_allocate_tmp_heap(sizeof(Type)/sizeof(Eterm),Process)
# define DeclareTmpHeapNoproc(VariableName,Size) \
Eterm *VariableName = erts_debug_allocate_tmp_heap(Size,NULL)
# define UseTmpHeap(Size,Proc) \
@@ -1911,6 +1916,8 @@ erts_alloc_message_heap(Uint size,
# else
# define DeclareTmpHeap(VariableName,Size,Process) \
Eterm *VariableName = (ERTS_PROC_GET_SCHDATA(Process)->tmp_heap)+(ERTS_PROC_GET_SCHDATA(Process)->num_tmp_heap_used)
+# define DeclareTypedTmpHeap(Type,VariableName,Process) \
+ Type *VariableName = (Type *) (ERTS_PROC_GET_SCHDATA(Process)->tmp_heap)+(ERTS_PROC_GET_SCHDATA(Process)->num_tmp_heap_used)
# define DeclareTmpHeapNoproc(VariableName,Size) \
Eterm *VariableName = (erts_get_scheduler_data()->tmp_heap)+(erts_get_scheduler_data()->num_tmp_heap_used)
# define UseTmpHeap(Size,Proc) \
@@ -1936,6 +1943,8 @@ erts_alloc_message_heap(Uint size,
#else
# define DeclareTmpHeap(VariableName,Size,Process) \
Eterm VariableName[Size]
+# define DeclareTypedTmpHeap(Type,VariableName,Process) \
+ Type VariableName[1]
# define DeclareTmpHeapNoproc(VariableName,Size) \
Eterm VariableName[Size]
# define UseTmpHeap(Size,Proc) /* Nothing */
diff --git a/erts/emulator/beam/io.c b/erts/emulator/beam/io.c
index f619c6f88b..df5f8b22a3 100644
--- a/erts/emulator/beam/io.c
+++ b/erts/emulator/beam/io.c
@@ -56,7 +56,6 @@ static erts_smp_tsd_key_t driver_list_last_error_key; /* Save last DDLL error o
per thread basis (for BC interfaces) */
Port* erts_port; /* The port table */
-erts_smp_atomic_t erts_ports_alive;
erts_smp_atomic_t erts_bytes_out; /* No bytes sent out of the system */
erts_smp_atomic_t erts_bytes_in; /* No bytes gotten into the system */
@@ -82,6 +81,9 @@ static void driver_monitor_unlock_pdl(Port *p);
#define DRV_MONITOR_UNLOCK_PDL(Port) /* nothing */
#endif
+#define ERL_SMALL_IO_BIN_LIMIT (4*ERL_ONHEAP_BIN_LIMIT)
+#define SMALL_WRITE_VEC 16
+
static ERTS_INLINE ErlIOQueue*
drvport2ioq(ErlDrvPort drvport)
{
@@ -190,7 +192,7 @@ typedef struct line_buf_context {
static erts_smp_spinlock_t get_free_port_lck;
static Uint last_port_num;
static Uint port_num_mask;
-erts_smp_atomic_t erts_ports_snapshot; /* Identifies the _next_ snapshot (not the ongoing) */
+erts_smp_atomic32_t erts_ports_snapshot; /* Identifies the _next_ snapshot (not the ongoing) */
static ERTS_INLINE void
@@ -421,10 +423,9 @@ setup_port(Port* prt, Eterm pid, erts_driver_t *driver,
new_name = (char*) erts_alloc(ERTS_ALC_T_PORT_NAME, sys_strlen(name)+1);
sys_strcpy(new_name, name);
erts_smp_runq_lock(runq);
- erts_smp_atomic_inc(&erts_ports_alive);
erts_smp_port_state_lock(prt);
prt->status = ERTS_PORT_SFLG_CONNECTED | xstatus;
- prt->snapshot = (Uint32) erts_smp_atomic_read(&erts_ports_snapshot);
+ prt->snapshot = erts_smp_atomic32_read(&erts_ports_snapshot);
old_name = prt->name;
prt->name = new_name;
#ifdef ERTS_SMP
@@ -954,13 +955,14 @@ do { \
int _bitoffs; \
int _bitsize; \
ERTS_GET_REAL_BIN(obj, _real, _offset, _bitoffs, _bitsize); \
- ASSERT(_bitsize == 0); \
+ if (_bitsize != 0) goto L_type_error; \
if (thing_subtag(*binary_val(_real)) == REFC_BINARY_SUBTAG && \
_bitoffs == 0) { \
b_size += _size; \
+ if (b_size < _size) goto L_overflow_error; \
in_clist = 0; \
v_size++; \
- if (_size >= bin_limit) { \
+ if (_size >= ERL_SMALL_IO_BIN_LIMIT) { \
p_in_clist = 0; \
p_v_size++; \
} else { \
@@ -972,6 +974,7 @@ do { \
} \
} else { \
c_size += _size; \
+ if (c_size < _size) goto L_overflow_error; \
if (!in_clist) { \
in_clist = 1; \
v_size++; \
@@ -986,29 +989,30 @@ do { \
/*
-** Size of a io list in bytes
-** return -1 if error
-** returns: - Total size of io list
-** vsize - SysIOVec size needed for a writev
-** csize - Number of bytes not in binary (in the common binary)
-** pvsize - SysIOVec size needed if packing small binaries
-** pcsize - Number of bytes in the common binary if packing
-*/
+ * Returns 0 if successful and a non-zero value otherwise.
+ *
+ * Return values through pointers:
+ * *vsize - SysIOVec size needed for a writev
+ * *csize - Number of bytes not in binary (in the common binary)
+ * *pvsize - SysIOVec size needed if packing small binaries
+ * *pcsize - Number of bytes in the common binary if packing
+ * *total_size - Total size of iolist in bytes
+ */
static int
-io_list_vec_len(Eterm obj, int* vsize, int* csize,
- int bin_limit, /* small binaries limit */
- int * pvsize, int * pcsize)
+io_list_vec_len(Eterm obj, Uint* vsize, Uint* csize,
+ Uint* pvsize, Uint* pcsize, Uint* total_size)
{
DECLARE_ESTACK(s);
Eterm* objp;
- int v_size = 0;
- int c_size = 0;
- int b_size = 0;
- int in_clist = 0;
- int p_v_size = 0;
- int p_c_size = 0;
- int p_in_clist = 0;
+ Uint v_size = 0;
+ Uint c_size = 0;
+ Uint b_size = 0;
+ Uint in_clist = 0;
+ Uint p_v_size = 0;
+ Uint p_c_size = 0;
+ Uint p_in_clist = 0;
+ Uint total;
goto L_jump_start; /* avoid a push */
@@ -1022,6 +1026,9 @@ io_list_vec_len(Eterm obj, int* vsize, int* csize,
if (is_byte(obj)) {
c_size++;
+ if (c_size == 0) {
+ goto L_overflow_error;
+ }
if (!in_clist) {
in_clist = 1;
v_size++;
@@ -1061,32 +1068,31 @@ io_list_vec_len(Eterm obj, int* vsize, int* csize,
}
}
+ total = c_size + b_size;
+ if (total < c_size) {
+ goto L_overflow_error;
+ }
+ *total_size = total;
+
DESTROY_ESTACK(s);
- if (vsize != NULL)
- *vsize = v_size;
- if (csize != NULL)
- *csize = c_size;
- if (pvsize != NULL)
- *pvsize = p_v_size;
- if (pcsize != NULL)
- *pcsize = p_c_size;
- return c_size + b_size;
+ *vsize = v_size;
+ *csize = c_size;
+ *pvsize = p_v_size;
+ *pcsize = p_c_size;
+ return 0;
L_type_error:
+ L_overflow_error:
DESTROY_ESTACK(s);
- return -1;
+ return 1;
}
-#define ERL_SMALL_IO_BIN_LIMIT (4*ERL_ONHEAP_BIN_LIMIT)
-#define SMALL_WRITE_VEC 16
-
-
/* write data to a port */
int erts_write_to_port(Eterm caller_id, Port *p, Eterm list)
{
char *buf;
erts_driver_t *drv = p->drv_ptr;
- int size;
+ Uint size;
int fpe_was_unmasked;
ERTS_SMP_LC_ASSERT(erts_lc_is_port_locked(p));
@@ -1094,10 +1100,10 @@ int erts_write_to_port(Eterm caller_id, Port *p, Eterm list)
p->caller = caller_id;
if (drv->outputv != NULL) {
- int vsize;
- int csize;
- int pvsize;
- int pcsize;
+ Uint vsize;
+ Uint csize;
+ Uint pvsize;
+ Uint pcsize;
int blimit;
SysIOVec iv[SMALL_WRITE_VEC];
ErlDrvBinary* bv[SMALL_WRITE_VEC];
@@ -1106,9 +1112,8 @@ int erts_write_to_port(Eterm caller_id, Port *p, Eterm list)
ErlDrvBinary* cbin;
ErlIOVec ev;
- if ((size = io_list_vec_len(list, &vsize, &csize,
- ERL_SMALL_IO_BIN_LIMIT,
- &pvsize, &pcsize)) < 0) {
+ if (io_list_vec_len(list, &vsize, &csize,
+ &pvsize, &pcsize, &size)) {
goto bad_value;
}
/* To pack or not to pack (small binaries) ...? */
@@ -1183,7 +1188,7 @@ int erts_write_to_port(Eterm caller_id, Port *p, Eterm list)
else {
ASSERT(r == -1); /* Overflow */
erts_free(ERTS_ALC_T_TMP, buf);
- if ((size = io_list_len(list)) < 0) {
+ if (erts_iolist_size(list, &size)) {
goto bad_value;
}
@@ -1274,7 +1279,6 @@ void init_io(void)
erts_smp_atomic_init(&erts_bytes_out, 0);
erts_smp_atomic_init(&erts_bytes_in, 0);
- erts_smp_atomic_init(&erts_ports_alive, 0);
for (i = 0; i < erts_max_ports; i++) {
erts_port_task_init_sched(&erts_port[i].sched);
@@ -1296,7 +1300,7 @@ void init_io(void)
erts_port[i].port_data_lock = NULL;
}
- erts_smp_atomic_init(&erts_ports_snapshot, (erts_aint_t) 0);
+ erts_smp_atomic32_init(&erts_ports_snapshot, (erts_aint32_t) 0);
last_port_num = 0;
erts_smp_spinlock_init(&get_free_port_lck, "get_free_port");
@@ -2147,7 +2151,7 @@ erts_port_control(Process* p, Port* prt, Uint command, Eterm iolist)
byte* to_port = NULL; /* Buffer to write to port. */
/* Initialization is for shutting up
warning about use before set. */
- int to_len = 0; /* Length of buffer. */
+ Uint to_len = 0; /* Length of buffer. */
int must_free = 0; /* True if the buffer should be freed. */
char port_result[ERL_ONHEAP_BIN_LIMIT]; /* Default buffer for result from port. */
char* port_resp; /* Pointer to result buffer. */
@@ -2192,7 +2196,7 @@ erts_port_control(Process* p, Port* prt, Uint command, Eterm iolist)
} else {
ASSERT(r == -1); /* Overflow */
erts_free(ERTS_ALC_T_TMP, (void *) to_port);
- if ((to_len = io_list_len(iolist)) < 0) { /* Type error */
+ if (erts_iolist_size(iolist, &to_len)) { /* Type error */
return THE_NON_VALUE;
}
must_free = 1;
diff --git a/erts/emulator/beam/safe_hash.c b/erts/emulator/beam/safe_hash.c
index 21d6ce9304..3e9243c77d 100644
--- a/erts/emulator/beam/safe_hash.c
+++ b/erts/emulator/beam/safe_hash.c
@@ -99,7 +99,7 @@ static void rehash(SafeHash* h, int grow_limit)
erts_free(h->type, (void *) old_tab);
}
/*else already done */
- erts_smp_atomic_set(&h->is_rehashing, 0);
+ erts_smp_atomic_set_relb(&h->is_rehashing, 0);
}
diff --git a/erts/emulator/beam/utils.c b/erts/emulator/beam/utils.c
index 6b4f3b3b36..a17de717bc 100644
--- a/erts/emulator/beam/utils.c
+++ b/erts/emulator/beam/utils.c
@@ -3021,13 +3021,25 @@ int io_list_to_buf(Eterm obj, char* buf, int len)
return -1;
}
-int io_list_len(Eterm obj)
+/*
+ * Return 0 if successful, and non-zero if unsuccessful.
+ */
+int erts_iolist_size(Eterm obj, Uint* sizep)
{
Eterm* objp;
- Sint len = 0;
+ Uint size = 0;
DECLARE_ESTACK(s);
goto L_again;
+#define SAFE_ADD(Var, Val) \
+ do { \
+ Uint valvar = (Val); \
+ Var += valvar; \
+ if (Var < valvar) { \
+ goto L_overflow_error; \
+ } \
+ } while (0)
+
while (!ESTACK_ISEMPTY(s)) {
obj = ESTACK_POP(s);
L_again:
@@ -3037,9 +3049,12 @@ int io_list_len(Eterm obj)
/* Head */
obj = CAR(objp);
if (is_byte(obj)) {
- len++;
+ size++;
+ if (size == 0) {
+ goto L_overflow_error;
+ }
} else if (is_binary(obj) && binary_bitsize(obj) == 0) {
- len += binary_size(obj);
+ SAFE_ADD(size, binary_size(obj));
} else if (is_list(obj)) {
ESTACK_PUSH(s, CDR(objp));
goto L_iter_list; /* on head */
@@ -3051,23 +3066,29 @@ int io_list_len(Eterm obj)
if (is_list(obj))
goto L_iter_list; /* on tail */
else if (is_binary(obj) && binary_bitsize(obj) == 0) {
- len += binary_size(obj);
+ SAFE_ADD(size, binary_size(obj));
} else if (is_not_nil(obj)) {
goto L_type_error;
}
} else if (is_binary(obj) && binary_bitsize(obj) == 0) { /* Tail was binary */
- len += binary_size(obj);
+ SAFE_ADD(size, binary_size(obj));
} else if (is_not_nil(obj)) {
goto L_type_error;
}
}
+#undef SAFE_ADD
DESTROY_ESTACK(s);
- return len;
+ *sizep = size;
+ return ERTS_IOLIST_OK;
+
+ L_overflow_error:
+ DESTROY_ESTACK(s);
+ return ERTS_IOLIST_OVERFLOW;
L_type_error:
DESTROY_ESTACK(s);
- return -1;
+ return ERTS_IOLIST_TYPE;
}
/* return 0 if item is not a non-empty flat list of bytes */
diff --git a/erts/emulator/hipe/hipe_bif2.c b/erts/emulator/hipe/hipe_bif2.c
index 19cd32c68f..2660f74a82 100644
--- a/erts/emulator/hipe/hipe_bif2.c
+++ b/erts/emulator/hipe/hipe_bif2.c
@@ -1,9 +1,8 @@
/*
* %CopyrightBegin%
-
- *
+ *
* Copyright Ericsson AB 2001-2011. All Rights Reserved.
- *
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
@@ -37,14 +36,25 @@
#include "hipe_arch.h"
#include "hipe_stack.h"
-BIF_RETTYPE hipe_bifs_show_estack_1(BIF_ALIST_1)
+static void proc_unlock(Process* c_p, Process* rp)
{
+ ErtsProcLocks locks = ERTS_PROC_LOCKS_ALL;
+ if (rp == c_p) {
+ locks &= ~ERTS_PROC_LOCK_MAIN;
+ }
+ if (rp && locks) {
+ erts_smp_proc_unlock(rp, locks);
+ }
+}
+
+BIF_RETTYPE hipe_bifs_show_estack_1(BIF_ALIST_1)
+{
Process *rp = erts_pid2proc(BIF_P, ERTS_PROC_LOCK_MAIN,
BIF_ARG_1, ERTS_PROC_LOCKS_ALL);
if (!rp)
BIF_ERROR(BIF_P, BADARG);
hipe_print_estack(rp);
- erts_smp_proc_unlock(rp, ERTS_PROC_LOCKS_ALL);
+ proc_unlock(BIF_P, rp);
BIF_RET(am_true);
}
@@ -55,7 +65,7 @@ BIF_RETTYPE hipe_bifs_show_heap_1(BIF_ALIST_1)
if (!rp)
BIF_ERROR(BIF_P, BADARG);
hipe_print_heap(rp);
- erts_smp_proc_unlock(rp, ERTS_PROC_LOCKS_ALL);
+ proc_unlock(BIF_P, rp);
BIF_RET(am_true);
}
@@ -66,7 +76,7 @@ BIF_RETTYPE hipe_bifs_show_nstack_1(BIF_ALIST_1)
if (!rp)
BIF_ERROR(BIF_P, BADARG);
hipe_print_nstack(rp);
- erts_smp_proc_unlock(rp, ERTS_PROC_LOCKS_ALL);
+ proc_unlock(BIF_P, rp);
BIF_RET(am_true);
}
@@ -82,7 +92,7 @@ BIF_RETTYPE hipe_bifs_show_pcb_1(BIF_ALIST_1)
if (!rp)
BIF_ERROR(BIF_P, BADARG);
hipe_print_pcb(rp);
- erts_smp_proc_unlock(rp, ERTS_PROC_LOCKS_ALL);
+ proc_unlock(BIF_P, rp);
BIF_RET(am_true);
}
diff --git a/erts/emulator/hipe/hipe_mkliterals.c b/erts/emulator/hipe/hipe_mkliterals.c
index 650861b54b..bced90785d 100644
--- a/erts/emulator/hipe/hipe_mkliterals.c
+++ b/erts/emulator/hipe/hipe_mkliterals.c
@@ -587,9 +587,9 @@ static void print_params(FILE *fp, void (*print_param)(FILE*,const struct rts_pa
(*print_param)(fp, &rts_params[i]);
}
-static int do_c(FILE *fp)
+static int do_c(FILE *fp, const char* this_exe)
{
- fprintf(fp, "/* File: hipe_literals.h, generated by hipe_mkliterals */\n");
+ fprintf(fp, "/* File: hipe_literals.h, generated by %s */\n", this_exe);
fprintf(fp, "#ifndef __HIPE_LITERALS_H__\n");
fprintf(fp, "#define __HIPE_LITERALS_H__\n\n");
print_literals(fp, c_define_literal);
@@ -603,9 +603,9 @@ static int do_c(FILE *fp)
return 0;
}
-static int do_e(FILE *fp)
+static int do_e(FILE *fp, const char* this_exe)
{
- fprintf(fp, "%%%% File: hipe_literals.hrl, generated by hipe_mkliterals");
+ fprintf(fp, "%%%% File: hipe_literals.hrl, generated by %s", this_exe);
fprintf(fp, "\n\n");
print_literals(fp, e_define_literal);
fprintf(fp, "\n");
@@ -622,9 +622,9 @@ int main(int argc, const char **argv)
compute_crc();
if (argc == 2) {
if (strcmp(argv[1], "-c") == 0)
- return do_c(stdout);
+ return do_c(stdout, argv[0]);
if (strcmp(argv[1], "-e") == 0)
- return do_e(stdout);
+ return do_e(stdout, argv[0]);
}
fprintf(stderr, "usage: %s [-c | -e] > output-file\n", argv[0]);
return 1;
diff --git a/erts/emulator/sys/common/erl_check_io.c b/erts/emulator/sys/common/erl_check_io.c
index 218bd79584..71b374527e 100644
--- a/erts/emulator/sys/common/erl_check_io.c
+++ b/erts/emulator/sys/common/erl_check_io.c
@@ -1137,6 +1137,11 @@ ERTS_CIO_EXPORT(erts_check_io)(int do_wait)
restart:
+#ifdef ERTS_BREAK_REQUESTED
+ if (ERTS_BREAK_REQUESTED)
+ erts_do_break_handling();
+#endif
+
/* Figure out timeout value */
if (do_wait) {
erts_time_remaining(&wait_time);
diff --git a/erts/emulator/sys/common/erl_mseg.c b/erts/emulator/sys/common/erl_mseg.c
index ffa3a6328c..eaef6680dd 100644
--- a/erts/emulator/sys/common/erl_mseg.c
+++ b/erts/emulator/sys/common/erl_mseg.c
@@ -134,7 +134,16 @@ static int mmap_fd;
#define CAN_PARTLY_DESTROY 0
#endif
-static const ErtsMsegOpt_t default_opt = ERTS_MSEG_DEFAULT_OPT_INITIALIZER;
+const ErtsMsegOpt_t erts_mseg_default_opt = {
+ 1, /* Use cache */
+ 1, /* Preserv data */
+ 0, /* Absolute shrink threshold */
+ 0 /* Relative shrink threshold */
+#if HALFWORD_HEAP
+ ,0 /* need low memory */
+#endif
+};
+
typedef struct cache_desc_t_ {
void *seg;
@@ -605,18 +614,10 @@ mseg_clear_cache(MemKind* mk)
INC_CC(clear_cache);
}
-static ERTS_INLINE MemKind* type2mk(ErtsAlcType_t atype)
+static ERTS_INLINE MemKind* memkind(const ErtsMsegOpt_t *opt)
{
#if HALFWORD_HEAP
- switch (atype) {
- case ERTS_ALC_A_ETS:
- case ERTS_ALC_A_BINARY:
- case ERTS_ALC_A_FIXED_SIZE:
- case ERTS_ALC_A_DRIVER:
- return &hi_mem;
- default:
- return &low_mem;
- }
+ return opt->low_mem ? &low_mem : &hi_mem;
#else
return &the_mem;
#endif
@@ -628,7 +629,7 @@ mseg_alloc(ErtsAlcType_t atype, Uint *size_p, const ErtsMsegOpt_t *opt)
Uint max, min, diff_size, size;
cache_desc_t *cd, *cand_cd;
void *seg;
- MemKind* mk = type2mk(atype);
+ MemKind* mk = memkind(opt);
INC_CC(alloc);
@@ -742,7 +743,7 @@ static void
mseg_dealloc(ErtsAlcType_t atype, void *seg, Uint size,
const ErtsMsegOpt_t *opt)
{
- MemKind* mk = type2mk(atype);
+ MemKind* mk = memkind(opt);
cache_desc_t *cd;
ERTS_MSEG_DEALLOC_STAT(mk,size);
@@ -800,7 +801,7 @@ static void *
mseg_realloc(ErtsAlcType_t atype, void *seg, Uint old_size, Uint *new_size_p,
const ErtsMsegOpt_t *opt)
{
- MemKind* mk = type2mk(atype);
+ MemKind* mk = memkind(opt);
void *new_seg;
Uint new_size;
@@ -1372,7 +1373,7 @@ erts_mseg_alloc_opt(ErtsAlcType_t atype, Uint *size_p, const ErtsMsegOpt_t *opt)
void *
erts_mseg_alloc(ErtsAlcType_t atype, Uint *size_p)
{
- return erts_mseg_alloc_opt(atype, size_p, &default_opt);
+ return erts_mseg_alloc_opt(atype, size_p, &erts_mseg_default_opt);
}
void
@@ -1387,7 +1388,7 @@ erts_mseg_dealloc_opt(ErtsAlcType_t atype, void *seg, Uint size,
void
erts_mseg_dealloc(ErtsAlcType_t atype, void *seg, Uint size)
{
- erts_mseg_dealloc_opt(atype, seg, size, &default_opt);
+ erts_mseg_dealloc_opt(atype, seg, size, &erts_mseg_default_opt);
}
void *
@@ -1405,7 +1406,7 @@ void *
erts_mseg_realloc(ErtsAlcType_t atype, void *seg, Uint old_size,
Uint *new_size_p)
{
- return erts_mseg_realloc_opt(atype, seg, old_size, new_size_p, &default_opt);
+ return erts_mseg_realloc_opt(atype, seg, old_size, new_size_p, &erts_mseg_default_opt);
}
void
diff --git a/erts/emulator/sys/common/erl_mseg.h b/erts/emulator/sys/common/erl_mseg.h
index d8053eb0d9..fbb66ee33b 100644
--- a/erts/emulator/sys/common/erl_mseg.h
+++ b/erts/emulator/sys/common/erl_mseg.h
@@ -60,15 +60,12 @@ typedef struct {
int preserv;
UWord abs_shrink_th;
UWord rel_shrink_th;
+#if HALFWORD_HEAP
+ int low_mem;
+#endif
} ErtsMsegOpt_t;
-#define ERTS_MSEG_DEFAULT_OPT_INITIALIZER \
-{ \
- 1, /* Use cache */ \
- 1, /* Preserv data */ \
- 0, /* Absolute shrink threshold */ \
- 0 /* Relative shrink threshold */ \
-}
+extern const ErtsMsegOpt_t erts_mseg_default_opt;
void *erts_mseg_alloc(ErtsAlcType_t, Uint *);
void *erts_mseg_alloc_opt(ErtsAlcType_t, Uint *, const ErtsMsegOpt_t *);
diff --git a/erts/emulator/sys/common/erl_poll.c b/erts/emulator/sys/common/erl_poll.c
index 3ae5b8d747..f5c785d683 100644
--- a/erts/emulator/sys/common/erl_poll.c
+++ b/erts/emulator/sys/common/erl_poll.c
@@ -766,7 +766,7 @@ write_batch_buf(ErtsPollSet ps, ErtsPollBatchBuf *bbp)
short filter;
int fd = (int) ebuf[i].ident;
- switch ((int) ebuf[i].udata) {
+ switch ((int) (long) ebuf[i].udata) {
/*
* Since we use a lazy update approach EV_DELETE will
@@ -805,7 +805,7 @@ write_batch_buf(ErtsPollSet ps, ErtsPollBatchBuf *bbp)
if (fd == (int) ebuf[j].ident) {
ebuf[j].udata = (void *) ERTS_POLL_KQ_OP_HANDLED;
if (!(ebuf[j].flags & EV_ERROR)) {
- switch ((int) ebuf[j].udata) {
+ switch ((int) (long) ebuf[j].udata) {
case ERTS_POLL_KQ_OP_ADD2_W:
filter = EVFILT_WRITE;
goto rm_add_fb;
@@ -823,7 +823,8 @@ write_batch_buf(ErtsPollSet ps, ErtsPollBatchBuf *bbp)
}
}
/* The other add succeded... */
- filter = (((int) ebuf[i].udata == ERTS_POLL_KQ_OP_ADD2_W)
+ filter = ((((int) (long) ebuf[i].udata)
+ == ERTS_POLL_KQ_OP_ADD2_W)
? EVFILT_READ
: EVFILT_WRITE);
rm_add_fb:
diff --git a/erts/emulator/sys/win32/erl_poll.c b/erts/emulator/sys/win32/erl_poll.c
index 7662f190ef..074e2e247f 100644
--- a/erts/emulator/sys/win32/erl_poll.c
+++ b/erts/emulator/sys/win32/erl_poll.c
@@ -693,6 +693,7 @@ static void *break_waiter(void *param)
ResetEvent(harr[0]);
erts_mtx_lock(&break_waiter_lock);
erts_atomic32_set(&break_waiter_state,BREAK_WAITER_GOT_BREAK);
+ ERTS_THR_MEMORY_BARRIER;
SetEvent(break_happened_event);
erts_mtx_unlock(&break_waiter_lock);
break;
@@ -700,6 +701,7 @@ static void *break_waiter(void *param)
ResetEvent(harr[1]);
erts_mtx_lock(&break_waiter_lock);
erts_atomic32_set(&break_waiter_state,BREAK_WAITER_GOT_HALT);
+ ERTS_THR_MEMORY_BARRIER;
SetEvent(break_happened_event);
erts_mtx_unlock(&break_waiter_lock);
break;
diff --git a/erts/emulator/test/binary_SUITE.erl b/erts/emulator/test/binary_SUITE.erl
index 7e409f053e..4e82381fba 100644
--- a/erts/emulator/test/binary_SUITE.erl
+++ b/erts/emulator/test/binary_SUITE.erl
@@ -23,12 +23,12 @@
%% Tests binaries and the BIFs:
%% list_to_binary/1
%% iolist_to_binary/1
-%% bitstr_to_list/1
+%% list_to_bitstring/1
%% binary_to_list/1
%% binary_to_list/3
%% binary_to_term/1
%% binary_to_term/2
-%% bitstr_to_list/1
+%% bitstring_to_list/1
%% term_to_binary/1
%% erlang:external_size/1
%% size(Binary)
@@ -275,12 +275,33 @@ bad_list_to_binary(Config) when is_list(Config) ->
?line test_bad_bin(fun(X, Y) -> X*Y end),
?line test_bad_bin([1,fun(X) -> X + 1 end,2|fun() -> 0 end]),
?line test_bad_bin([fun(X) -> X + 1 end]),
+
+ %% Test iolists that do not fit in the address space.
+ %% Unfortunately, it would be too slow to test in a 64-bit emulator.
+ case erlang:system_info(wordsize) of
+ 4 -> huge_iolists();
+ _ -> ok
+ end.
+
+huge_iolists() ->
+ FourGigs = 1 bsl 32,
+ ?line Sizes = [FourGigs+N || N <- lists:seq(0, 64)] ++
+ [1 bsl N || N <- lists:seq(33, 37)],
+ ?line Base = <<0:(1 bsl 20)/unit:8>>,
+ [begin
+ L = build_iolist(Sz, Base),
+ ?line {'EXIT',{system_limit,_}} = (catch list_to_binary([L])),
+ ?line {'EXIT',{system_limit,_}} = (catch list_to_bitstring([L])),
+ ?line {'EXIT',{system_limit,_}} = (catch binary:list_to_bin([L])),
+ ?line {'EXIT',{system_limit,_}} = (catch iolist_to_binary(L))
+ end || Sz <- Sizes],
ok.
test_bad_bin(List) ->
{'EXIT',{badarg,_}} = (catch list_to_binary(List)),
{'EXIT',{badarg,_}} = (catch iolist_to_binary(List)),
- {'EXIT',{badarg,_}} = (catch list_to_bitstring(List)).
+ {'EXIT',{badarg,_}} = (catch list_to_bitstring(List)),
+ {'EXIT',{badarg,_}} = (catch iolist_size(List)).
bad_binary_to_list(doc) -> "Tries binary_to_list/1,3 with bad arguments.";
bad_binary_to_list(Config) when is_list(Config) ->
@@ -516,18 +537,65 @@ external_size_1(Term, Size0, Limit) when Size0 < Limit ->
external_size_1(_, _, _) -> ok.
t_iolist_size(Config) when is_list(Config) ->
- %% Build a term whose external size only fits in a big num (on 32-bit CPU).
- Bin = iolist_to_binary(lists:seq(0, 254)),
- ?line ok = t_iolist_size_1(Bin, 0, 16#7FFFFFFF),
- ?line ok = t_iolist_size_1(make_unaligned_sub_binary(Bin), 0, 16#7FFFFFFF).
+ ?line Seed = now(),
+ ?line io:format("Seed: ~p", [Seed]),
+ ?line random:seed(Seed),
+ ?line Base = <<0:(1 bsl 20)/unit:8>>,
+ ?line Powers = [1 bsl N || N <- lists:seq(2, 37)],
+ ?line Sizes0 = [[N - random:uniform(N div 2),
+ lists:seq(N-2, N+2),
+ N+N div 2,
+ N + random:uniform(N div 2)] ||
+ N <- Powers],
+ %% Test sizes around 1^32 more thoroughly.
+ FourGigs = 1 bsl 32,
+ ?line Sizes1 = [FourGigs+N || N <- lists:seq(-8, 40)] ++ Sizes0,
+ ?line Sizes2 = lists:flatten(Sizes1),
+ ?line Sizes = lists:usort(Sizes2),
+ io:format("~p sizes:", [length(Sizes)]),
+ io:format("~p\n", [Sizes]),
+ ?line [Sz = iolist_size(build_iolist(Sz, Base)) || Sz <- Sizes],
+ ok.
-t_iolist_size_1(IOList, Size0, Limit) when Size0 < Limit ->
- case iolist_size(IOList) of
- Size when is_integer(Size), Size0 < Size ->
- io:format("~p", [Size]),
- t_iolist_size_1([IOList|IOList], Size, Limit)
+build_iolist(N, Base) when N < 16 ->
+ case random:uniform(3) of
+ 1 ->
+ <<Bin:N/binary,_/binary>> = Base,
+ Bin;
+ _ ->
+ lists:seq(1, N)
+ end;
+build_iolist(N, Base) when N =< byte_size(Base) ->
+ case random:uniform(3) of
+ 1 ->
+ <<Bin:N/binary,_/binary>> = Base,
+ Bin;
+ 2 ->
+ <<Bin:N/binary,_/binary>> = Base,
+ [Bin];
+ 3 ->
+ case N rem 2 of
+ 0 ->
+ L = build_iolist(N div 2, Base),
+ [L,L];
+ 1 ->
+ L = build_iolist(N div 2, Base),
+ [L,L,45]
+ end
end;
-t_iolist_size_1(_, _, _) -> ok.
+build_iolist(N0, Base) ->
+ Small = random:uniform(15),
+ Seq = lists:seq(1, Small),
+ N = N0 - Small,
+ case N rem 2 of
+ 0 ->
+ L = build_iolist(N div 2, Base),
+ [L,L|Seq];
+ 1 ->
+ L = build_iolist(N div 2, Base),
+ [47,L,L|Seq]
+ end.
+
bad_binary_to_term_2(doc) -> "OTP-4053.";
bad_binary_to_term_2(suite) -> [];
@@ -1183,34 +1251,7 @@ deep(Config) when is_list(Config) ->
deep_roundtrip(T) ->
B = term_to_binary(T),
- true = deep_eq(T, binary_to_term(B)).
-
-%%
-%% FIXME: =:= runs out of stack.
-%%
-deep_eq([H1|T1], [H2|T2]) ->
- deep_eq(H1, H2) andalso deep_eq(T1, T2);
-deep_eq(T1, T2) when tuple_size(T1) =:= tuple_size(T2) ->
- deep_eq_tup(T1, T2, tuple_size(T1));
-deep_eq(T1, T2) when is_function(T1), is_function(T2) ->
- {uniq,U1} = erlang:fun_info(T1, uniq),
- {index,I1} = erlang:fun_info(T1, index),
- {arity,A1} = erlang:fun_info(T1, arity),
- {env,E1} = erlang:fun_info(T1, env),
- {uniq,U2} = erlang:fun_info(T2, uniq),
- {index,I2} = erlang:fun_info(T2, index),
- {arity,A2} = erlang:fun_info(T2, arity),
- {env,E2} = erlang:fun_info(T2, env),
- U1 =:= U2 andalso I1 =:= I2 andalso A1 =:= A2 andalso
- deep_eq(E1, E2);
-deep_eq(T1, T2) ->
- T1 =:= T2.
-
-deep_eq_tup(_T1, _T2, 0) ->
- true;
-deep_eq_tup(T1, T2, N) ->
- deep_eq(element(N, T1), element(N, T2)) andalso
- deep_eq_tup(T1, T2, N-1).
+ T = binary_to_term(B).
obsolete_funs(Config) when is_list(Config) ->
erts_debug:set_internal_state(available_internal_state, true),
diff --git a/erts/emulator/test/code_SUITE.erl b/erts/emulator/test/code_SUITE.erl
index c1a048be75..a062cea117 100644
--- a/erts/emulator/test/code_SUITE.erl
+++ b/erts/emulator/test/code_SUITE.erl
@@ -498,7 +498,9 @@ do_false_dependency(Init, Code) ->
?line unlink(Pid), exit(Pid, kill),
?line true = erlang:purge_module(cpbugx),
?line true = erlang:delete_module(cpbugx),
+ ?line code:is_module_native(cpbugx), % test is_module_native on deleted code
?line true = erlang:purge_module(cpbugx),
+ ?line code:is_module_native(cpbugx), % test is_module_native on purged code
ok.
false_dependency_loop(Parent, Init, SendInitAck) ->
diff --git a/erts/emulator/test/driver_SUITE.erl b/erts/emulator/test/driver_SUITE.erl
index 7600a44988..520e3e8c76 100644
--- a/erts/emulator/test/driver_SUITE.erl
+++ b/erts/emulator/test/driver_SUITE.erl
@@ -38,7 +38,7 @@
timer_change/1,
timer_delay/1,
queue_echo/1,
- fun_to_port/1,
+ outputv_errors/1,
driver_unloaded/1,
io_ready_exit/1,
use_fallback_pollset/1,
@@ -129,7 +129,7 @@ end_per_testcase(Case, Config) ->
suite() -> [{ct_hooks,[ts_install_cth]}].
all() ->
- [fun_to_port, outputv_echo, queue_echo, {group, timer},
+ [outputv_errors, outputv_echo, queue_echo, {group, timer},
driver_unloaded, io_ready_exit, use_fallback_pollset,
bad_fd_in_pollset, driver_event, fd_change,
steal_control, otp_6602, 'driver_system_info_ver1.0',
@@ -165,37 +165,89 @@ init_per_group(_GroupName, Config) ->
end_per_group(_GroupName, Config) ->
Config.
-
-fun_to_port(doc) -> "Test sending a fun to port with an outputv-capable driver.";
-fun_to_port(Config) when is_list(Config) ->
+outputv_errors(doc) -> "Test sending bad types to port with an outputv-capable driver.";
+outputv_errors(Config) when is_list(Config) ->
?line Path = ?config(data_dir, Config),
?line erl_ddll:start(),
?line ok = load_driver(Path, outputv_drv),
- ?line fun_to_port_1(fun() -> 33 end),
- ?line fun_to_port_1([fun() -> 42 end]),
- ?line fun_to_port_1([1|fun() -> 42 end]),
- L = build_io_list(65536),
- ?line fun_to_port_1([L,fun() -> 42 end]),
- ?line fun_to_port_1([L|fun() -> 42 end]),
+ outputv_bad_types(fun(T) ->
+ ?line outputv_errors_1(T),
+ ?line outputv_errors_1([1|T]),
+ ?line L = [1,2,3],
+ ?line outputv_errors_1([L,T]),
+ ?line outputv_errors_1([L|T])
+ end),
+ outputv_errors_1(42),
+
+ %% Test iolists that do not fit in the address space.
+ %% Unfortunately, it would be too slow to test in a 64-bit emulator.
+ case erlang:system_info(wordsize) of
+ 4 -> outputv_huge_iolists();
+ _ -> ok
+ end.
+
+outputv_bad_types(Test) ->
+ Types = [-1,256,atom,42.0,{a,b,c},make_ref(),fun() -> 42 end,
+ [1|2],<<1:1>>,<<1:9>>,<<1:15>>],
+ _ = [Test(Type) || Type <- Types],
ok.
-fun_to_port_1(Term) ->
- Port = open_port({spawn,outputv_drv}, []),
+outputv_huge_iolists() ->
+ FourGigs = 1 bsl 32,
+ ?line Sizes = [FourGigs+N || N <- lists:seq(0, 64)] ++
+ [1 bsl N || N <- lists:seq(33, 37)],
+ ?line Base = <<0:(1 bsl 20)/unit:8>>,
+ [begin
+ ?line L = build_iolist(Sz, Base),
+ ?line outputv_errors_1(L)
+ end || Sz <- Sizes],
+ ok.
+
+outputv_errors_1(Term) ->
+ Port = open_port({spawn_driver,outputv_drv}, []),
{'EXIT',{badarg,_}} = (catch port_command(Port, Term)),
port_close(Port).
-build_io_list(0) -> [];
-build_io_list(1) -> [7];
-build_io_list(N) ->
- L = build_io_list(N div 2),
+build_iolist(N, Base) when N < 16 ->
+ case random:uniform(3) of
+ 1 ->
+ <<Bin:N/binary,_/binary>> = Base,
+ Bin;
+ _ ->
+ lists:seq(1, N)
+ end;
+build_iolist(N, Base) when N =< byte_size(Base) ->
+ case random:uniform(3) of
+ 1 ->
+ <<Bin:N/binary,_/binary>> = Base,
+ Bin;
+ 2 ->
+ <<Bin:N/binary,_/binary>> = Base,
+ [Bin];
+ 3 ->
+ case N rem 2 of
+ 0 ->
+ L = build_iolist(N div 2, Base),
+ [L,L];
+ 1 ->
+ L = build_iolist(N div 2, Base),
+ [L,L,45]
+ end
+ end;
+build_iolist(N0, Base) ->
+ Small = random:uniform(15),
+ Seq = lists:seq(1, Small),
+ N = N0 - Small,
case N rem 2 of
- 0 -> [L|L];
- 1 -> [7,L|L]
+ 0 ->
+ L = build_iolist(N div 2, Base),
+ [L,L|Seq];
+ 1 ->
+ L = build_iolist(N div 2, Base),
+ [47,L,L|Seq]
end.
-
-
outputv_echo(doc) -> ["Test echoing data with a driver that supports outputv."];
outputv_echo(Config) when is_list(Config) ->
?line Dog = test_server:timetrap(test_server:minutes(10)),
diff --git a/erts/emulator/test/process_SUITE.erl b/erts/emulator/test/process_SUITE.erl
index 36bae908aa..f68e712268 100644
--- a/erts/emulator/test/process_SUITE.erl
+++ b/erts/emulator/test/process_SUITE.erl
@@ -50,7 +50,8 @@
processes_last_call_trap/1, processes_gc_trap/1,
processes_term_proc_list/1,
otp_7738_waiting/1, otp_7738_suspended/1,
- otp_7738_resume/1]).
+ otp_7738_resume/1,
+ garb_other_running/1]).
-export([prio_server/2, prio_client/2]).
-export([init_per_testcase/2, end_per_testcase/2]).
@@ -72,7 +73,7 @@ all() ->
bad_register, garbage_collect, process_info_messages,
process_flag_badarg, process_flag_heap_size,
spawn_opt_heap_size, otp_6237, {group, processes_bif},
- {group, otp_7738}].
+ {group, otp_7738}, garb_other_running].
groups() ->
[{t_exit_2, [],
@@ -2116,6 +2117,41 @@ otp_7738_test(Type) ->
end,
?line ok.
+gor(Reds, Stop) ->
+ receive
+ {From, reds} ->
+ From ! {reds, Reds, self()},
+ gor(Reds+1, Stop);
+ {From, Stop} ->
+ From ! {stopped, Stop, Reds, self()}
+ after 0 ->
+ gor(Reds+1, Stop)
+ end.
+
+garb_other_running(Config) when is_list(Config) ->
+ ?line Stop = make_ref(),
+ ?line {Pid, Mon} = spawn_monitor(fun () -> gor(0, Stop) end),
+ ?line Reds = lists:foldl(fun (_, OldReds) ->
+ ?line erlang:garbage_collect(Pid),
+ ?line receive after 1 -> ok end,
+ ?line Pid ! {self(), reds},
+ ?line receive
+ {reds, NewReds, Pid} ->
+ ?line true = (NewReds > OldReds),
+ ?line NewReds
+ end
+ end,
+ 0,
+ lists:seq(1, 10000)),
+ ?line receive after 1 -> ok end,
+ ?line Pid ! {self(), Stop},
+ ?line receive
+ {stopped, Stop, StopReds, Pid} ->
+ ?line true = (StopReds > Reds)
+ end,
+ ?line receive {'DOWN', Mon, process, Pid, normal} -> ok end,
+ ?line ok.
+
%% Internal functions
wait_until(Fun) ->
diff --git a/erts/etc/common/erlexec.c b/erts/etc/common/erlexec.c
index 60b3af7db7..90d3be9448 100644
--- a/erts/etc/common/erlexec.c
+++ b/erts/etc/common/erlexec.c
@@ -394,6 +394,7 @@ int main(int argc, char **argv)
int print_args_exit = 0;
int print_qouted_cmd_exit = 0;
erts_cpu_info_t *cpuinfo = NULL;
+ char* emu_name;
#ifdef __WIN32__
this_module_handle = module;
@@ -566,6 +567,7 @@ int main(int argc, char **argv)
usage("+MYm");
}
emu = add_extra_suffixes(emu, emu_type);
+ emu_name = strsave(emu);
erts_snprintf(tmpStr, sizeof(tmpStr), "%s" DIRSEP "%s" BINARY_EXT, bindir, emu);
emu = strsave(tmpStr);
@@ -682,6 +684,9 @@ int main(int argc, char **argv)
verbose = 1;
} else if (strcmp(argv[i], "-emu_args_exit") == 0) {
print_args_exit = 1;
+ } else if (strcmp(argv[i], "-emu_name_exit") == 0) {
+ printf("%s\n", emu_name);
+ exit(0);
} else if (strcmp(argv[i], "-emu_qouted_cmd_exit") == 0) {
print_qouted_cmd_exit = 1;
} else if (strcmp(argv[i], "-env") == 0) { /* -env VARNAME VARVALUE */
@@ -1970,6 +1975,11 @@ initial_argv_massage(int *argc, char ***argv)
*/
vix = 0;
+
+ av = build_args_from_env("ERL_" OTP_SYSTEM_VERSION "_FLAGS");
+ if (av)
+ avv[vix++].argv = av;
+
av = build_args_from_env("ERL_AFLAGS");
if (av)
avv[vix++].argv = av;
@@ -1984,10 +1994,6 @@ initial_argv_massage(int *argc, char ***argv)
if (av)
avv[vix++].argv = av;
- av = build_args_from_env("ERL_" OTP_SYSTEM_VERSION "_FLAGS");
- if (av)
- avv[vix++].argv = av;
-
av = build_args_from_env("ERL_ZFLAGS");
if (av)
avv[vix++].argv = av;
diff --git a/erts/etc/unix/cerl.src b/erts/etc/unix/cerl.src
index 0355f2629f..0b2d6512ea 100644
--- a/erts/etc/unix/cerl.src
+++ b/erts/etc/unix/cerl.src
@@ -62,13 +62,21 @@ cxargs_add() {
done
}
+eeargs=
+eeargs_add() {
+ while [ $# -gt 0 ]; do
+ cargs="$cargs $1"
+ eeargs="$eeargs $1"
+ shift
+ done
+}
+
core=
GDB=
GDBBP=
GDBARGS=
TYPE=
-EMU_TYPE=
debug=
run_valgrind=no
@@ -127,34 +135,37 @@ while [ $# -gt 0 ]; do
;;
"-smp")
shift
- cargs="$cargs -smp"
- EMU_TYPE=.smp
+ if [ $# -le 0 ]; then
+ eeargs_add -smp
+ else
+ case $1 in
+ disable)
+ shift
+ eeargs_add -smpdisable
+ ;;
+ enable)
+ shift
+ eeargs_add -smp
+ ;;
+ *)
+ eeargs_add -smp
+ esac
+ fi
+ ;;
+ "-smpdisable")
+ shift
+ eeargs_add -smpdisable
;;
"-lcnt")
shift
cargs="$cargs -lcnt"
TYPE=.lcnt
;;
- "-frag")
- shift
- cargs="$cargs -frag"
- EMU_TYPE=.frag
- ;;
- "-smp_frag")
- shift
- cargs="$cargs -smp_frag"
- EMU_TYPE=.smp_frag
- ;;
"-gprof")
shift
cargs="$cargs -gprof"
TYPE=.gprof
;;
- "-hybrid")
- shift
- cargs="$cargs -hybrid"
- EMU_TYPE=.hybrid
- ;;
"-debug")
shift
cargs="$cargs -debug"
@@ -180,11 +191,6 @@ while [ $# -gt 0 ]; do
# shift
# GDB=xxgdb
# ;;
- "-shared")
- shift
- cargs="$cargs -shared"
- TYPE=.shared
- ;;
"-purify")
shift
cargs="$cargs -purify"
@@ -222,7 +228,9 @@ PATH=$BINDIR:$ROOTDIR/bin:$PATH
EXEC=$BINDIR/erlexec
PROGNAME="$PROGNAME $cargs"
-EMU=$EMU$TYPE$EMU_TYPE
+EMU="$EMU$TYPE"
+EMU_NAME=`$EXEC -emu_name_exit $eeargs`
+
if [ $run_valgrind != yes ]; then
xargs="$xargs -pz $PRELOADED --"
fi
@@ -248,9 +256,9 @@ if [ "x$GDB" = "x" ]; then
valgrind_log=
else
if [ $valmajor -gt 2 -a $valminor -gt 4 ]; then
- valgrind_log="$log_file_prefix$VALGRIND_LOG_DIR/$VALGRIND_LOGFILE_PREFIX$VALGRIND_LOGFILE_INFIX$EMU.log.$$"
+ valgrind_log="$log_file_prefix$VALGRIND_LOG_DIR/$VALGRIND_LOGFILE_PREFIX$VALGRIND_LOGFILE_INFIX$EMU_NAME.log.$$"
else
- valgrind_log="$log_file_prefix$VALGRIND_LOG_DIR/$VALGRIND_LOGFILE_PREFIX$VALGRIND_LOGFILE_INFIX$EMU.log"
+ valgrind_log="$log_file_prefix$VALGRIND_LOG_DIR/$VALGRIND_LOGFILE_PREFIX$VALGRIND_LOGFILE_INFIX$EMU_NAME.log"
fi
fi
if [ "x$VALGRIND_MISC_FLAGS" = "x" ]; then
@@ -263,9 +271,9 @@ if [ "x$GDB" = "x" ]; then
early_beam_args=`echo $beam_args | sed "s|^\(.*-progname\).*$|\1|g"`
late_beam_args=`echo $beam_args | sed "s|^$pre_beam_args.*\(-- -home.*\)$|\1|g"`
- exec valgrind $valgrind_xml $valgrind_log $valgrind_misc_flags $BINDIR/$EMU $emu_xargs $early_beam_args "$PROGNAME" $late_beam_args -pz $PRELOADED
+ exec valgrind $valgrind_xml $valgrind_log $valgrind_misc_flags $BINDIR/$EMU_NAME $emu_xargs $early_beam_args "$PROGNAME" $late_beam_args -pz $PRELOADED
else
- exec $EXEC $xargs ${1+"$@"}
+ exec $EXEC $eeargs $xargs ${1+"$@"}
fi
else
if [ "x$EMACS" = "x" ]; then
@@ -300,5 +308,5 @@ else
(insert-string \"source $ROOTDIR/erts/etc/unix/etp-commands\") \
(comint-send-input)"
# Fire up gdb in emacs...
- exec $EMACS --eval "(progn (gdb \"gdb $GDBARGS$EMU\") $gdbcmd)"
+ exec $EMACS --eval "(progn (gdb \"gdb $GDBARGS$EMU_NAME\") $gdbcmd)"
fi
diff --git a/erts/etc/win32/nsis/find_redist.sh b/erts/etc/win32/nsis/find_redist.sh
index 328811a0d7..bc4260ecba 100755
--- a/erts/etc/win32/nsis/find_redist.sh
+++ b/erts/etc/win32/nsis/find_redist.sh
@@ -139,8 +139,7 @@ fi
#echo $BPATH_LIST
for BP in $BPATH_LIST; do
- #echo "BP=$BP"
- for verdir in "sdk v2.0" "sdk v3.5" "v6.0A" "v7.0A" "v7.1"; do
+ for verdir in "sdk v2.0" "sdk v3.5" "v6.0A" "v7.0" "v7.0A" "v7.1"; do
BPATH=$BP
fail=false
allow_fail=false
@@ -171,6 +170,18 @@ for BP in $BPATH_LIST; do
fi
done
+# shortcut for locating vcredist_x86.exe is to put it into $ERL_TOP
+if [ -f $ERL_TOP/vcredist_x86.exe ]; then
+ echo $ERL_TOP/vcredist_x86.exe
+ exit 0
+fi
+
+# or $ERL_TOP/.. to share across multiple builds
+if [ -f $ERL_TOP/../vcredist_x86.exe ]; then
+ echo $ERL_TOP/../vcredist_x86.exe
+ exit 0
+fi
+
echo "Failed to locate vcredist_x86.exe because directory structure was unexpected" >&2
exit 3
diff --git a/erts/include/internal/erl_printf_format.h b/erts/include/internal/erl_printf_format.h
index 45818079ea..400cc7dafd 100644
--- a/erts/include/internal/erl_printf_format.h
+++ b/erts/include/internal/erl_printf_format.h
@@ -40,7 +40,7 @@ extern int erts_printf_ulong(fmtfn_t, void*, char, int, int, unsigned long);
extern int erts_printf_slong(fmtfn_t, void*, char, int, int, signed long);
extern int erts_printf_double(fmtfn_t, void *, char, int, int, double);
-extern int (*erts_printf_eterm_func)(fmtfn_t, void*, unsigned long, long);
+extern int (*erts_printf_eterm_func)(fmtfn_t, void*, unsigned long, long, unsigned long*);
#endif
diff --git a/erts/include/internal/libatomic_ops/ethr_atomic.h b/erts/include/internal/libatomic_ops/ethr_atomic.h
index d56693dbf8..2fc82c99a8 100644
--- a/erts/include/internal/libatomic_ops/ethr_atomic.h
+++ b/erts/include/internal/libatomic_ops/ethr_atomic.h
@@ -146,13 +146,13 @@ ETHR_NATMC_FUNC__(read)(ETHR_ATMC_T__ *var)
static ETHR_INLINE ETHR_AINT_T__
ETHR_NATMC_FUNC__(add_return)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ incr)
{
-#ifdef AO_HAVE_fetch_and_add
- return ((ETHR_AINT_T__) AO_fetch_and_add(&var->counter, (AO_t) incr)) + incr;
+#ifdef AO_HAVE_fetch_and_add_full
+ return ((ETHR_AINT_T__) AO_fetch_and_add_full(&var->counter, (AO_t) incr)) + incr;
#else
while (1) {
AO_t exp = AO_load(&var->counter);
AO_t new = exp + (AO_t) incr;
- if (AO_compare_and_swap(&var->counter, exp, new))
+ if (AO_compare_and_swap_full(&var->counter, exp, new))
return (ETHR_AINT_T__) new;
}
#endif
@@ -167,8 +167,8 @@ ETHR_NATMC_FUNC__(add)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ incr)
static ETHR_INLINE ETHR_AINT_T__
ETHR_NATMC_FUNC__(inc_return)(ETHR_ATMC_T__ *var)
{
-#ifdef AO_HAVE_fetch_and_add1
- return ((ETHR_AINT_T__) AO_fetch_and_add1(&var->counter)) + 1;
+#ifdef AO_HAVE_fetch_and_add1_full
+ return ((ETHR_AINT_T__) AO_fetch_and_add1_full(&var->counter)) + 1;
#else
return ETHR_NATMC_FUNC__(add_return)(var, 1);
#endif
@@ -183,8 +183,8 @@ ETHR_NATMC_FUNC__(inc)(ETHR_ATMC_T__ *var)
static ETHR_INLINE ETHR_AINT_T__
ETHR_NATMC_FUNC__(dec_return)(ETHR_ATMC_T__ *var)
{
-#ifdef AO_HAVE_fetch_and_sub1
- return ((ETHR_AINT_T__) AO_fetch_and_sub1(&var->counter)) - 1;
+#ifdef AO_HAVE_fetch_and_sub1_full
+ return ((ETHR_AINT_T__) AO_fetch_and_sub1_full(&var->counter)) - 1;
#else
return ETHR_NATMC_FUNC__(add_return)(var, -1);
#endif
@@ -202,7 +202,7 @@ ETHR_NATMC_FUNC__(and_retold)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ mask)
while (1) {
AO_t exp = AO_load(&var->counter);
AO_t new = exp & ((AO_t) mask);
- if (AO_compare_and_swap(&var->counter, exp, new))
+ if (AO_compare_and_swap_full(&var->counter, exp, new))
return (ETHR_AINT_T__) exp;
}
}
@@ -213,7 +213,7 @@ ETHR_NATMC_FUNC__(or_retold)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ mask)
while (1) {
AO_t exp = AO_load(&var->counter);
AO_t new = exp | ((AO_t) mask);
- if (AO_compare_and_swap(&var->counter, exp, new))
+ if (AO_compare_and_swap_full(&var->counter, exp, new))
return (ETHR_AINT_T__) exp;
}
}
@@ -225,7 +225,7 @@ ETHR_NATMC_FUNC__(cmpxchg)(ETHR_ATMC_T__ *var,
{
ETHR_AINT_T__ act;
do {
- if (AO_compare_and_swap(&var->counter, (AO_t) exp, (AO_t) new))
+ if (AO_compare_and_swap_full(&var->counter, (AO_t) exp, (AO_t) new))
return exp;
act = (ETHR_AINT_T__) AO_load(&var->counter);
} while (act == exp);
@@ -237,7 +237,7 @@ ETHR_NATMC_FUNC__(xchg)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ new)
{
while (1) {
AO_t exp = AO_load(&var->counter);
- if (AO_compare_and_swap(&var->counter, exp, (AO_t) new))
+ if (AO_compare_and_swap_full(&var->counter, exp, (AO_t) new))
return (ETHR_AINT_T__) exp;
}
}
@@ -265,7 +265,6 @@ ETHR_NATMC_FUNC__(inc_return_acqb)(ETHR_ATMC_T__ *var)
return ((ETHR_AINT_T__) AO_fetch_and_add1_acquire(&var->counter)) + 1;
#else
ETHR_AINT_T__ res = ETHR_NATMC_FUNC__(add_return)(var, 1);
- ETHR_MEMORY_BARRIER;
return res;
#endif
}
@@ -287,7 +286,6 @@ ETHR_NATMC_FUNC__(dec_return_relb)(ETHR_ATMC_T__ *var)
#ifdef AO_HAVE_fetch_and_sub1_release
return ((ETHR_AINT_T__) AO_fetch_and_sub1_release(&var->counter)) - 1;
#else
- ETHR_MEMORY_BARRIER;
return ETHR_NATMC_FUNC__(dec_return)(var);
#endif
}
@@ -314,7 +312,6 @@ ETHR_NATMC_FUNC__(cmpxchg_acqb)(ETHR_ATMC_T__ *var,
return act;
#else
ETHR_AINT_T__ act = ETHR_NATMC_FUNC__(cmpxchg)(var, new, exp);
- ETHR_MEMORY_BARRIER;
return act;
#endif
}
@@ -333,7 +330,6 @@ ETHR_NATMC_FUNC__(cmpxchg_relb)(ETHR_ATMC_T__ *var,
} while (act == exp);
return act;
#else
- ETHR_MEMORY_BARRIER;
return ETHR_NATMC_FUNC__(cmpxchg)(var, new, exp);
#endif
}
diff --git a/erts/include/internal/sparc32/atomic.h b/erts/include/internal/sparc32/atomic.h
index 00380dbf07..16182f8b01 100644
--- a/erts/include/internal/sparc32/atomic.h
+++ b/erts/include/internal/sparc32/atomic.h
@@ -95,7 +95,7 @@ ETHR_NATMC_FUNC__(add_return)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ incr)
{
ETHR_AINT_T__ old, tmp;
- __asm__ __volatile__("membar #LoadLoad|#StoreLoad\n");
+ __asm__ __volatile__("membar #LoadLoad|#StoreLoad\n" : : : "memory");
do {
old = var->counter;
tmp = old+incr;
@@ -105,7 +105,7 @@ ETHR_NATMC_FUNC__(add_return)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ incr)
: "r"(old), "r"(&var->counter), "0"(tmp)
: "memory");
} while (__builtin_expect(old != tmp, 0));
- __asm__ __volatile__("membar #StoreLoad|#StoreStore");
+ __asm__ __volatile__("membar #StoreLoad|#StoreStore" : : : "memory");
return old+incr;
}
@@ -144,7 +144,7 @@ ETHR_NATMC_FUNC__(and_retold)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ mask)
{
ETHR_AINT_T__ old, tmp;
- __asm__ __volatile__("membar #LoadLoad|#StoreLoad\n");
+ __asm__ __volatile__("membar #LoadLoad|#StoreLoad\n" : : : "memory");
do {
old = var->counter;
tmp = old & mask;
@@ -154,7 +154,7 @@ ETHR_NATMC_FUNC__(and_retold)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ mask)
: "r"(old), "r"(&var->counter), "0"(tmp)
: "memory");
} while (__builtin_expect(old != tmp, 0));
- __asm__ __volatile__("membar #StoreLoad|#StoreStore");
+ __asm__ __volatile__("membar #StoreLoad|#StoreStore" : : : "memory");
return old;
}
@@ -163,7 +163,7 @@ ETHR_NATMC_FUNC__(or_retold)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ mask)
{
ETHR_AINT_T__ old, tmp;
- __asm__ __volatile__("membar #LoadLoad|#StoreLoad\n");
+ __asm__ __volatile__("membar #LoadLoad|#StoreLoad\n" : : : "memory");
do {
old = var->counter;
tmp = old | mask;
@@ -173,7 +173,7 @@ ETHR_NATMC_FUNC__(or_retold)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ mask)
: "r"(old), "r"(&var->counter), "0"(tmp)
: "memory");
} while (__builtin_expect(old != tmp, 0));
- __asm__ __volatile__("membar #StoreLoad|#StoreStore");
+ __asm__ __volatile__("membar #StoreLoad|#StoreStore" : : : "memory");
return old;
}
@@ -182,7 +182,7 @@ ETHR_NATMC_FUNC__(xchg)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ val)
{
ETHR_AINT_T__ old, new;
- __asm__ __volatile__("membar #LoadLoad|#StoreLoad");
+ __asm__ __volatile__("membar #LoadLoad|#StoreLoad" : : : "memory");
do {
old = var->counter;
new = val;
@@ -192,20 +192,20 @@ ETHR_NATMC_FUNC__(xchg)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ val)
: "r"(old), "r"(&var->counter), "0"(new)
: "memory");
} while (__builtin_expect(old != new, 0));
- __asm__ __volatile__("membar #StoreLoad|#StoreStore");
+ __asm__ __volatile__("membar #StoreLoad|#StoreStore" : : : "memory");
return old;
}
static ETHR_INLINE ETHR_AINT_T__
ETHR_NATMC_FUNC__(cmpxchg)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ new, ETHR_AINT_T__ old)
{
- __asm__ __volatile__("membar #LoadLoad|#StoreLoad\n");
+ __asm__ __volatile__("membar #LoadLoad|#StoreLoad\n" : : : "memory");
__asm__ __volatile__(
ETHR_CAS__ " [%2], %1, %0"
: "=&r"(new)
: "r"(old), "r"(&var->counter), "0"(new)
: "memory");
- __asm__ __volatile__("membar #StoreLoad|#StoreStore");
+ __asm__ __volatile__("membar #StoreLoad|#StoreStore" : : : "memory");
return new;
}
@@ -213,13 +213,11 @@ ETHR_NATMC_FUNC__(cmpxchg)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ new, ETHR_AINT_T__
* Atomic ops with at least specified barriers.
*/
-/* TODO: relax acquire barriers */
-
static ETHR_INLINE ETHR_AINT_T__
ETHR_NATMC_FUNC__(read_acqb)(ETHR_ATMC_T__ *var)
{
ETHR_AINT_T__ res = ETHR_NATMC_FUNC__(read)(var);
- __asm__ __volatile__("membar #LoadLoad|#LoadStore|#StoreLoad|#StoreStore" : : : "memory");
+ __asm__ __volatile__("membar #LoadLoad|#LoadStore" : : : "memory");
return res;
}
@@ -234,21 +232,18 @@ static ETHR_INLINE ETHR_AINT_T__
ETHR_NATMC_FUNC__(inc_return_acqb)(ETHR_ATMC_T__ *var)
{
ETHR_AINT_T__ res = ETHR_NATMC_FUNC__(inc_return)(var);
- __asm__ __volatile__("membar #LoadLoad|#LoadStore" : : : "memory");
return res;
}
static ETHR_INLINE void
ETHR_NATMC_FUNC__(dec_relb)(ETHR_ATMC_T__ *var)
{
- __asm__ __volatile__("membar #LoadStore|#StoreStore" : : : "memory");
ETHR_NATMC_FUNC__(dec)(var);
}
static ETHR_INLINE ETHR_AINT_T__
ETHR_NATMC_FUNC__(dec_return_relb)(ETHR_ATMC_T__ *var)
{
- __asm__ __volatile__("membar #LoadStore|#StoreStore" : : : "memory");
return ETHR_NATMC_FUNC__(dec_return)(var);
}
@@ -256,14 +251,12 @@ static ETHR_INLINE ETHR_AINT_T__
ETHR_NATMC_FUNC__(cmpxchg_acqb)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ new, ETHR_AINT_T__ old)
{
ETHR_AINT_T__ res = ETHR_NATMC_FUNC__(cmpxchg)(var, new, old);
- __asm__ __volatile__("membar #LoadLoad|#LoadStore" : : : "memory");
return res;
}
static ETHR_INLINE ETHR_AINT_T__
ETHR_NATMC_FUNC__(cmpxchg_relb)(ETHR_ATMC_T__ *var, ETHR_AINT_T__ new, ETHR_AINT_T__ old)
{
- __asm__ __volatile__("membar #LoadStore|#StoreStore" : : : "memory");
return ETHR_NATMC_FUNC__(cmpxchg)(var, new, old);
}
diff --git a/erts/include/internal/tile/atomic.h b/erts/include/internal/tile/atomic.h
index 48e4c0c6c8..0c7b597a6b 100644
--- a/erts/include/internal/tile/atomic.h
+++ b/erts/include/internal/tile/atomic.h
@@ -65,25 +65,35 @@ ethr_native_atomic32_read(ethr_native_atomic32_t *var)
static ETHR_INLINE void
ethr_native_atomic32_add(ethr_native_atomic32_t *var, ethr_sint32_t incr)
{
+ ETHR_MEMORY_BARRIER;
atomic_add(&var->counter, incr);
+ ETHR_MEMORY_BARRIER;
}
static ETHR_INLINE void
ethr_native_atomic32_inc(ethr_native_atomic32_t *var)
{
+ ETHR_MEMORY_BARRIER;
atomic_increment(&var->counter);
+ ETHR_MEMORY_BARRIER;
}
static ETHR_INLINE void
ethr_native_atomic32_dec(ethr_native_atomic32_t *var)
{
+ ETHR_MEMORY_BARRIER;
atomic_decrement(&var->counter);
+ ETHR_MEMORY_BARRIER;
}
static ETHR_INLINE ethr_sint32_t
ethr_native_atomic32_add_return(ethr_native_atomic32_t *var, ethr_sint32_t incr)
{
- return atomic_exchange_and_add(&var->counter, incr) + incr;
+ ethr_sint32_t res;
+ ETHR_MEMORY_BARRIER;
+ res = atomic_exchange_and_add(&var->counter, incr) + incr;
+ ETHR_MEMORY_BARRIER;
+ return res;
}
static ETHR_INLINE ethr_sint32_t
@@ -101,18 +111,27 @@ ethr_native_atomic32_dec_return(ethr_native_atomic32_t *var)
static ETHR_INLINE ethr_sint32_t
ethr_native_atomic32_and_retold(ethr_native_atomic32_t *var, ethr_sint32_t mask)
{
- return atomic_and_val(&var->counter, mask);
+ ethr_sint32_t res;
+ ETHR_MEMORY_BARRIER;
+ res = atomic_and_val(&var->counter, mask);
+ ETHR_MEMORY_BARRIER;
+ return res;
}
static ETHR_INLINE ethr_sint32_t
ethr_native_atomic32_or_retold(ethr_native_atomic32_t *var, ethr_sint32_t mask)
{
- return atomic_or_val(&var->counter, mask);
+ ethr_sint32_t res;
+ ETHR_MEMORY_BARRIER;
+ res = atomic_or_val(&var->counter, mask);
+ ETHR_MEMORY_BARRIER;
+ return res;
}
static ETHR_INLINE ethr_sint32_t
ethr_native_atomic32_xchg(ethr_native_atomic32_t *var, ethr_sint32_t val)
{
+ ETHR_MEMORY_BARRIER;
return atomic_exchange_acq(&var->counter, val);
}
@@ -121,6 +140,7 @@ ethr_native_atomic32_cmpxchg(ethr_native_atomic32_t *var,
ethr_sint32_t new,
ethr_sint32_t expected)
{
+ ETHR_MEMORY_BARRIER;
return atomic_compare_and_exchange_val_acq(&var->counter, new, expected);
}
@@ -139,9 +159,7 @@ ethr_native_atomic32_read_acqb(ethr_native_atomic32_t *var)
static ETHR_INLINE ethr_sint32_t
ethr_native_atomic32_inc_return_acqb(ethr_native_atomic32_t *var)
{
- ethr_sint32_t res = ethr_native_atomic32_inc_return(var);
- ETHR_MEMORY_BARRIER;
- return res;
+ return ethr_native_atomic32_inc_return(var);
}
static ETHR_INLINE void
@@ -154,14 +172,12 @@ ethr_native_atomic32_set_relb(ethr_native_atomic32_t *var, ethr_sint32_t val)
static ETHR_INLINE void
ethr_native_atomic32_dec_relb(ethr_native_atomic32_t *var)
{
- ETHR_MEMORY_BARRIER;
ethr_native_atomic32_dec(var);
}
static ETHR_INLINE ethr_sint32_t
ethr_native_atomic32_dec_return_relb(ethr_native_atomic32_t *var)
{
- ETHR_MEMORY_BARRIER;
return ethr_native_atomic32_dec_return(var);
}
@@ -178,7 +194,6 @@ ethr_native_atomic32_cmpxchg_relb(ethr_native_atomic32_t *var,
ethr_sint32_t new,
ethr_sint32_t exp)
{
- ETHR_MEMORY_BARRIER;
return ethr_native_atomic32_cmpxchg(var, new, exp);
}
diff --git a/erts/lib_src/common/erl_printf_format.c b/erts/lib_src/common/erl_printf_format.c
index 968d563325..fba3fd723c 100644
--- a/erts/lib_src/common/erl_printf_format.c
+++ b/erts/lib_src/common/erl_printf_format.c
@@ -25,7 +25,7 @@
* width: [0-9]+ | '*'
* precision: [0-9]+ | '*'
* length: hh | h | l | ll | L | j | t | b<sz>
- * conversion: d,i | o,u,x,X | e,E | f,F | g,G | a,A | c | s | T |
+ * conversion: d,i | o,u,x,X | e,E | f,F | g,G | a,A | c | s | T | R |
* p | n | %
* sz: 8 | 16 | 32 | 64 | p | e
*/
@@ -101,7 +101,7 @@
#endif
#define FMTC_d 0x0000
-#define FMTC_i 0x0001
+#define FMTC_R 0x0001
#define FMTC_o 0x0002
#define FMTC_u 0x0003
#define FMTC_x 0x0004
@@ -165,7 +165,7 @@ static char heX[] = "0123456789ABCDEF";
#define SIGN(X) ((X) > 0 ? 1 : ((X) < 0 ? -1 : 0))
#define USIGN(X) ((X) == 0 ? 0 : 1)
-int (*erts_printf_eterm_func)(fmtfn_t, void*, unsigned long, long) = NULL;
+int (*erts_printf_eterm_func)(fmtfn_t, void*, unsigned long, long, unsigned long*) = NULL;
static int
noop_fn(void *vfp, char* buf, size_t len)
@@ -183,8 +183,8 @@ static int fmt_fld(fmtfn_t fn,void* arg,
int len;
/* format the prefix */
- if ((sign || (fmt & (FMTF_sgn|FMTF_blk))) &&
- (((fmt & FMTC_MASK) == FMTC_d) || ((fmt & FMTC_MASK) == FMTC_i))) {
+ if ((sign || (fmt & (FMTF_sgn|FMTF_blk)))
+ && (fmt & FMTC_MASK) == FMTC_d) {
if (sign < 0)
*pp++ = '-';
else if ((fmt & FMTF_sgn))
@@ -245,7 +245,6 @@ static int fmt_long(fmtfn_t fn,void* arg,int sign,unsigned long uval,
switch(fmt & FMTC_MASK) {
case FMTC_d:
- case FMTC_i:
case FMTC_u:
break;
case FMTC_o:
@@ -298,7 +297,6 @@ static int fmt_long_long(fmtfn_t fn,void* arg,int sign,
switch(fmt & FMTC_MASK) {
case FMTC_d:
- case FMTC_i:
case FMTC_u:
break;
case FMTC_o:
@@ -622,7 +620,7 @@ int erts_printf_format(fmtfn_t fn, void* arg, char* fmt, va_list ap)
/* specifier */
switch(*ptr) {
case 'd': ptr++; fmt |= FMTC_d; break;
- case 'i': ptr++; fmt |= FMTC_i; break;
+ case 'i': ptr++; fmt |= FMTC_d; break;
case 'o': ptr++; fmt |= FMTC_o; break;
case 'u': ptr++; fmt |= FMTC_u; break;
case 'x': ptr++; fmt |= FMTC_x; break;
@@ -637,6 +635,7 @@ int erts_printf_format(fmtfn_t fn, void* arg, char* fmt, va_list ap)
case 'p': ptr++; fmt |= FMTC_p; break;
case 'n': ptr++; fmt |= FMTC_n; break;
case 'T': ptr++; fmt |= FMTC_T; break;
+ case 'R': ptr++; fmt |= FMTC_R; break;
case '%':
FMT(fn,arg,ptr,1,count);
ptr++;
@@ -650,7 +649,6 @@ int erts_printf_format(fmtfn_t fn, void* arg, char* fmt, va_list ap)
switch(fmt & FMTC_MASK) {
case FMTC_d:
- case FMTC_i:
switch(fmt & FMTL_MASK) {
case FMTL_hh: {
signed char tval = (signed char) va_arg(ap,int);
@@ -814,9 +812,12 @@ int erts_printf_format(fmtfn_t fn, void* arg, char* fmt, va_list ap)
default: *va_arg(ap,int*) = count; break;
}
break;
- case FMTC_T: {
+ case FMTC_T: /* Eterm */
+ case FMTC_R: { /* Eterm, Eterm* base (base ignored if !HALFWORD_HEAP) */
long prec;
unsigned long eterm;
+ unsigned long* eterm_base;
+
if (!erts_printf_eterm_func)
return -EINVAL;
if (precision < 0)
@@ -826,14 +827,16 @@ int erts_printf_format(fmtfn_t fn, void* arg, char* fmt, va_list ap)
else
prec = (long) precision;
eterm = va_arg(ap, unsigned long);
+ eterm_base = ((fmt & FMTC_MASK) == FMTC_R) ?
+ va_arg(ap, unsigned long*) : NULL;
if (width > 0 && !(fmt & FMTF_adj)) {
- res = (*erts_printf_eterm_func)(noop_fn, NULL, eterm, prec);
+ res = (*erts_printf_eterm_func)(noop_fn, NULL, eterm, prec, eterm_base);
if (res < 0)
return res;
if (width > res)
BLANKS(fn, arg, width - res, count);
}
- res = (*erts_printf_eterm_func)(fn, arg, eterm, prec);
+ res = (*erts_printf_eterm_func)(fn, arg, eterm, prec, eterm_base);
if (res < 0)
return res;
count += res;
@@ -924,7 +927,7 @@ erts_printf_slong(fmtfn_t fn, void *arg, char conv, int pad, int width,
unsigned long ul_val;
switch (conv) {
case 'd': fmt |= FMTC_d; break;
- case 'i': fmt |= FMTC_i; break;
+ case 'i': fmt |= FMTC_d; break;
case 'o': fmt |= FMTC_o; break;
case 'x': fmt |= FMTC_x; break;
case 'X': fmt |= FMTC_X; break;
diff --git a/lib/asn1/doc/src/notes.xml b/lib/asn1/doc/src/notes.xml
index 77769afcd4..ccff9892c6 100644
--- a/lib/asn1/doc/src/notes.xml
+++ b/lib/asn1/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/asn1/test/test_inline.erl b/lib/asn1/test/test_inline.erl
index dfa3c134ae..b7ec0d8921 100644
--- a/lib/asn1/test/test_inline.erl
+++ b/lib/asn1/test/test_inline.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2004-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -173,8 +173,8 @@ mi_encdec(N,Val) ->
m_encdec(0,_) ->
ok;
m_encdec(N,Val) ->
- {ok,B}='Mod1':encode('L',Val),
- {ok,_R}='Mod1':decode('L',B),
+ {ok,B}='Mod':encode('L',Val),
+ {ok,_R}='Mod':decode('L',B),
m_encdec(N-1,Val).
diff --git a/lib/common_test/doc/src/notes.xml b/lib/common_test/doc/src/notes.xml
index fef1222fcb..15c7e2a9f2 100644
--- a/lib/common_test/doc/src/notes.xml
+++ b/lib/common_test/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/compiler/doc/src/compile.xml b/lib/compiler/doc/src/compile.xml
index f2af932aef..830c89ae84 100644
--- a/lib/compiler/doc/src/compile.xml
+++ b/lib/compiler/doc/src/compile.xml
@@ -68,7 +68,7 @@
to be an error if the module name in the source code is
not the same as the basename of the output file.</p>
- <p>Here follows first all elements of <c>Options</c> that in
+ <p><marker id="type-option"/>Here follows first all elements of <c>Options</c> that in
some way control the behavior of the compiler.</p>
<taglist>
<tag><c>basic_validation</c></tag>
diff --git a/lib/compiler/doc/src/notes.xml b/lib/compiler/doc/src/notes.xml
index 25a6db4ce0..5757d0c1cb 100644
--- a/lib/compiler/doc/src/notes.xml
+++ b/lib/compiler/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/debugger/doc/src/notes.xml b/lib/debugger/doc/src/notes.xml
index 3aa169a135..93e447848a 100644
--- a/lib/debugger/doc/src/notes.xml
+++ b/lib/debugger/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/dialyzer/doc/src/notes.xml b/lib/dialyzer/doc/src/notes.xml
index f132a50e0d..0dadf647c3 100755
--- a/lib/dialyzer/doc/src/notes.xml
+++ b/lib/dialyzer/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2006</year><year>2010</year>
+ <year>2006</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/docbuilder/doc/src/character_entities.xml b/lib/docbuilder/doc/src/character_entities.xml
index e78cf0ebec..0a4ae17fb5 100644
--- a/lib/docbuilder/doc/src/character_entities.xml
+++ b/lib/docbuilder/doc/src/character_entities.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>1997</year><year>2009</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -125,7 +125,7 @@
<cell align="left" valign="middle">not sign</cell>
</row>
<row>
- <cell align="left" valign="middle">&shy;</cell>
+ <cell align="left" valign="middle"></cell> <!-- a space is used instead of &shy; due to bug in fop 1.0 -->
<cell align="left" valign="middle">&amp;shy;</cell>
<cell align="left" valign="middle">soft hyphen</cell>
</row>
diff --git a/lib/docbuilder/doc/src/inline_tags.xml b/lib/docbuilder/doc/src/inline_tags.xml
index 10afbf143f..5bcca54c05 100644
--- a/lib/docbuilder/doc/src/inline_tags.xml
+++ b/lib/docbuilder/doc/src/inline_tags.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>1997</year><year>2010</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -246,7 +246,10 @@
bibliography file. Example:</p>
<pre>
[...,
- {"erlbook","Concurrent Programming in ERLANG","J. Armstrong, R. Virding, C. Wikstr&ouml;m, M. Williams, Concurrent Programming in ERLANG, Prentice Hall, 1996, ISBN 0-13-508301-X","jocke"},
+ {"erlbook",
+ "Concurrent Programming in ERLANG","J. Armstrong, R. Virding, C. Wikstr&ouml;m, "
+ "M. Williams, Concurrent Programming in ERLANG, Prentice Hall, 1996, ISBN 0-13-508301-X",
+ "jocke"},
...].
</pre>
</section>
diff --git a/lib/edoc/doc/src/notes.xml b/lib/edoc/doc/src/notes.xml
index c18a126264..630271b115 100644
--- a/lib/edoc/doc/src/notes.xml
+++ b/lib/edoc/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2007</year><year>2010</year>
+ <year>2007</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/erl_docgen/priv/bin/specs_gen.escript b/lib/erl_docgen/priv/bin/specs_gen.escript
index 840fed6dd5..982afece7f 100644
--- a/lib/erl_docgen/priv/bin/specs_gen.escript
+++ b/lib/erl_docgen/priv/bin/specs_gen.escript
@@ -2,7 +2,7 @@
%% -*- erlang -*-
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2010. All Rights Reserved.
+%% Copyright Ericsson AB 2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -29,7 +29,7 @@
%%% "-I<dir>" Directory to be searched when including a file.
%%% "-module Module"
%%% Module name to use when there is no File argument.
-%%% A temporary file will be created.
+%%% A empty specifications file will be created.
%%% Exactly one of -module Module and File must be given.
%%%
%%% The name of the generated file is "specs_<module>.xml". Its exact
@@ -67,34 +67,73 @@ usage() ->
halt(1).
call_edoc(FileSpec, InclFs, Dir) ->
- Incl = [{includes, InclFs}],
- Pre = [{preprocess, true}],
- Choice = [{dialyzer_specs, all}],
- DirOpt = [{dir, Dir}],
- Pretty = [{pretty_print, erl_pp}],
- Layout = [{layout, otp_specs},
- {file_suffix, ".specs"},
- {stylesheet, ""}],
- Warn = [{report_missing_type, false},
- {report_type_mismatch, false}],
- OptionList = (DirOpt ++ Choice ++ Pre ++ Warn ++ Pretty ++ Layout ++ Incl),
- {File, TmpFile} = case FileSpec of
- {file, File0} ->
- {File0, false};
- {module, Module} ->
- {create_tmp_file(Dir, Module), true}
- end,
- try edoc:files([File], OptionList) of
- ok ->
- clean_up(Dir, File, TmpFile),
- rename(Dir, File)
+ ReadOpts = [{includes, InclFs}, {preprocess, true}],
+ ExtractOpts = [{report_missing_type, false}],
+ LayoutOpts = [{pretty_printer, erl_pp}, {layout, otp_specs}],
+ File = case FileSpec of
+ {file, File0} -> File0;
+ {module, Module0} -> Module0
+ end,
+ try
+ Fs = case FileSpec of
+ {file, _} ->
+ Fs0 = read_file(File, ReadOpts),
+ clauses(Fs0);
+ {module, Module} ->
+ [{attribute,0,module,list_to_atom(Module)}]
+ end,
+ Doc = extract(File, Fs, ExtractOpts),
+ Text = edoc:layout(Doc, LayoutOpts),
+ ok = write_text(Text, File, Dir),
+ rename(Dir, File)
catch
_:_ ->
io:format("EDoc could not process file '~s'\n", [File]),
- clean_up(Dir, File, TmpFile),
+ clean_up(Dir),
halt(3)
end.
+read_file(File, Opts) ->
+ edoc:read_source(File, Opts).
+
+extract(File, Forms, Opts) ->
+ Env = edoc_lib:get_doc_env([], [], [], _Opts=[]),
+ {_Module, Doc} = edoc_extract:source(Forms, File, Env, Opts),
+ Doc.
+
+clauses(Fs) ->
+ clauses(Fs, no).
+
+clauses([], no) ->
+ [];
+clauses([F | Fs], Spec) ->
+ case F of
+ {attribute,_,spec,_} ->
+ clauses(Fs, F);
+ {function,_,_N,_A,_Cls} when Spec =/= no->
+ {attribute,_,spec,{Name,FunTypes}} = Spec,
+ %% [throw({no,Name,{_N,_A}}) || Name =/= {_N,_A}],
+ %% EDoc doesn't care if a function appears more than once;
+ %% this is how overloaded specs are handled:
+ (lists:append([[setelement(4, Spec, {Name,[T]}),F] ||
+ T <- FunTypes])
+ ++ clauses(Fs, no));
+ _ ->
+ [F | clauses(Fs, Spec)]
+ end.
+
+write_text(Text, File, Dir) ->
+ Base = filename:basename(File, ".erl"),
+ OutFile = filename:join(Dir, Base) ++ ".specs",
+ case file:write_file(OutFile, Text) of
+ ok ->
+ ok;
+ {error, R} ->
+ R1 = file:format_error(R),
+ io:format("could not write file '~s': ~s\n", [File, R1]),
+ halt(2)
+ end.
+
rename(Dir, F) ->
Mod = filename:basename(F, ".erl"),
Old = filename:join(Dir, Mod ++ ".specs"),
@@ -108,22 +147,10 @@ rename(Dir, F) ->
halt(2)
end.
-clean_up(Dir, File, TmpFile) ->
- [file:delete(File) || TmpFile],
+clean_up(Dir) ->
_ = [file:delete(filename:join(Dir, F)) ||
F <- ["packages-frame.html",
"overview-summary.html",
"modules-frame.html",
"index.html", "erlang.png", "edoc-info"]],
ok.
-
-create_tmp_file(Dir, Module) ->
- TmpFile = filename:join(Dir, Module++".erl"),
- case file:write_file(TmpFile, "-module(" ++ Module ++ ").\n") of
- ok ->
- TmpFile;
- {error, R} ->
- R1 = file:format_error(R),
- io:format("could not write file '~s': ~s\n", [TmpFile, R1]),
- halt(2)
- end.
diff --git a/lib/erl_docgen/priv/xsl/db_html.xsl b/lib/erl_docgen/priv/xsl/db_html.xsl
index c6375ea621..982572aeef 100644
--- a/lib/erl_docgen/priv/xsl/db_html.xsl
+++ b/lib/erl_docgen/priv/xsl/db_html.xsl
@@ -22,12 +22,15 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ extension-element-prefixes="exsl"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<xsl:include href="db_html_params.xsl"/>
<!-- Start of Dialyzer type/spec tags.
- See also the template matching "name" and the template "menu.funcs"
+ See also the templates matching "name" and "seealso" as well as
+ the template "menu.funcs"
-->
<xsl:param name="specs_file" select="''"/>
@@ -38,49 +41,58 @@
<xsl:key name="mod2app" match="module" use="@name"/>
<xsl:template name="err">
+ <xsl:param name="f"/>
<xsl:param name="m"/>
<xsl:param name="n"/>
<xsl:param name="a"/>
<xsl:param name="s"/>
<xsl:message terminate="yes">
- Error <xsl:if test="$m != ''"><xsl:value-of select ="$m"/>:</xsl:if>
- <xsl:value-of
- select="$n"/>/<xsl:value-of
- select="$a"/>: <xsl:value-of select="$s"/>
+ Error <xsl:if test="$f != ''">in <xsl:value-of select ="$f"/>:</xsl:if>
+ <xsl:if test="$m != ''"><xsl:value-of select ="$m"/>:</xsl:if>
+ <xsl:value-of select="$n"/>
+ <xsl:if test="$a != ''">/<xsl:value-of
+ select ="$a"/></xsl:if>: <xsl:value-of select="$s"/>
</xsl:message>
</xsl:template>
- <xsl:template name="spec_name">
+ <xsl:template name="find_spec">
<xsl:variable name="curModule" select="ancestor::erlref/module"/>
<xsl:variable name="mod" select="@mod"/>
<xsl:variable name="name" select="@name"/>
<xsl:variable name="arity" select="@arity"/>
- <xsl:variable name="clause" select="@clause"/>
+ <xsl:variable name="clause_i" select="@clause_i"/>
<xsl:variable name="spec0" select=
"$i/specs/module[@name=$curModule]/spec
[name=$name and arity=$arity
and (string-length($mod) = 0 or module = $mod)]"/>
- <xsl:variable name="spec" select="$spec0[string-length($clause) = 0
- or position() = $clause]"/>
- <xsl:if test="count($spec) = 0">
+ <xsl:variable name="spec" select="$spec0[string-length($clause_i) = 0
+ or position() = $clause_i]"/>
+
+ <xsl:if test="count($spec) != 1">
+ <xsl:variable name="why">
+ <xsl:choose>
+ <xsl:when test="count($spec) > 1">ambiguous spec</xsl:when>
+ <xsl:when test="count($spec) = 0">unknown spec</xsl:when>
+ </xsl:choose>
+ </xsl:variable>
<xsl:call-template name="err">
+ <xsl:with-param name="f" select="$curModule"/>
<xsl:with-param name="m" select="$mod"/>
<xsl:with-param name="n" select="$name"/>
<xsl:with-param name="a" select="$arity"/>
- <xsl:with-param name="s">unknown spec</xsl:with-param>
+ <xsl:with-param name="s" select="$why"/>
</xsl:call-template>
</xsl:if>
+ <xsl:copy-of select="$spec"/>
+ </xsl:template>
- <xsl:variable name="arity_clause">
- <xsl:choose>
- <xsl:when test="string-length(@clause) > 0">
- <xsl:value-of select="@arity"/>/<xsl:value-of select="@clause"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@arity"/>
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:template name="spec_name">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="arity" select="@arity"/>
+ <xsl:variable name="spec0">
+ <xsl:call-template name="find_spec"/>
</xsl:variable>
+ <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/>
<xsl:choose>
<xsl:when test="ancestor::cref">
@@ -89,72 +101,189 @@
</xsl:message>
</xsl:when>
<xsl:when test="ancestor::erlref">
- <a name="{$name}-{$arity_clause}"></a>
- <xsl:choose>
- <xsl:when test="string(@with_guards) = 'no'">
- <xsl:apply-templates select="$spec/contract/clause/head"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="contract">
- <xsl:with-param name="contract" select="$spec/contract"/>
- </xsl:call-template>
- </xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::name[position() = 1
+ and @name = $name and @arity = $arity]">
+ <!-- Avoid duplicated anchors.-->
+ </xsl:when>
+ <xsl:otherwise>
+ <a name="{$name}-{$arity}"></a>
+ </xsl:otherwise>
</xsl:choose>
+
+ <xsl:variable name="global_types" select="ancestor::erlref/datatypes"/>
+ <xsl:variable name="local_types"
+ select="../type[string-length(@name) > 0]"/>
+ <xsl:apply-templates select="$spec/contract/clause/head">
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
+ </xsl:apply-templates>
</xsl:when>
</xsl:choose>
</xsl:template>
- <xsl:template name="contract">
- <xsl:param name="contract"/>
- <xsl:call-template name="clause">
- <xsl:with-param name="clause" select="$contract/clause"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="clause">
- <xsl:param name="clause"/>
- <xsl:variable name="type_desc" select="../type_desc"/>
- <xsl:for-each select="$clause">
- <xsl:apply-templates select="head"/>
- <xsl:if test="count(guard) > 0">
- <xsl:call-template name="guard">
- <xsl:with-param name="guard" select="guard"/>
- <xsl:with-param name="type_desc" select="$type_desc"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
<xsl:template match="head">
+ <xsl:param name="local_types"/>
+ <xsl:param name="global_types"/>
<span class="bold_code">
- <xsl:apply-templates/>
+ <xsl:apply-templates mode="local_type">
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
+ </xsl:apply-templates>
</span>
<br/>
</xsl:template>
- <xsl:template name="guard">
- <xsl:param name="guard"/>
+ <!-- The *last* <name name="..." arity=".."/> -->
+ <xsl:template match="name" mode="types">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="arity" select="@arity"/>
+ <xsl:variable name="spec0">
+ <xsl:call-template name="find_spec"/>
+ </xsl:variable>
+ <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/>
+ <xsl:variable name="clause" select="$spec/contract/clause"/>
+
+ <xsl:variable name="global_types" select="ancestor::erlref/datatypes"/>
+ <xsl:variable name="type_desc" select="../type_desc"/>
+ <!-- $type is data types to be presented as guards ("local types") -->
+ <xsl:variable name="type"
+ select="../type[string-length(@name) > 0
+ or string-length(@variable) > 0]"/>
+ <xsl:variable name="type_variables"
+ select ="$type[string-length(@variable) > 0]"/>
+ <xsl:variable name="local_types"
+ select ="$type[string-length(@name) > 0]"/>
+ <xsl:variable name="output_subtypes" select="count($type_variables) = 0"/>
+
+ <!-- It is assumed there is no support for overloaded specs
+ (there is no spec with more than one clause) -->
+ <xsl:if test="count($clause/guard) > 0 or count($type) > 0">
+ <div class="REFBODY"><p>Types:</p>
+
+ <xsl:choose>
+ <xsl:when test="$output_subtypes">
+ <xsl:call-template name="subtype">
+ <xsl:with-param name="subtype" select="$clause/guard/subtype"/>
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="type_variables">
+ <xsl:with-param name="type_variables" select="$type_variables"/>
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
+ <xsl:with-param name="fname" select="$name"/>
+ <xsl:with-param name="arity" select="$arity"/>
+ </xsl:call-template>
+
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="local_type">
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
+ </xsl:call-template>
+ </div>
+
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Handle <type variable="..." name_i="..."/> -->
+ <xsl:template name="type_variables">
+ <xsl:param name="type_variables"/>
<xsl:param name="type_desc"/>
- <div class="REFBODY"><p>Types:</p>
+ <xsl:param name="local_types"/>
+ <xsl:param name="global_types"/>
+ <xsl:param name="fname"/>
+ <xsl:param name="arity"/>
+
+ <xsl:variable name="names" select="../name[string-length(@arity) > 0]"/>
+ <xsl:for-each select="$type_variables">
+ <xsl:variable name="name_i">
+ <xsl:choose>
+ <xsl:when test="string-length(@name_i) > 0">
+ <xsl:value-of select="@name_i"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="count($names)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="spec0">
+ <xsl:for-each select="$names[position() = $name_i]">
+ <xsl:call-template name="find_spec"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/>
+ <xsl:variable name="clause" select="$spec/contract/clause"/>
+ <xsl:variable name="variable" select="@variable"/>
+ <xsl:variable name="subtype"
+ select="$clause/guard/subtype[typename = $variable]"/>
+
+ <xsl:if test="count($subtype) = 0">
+ <xsl:call-template name="err">
+ <xsl:with-param name="f" select="ancestor::erlref/module"/>
+ <xsl:with-param name="n" select="$fname"/>
+ <xsl:with-param name="a" select="$arity"/>
+ <xsl:with-param name="s">unknown type variable <xsl:value-of select="$variable"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
<xsl:call-template name="subtype">
- <xsl:with-param name="subtype" select="$guard/subtype"/>
- <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="subtype" select="$subtype"/>
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
</xsl:call-template>
- </div>
+ </xsl:for-each>
</xsl:template>
<xsl:template name="subtype">
<xsl:param name="subtype"/>
<xsl:param name="type_desc"/>
+ <xsl:param name="local_types"/>
+ <xsl:param name="global_types"/>
+
<xsl:for-each select="$subtype">
<xsl:variable name="tname" select="typename"/>
- <xsl:variable name="tdesc" select="$type_desc[@name = $tname]"/>
<div class="REFTYPES">
<span class="bold_code">
- <xsl:apply-templates select="string"/>
+ <xsl:apply-templates select="string" mode="local_type">
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
+ </xsl:apply-templates>
</span>
</div>
- <xsl:apply-templates select="$type_desc[@name = $tname]"/>
+ <xsl:apply-templates select="$type_desc[@variable = $tname]"/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="local_type">
+ <xsl:param name="type_desc"/>
+ <xsl:param name="local_types"/>
+ <xsl:param name="global_types"/>
+
+ <xsl:for-each select="$local_types">
+ <div class="REFTYPES">
+ <xsl:call-template name="type_name">
+ <xsl:with-param name="mode" select="'local_type'"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
+ </xsl:call-template>
+ </div>
+ <xsl:variable name="tname" select="@name"/>
+ <xsl:variable name="tnvars" select="@n_vars"/>
+ <xsl:apply-templates select=
+ "$type_desc[@name = $tname
+ and (@n_vars = $tnvars
+ or string-length(@n_vars) = 0 and
+ string-length($tnvars) = 0)]"/>
</xsl:for-each>
</xsl:template>
@@ -193,130 +322,175 @@
<xsl:apply-templates select="desc"/>
</xsl:template>
- <xsl:template match="typehead">
- <span class="bold_code">
- <xsl:apply-templates/>
- </span><br/>
- </xsl:template>
-
- <!-- local_defs -->
- <xsl:template match="local_defs">
- <div class="REFBODY">
- <xsl:apply-templates>
- </xsl:apply-templates>
- </div>
- </xsl:template>
-
- <xsl:template match="local_def">
- <div class="REFTYPES">
- <span class="bold_code">
- <xsl:apply-templates/>
- </span>
- </div>
- </xsl:template>
+ <!-- The "mode" attribute of apply has been used to separate the case
+ when datatypes are copied into specifications' subtypes.
+ A local type has no anchor. There are no links to local types
+ from local types or guards/head of the same specification.
+ -->
<xsl:template name="type_name">
+ <xsl:param name="mode"/> <!-- '' if <datatype> -->
+ <xsl:param name="local_types" select="/.."/>
+ <xsl:param name="global_types" select="/.."/>
<xsl:variable name="curModule" select="ancestor::erlref/module"/>
<xsl:variable name="mod" select="@mod"/>
<xsl:variable name="name" select="@name"/>
- <xsl:variable name="n_vars">
- <xsl:choose>
- <xsl:when test="string-length(@n_vars) > 0">
- <xsl:value-of select="@n_vars"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="0"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
+ <xsl:variable name="n_vars" select="@n_vars"/>
<xsl:choose>
<xsl:when test="string-length($name) > 0">
<xsl:variable name="type" select=
"$i/specs/module[@name=$curModule]/type
- [name=$name and n_vars=$n_vars
+ [name=$name
+ and (string-length($n_vars) = 0 or n_vars = $n_vars)
and (string-length($mod) = 0 or module = $mod)]"/>
<xsl:if test="count($type) != 1">
+ <xsl:variable name="why">
+ <xsl:choose>
+ <xsl:when test="count($type) > 1">ambiguous type</xsl:when>
+ <xsl:when test="count($type) = 0">unknown type</xsl:when>
+ </xsl:choose>
+ </xsl:variable>
<xsl:call-template name="err">
+ <xsl:with-param name="f" select="$curModule"/>
<xsl:with-param name="m" select="$mod"/>
<xsl:with-param name="n" select="$name"/>
<xsl:with-param name="a" select="$n_vars"/>
- <xsl:with-param name="s">unknown type</xsl:with-param>
+ <xsl:with-param name="s" select="$why"/>
</xsl:call-template>
</xsl:if>
- <xsl:apply-templates select="$type/typedecl"/>
+ <xsl:choose>
+ <xsl:when test="$mode = ''">
+ <xsl:apply-templates select="$type/typedecl"/>
+ </xsl:when>
+ <xsl:when test="$mode = 'local_type'">
+ <xsl:apply-templates select="$type/typedecl" mode="local_type">
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
</xsl:when>
- <xsl:otherwise>
+ <xsl:otherwise> <!-- <datatype> with <name> -->
<span class="bold_code">
- <xsl:value-of select="."/>
+ <xsl:apply-templates/>
</span>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
+ <xsl:template match="typehead">
+ <span class="bold_code">
+ <xsl:apply-templates/>
+ </span><br/>
+ </xsl:template>
+
+ <xsl:template match="typehead" mode="local_type">
+ <xsl:param name="local_types"/>
+ <xsl:param name="global_types"/>
+ <span class="bold_code">
+ <xsl:apply-templates mode="local_type">
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="global_types" select="$global_types"/>
+ </xsl:apply-templates>
+ </span><br/>
+ </xsl:template>
+
+ <!-- Not used right now -->
+ <!-- local_defs -->
+ <xsl:template match="local_defs">
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+ <!-- Not used right now -->
+ <xsl:template match="local_def">
+ <div class="REFTYPES">
+ <span class="bold_code">
+ <xsl:apply-templates/>
+ </span>
+ </div>
+ </xsl:template>
+
<!-- Used both in <datatype> and in <func>! -->
<xsl:template match="anno">
<xsl:variable name="curModule" select="ancestor::erlref/module"/>
<xsl:variable name="anno" select="normalize-space(text())"/>
<xsl:variable name="namespec"
- select="ancestor::desc/preceding-sibling::name"/>
+ select="ancestor::type_desc/preceding-sibling::name
+ | ancestor::desc/preceding-sibling::name"/>
<xsl:if test="count($namespec) = 0 and string-length($specs_file) > 0">
<xsl:call-template name="err">
- <xsl:with-param name="s">cannot find 'name' (<xsl:value-of select="$anno"/>)
+ <xsl:with-param name="f" select="$curModule"/>
+ <xsl:with-param name="s">cannot find tag 'name' (anno <xsl:value-of select="$anno"/>)
</xsl:with-param>
</xsl:call-template>
</xsl:if>
- <xsl:variable name="mod" select="$namespec/@mod"/>
- <xsl:variable name="name" select="$namespec/@name"/>
- <xsl:variable name="arity" select="$namespec/@arity"/>
- <xsl:variable name="clause" select="$namespec/@clause"/>
- <xsl:variable name="tmp_n_vars" select="$namespec/@n_vars"/>
- <xsl:variable name="n_vars">
- <xsl:choose>
- <xsl:when test="string-length($tmp_n_vars) > 0">
- <xsl:value-of select="$tmp_n_vars"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="0"/>
- </xsl:otherwise>
- </xsl:choose>
+ <!-- Search "local types" as well -->
+ <xsl:variable name="local_types"
+ select="ancestor::desc/preceding-sibling::type
+ [string-length(@name) > 0]"/>
+ <xsl:variable name="has_anno_in_local_type">
+ <xsl:for-each select="$local_types">
+ <xsl:call-template name="anno_name">
+ <xsl:with-param name="curModule" select="$curModule"/>
+ <xsl:with-param name="anno" select="$anno"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="has_anno">
+ <xsl:for-each select="$namespec">
+ <xsl:call-template name="anno_name">
+ <xsl:with-param name="curModule" select="$curModule"/>
+ <xsl:with-param name="anno" select="$anno"/>
+ </xsl:call-template>
+ </xsl:for-each>
</xsl:variable>
+
+ <xsl:if test="$has_anno = '' and $has_anno_in_local_type = ''">
+ <xsl:call-template name="err">
+ <xsl:with-param name="f" select="$curModule"/>
+ <xsl:with-param name="m" select="$namespec/@mod"/>
+ <xsl:with-param name="n" select="$namespec/@name"/>
+ <xsl:with-param name="a" select="'-'"/>
+ <xsl:with-param name="s">unknown annotation <xsl:value-of select="$anno"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:value-of select="$anno"/>
+ </xsl:template>
+
+ <xsl:template name="anno_name">
+ <xsl:param name="curModule"/>
+ <xsl:param name="anno"/>
+ <xsl:variable name="mod" select="@mod"/>
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="arity" select="@arity"/>
+ <xsl:variable name="n_vars" select="@n_vars"/>
+ <xsl:variable name="clause_i" select="@clause_i"/>
+
<xsl:variable name="spec0" select=
"$i/specs/module[@name=$curModule]/spec
[name=$name and arity=$arity
and (string-length($mod) = 0 or module = $mod)]"/>
<xsl:variable name="spec_annos" select=
- "$spec0[string-length($clause) = 0
- or position() = $clause]/anno[.=$anno]"/>
+ "$spec0[string-length($clause_i) = 0
+ or position() = $clause_i]/anno[.=$anno]"/>
<xsl:variable name="type_annos" select=
"$i/specs/module[@name=$curModule]/type
- [name=$name and n_vars=$n_vars
+ [name=$name
+ and (string-length($n_vars) = 0 or n_vars=$n_vars)
and (string-length($mod) = 0 or module = $mod)]/anno[.=$anno]"/>
-
- <xsl:if test="count($spec_annos) = 0
- and count($type_annos) = 0
- and string-length($specs_file) > 0">
- <xsl:variable name="n">
- <xsl:choose>
- <xsl:when test="string-length($arity) = 0">
- <xsl:value-of select="$n_vars"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$arity"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:call-template name="err">
- <xsl:with-param name="m" select="$mod"/>
- <xsl:with-param name="n" select="$name"/>
- <xsl:with-param name="a" select="$n"/>
- <xsl:with-param name="s">unknown annotation <xsl:value-of select="$anno"/>
- </xsl:with-param>
- </xsl:call-template>
+ <xsl:if test="count($spec_annos) != 0
+ or count($type_annos) != 0
+ or string-length($specs_file) = 0">
+ <xsl:value-of select="true()"/>
</xsl:if>
- <xsl:value-of select="$anno"/>
</xsl:template>
<!-- Used for indentation of formatted types and specs -->
@@ -324,6 +498,50 @@
<xsl:text>&#160;</xsl:text>
</xsl:template>
+ <xsl:template match="nbsp" mode="local_type">
+ <xsl:apply-templates select="."/>
+ </xsl:template>
+
+ <xsl:template match="br" mode="local_type">
+ <xsl:apply-templates select="."/>
+ </xsl:template>
+
+ <xsl:template match="marker" mode="local_type">
+ <xsl:param name="local_types"/>
+ <xsl:param name="global_types"/>
+ <!-- Craete no anchor -->
+ <!-- It would be possible to create a link to the global type
+ (if there is one), but that would mean even more code...
+ -->
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Does not look at @n_vars -->
+ <xsl:template match="seealso" mode="local_type">
+ <xsl:param name="local_types"/>
+ <xsl:param name="global_types"/>
+
+ <xsl:variable name="filepart"><xsl:value-of select="substring-before(@marker, '#')"/></xsl:variable>
+ <xsl:variable name="linkpart"><xsl:value-of select="translate(substring-after(@marker, '#'), '/', '-')"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($filepart) > 0">
+ <xsl:call-template name="seealso"/>
+ </xsl:when>
+ <xsl:when test="count($local_types[concat('type-', @name) = $linkpart]) = 0">
+ <xsl:call-template name="seealso"/>
+ </xsl:when>
+ <xsl:when test="count($global_types/datatype/name[concat('type-', @name) = $linkpart]) > 0">
+ <!-- The type is both local and global; link to the global type -->
+ <xsl:call-template name="seealso"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- No link to local type -->
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
<!-- End of Dialyzer type/spec tags -->
<!-- Page layout -->
@@ -1178,14 +1396,7 @@
<xsl:choose>
<xsl:when test="string-length(@arity) > 0">
<!-- Dialyzer spec -->
- <xsl:choose>
- <xsl:when test="string-length(@clause) > 0">
- <xsl:value-of select="@arity"/>/<xsl:value-of select="@clause"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@arity"/>
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:value-of select="@arity"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="calc-arity">
@@ -1221,11 +1432,19 @@
</xsl:choose>
</xsl:variable>
- <li title="{$fname}-{$arity}">
- <a href="{$basename}.html#{$fname}-{$arity}">
- <xsl:value-of select="$fname"/>/<xsl:value-of select="$arity"/>
- </a>
- </li>
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::name[position() = 1
+ and @name = $fname and @arity = $arity]">
+ <!-- Skip. Only works for Dialyzer specs. -->
+ </xsl:when>
+ <xsl:otherwise>
+ <li title="{$fname}-{$arity}">
+ <a href="{$basename}.html#{$fname}-{$arity}">
+ <xsl:value-of select="$fname"/>/<xsl:value-of select="$arity"/>
+ </a>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
</xsl:choose>
@@ -1470,7 +1689,10 @@
<xsl:template match="func">
<xsl:param name="partnum"/>
- <p><xsl:apply-templates select="name"/></p>
+ <p><xsl:apply-templates select="name"/>
+ <xsl:apply-templates
+ select="name[string-length(@arity) > 0 and position()=last()]"
+ mode="types"/></p>
<xsl:apply-templates select="fsummary|type|desc">
<xsl:with-param name="partnum" select="$partnum"/>
@@ -1478,7 +1700,6 @@
</xsl:template>
-
<xsl:template match="name">
<xsl:choose>
<!-- @arity is mandatory when referring to a specification -->
@@ -1488,6 +1709,11 @@
<xsl:when test="ancestor::datatype">
<xsl:call-template name="type_name"/>
</xsl:when>
+ <xsl:when test="string-length(text()) = 0 and ancestor::erlref">
+ <xsl:message terminate="yes">
+ Error <xsl:value-of select="@name"/>: arity is mandatory when referring to specifications!
+ </xsl:message>
+ </xsl:when>
<xsl:otherwise>
<xsl:call-template name="name"/>
</xsl:otherwise>
@@ -1556,12 +1782,17 @@
<xsl:template match="type">
<xsl:param name="partnum"/>
- <div class="REFBODY"><p>Types:</p>
+ <!-- The case where @name != 0 is taken care of in "type_name" -->
+ <xsl:if test="string-length(@name) = 0 and string-length(@variable) = 0">
- <xsl:apply-templates>
- <xsl:with-param name="partnum" select="$partnum"/>
- </xsl:apply-templates>
- </div>
+ <div class="REFBODY"><p>Types:</p>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+
+ </xsl:if>
</xsl:template>
@@ -1612,7 +1843,10 @@
</xsl:template>
<xsl:template match="seealso">
+ <xsl:call-template name="seealso"/>
+ </xsl:template>
+ <xsl:template name="seealso">
<xsl:variable name="filepart"><xsl:value-of select="substring-before(@marker, '#')"/></xsl:variable>
<xsl:variable name="linkpart"><xsl:value-of select="translate(substring-after(@marker, '#'), '/', '-')"/></xsl:variable>
@@ -1633,16 +1867,16 @@
<xsl:variable name="app"
select="$m2a/mod2app/module[@name=$filepart]"/>
-->
- <xsl:variable name="reftext" select="text()"/>
+ <xsl:variable name="this" select="."/>
<xsl:for-each select="$m2a">
<xsl:variable name="app" select="key('mod2app', $filepart)"/>
<xsl:choose>
<xsl:when test="string-length($app) > 0">
- <span class="bold_code"><a href="javascript:erlhref('{$topdocdir}/../','{$app}','{$filepart}.html');"><xsl:value-of select="$reftext"/></a></span>
+ <span class="bold_code"><a href="javascript:erlhref('{$topdocdir}/../','{$app}','{$filepart}.html#{$linkpart}');"><xsl:value-of select="$this"/></a></span>
</xsl:when>
<xsl:otherwise>
<!-- Unknown application; no link -->
- <xsl:value-of select="$reftext"/>
+ <xsl:value-of select="$this"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
diff --git a/lib/erl_docgen/priv/xsl/db_man.xsl b/lib/erl_docgen/priv/xsl/db_man.xsl
index 2a8fb9fe3e..25b62f68c5 100644
--- a/lib/erl_docgen/priv/xsl/db_man.xsl
+++ b/lib/erl_docgen/priv/xsl/db_man.xsl
@@ -3,7 +3,7 @@
#
# %CopyrightBegin%
#
- # Copyright Ericsson AB 2009-2010. All Rights Reserved.
+ # Copyright Ericsson AB 2009-2011. All Rights Reserved.
#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
@@ -21,13 +21,16 @@
-->
<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ extension-element-prefixes="exsl">
<xsl:preserve-space elements="code pre"/>
<xsl:strip-space elements="*"/>
<xsl:output method="text" encoding="UTF-8" indent="no"/>
- <!-- Start of Dialyzer type/spec tags. See also the template matching "name"
+ <!-- Start of Dialyzer type/spec tags. See also the templates
+ matching "name" and "seealso"
-->
<!-- Note: specs data for *one* module (as opposed to html and pdf) -->
@@ -35,38 +38,58 @@
<xsl:variable name="i" select="document($specs_file)"></xsl:variable>
<xsl:template name="err">
+ <xsl:param name="f"/>
<xsl:param name="m"/>
<xsl:param name="n"/>
<xsl:param name="a"/>
<xsl:param name="s"/>
<xsl:message terminate="yes">
- Error <xsl:if test="$m != ''"><xsl:value-of select ="$m"/>:</xsl:if>
- <xsl:value-of
- select="$n"/>/<xsl:value-of
- select="$a"/>: <xsl:value-of select="$s"/>
+ Error <xsl:if test="$f != ''">in <xsl:value-of select ="$f"/>:</xsl:if>
+ <xsl:if test="$m != ''"><xsl:value-of select ="$m"/>:</xsl:if>
+ <xsl:value-of select="$n"/>
+ <xsl:if test="$a != ''">/<xsl:value-of
+ select ="$a"/></xsl:if>: <xsl:value-of select="$s"/>
</xsl:message>
</xsl:template>
- <xsl:template name="spec_name">
+ <xsl:template name="find_spec">
<xsl:variable name="curModule" select="ancestor::erlref/module"/>
<xsl:variable name="mod" select="@mod"/>
<xsl:variable name="name" select="@name"/>
<xsl:variable name="arity" select="@arity"/>
- <xsl:variable name="clause" select="@clause"/>
+ <xsl:variable name="clause_i" select="@clause_i"/>
<xsl:variable name="spec0" select=
"$i/module[@name=$curModule]/spec
[name=$name and arity=$arity
and (string-length($mod) = 0 or module = $mod)]"/>
- <xsl:variable name="spec" select="$spec0[string-length($clause) = 0
- or position() = $clause]"/>
- <xsl:if test="count($spec) = 0">
+ <xsl:variable name="spec" select="$spec0[string-length($clause_i) = 0
+ or position() = $clause_i]"/>
+
+ <xsl:if test="count($spec) != 1">
+ <xsl:variable name="why">
+ <xsl:choose>
+ <xsl:when test="count($spec) > 1">ambiguous spec</xsl:when>
+ <xsl:when test="count($spec) = 0">unknown spec</xsl:when>
+ </xsl:choose>
+ </xsl:variable>
<xsl:call-template name="err">
+ <xsl:with-param name="f" select="$curModule"/>
<xsl:with-param name="m" select="$mod"/>
<xsl:with-param name="n" select="$name"/>
<xsl:with-param name="a" select="$arity"/>
- <xsl:with-param name="s">unknown spec</xsl:with-param>
+ <xsl:with-param name="s" select="$why"/>
</xsl:call-template>
</xsl:if>
+ <xsl:copy-of select="$spec"/>
+ </xsl:template>
+
+ <xsl:template name="spec_name">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="arity" select="@arity"/>
+ <xsl:variable name="spec0">
+ <xsl:call-template name="find_spec"/>
+ </xsl:variable>
+ <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/>
<xsl:choose>
<xsl:when test="ancestor::cref">
@@ -75,42 +98,12 @@
</xsl:message>
</xsl:when>
<xsl:when test="ancestor::erlref">
- <xsl:choose>
- <xsl:when test="string(@with_guards) = 'no'">
- <xsl:apply-templates select="$spec/contract/clause/head"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="contract">
- <xsl:with-param name="contract" select="$spec/contract"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:apply-templates select="$spec/contract/clause/head"/>
<xsl:text>&#10;.br</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
- <xsl:template name="contract">
- <xsl:param name="contract"/>
- <xsl:call-template name="clause">
- <xsl:with-param name="clause" select="$contract/clause"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="clause">
- <xsl:param name="clause"/>
- <xsl:variable name="type_desc" select="../type_desc"/>
- <xsl:for-each select="$clause">
- <xsl:apply-templates select="head"/>
- <xsl:if test="count(guard) > 0">
- <xsl:call-template name="guard">
- <xsl:with-param name="guard" select="guard"/>
- <xsl:with-param name="type_desc" select="$type_desc"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
<xsl:template match="head">
<xsl:text>&#10;.nf&#10;</xsl:text>
<xsl:text>&#10;.B&#10;</xsl:text>
@@ -119,29 +112,141 @@
<xsl:text>&#10;.fi</xsl:text>
</xsl:template>
- <xsl:template name="guard">
- <xsl:param name="guard"/>
+ <!-- The *last* <name name="..." arity=".."/> -->
+ <xsl:template match="name" mode="types">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="arity" select="@arity"/>
+ <xsl:variable name="spec0">
+ <xsl:call-template name="find_spec"/>
+ </xsl:variable>
+ <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/>
+ <xsl:variable name="clause" select="$spec/contract/clause"/>
+
+ <xsl:variable name="type_desc" select="../type_desc"/>
+ <!-- $type is data types to be presented as guards ("local types") -->
+ <xsl:variable name="type"
+ select="../type[string-length(@name) > 0
+ or string-length(@variable) > 0]"/>
+ <xsl:variable name="type_variables"
+ select ="$type[string-length(@variable) > 0]"/>
+ <xsl:variable name="local_types"
+ select ="$type[string-length(@name) > 0]"/>
+ <xsl:variable name="output_subtypes" select="count($type_variables) = 0"/>
+
+ <!-- It is assumed there is no support for overloaded specs
+ (there is no spec with more than one clause) -->
+ <xsl:if test="count($clause/guard) > 0 or count($type) > 0">
+ <xsl:text>&#10;.RS</xsl:text>
+ <xsl:text>&#10;.TP</xsl:text>
+ <xsl:text>&#10;Types</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$output_subtypes">
+ <xsl:call-template name="subtype">
+ <xsl:with-param name="subtype" select="$clause/guard/subtype"/>
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="type_variables">
+ <xsl:with-param name="type_variables" select="$type_variables"/>
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="fname" select="$name"/>
+ <xsl:with-param name="arity" select="$arity"/>
+ </xsl:call-template>
+
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="local_type">
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ </xsl:call-template>
+ <xsl:text>&#10;.RE</xsl:text>
+
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Handle <type variable="..." name_i="..."/> -->
+ <xsl:template name="type_variables">
+ <xsl:param name="type_variables"/>
<xsl:param name="type_desc"/>
- <xsl:text>&#10;.RS</xsl:text>
- <xsl:text>&#10;.TP</xsl:text>
- <xsl:text>&#10;Types</xsl:text>
- <xsl:call-template name="subtype">
- <xsl:with-param name="subtype" select="$guard/subtype"/>
- <xsl:with-param name="type_desc" select="$type_desc"/>
- </xsl:call-template>
- <xsl:text>&#10;.RE</xsl:text>
+ <xsl:param name="local_types"/>
+ <xsl:param name="fname"/>
+ <xsl:param name="arity"/>
+
+ <xsl:variable name="names" select="../name[string-length(@arity) > 0]"/>
+ <xsl:for-each select="$type_variables">
+ <xsl:variable name="name_i">
+ <xsl:choose>
+ <xsl:when test="string-length(@name_i) > 0">
+ <xsl:value-of select="@name_i"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="count($names)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="spec0">
+ <xsl:for-each select="$names[position() = $name_i]">
+ <xsl:call-template name="find_spec"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/>
+ <xsl:variable name="clause" select="$spec/contract/clause"/>
+ <xsl:variable name="variable" select="@variable"/>
+ <xsl:variable name="subtype"
+ select="$clause/guard/subtype[typename = $variable]"/>
+
+ <xsl:if test="count($subtype) = 0">
+ <xsl:call-template name="err">
+ <xsl:with-param name="f" select="ancestor::erlref/module"/>
+ <xsl:with-param name="n" select="$fname"/>
+ <xsl:with-param name="a" select="$arity"/>
+ <xsl:with-param name="s">unknown type variable <xsl:value-of select="$variable"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="subtype">
+ <xsl:with-param name="subtype" select="$subtype"/>
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ </xsl:call-template>
+ </xsl:for-each>
</xsl:template>
<xsl:template name="subtype">
<xsl:param name="subtype"/>
<xsl:param name="type_desc"/>
+
<xsl:for-each select="$subtype">
<xsl:variable name="tname" select="typename"/>
- <xsl:variable name="tdesc" select="$type_desc[@name = $tname]"/>
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates select="string"/>
- <xsl:text>&#10;.br</xsl:text>
- <xsl:apply-templates select="$type_desc[@name = $tname]"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="string"/>
+ <xsl:text>&#10;.br</xsl:text>
+ <xsl:apply-templates select="$type_desc[@variable = $tname]"/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="local_type">
+ <xsl:param name="type_desc"/>
+ <xsl:param name="local_types"/>
+
+ <xsl:for-each select ="$local_types">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="type_name">
+ <xsl:with-param name="mode" select="'local_type'"/>
+ </xsl:call-template>
+ <xsl:text>&#10;.br</xsl:text>
+ <xsl:variable name="tname" select="@name"/>
+ <xsl:variable name="tnvars" select="@n_vars"/>
+ <xsl:apply-templates select=
+ "$type_desc[@name = $tname
+ and (@n_vars = $tnvars
+ or string-length(@n_vars) = 0 and
+ string-length($tnvars) = 0)]"/>
</xsl:for-each>
</xsl:template>
@@ -164,59 +269,46 @@
<xsl:apply-templates/>
</xsl:template>
- <xsl:template match="typehead">
- <xsl:text>&#10;.nf&#10;</xsl:text>
- <xsl:text>&#10;.B&#10;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>&#10;.br</xsl:text>
- <xsl:text>&#10;.fi</xsl:text>
- </xsl:template>
-
- <xsl:template match="local_defs">
- <xsl:text>&#10;.RS</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>&#10;.RE</xsl:text>
- </xsl:template>
-
- <xsl:template match="local_def">
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>&#10;.br</xsl:text>
- </xsl:template>
-
<xsl:template name="type_name">
+ <xsl:param name="mode"/> <!-- '' if <datatype> -->
<xsl:variable name="curModule" select="ancestor::erlref/module"/>
<xsl:variable name="mod" select="@mod"/>
<xsl:variable name="name" select="@name"/>
- <xsl:variable name="n_vars">
- <xsl:choose>
- <xsl:when test="string-length(@n_vars) > 0">
- <xsl:value-of select="@n_vars"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="0"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
+ <xsl:variable name="n_vars" select="@n_vars"/>
<xsl:choose>
<xsl:when test="string-length($name) > 0">
<xsl:variable name="type" select=
"$i/module[@name=$curModule]/type
- [name=$name and n_vars=$n_vars
+ [name=$name
+ and (string-length($n_vars) = 0 or n_vars = $n_vars)
and (string-length($mod) = 0 or module = $mod)]"/>
<xsl:if test="count($type) != 1">
+ <xsl:variable name="why">
+ <xsl:choose>
+ <xsl:when test="count($type) > 1">ambiguous type</xsl:when>
+ <xsl:when test="count($type) = 0">unknown type</xsl:when>
+ </xsl:choose>
+ </xsl:variable>
<xsl:call-template name="err">
+ <xsl:with-param name="f" select="$curModule"/>
<xsl:with-param name="m" select="$mod"/>
<xsl:with-param name="n" select="$name"/>
<xsl:with-param name="a" select="$n_vars"/>
- <xsl:with-param name="s">unknown type</xsl:with-param>
+ <xsl:with-param name="s" select="$why"/>
</xsl:call-template>
</xsl:if>
- <xsl:apply-templates select="$type/typedecl"/>
+ <xsl:choose>
+ <xsl:when test="$mode = ''">
+ <xsl:apply-templates select="$type/typedecl"/>
+ </xsl:when>
+ <xsl:when test="$mode = 'local_type'">
+ <xsl:apply-templates select="$type/typedecl" mode="local_type"/>
+ </xsl:when>
+ </xsl:choose>
</xsl:when>
- <xsl:otherwise>
+ <xsl:otherwise> <!-- <datatype> with <name> -->
<xsl:text>&#10;.nf&#10;</xsl:text>
<xsl:text>&#10;.B&#10;</xsl:text>
<xsl:apply-templates/>
@@ -226,68 +318,109 @@
</xsl:choose>
</xsl:template>
+ <xsl:template match="typehead">
+ <xsl:text>&#10;.nf&#10;</xsl:text>
+ <xsl:text>&#10;.B&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.br</xsl:text>
+ <xsl:text>&#10;.fi</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="typehead" mode="local_type">
+ <xsl:text>.nf&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.fi</xsl:text>
+ </xsl:template>
+
+ <!-- Not used right now -->
+ <xsl:template match="local_defs">
+ <xsl:text>&#10;.RS</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.RE</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="local_def">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.br</xsl:text>
+ </xsl:template>
+
<!-- Used both in <datatype> and in <func>! -->
<xsl:template match="anno">
<xsl:variable name="curModule" select="ancestor::erlref/module"/>
<xsl:variable name="anno" select="normalize-space(text())"/>
<xsl:variable name="namespec"
- select="ancestor::desc/preceding-sibling::name"/>
+ select="ancestor::type_desc/preceding-sibling::name
+ | ancestor::desc/preceding-sibling::name"/>
<xsl:if test="count($namespec) = 0 and string-length($specs_file) > 0">
<xsl:call-template name="err">
- <xsl:with-param name="s">cannot find 'name' (<xsl:value-of select="$anno"/>)
+ <xsl:with-param name="f" select="$curModule"/>
+ <xsl:with-param name="s">cannot find tag 'name' (anno <xsl:value-of select="$anno"/>)
</xsl:with-param>
</xsl:call-template>
</xsl:if>
- <xsl:variable name="mod" select="$namespec/@mod"/>
- <xsl:variable name="name" select="$namespec/@name"/>
- <xsl:variable name="arity" select="$namespec/@arity"/>
- <xsl:variable name="clause" select="$namespec/@clause"/>
- <xsl:variable name="tmp_n_vars" select="$namespec/@n_vars"/>
- <xsl:variable name="n_vars">
- <xsl:choose>
- <xsl:when test="string-length($tmp_n_vars) > 0">
- <xsl:value-of select="$tmp_n_vars"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="0"/>
- </xsl:otherwise>
- </xsl:choose>
+ <!-- Search "local types" as well -->
+ <xsl:variable name="local_types"
+ select="ancestor::desc/preceding-sibling::type
+ [string-length(@name) > 0]"/>
+ <xsl:variable name="has_anno_in_local_type">
+ <xsl:for-each select="$local_types">
+ <xsl:call-template name="anno_name">
+ <xsl:with-param name="curModule" select="$curModule"/>
+ <xsl:with-param name="anno" select="$anno"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="has_anno">
+ <xsl:for-each select="$namespec">
+ <xsl:call-template name="anno_name">
+ <xsl:with-param name="curModule" select="$curModule"/>
+ <xsl:with-param name="anno" select="$anno"/>
+ </xsl:call-template>
+ </xsl:for-each>
</xsl:variable>
+
+ <xsl:if test="$has_anno = '' and $has_anno_in_local_type = ''">
+ <xsl:call-template name="err">
+ <xsl:with-param name="f" select="$curModule"/>
+ <xsl:with-param name="m" select="$namespec/@mod"/>
+ <xsl:with-param name="n" select="$namespec/@name"/>
+ <xsl:with-param name="a" select="'-'"/>
+ <xsl:with-param name="s">unknown annotation <xsl:value-of select="$anno"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:value-of select="$anno"/>
+ </xsl:template>
+
+ <xsl:template name="anno_name">
+ <xsl:param name="curModule"/>
+ <xsl:param name="anno"/>
+ <xsl:variable name="mod" select="@mod"/>
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="arity" select="@arity"/>
+ <xsl:variable name="n_vars" select="@n_vars"/>
+ <xsl:variable name="clause_i" select="@clause_i"/>
+
<xsl:variable name="spec0" select=
"$i/module[@name=$curModule]/spec
[name=$name and arity=$arity
and (string-length($mod) = 0 or module = $mod)]"/>
<xsl:variable name="spec_annos" select=
- "$spec0[string-length($clause) = 0
- or position() = $clause]/anno[.=$anno]"/>
+ "$spec0[string-length($clause_i) = 0
+ or position() = $clause_i]/anno[.=$anno]"/>
<xsl:variable name="type_annos" select=
"$i/module[@name=$curModule]/type
- [name=$name and n_vars=$n_vars
+ [name=$name
+ and (string-length($n_vars) = 0 or n_vars=$n_vars)
and (string-length($mod) = 0 or module = $mod)]/anno[.=$anno]"/>
-
- <xsl:if test="count($spec_annos) = 0
- and count($type_annos) = 0
- and string-length($specs_file) > 0">
- <xsl:variable name="n">
- <xsl:choose>
- <xsl:when test="string-length($arity) = 0">
- <xsl:value-of select="$n_vars"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$arity"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:call-template name="err">
- <xsl:with-param name="m" select="$mod"/>
- <xsl:with-param name="n" select="$name"/>
- <xsl:with-param name="a" select="$n"/>
- <xsl:with-param name="s">unknown annotation <xsl:value-of select="$anno"/>
- </xsl:with-param>
- </xsl:call-template>
+ <xsl:if test="count($spec_annos) != 0
+ or count($type_annos) != 0
+ or string-length($specs_file) = 0">
+ <xsl:value-of select="true()"/>
</xsl:if>
- <xsl:value-of select="$anno"/>
</xsl:template>
<!-- Used for indentation of formatted types and specs -->
@@ -542,6 +675,9 @@
<xsl:template match="func">
<xsl:text>&#10;.LP</xsl:text>
<xsl:apply-templates select="name"/>
+ <xsl:apply-templates
+ select="name[string-length(@arity) > 0 and position()=last()]"
+ mode="types"/>
<xsl:apply-templates select="fsummary|type|desc"/>
</xsl:template>
@@ -554,6 +690,11 @@
<xsl:when test="ancestor::datatype">
<xsl:call-template name="type_name"/>
</xsl:when>
+ <xsl:when test="string-length(text()) = 0 and ancestor::erlref">
+ <xsl:message terminate="yes">
+ Error <xsl:value-of select="@name"/>: arity is mandatory when referring to specifications!
+ </xsl:message>
+ </xsl:when>
<xsl:otherwise>
<xsl:call-template name="name"/>
</xsl:otherwise>
@@ -569,11 +710,14 @@
<!-- Type -->
<xsl:template match="type">
- <xsl:text>&#10;.RS</xsl:text>
- <xsl:text>&#10;.TP</xsl:text>
- <xsl:text>&#10;Types</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>&#10;.RE</xsl:text>
+ <!-- The case where @name != 0 is taken care of in "type_name" -->
+ <xsl:if test="string-length(@name) = 0 and string-length(@variable) = 0">
+ <xsl:text>&#10;.RS</xsl:text>
+ <xsl:text>&#10;.TP</xsl:text>
+ <xsl:text>&#10;Types</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.RE</xsl:text>
+ </xsl:if>
</xsl:template>
@@ -622,7 +766,7 @@
<xsl:text>&gt;</xsl:text>
</xsl:template>
- <!-- Do not noramlize any text within pre and code tags. -->
+ <!-- Do not normalize any text within pre and code tags. -->
<xsl:template match="pre/text()">
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="." />
diff --git a/lib/erl_docgen/priv/xsl/db_pdf.xsl b/lib/erl_docgen/priv/xsl/db_pdf.xsl
index f500cd3fee..5119e3e36a 100644
--- a/lib/erl_docgen/priv/xsl/db_pdf.xsl
+++ b/lib/erl_docgen/priv/xsl/db_pdf.xsl
@@ -21,6 +21,8 @@
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ extension-element-prefixes="exsl"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" indent="yes"/>
@@ -28,45 +30,66 @@
<xsl:include href="db_pdf_params.xsl"/>
<!-- Start of Dialyzer type/spec tags.
- See also the template matching "name" and the template "bookmarks6"
+ See also the templates matching "name" and "seealso" as well as
+ the template "bookmarks6"
-->
<xsl:param name="specs_file" select="''"/>
<xsl:variable name="i" select="document($specs_file)"></xsl:variable>
<xsl:template name="err">
+ <xsl:param name="f"/>
<xsl:param name="m"/>
<xsl:param name="n"/>
<xsl:param name="a"/>
<xsl:param name="s"/>
<xsl:message terminate="yes">
- Error <xsl:if test="$m != ''"><xsl:value-of select ="$m"/>:</xsl:if>
- <xsl:value-of
- select="$n"/>/<xsl:value-of
- select="$a"/>: <xsl:value-of select="$s"/>
+ Error <xsl:if test="$f != ''">in <xsl:value-of select ="$f"/>:</xsl:if>
+ <xsl:if test="$m != ''"><xsl:value-of select ="$m"/>:</xsl:if>
+ <xsl:value-of select="$n"/>
+ <xsl:if test="$a != ''">/<xsl:value-of
+ select ="$a"/></xsl:if>: <xsl:value-of select="$s"/>
</xsl:message>
</xsl:template>
- <xsl:template name="spec_name">
+ <xsl:template name="find_spec">
<xsl:variable name="curModule" select="ancestor::erlref/module"/>
<xsl:variable name="mod" select="@mod"/>
<xsl:variable name="name" select="@name"/>
<xsl:variable name="arity" select="@arity"/>
- <xsl:variable name="clause" select="@clause"/>
+ <xsl:variable name="clause_i" select="@clause_i"/>
<xsl:variable name="spec0" select=
"$i/specs/module[@name=$curModule]/spec
[name=$name and arity=$arity
and (string-length($mod) = 0 or module = $mod)]"/>
- <xsl:variable name="spec" select="$spec0[string-length($clause) = 0
- or position() = $clause]"/>
- <xsl:if test="count($spec) = 0">
+ <xsl:variable name="spec" select="$spec0[string-length($clause_i) = 0
+ or position() = $clause_i]"/>
+
+ <xsl:if test="count($spec) != 1">
+ <xsl:variable name="why">
+ <xsl:choose>
+ <xsl:when test="count($spec) > 1">ambiguous spec</xsl:when>
+ <xsl:when test="count($spec) = 0">unknown spec</xsl:when>
+ </xsl:choose>
+ </xsl:variable>
<xsl:call-template name="err">
+ <xsl:with-param name="f" select="$curModule"/>
<xsl:with-param name="m" select="$mod"/>
<xsl:with-param name="n" select="$name"/>
<xsl:with-param name="a" select="$arity"/>
- <xsl:with-param name="s">unknown spec</xsl:with-param>
+ <xsl:with-param name="s" select="$why"/>
</xsl:call-template>
</xsl:if>
+ <xsl:copy-of select="$spec"/>
+ </xsl:template>
+
+ <xsl:template name="spec_name">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="arity" select="@arity"/>
+ <xsl:variable name="spec0">
+ <xsl:call-template name="find_spec"/>
+ </xsl:variable>
+ <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/>
<xsl:choose>
<xsl:when test="ancestor::cref">
@@ -76,78 +99,175 @@
</xsl:when>
<xsl:when test="ancestor::erlref">
<fo:block id="{generate-id()}">
- <xsl:choose>
- <xsl:when test="string(@with_guards) = 'no'">
- <xsl:apply-templates select="$spec/contract/clause/head"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="contract">
- <xsl:with-param name="contract" select="$spec/contract"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:apply-templates select="$spec/contract/clause/head"/>
</fo:block>
</xsl:when>
</xsl:choose>
</xsl:template>
- <xsl:template name="contract">
- <xsl:param name="contract"/>
- <xsl:call-template name="clause">
- <xsl:with-param name="clause" select="$contract/clause"/>
- </xsl:call-template>
+ <xsl:template match="head">
+ <fo:block xsl:use-attribute-sets="function-name">
+ <xsl:apply-templates/>
+ </fo:block>
</xsl:template>
- <xsl:template name="clause">
- <xsl:param name="clause"/>
+ <!-- The *last* <name name="..." arity=".."/> -->
+ <xsl:template match="name" mode="types">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="arity" select="@arity"/>
+ <xsl:variable name="spec0">
+ <xsl:call-template name="find_spec"/>
+ </xsl:variable>
+ <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/>
+ <xsl:variable name="clause" select="$spec/contract/clause"/>
+
<xsl:variable name="type_desc" select="../type_desc"/>
- <xsl:for-each select="$clause">
- <xsl:apply-templates select="head"/>
- <xsl:if test="count(guard) > 0">
- <xsl:call-template name="guard">
- <xsl:with-param name="guard" select="guard"/>
+ <!-- $type is data types to be presented as guards ("local types") -->
+ <xsl:variable name="type"
+ select="../type[string-length(@name) > 0
+ or string-length(@variable) > 0]"/>
+ <xsl:variable name="type_variables"
+ select ="$type[string-length(@variable) > 0]"/>
+ <xsl:variable name="local_types"
+ select ="$type[string-length(@name) > 0]"/>
+ <xsl:variable name="output_subtypes" select="count($type_variables) = 0"/>
+
+ <!-- It is assumed there is no support for overloaded specs
+ (there is no spec with more than one clause) -->
+ <xsl:if test="count($clause/guard) > 0 or count($type) > 0">
+ <fo:block>
+ <xsl:text>Types:</xsl:text>
+ </fo:block>
+ <fo:list-block xsl:use-attribute-sets="type-listblock">
+ <xsl:choose>
+ <xsl:when test="$output_subtypes">
+ <xsl:call-template name="subtype">
+ <xsl:with-param name="subtype" select="$clause/guard/subtype"/>
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="type_variables">
+ <xsl:with-param name="type_variables" select="$type_variables"/>
+ <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
+ <xsl:with-param name="fname" select="$name"/>
+ <xsl:with-param name="arity" select="$arity"/>
+ </xsl:call-template>
+
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="local_type">
<xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="local_types" select="$local_types"/>
</xsl:call-template>
- </xsl:if>
- </xsl:for-each>
+ </fo:list-block>
+ </xsl:if>
</xsl:template>
- <xsl:template match="head">
- <fo:block xsl:use-attribute-sets="function-name">
- <xsl:apply-templates/>
- </fo:block>
- </xsl:template>
+ <!-- Handle <type variable="..." name_i="..."/> -->
+ <xsl:template name="type_variables">
+ <xsl:param name="type_variables"/>
+ <xsl:param name="type_desc"/>
+ <xsl:param name="local_types"/>
+ <xsl:param name="fname"/>
+ <xsl:param name="arity"/>
+
+ <xsl:variable name="names" select="../name[string-length(@arity) > 0]"/>
+ <xsl:for-each select="$type_variables">
+ <xsl:variable name="name_i">
+ <xsl:choose>
+ <xsl:when test="string-length(@name_i) > 0">
+ <xsl:value-of select="@name_i"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="count($names)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="spec0">
+ <xsl:for-each select="$names[position() = $name_i]">
+ <xsl:call-template name="find_spec"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/>
+ <xsl:variable name="clause" select="$spec/contract/clause"/>
+ <xsl:variable name="variable" select="@variable"/>
+ <xsl:variable name="subtype"
+ select="$clause/guard/subtype[typename = $variable]"/>
+
+ <xsl:if test="count($subtype) = 0">
+ <xsl:call-template name="err">
+ <xsl:with-param name="f" select="ancestor::erlref/module"/>
+ <xsl:with-param name="n" select="$fname"/>
+ <xsl:with-param name="a" select="$arity"/>
+ <xsl:with-param name="s">unknown type variable <xsl:value-of select="$variable"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
- <xsl:template name="guard">
- <fo:block>
- <xsl:text>Types:</xsl:text>
- </fo:block>
- <fo:list-block xsl:use-attribute-sets="type-listblock">
<xsl:call-template name="subtype">
- <xsl:with-param name="subtype" select="$guard/subtype"/>
- <xsl:with-param name="type_desc" select="$type_desc"/>
+ <xsl:with-param name="subtype" select="$subtype"/>
+ <xsl:with-param name="type_desc" select="$type_desc"/>
</xsl:call-template>
- </fo:list-block>
+ </xsl:for-each>
</xsl:template>
+ <!-- Substituted
+ <fo:block xsl:use-attribute-sets="function-name">
+ for
+ <fo:block font-weight="bold">
+ to get proper indentation (a monospace font)
+ -->
<xsl:template name="subtype">
<xsl:param name="subtype"/>
<xsl:param name="type_desc"/>
+
<xsl:for-each select="$subtype">
<xsl:variable name="tname" select="typename"/>
- <xsl:variable name="tdesc" select="$type_desc[@name = $tname]"/>
<fo:list-item xsl:use-attribute-sets="type-listitem">
<fo:list-item-label end-indent="label-end()">
<fo:block>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()" format="justify">
- <fo:block font-weight="bold">
- <xsl:apply-templates select="string"/>
+ <fo:block xsl:use-attribute-sets="function-name">
+ <xsl:apply-templates select="string"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
- <xsl:apply-templates select="$type_desc[@name = $tname]"/>
+ <xsl:apply-templates select="$type_desc[@variable = $tname]"/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="local_type">
+ <xsl:param name="type_desc"/>
+ <xsl:param name="local_types"/>
+
+ <xsl:for-each select="$local_types">
+ <fo:list-item xsl:use-attribute-sets="type-listitem">
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()" format="justify">
+ <!-- <fo:block font-weight="bold">
+ (use function-name in "typehead" instead) -->
+ <xsl:call-template name="type_name">
+ <xsl:with-param name="mode" select="'local_type'"/>
+ </xsl:call-template>
+ <!-- </fo:block> -->
+ </fo:list-item-body>
+ </fo:list-item>
+ <xsl:variable name="tname" select="@name"/>
+ <xsl:variable name="tnvars" select="@n_vars"/>
+ <xsl:apply-templates select=
+ "$type_desc[@name = $tname
+ and (@n_vars = $tnvars
+ or string-length(@n_vars) = 0 and
+ string-length($tnvars) = 0)]"/>
</xsl:for-each>
</xsl:template>
@@ -182,6 +302,53 @@
<xsl:apply-templates select="desc"/>
</xsl:template>
+ <xsl:template name="type_name">
+ <xsl:param name="mode"/> <!-- '' if <datatype> -->
+ <xsl:variable name="curModule" select="ancestor::erlref/module"/>
+ <xsl:variable name="mod" select="@mod"/>
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="n_vars" select="@n_vars"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($name) > 0">
+ <xsl:variable name="type" select=
+ "$i/specs/module[@name=$curModule]/type
+ [name=$name
+ and (string-length($n_vars) = 0 or n_vars = $n_vars)
+ and (string-length($mod) = 0 or module = $mod)]"/>
+
+ <xsl:if test="count($type) != 1">
+ <xsl:variable name="why">
+ <xsl:choose>
+ <xsl:when test="count($type) > 1">ambiguous type</xsl:when>
+ <xsl:when test="count($type) = 0">unknown type</xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:call-template name="err">
+ <xsl:with-param name="f" select="$curModule"/>
+ <xsl:with-param name="m" select="$mod"/>
+ <xsl:with-param name="n" select="$name"/>
+ <xsl:with-param name="a" select="$n_vars"/>
+ <xsl:with-param name="s" select="$why"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$mode = ''">
+ <xsl:apply-templates select="$type/typedecl"/>
+ </xsl:when>
+ <xsl:when test="$mode = 'local_type'">
+ <xsl:apply-templates select="$type/typedecl" mode="local_type"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-weight="bold" xsl:use-attribute-sets="type-listitem">
+ <xsl:value-of select="."/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
<!-- Like <head>... -->
<xsl:template match="typehead">
<fo:block xsl:use-attribute-sets="function-name">
@@ -189,6 +356,20 @@
</fo:block>
</xsl:template>
+ <!-- Substituted
+ <fo:block xsl:use-attribute-sets="function-name">
+ for
+ <fo:block font-weight="bold">
+ to get proper indentation (a monospace font)
+ -->
+
+ <xsl:template match="typehead" mode="local_type">
+ <fo:block xsl:use-attribute-sets="function-name">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Not used right now -->
<!-- Like <guard>, except "Types:"... -->
<xsl:template match="local_defs">
<fo:list-block xsl:use-attribute-sets="type-listblock">
@@ -211,108 +392,82 @@
</fo:list-item>
</xsl:template>
- <xsl:template name="type_name">
- <xsl:variable name="curModule" select="ancestor::erlref/module"/>
- <xsl:variable name="mod" select="@mod"/>
- <xsl:variable name="name" select="@name"/>
- <xsl:variable name="n_vars">
- <xsl:choose>
- <xsl:when test="string-length(@n_vars) > 0">
- <xsl:value-of select="@n_vars"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="0"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="string-length($name) > 0">
- <xsl:variable name="type" select=
- "$i/specs/module[@name=$curModule]/type
- [name=$name and n_vars=$n_vars
- and (string-length($mod) = 0 or module = $mod)]"/>
-
- <xsl:if test="count($type) != 1">
- <xsl:call-template name="err">
- <xsl:with-param name="m" select="$mod"/>
- <xsl:with-param name="n" select="$name"/>
- <xsl:with-param name="a" select="$n_vars"/>
- <xsl:with-param name="s">unknown type</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:apply-templates select="$type/typedecl"/>
- </xsl:when>
- <xsl:otherwise>
- <fo:inline font-weight="bold" xsl:use-attribute-sets="type-listitem">
- <xsl:value-of select="."/>
- </fo:inline>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
<!-- Used both in <datatype> and in <func>! -->
<xsl:template match="anno">
<xsl:variable name="curModule" select="ancestor::erlref/module"/>
<xsl:variable name="anno" select="normalize-space(text())"/>
<xsl:variable name="namespec"
- select="ancestor::desc/preceding-sibling::name"/>
+ select="ancestor::type_desc/preceding-sibling::name
+ | ancestor::desc/preceding-sibling::name"/>
<xsl:if test="count($namespec) = 0 and string-length($specs_file) > 0">
<xsl:call-template name="err">
- <xsl:with-param name="s">cannot find 'name' (<xsl:value-of select="$anno"/>)
+ <xsl:with-param name="f" select="$curModule"/>
+ <xsl:with-param name="s">cannot find tag 'name' (anno <xsl:value-of select="$anno"/>)
</xsl:with-param>
</xsl:call-template>
</xsl:if>
- <xsl:variable name="mod" select="$namespec/@mod"/>
- <xsl:variable name="name" select="$namespec/@name"/>
- <xsl:variable name="arity" select="$namespec/@arity"/>
- <xsl:variable name="clause" select="$namespec/@clause"/>
- <xsl:variable name="tmp_n_vars" select="$namespec/@n_vars"/>
- <xsl:variable name="n_vars">
- <xsl:choose>
- <xsl:when test="string-length($tmp_n_vars) > 0">
- <xsl:value-of select="$tmp_n_vars"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="0"/>
- </xsl:otherwise>
- </xsl:choose>
+ <!-- Search "local types" as well -->
+ <xsl:variable name="local_types"
+ select="ancestor::desc/preceding-sibling::type
+ [string-length(@name) > 0]"/>
+ <xsl:variable name="has_anno_in_local_type">
+ <xsl:for-each select="$local_types">
+ <xsl:call-template name="anno_name">
+ <xsl:with-param name="curModule" select="$curModule"/>
+ <xsl:with-param name="anno" select="$anno"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="has_anno">
+ <xsl:for-each select="$namespec">
+ <xsl:call-template name="anno_name">
+ <xsl:with-param name="curModule" select="$curModule"/>
+ <xsl:with-param name="anno" select="$anno"/>
+ </xsl:call-template>
+ </xsl:for-each>
</xsl:variable>
+
+ <xsl:if test="$has_anno = '' and $has_anno_in_local_type = ''">
+ <xsl:call-template name="err">
+ <xsl:with-param name="f" select="$curModule"/>
+ <xsl:with-param name="m" select="$namespec/@mod"/>
+ <xsl:with-param name="n" select="$namespec/@name"/>
+ <xsl:with-param name="a" select="'-'"/>
+ <xsl:with-param name="s">unknown annotation <xsl:value-of select="$anno"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:value-of select="$anno"/>
+ </xsl:template>
+
+ <xsl:template name="anno_name">
+ <xsl:param name="curModule"/>
+ <xsl:param name="anno"/>
+ <xsl:variable name="mod" select="@mod"/>
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="arity" select="@arity"/>
+ <xsl:variable name="n_vars" select="@n_vars"/>
+ <xsl:variable name="clause_i" select="@clause_i"/>
+
<xsl:variable name="spec0" select=
"$i/specs/module[@name=$curModule]/spec
[name=$name and arity=$arity
and (string-length($mod) = 0 or module = $mod)]"/>
<xsl:variable name="spec_annos" select=
- "$spec0[string-length($clause) = 0
- or position() = $clause]/anno[.=$anno]"/>
+ "$spec0[string-length($clause_i) = 0
+ or position() = $clause_i]/anno[.=$anno]"/>
<xsl:variable name="type_annos" select=
"$i/specs/module[@name=$curModule]/type
- [name=$name and n_vars=$n_vars
+ [name=$name
+ and (string-length($n_vars) = 0 or n_vars=$n_vars)
and (string-length($mod) = 0 or module = $mod)]/anno[.=$anno]"/>
-
- <xsl:if test="count($spec_annos) = 0
- and count($type_annos) = 0
- and string-length($specs_file) > 0">
- <xsl:variable name="n">
- <xsl:choose>
- <xsl:when test="string-length($arity) = 0">
- <xsl:value-of select="$n_vars"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$arity"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:call-template name="err">
- <xsl:with-param name="m" select="$mod"/>
- <xsl:with-param name="n" select="$name"/>
- <xsl:with-param name="a" select="$n"/>
- <xsl:with-param name="s">unknown annotation <xsl:value-of select="$anno"/>
- </xsl:with-param>
- </xsl:call-template>
+ <xsl:if test="count($spec_annos) != 0
+ or count($type_annos) != 0
+ or string-length($specs_file) = 0">
+ <xsl:value-of select="true()"/>
</xsl:if>
- <xsl:value-of select="$anno"/>
</xsl:template>
<!-- Used for indentation of formatted types and specs -->
@@ -1227,6 +1382,9 @@
<xsl:param name="partnum"/>
<xsl:apply-templates select="name"/>
+ <xsl:apply-templates
+ select="name[string-length(@arity) > 0 and position()=last()]"
+ mode="types"/>
<xsl:apply-templates select="fsummary|type|desc">
<xsl:with-param name="partnum" select="$partnum"/>
@@ -1245,6 +1403,11 @@
<xsl:when test="ancestor::datatype">
<xsl:call-template name="type_name"/>
</xsl:when>
+ <xsl:when test="string-length(text()) = 0 and ancestor::erlref">
+ <xsl:message terminate="yes">
+ Error <xsl:value-of select="@name"/>: arity is mandatory when referring to specifications!
+ </xsl:message>
+ </xsl:when>
<xsl:otherwise>
<fo:block xsl:use-attribute-sets="function-name">
<xsl:call-template name="name">
@@ -1276,15 +1439,20 @@
<xsl:template match="type">
<xsl:param name="partnum"/>
- <fo:block>
- <xsl:text>Types:</xsl:text>
- </fo:block>
+ <!-- The case where @name != 0 is taken care of in "type_name" -->
+ <xsl:if test="string-length(@name) = 0 and string-length(@variable) = 0">
- <fo:list-block xsl:use-attribute-sets="type-listblock">
- <xsl:apply-templates>
- <xsl:with-param name="partnum" select="$partnum"/>
- </xsl:apply-templates>
- </fo:list-block>
+ <fo:block>
+ <xsl:text>Types:</xsl:text>
+ </fo:block>
+
+ <fo:list-block xsl:use-attribute-sets="type-listblock">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </fo:list-block>
+
+ </xsl:if>
</xsl:template>
@@ -1431,6 +1599,7 @@
</xsl:template>
+ <!-- Does not look at @n_vars -->
<xsl:template match="seealso">
<fo:inline font-style="italic">
<xsl:apply-templates/>
diff --git a/lib/erl_docgen/src/otp_specs.erl b/lib/erl_docgen/src/otp_specs.erl
index 728ddb2e6e..edb437a942 100644
--- a/lib/erl_docgen/src/otp_specs.erl
+++ b/lib/erl_docgen/src/otp_specs.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -380,6 +380,8 @@ t_type([E=#xmlElement{name = float}]) ->
t_float(E);
t_type([#xmlElement{name = nil}]) ->
t_nil();
+t_type([#xmlElement{name = paren, content = Es}]) ->
+ t_paren(Es);
t_type([#xmlElement{name = list, content = Es}]) ->
t_list(Es);
t_type([#xmlElement{name = nonempty_list, content = Es}]) ->
@@ -416,6 +418,9 @@ t_float(E) ->
t_nil() ->
["[]"].
+t_paren(Es) ->
+ ["("] ++ t_utype(get_elem(type, Es)) ++ [")"].
+
t_list(Es) ->
["["] ++ t_utype(get_elem(type, Es)) ++ ["]"].
@@ -532,6 +537,8 @@ ot_type([E=#xmlElement{name = float}]) ->
ot_float(E);
ot_type([#xmlElement{name = nil}]) ->
ot_nil();
+ot_type([#xmlElement{name = paren, content = Es}]) ->
+ ot_paren(Es);
ot_type([#xmlElement{name = list, content = Es}]) ->
ot_list(Es);
ot_type([#xmlElement{name = nonempty_list, content = Es}]) ->
@@ -582,6 +589,9 @@ ot_float(E) ->
ot_nil() ->
{nil,0}.
+ot_paren(Es) ->
+ {paren_type,0,[ot_utype(get_elem(type, Es))]}.
+
ot_list(Es) ->
{type,0,list,[ot_utype(get_elem(type, Es))]}.
@@ -697,5 +707,7 @@ annos_type([#xmlElement{name = union, content = Es}]) ->
lists:flatmap(fun annos_elem/1, Es);
annos_type([E=#xmlElement{name = typevar}]) ->
annos_elem(E);
+annos_type([#xmlElement{name = paren, content = Es}]) ->
+ annos(get_elem(type, Es));
annos_type(_) ->
[].
diff --git a/lib/erl_interface/doc/src/notes.xml b/lib/erl_interface/doc/src/notes.xml
index 784ba78d3e..d83a8307e4 100644
--- a/lib/erl_interface/doc/src/notes.xml
+++ b/lib/erl_interface/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/erl_interface/src/legacy/erl_connect.c b/lib/erl_interface/src/legacy/erl_connect.c
index fdf689e191..41d4fa3138 100644
--- a/lib/erl_interface/src/legacy/erl_connect.c
+++ b/lib/erl_interface/src/legacy/erl_connect.c
@@ -293,8 +293,13 @@ static int erl_do_receive_msg(int fd, ei_x_buff* x, ErlMessage* emsg)
emsg->msg = NULL;
if (msg.from.node[0] != '\0')
emsg->from = erl_mk_pid(msg.from.node, msg.from.num, msg.from.serial, msg.from.creation);
+ else
+ emsg->from = NULL;
if (msg.to.node[0] != '\0')
emsg->to = erl_mk_pid(msg.to.node, msg.to.num, msg.to.serial, msg.to.creation);
+ else
+ emsg->to = NULL;
+ memcpy(emsg->to_name, msg.toname, MAXATOMLEN+1);
return r;
}
diff --git a/lib/et/src/et_wx_contents_viewer.erl b/lib/et/src/et_wx_contents_viewer.erl
index aada184a76..86f46f25d0 100644
--- a/lib/et/src/et_wx_contents_viewer.erl
+++ b/lib/et/src/et_wx_contents_viewer.erl
@@ -464,7 +464,8 @@ create_window(S) ->
wxFrame:setMenuBar(Frame,Bar),
create_file_menu(Bar),
Editor = wxTextCtrl:new(Panel, ?wxID_ANY, [{style, 0
- bor ?wxDEFAULT
+ bor ?wxDEFAULT
+ bor ?wxTE_RICH2 %% Needed on Windows
bor ?wxTE_MULTILINE
bor ?wxTE_READONLY
bor ?wxTE_DONTWRAP}]),
@@ -483,6 +484,7 @@ create_window(S) ->
wxFrame:connect(Frame, close_window, [{skip,true}]),
wxFrame:setFocus(Frame),
wxPanel:setSizer(Panel, Sizer),
+ wxSizer:fit(Sizer, Panel),
wxFrame:show(Frame),
S2#state{menu_data = HideData++SearchData++FilterData, editor = Editor, frame = Frame}.
diff --git a/lib/et/src/et_wx_viewer.erl b/lib/et/src/et_wx_viewer.erl
index d42f8c0c86..7d4286ed9d 100644
--- a/lib/et/src/et_wx_viewer.erl
+++ b/lib/et/src/et_wx_viewer.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2000-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2000-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -846,9 +846,6 @@ handle_info(#wx{event = #wxSize{size = {OldW, OldH}}} = Wx, S) ->
refresh_main_window(S4)
end,
noreply(S6);
-handle_info(#wx{event = #wxFocus{}}, S) ->
- wxWindow:setFocus(S#state.canvas), % Get keyboard focus
- noreply(S);
handle_info(#wx{event = #wxMouse{type = enter_window}}, S) ->
wxWindow:setFocus(S#state.canvas), % Get keyboard focus
noreply(S);
@@ -1252,7 +1249,6 @@ create_main_window(S) ->
Self ! Ev
end}]),
wxPanel:connect(Canvas, key_down),
- wxPanel:connect(Canvas, kill_focus),
wxPanel:connect(Canvas, enter_window, [{skip, true}]),
wxFrame:connect(Frame, command_menu_selected),
wxFrame:connect(Frame, close_window),
diff --git a/lib/hipe/doc/src/notes.xml b/lib/hipe/doc/src/notes.xml
index 434bfac64c..5c06e5e558 100644
--- a/lib/hipe/doc/src/notes.xml
+++ b/lib/hipe/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2006</year><year>2010</year>
+ <year>2006</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/inets/doc/src/httpc.xml b/lib/inets/doc/src/httpc.xml
index 8f68087871..f6b6827e93 100644
--- a/lib/inets/doc/src/httpc.xml
+++ b/lib/inets/doc/src/httpc.xml
@@ -76,38 +76,37 @@ socket_opt() = See the Options used by gen_tcp(3) and
<p>For more information about HTTP see rfc 2616</p>
<code type="none"><![CDATA[
-method() = head | get | put | post | trace | options | delete
-request() = {url(), headers()} |
- {url(), headers(), content_type(), body()}
-url() = string() - Syntax according to the URI definition in rfc 2396, ex: "http://www.erlang.org"
-status_line() = {http_version(), status_code(), reason_phrase()}
-http_version() = string() ex: "HTTP/1.1"
-status_code() = integer()
-reason_phrase() = string()
-content_type() = string()
-headers() = [header()]
-header() = {field(), value()}
-field() = string()
-value() = string()
-body() = string() | binary()
-filename() = string()
+method() = head | get | put | post | trace | options | delete
+request() = {url(), headers()} |
+ {url(), headers(), content_type(), body()}
+url() = string() - Syntax according to the URI definition in rfc 2396, ex: "http://www.erlang.org"
+status_line() = {http_version(), status_code(), reason_phrase()}
+http_version() = string() ex: "HTTP/1.1"
+status_code() = integer()
+reason_phrase() = string()
+content_type() = string()
+headers() = [header()]
+header() = {field(), value()}
+field() = string()
+value() = string()
+body() = string() |
+ binary() |
+ {fun(accumulator()) -> body_processing_result(),
+ accumulator()} |
+ {chunkify,
+ fun(accumulator()) -> body_processing_result(),
+ accumulator()}
+body_processing_result() = eof | {ok, iolist(), accumulator()}
+accumulator() = term()
+filename() = string()
]]></code>
</section>
<section>
<title>SSL DATA TYPES </title>
- <p>Some type definitions relevant when using https,
- for details <seealso marker="ssl:ssl">ssl(3)</seealso>: </p>
- <code type="none"><![CDATA[
-ssl_options() = {verify, code()} |
- {depth, depth()} |
- {certfile, path()} |
- {keyfile, path()} |
- {password, string()} |
- {cacertfile, path()} |
- {ciphers, string()}
- ]]></code>
+ <p>See <seealso marker="ssl:ssl">ssl(3)</seealso> for information
+ about ssl options (<c>ssloptions()</c>). </p>
</section>
<section>
@@ -142,8 +141,9 @@ ssl_options() = {verify, code()} |
<fsummary>Sends a get HTTP-request</fsummary>
<type>
<v>Url = url() </v>
- <v>Result = {status_line(), headers(), body()} |
- {status_code(), body()} | request_id() </v>
+ <v>Result = {status_line(), headers(), Body} |
+ {status_code(), Body} | request_id() </v>
+ <v>Body = string() | binary()</v>
<v>Profile = profile()</v>
<v>Reason = term() </v>
</type>
@@ -166,9 +166,9 @@ ssl_options() = {verify, code()} |
<v>http_options() = [http_option()]</v>
<v>http_option() = {timeout, timeout()} |
{connect_timeout, timeout()} |
- {ssl, ssl_options()} |
- {ossl, ssl_options()} |
- {essl, ssl_options()} |
+ {ssl, ssloptions()} |
+ {ossl, ssloptions()} |
+ {essl, ssloptions()} |
{autoredirect, boolean()} |
{proxy_auth, {userstring(), passwordstring()}} |
{version, http_version()} |
@@ -191,8 +191,9 @@ ssl_options() = {verify, code()} |
<v>Function = atom() </v>
<v>Args = list() </v>
<v>body_format() = string | binary </v>
- <v>Result = {status_line(), headers(), body()} |
- {status_code(), body()} | request_id() </v>
+ <v>Result = {status_line(), headers(), Body} |
+ {status_code(), Body} | request_id() </v>
+ <v>Body = string() | binary()</v>
<v>Profile = profile() </v>
<v>Reason = {connect_failed, term()} |
{send_failed, term()} | term() </v>
@@ -226,7 +227,7 @@ ssl_options() = {verify, code()} |
<tag><c><![CDATA[ssl]]></c></tag>
<item>
<p>This is the default ssl config option, currently defaults to
- <c>ossl</c>, see below. </p>
+ <c>essl</c>, see below. </p>
<p>Defaults to <c>[]</c>. </p>
</item>
diff --git a/lib/inets/doc/src/httpd.xml b/lib/inets/doc/src/httpd.xml
index 6470b6fac7..edacb73b65 100644
--- a/lib/inets/doc/src/httpd.xml
+++ b/lib/inets/doc/src/httpd.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1997</year><year>2010</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -154,7 +154,7 @@
<c>ossl</c> specifically uses the OpenSSL based (old) SSL.
<c>essl</c> specifically uses the Erlang based (new) SSL.
When using <c>ssl</c> it <em>currently</em> defaults to
- <c>ossl</c>. </p>
+ <c>essl</c>. </p>
<p>Defaults to <c>ip_comm</c>. </p>
</item>
@@ -794,14 +794,14 @@ bytes
<marker id="sdir_prop"></marker>
<p> Here follows the valid properties for security directories</p>
<taglist>
- <tag>{security_data_file, path()}</tag>
+ <tag>{data_file, path()}</tag>
<item>
Name of the security data file. The filename can either
absolute or relative to the server_root. This file is used to
store persistent data for the mod_security module. </item>
- <tag>{security_max_retries, integer()}</tag>
+ <tag>{max_retries, integer()}</tag>
<item> Specifies the maximum number of tries to authenticate a
user has before the user is blocked out. If a user
@@ -811,13 +811,13 @@ bytes
server will return 401 (Unauthorized), for security
reasons. Defaults to 3 may also be set to infinity.</item>
- <tag>{security_block_time, integer()}</tag>
+ <tag>{block_time, integer()}</tag>
<item> Specifies the number of minutes a user is blocked. After
this amount of time, he automatically regains access.
Defaults to 60</item>
- <tag>{security_fail_expire_time, integer()}</tag>
+ <tag>{fail_expire_time, integer()}</tag>
<item>
Specifies the number of minutes a failed user authentication
@@ -825,7 +825,7 @@ bytes
time, his previous failed authentications are
forgotten. Defaults to 30</item>
- <tag>{security_auth_timeout, integer()}</tag>
+ <tag>{auth_timeout, integer()}</tag>
<item>
Specifies the number of seconds a successful user
diff --git a/lib/inets/doc/src/inets.xml b/lib/inets/doc/src/inets.xml
index c367d7fa77..a2bf42320f 100644
--- a/lib/inets/doc/src/inets.xml
+++ b/lib/inets/doc/src/inets.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE erlref SYSTEM "erlref.dtd">
<erlref>
@@ -32,8 +32,10 @@
<modulesummary>The inets services API</modulesummary>
<description>
<p>This module provides the most basic API to the
- clients and servers, that are part of the Inets application,
- such as start and stop. </p>
+ clients and servers, that are part of the Inets application,
+ such as start and stop. </p>
+
+ <marker id="common_data_types"></marker>
</description>
<section>
@@ -42,7 +44,10 @@
this module: </p>
<p><c> service() = ftpc | tftp | httpc | httpd</c></p>
<p><c> property() = atom() </c></p>
+ <marker id="functions"></marker>
+ <marker id="services"></marker>
</section>
+
<funcs>
<func>
<name>services() -> [{Service, Pid}]</name>
@@ -54,11 +59,13 @@
<desc>
<p>Returns a list of currently running services.</p>
<note>
- <p>Services started as <c>stand_alone</c> will not
- be listed.</p>
+ <p>Services started as <c>stand_alone</c> will not be listed.</p>
</note>
+
+ <marker id="services_info"></marker>
</desc>
</func>
+
<func>
<name>services_info() -> [{Service, Pid, Info}]</name>
<fsummary>Returns a list of currently running services where
@@ -73,11 +80,13 @@
</type>
<desc>
<p>Returns a list of currently running services where each
- service is described by a [{Option, Value}] list. The
- information given in the list is specific for each service
- and it is probable that each service will have its own info
- function that gives you even more details about the
- service.</p>
+ service is described by a [{Option, Value}] list. The
+ information given in the list is specific for each service
+ and it is probable that each service will have its own info
+ function that gives you even more details about the
+ service.</p>
+
+ <marker id="service_names"></marker>
</desc>
</func>
@@ -89,6 +98,8 @@
</type>
<desc>
<p>Returns a list of available service names.</p>
+
+ <marker id="start"></marker>
</desc>
</func>
@@ -101,18 +112,24 @@
</type>
<desc>
<p>Starts the Inets application. Default type
- is temporary. See also
- <seealso marker="kernel:application">application(3)</seealso></p>
+ is temporary. See also
+ <seealso marker="kernel:application">application(3)</seealso>. </p>
+
+ <marker id="stop"></marker>
</desc>
</func>
+
<func>
<name>stop() -> ok </name>
<fsummary>Stops the inets application.</fsummary>
<desc>
<p>Stops the inets application. See also
- <seealso marker="kernel:application">application(3)</seealso></p>
+ <seealso marker="kernel:application">application(3)</seealso>. </p>
+
+ <marker id="start2"></marker>
</desc>
</func>
+
<func>
<name>start(Service, ServiceConfig) -> {ok, Pid} | {error, Reason}</name>
<name>start(Service, ServiceConfig, How) -> {ok, Pid} | {error, Reason}</name>
@@ -144,8 +161,11 @@
some sense the calling process has now become the top
supervisor.</p>
</note>
+
+ <marker id="stop2"></marker>
</desc>
</func>
+
<func>
<name>stop(Service, Reference) -> ok | {error, Reason} </name>
<fsummary>Stops a started service of the inets application or takes
@@ -157,9 +177,11 @@
</type>
<desc>
<p>Stops a started service of the inets application or takes
- down a "stand_alone-service" gracefully. When the
- <c>stand_alone</c> option is used in start,
- only the pid is a valid argument to stop.</p>
+ down a "stand_alone-service" gracefully. When the
+ <c>stand_alone</c> option is used in start,
+ only the pid is a valid argument to stop.</p>
+
+ <marker id="see_also"></marker>
</desc>
</func>
</funcs>
diff --git a/lib/inets/doc/src/mod_esi.xml b/lib/inets/doc/src/mod_esi.xml
index e81308a502..9674cd9a88 100644
--- a/lib/inets/doc/src/mod_esi.xml
+++ b/lib/inets/doc/src/mod_esi.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE erlref SYSTEM "erlref.dtd">
<erlref>
<header>
<copyright>
- <year>1997</year><year>2010</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -32,16 +32,19 @@
<modulesummary>Erlang Server Interface </modulesummary>
<description>
<p>This module defines the API - Erlang Server Interface (ESI).
- Which is a more efficient way of writing erlang scripts
- for your Inets web server than writing them as common CGI scripts.</p>
+ Which is a more efficient way of writing erlang scripts
+ for your Inets web server than writing them as common CGI scripts.</p>
+
+ <marker id="deliver"></marker>
</description>
+
<funcs>
<func>
<name>deliver(SessionID, Data) -> ok | {error, Reason}</name>
<fsummary>Sends Data back to client.</fsummary>
<type>
<v>SessionID = term()</v>
- <v>Data = string() | io_list()</v>
+ <v>Data = string() | io_list() | binary()</v>
<v>Reason = term()</v>
</type>
<desc>
@@ -51,13 +54,15 @@
parts of the content to the user.</p>
<p>Sends data from a Erl Scheme script back to the client.</p>
- <note><p>Note
- that if any HTTP-header fields should be added by the
- script they must be in the first call to deliver/2 and the
- data in the call must be a string. Do not
- assume anything about the data type of SessionID, the
- SessionID must be the value given as input to the esi
- call back function that you implemented.</p></note>
+ <note>
+ <p>Note that if any HTTP-header fields should be added by the
+ script they must be in the first call to deliver/2 and the
+ data in the call must be a string. Calls after the headers
+ are complete may contain binary data to reduce copying
+ overhead. Do not assume anything about the data type of
+ SessionID, the SessionID must be the value given as input to
+ the esi call back function that you implemented.</p>
+ </note>
</desc>
</func>
</funcs>
diff --git a/lib/inets/doc/src/mod_security.xml b/lib/inets/doc/src/mod_security.xml
index 2a871d29d8..a3c91dca5b 100644
--- a/lib/inets/doc/src/mod_security.xml
+++ b/lib/inets/doc/src/mod_security.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE erlref SYSTEM "erlref.dtd">
<erlref>
<header>
<copyright>
- <year>1998</year><year>2010</year>
+ <year>1998</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/inets/doc/src/notes.xml b/lib/inets/doc/src/notes.xml
index 5da9d98002..0926df8581 100644
--- a/lib/inets/doc/src/notes.xml
+++ b/lib/inets/doc/src/notes.xml
@@ -32,6 +32,140 @@
<file>notes.xml</file>
</header>
+ <section><title>Inets 5.6</title>
+
+ <section><title>Improvements and New Features</title>
+<!--
+ <p>-</p>
+-->
+ <list>
+ <item>
+ <p>[httpc] Add support for upload body streaming (PUT and POST).</p>
+ <p>For more info,
+ see the definition of the <c>Body</c> argument of the
+ <seealso marker="httpc#request2">request/4,5</seealso>
+ function. </p>
+ <p>Filipe David Manana</p>
+ <p>Own Id: OTP-9094</p>
+ </item>
+
+ <item>
+ <p>[ftp] Added (type) spec for all exported functions.</p>
+ <p>Own Id: OTP-9114 Aux Id: seq11799</p>
+ </item>
+
+ <item>
+ <p>[httpd]
+ <seealso marker="mod_esi#deliver">mod_esi:deliver/2</seealso>
+ made to accept binary data. </p>
+ <p>Bernard Duggan</p>
+ <p>Own Id: OTP-9123</p>
+ </item>
+
+ <item>
+ <p>[httpd] Prevent XSS in error pages.
+ Prevent user controlled input from being interpreted
+ as HTML in error pages by encoding the reserved HTML
+ characters. </p>
+ <p>Michael Santos</p>
+ <p>Own Id: OTP-9124</p>
+ </item>
+
+ <item>
+ <p>[httpd] Improved error messages. </p>
+ <p>Ricardo Catalinas Jim�nez</p>
+ <p>Own Id: OTP-9157</p>
+ </item>
+
+ <item>
+ <p>[httpd] Extended support for file descriptors.
+ In order to be able to bind to a privileged port
+ without running the erlang VM as root, the support
+ for using file descriptors has been improved.
+ It is now possible to add the file descriptor to the config
+ (option fd) when calling the
+ <seealso marker="inets#start2">inets:start(httpd, ...)</seealso>
+ function. </p>
+ <p>Attila Rajmund Nohl</p>
+ <p>Own Id: OTP-9202</p>
+ <p>Aux Id: seq11819</p>
+ </item>
+
+ <item>
+ <p>The default ssl kind has now been changed to <c>essl</c>. </p>
+ <p><c>ossl</c> will work for as long as the ssl application
+ supports it. </p>
+ <p>See the httpd
+ <seealso marker="httpd#comm_prop">socket_type</seealso>
+ communication property or the httpc
+ <seealso marker="httpc#request2">request/4,5</seealso> function
+ for more info. </p>
+ <p>Own Id: OTP-9230</p>
+ <p>*** POTENTIAL INCOMPATIBILITY ***</p>
+ </item>
+
+ </list>
+ </section>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+<!--
+ <p>-</p>
+-->
+
+ <list>
+ <item>
+ <p>[httpd] Wrong
+ <seealso marker="httpd#sec_prop">security property</seealso>
+ names used in documentation. </p>
+ <p><c>security_data_file</c> used instead of <c>data_file</c>. </p>
+ <p><c>security_max_retries</c> used instead of <c>max_retries</c>. </p>
+ <p><c>security_block_time</c> used instead of <c>block_time</c>. </p>
+ <p><c>security_fail_expire_time</c> used instead of <c>fail_expire_time</c>. </p>
+ <p><c>security_auth_timeout</c> used instead of <c>auth_timeout</c>. </p>
+ <p>Garrett Smith</p>
+ <p>Own Id: OTP-9131</p>
+ </item>
+
+ <item>
+ <p>[httpd] Fix timeout message generated by mod_esi.
+ When a mod_esi request times out, the code to send a
+ timeout response was incorrect and generated an
+ internal server error as well as an invalid response
+ line. </p>
+ <p>Bernard Duggan</p>
+ <p>Own Id: OTP-9158</p>
+ </item>
+
+ <item>
+ <p>[httpc] httpc manager crashes.
+ When a request results in a retry, the request id will be "reused"
+ in the previous implementation a race condition could occur causing
+ the manager to crash. </p>
+ <p>This is now avoided by using proc_lib:init_ack and
+ gen_server:enter_loop to allow mor advanced initialization of
+ httpc_handlers without blocking the httpc_manger and eliminating
+ extra processes that can cause race conditions. </p>
+ <p>Own Id: OTP-9246</p>
+ </item>
+
+ <item>
+ <p>[httpc] Issuing a request (<c>httpc:request</c>) to an
+ host with the ssl option
+ <c>{ip, {127,0,0,1}}</c> results in an handler crash.
+ The reason was that the connect call resulted in an exit with
+ reason <c>badarg</c>
+ (this was the same for both <c>ssl</c> and <c>gen_tcp</c>). </p>
+ <p>Exits was not catched. This has now been improved. </p>
+ <p>Own Id: OTP-9289</p>
+ <p>Aux Id: seq11845</p>
+ </item>
+
+ </list>
+ </section>
+
+ </section> <!-- 5.6 -->
+
+
<section><title>Inets 5.5.2</title>
<section><title>Improvements and New Features</title>
@@ -80,7 +214,8 @@
are URL-encoded. Added support in http-client to use
URL-encoding. Also added the missing include directory
for the inets application.</p>
- <p>Own Id: OTP-8940 Aux Id: seq11735 </p>
+ <p>Own Id: OTP-8940</p>
+ <p>Aux Id: seq11735</p>
</item>
</list>
</section>
diff --git a/lib/inets/src/ftp/ftp.erl b/lib/inets/src/ftp/ftp.erl
index 5ad74851c8..fe6cb0c191 100644
--- a/lib/inets/src/ftp/ftp.erl
+++ b/lib/inets/src/ftp/ftp.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -92,6 +92,12 @@
}).
+-type shortage_reason() :: 'etnospc' | 'epnospc'.
+-type restriction_reason() :: 'epath' | 'efnamena' | 'elogin' | 'enotbinary'.
+-type common_reason() :: 'econn' | 'eclosed' | term().
+-type file_write_error_reason() :: term(). % See file:write for more info
+
+
%%%=========================================================================
%%% API - CLIENT FUNCTIONS
%%%=========================================================================
@@ -106,6 +112,9 @@
%% Description: Start an ftp client and connect to a host.
%%--------------------------------------------------------------------------
+-spec open(Host :: string() | inet:ip_address()) ->
+ {'ok', Pid :: pid()} | {'error', Reason :: 'ehost' | term()}.
+
%% <BACKWARD-COMPATIBILLITY>
open({option_list, Options}) when is_list(Options) ->
try
@@ -126,6 +135,9 @@ open({option_list, Options}) when is_list(Options) ->
open(Host) ->
open(Host, []).
+-spec open(Host :: string() | inet:ip_address(), Opts :: list()) ->
+ {'ok', Pid :: pid()} | {'error', Reason :: 'ehost' | term()}.
+
%% <BACKWARD-COMPATIBILLITY>
open(Host, Port) when is_integer(Port) ->
open(Host, [{port, Port}]);
@@ -161,12 +173,24 @@ open(Host, Opts) when is_list(Opts) ->
%%
%% Description: Login with or without a supplied account name.
%%--------------------------------------------------------------------------
+-spec user(Pid :: pid(),
+ User :: string(),
+ Pass :: string()) ->
+ 'ok' | {'error', Reason :: 'euser' | common_reason()}.
+
user(Pid, User, Pass) ->
call(Pid, {user, User, Pass}, atom).
+-spec user(Pid :: pid(),
+ User :: string(),
+ Pass :: string(),
+ Acc :: string()) ->
+ 'ok' | {'error', Reason :: 'euser' | common_reason()}.
+
user(Pid, User, Pass, Acc) ->
call(Pid, {user, User, Pass, Acc}, atom).
+
%%--------------------------------------------------------------------------
%% account(Pid, Acc) -> ok | {error, eacct}
%% Pid = pid()
@@ -174,9 +198,14 @@ user(Pid, User, Pass, Acc) ->
%%
%% Description: Set a user Account.
%%--------------------------------------------------------------------------
+
+-spec account(Pid :: pid(), Acc :: string()) ->
+ 'ok' | {'error', Reason :: 'eacct' | common_reason()}.
+
account(Pid, Acc) ->
call(Pid, {account, Acc}, atom).
+
%%--------------------------------------------------------------------------
%% pwd(Pid) -> {ok, Dir} | {error, elogin} | {error, econn}
%% Pid = pid()
@@ -184,19 +213,30 @@ account(Pid, Acc) ->
%%
%% Description: Get the current working directory at remote server.
%%--------------------------------------------------------------------------
+
+-spec pwd(Pid :: pid()) ->
+ {'ok', Dir :: string()} |
+ {'error', Reason :: restriction_reason() | common_reason()}.
+
pwd(Pid) ->
call(Pid, pwd, ctrl).
+
%%--------------------------------------------------------------------------
-%% lpwd(Pid) -> {ok, Dir} | {error, elogin}
+%% lpwd(Pid) -> {ok, Dir}
%% Pid = pid()
%% Dir = string()
%%
%% Description: Get the current working directory at local server.
%%--------------------------------------------------------------------------
+
+-spec lpwd(Pid :: pid()) ->
+ {'ok', Dir :: string()}.
+
lpwd(Pid) ->
call(Pid, lpwd, string).
+
%%--------------------------------------------------------------------------
%% cd(Pid, Dir) -> ok | {error, epath} | {error, elogin} | {error, econn}
%% Pid = pid()
@@ -204,9 +244,14 @@ lpwd(Pid) ->
%%
%% Description: Change current working directory at remote server.
%%--------------------------------------------------------------------------
+
+-spec cd(Pid :: pid(), Dir :: string()) ->
+ 'ok' | {'error', Reason :: restriction_reason() | common_reason()}.
+
cd(Pid, Dir) ->
call(Pid, {cd, Dir}, atom).
+
%%--------------------------------------------------------------------------
%% lcd(Pid, Dir) -> ok | {error, epath}
%% Pid = pid()
@@ -214,9 +259,14 @@ cd(Pid, Dir) ->
%%
%% Description: Change current working directory for the local client.
%%--------------------------------------------------------------------------
+
+-spec lcd(Pid :: pid(), Dir :: string()) ->
+ 'ok' | {'error', Reason :: restriction_reason()}.
+
lcd(Pid, Dir) ->
call(Pid, {lcd, Dir}, string).
+
%%--------------------------------------------------------------------------
%% ls(Pid) -> Result
%% ls(Pid, <Dir>) -> Result
@@ -229,11 +279,22 @@ lcd(Pid, Dir) ->
%%
%% Description: Returns a list of files in long format.
%%--------------------------------------------------------------------------
+
+-spec ls(Pid :: pid()) ->
+ {'ok', Listing :: string()} |
+ {'error', Reason :: restriction_reason() | common_reason()}.
+
ls(Pid) ->
ls(Pid, "").
+
+-spec ls(Pid :: pid(), Dir :: string()) ->
+ {'ok', Listing :: string()} |
+ {'error', Reason :: restriction_reason() | common_reason()}.
+
ls(Pid, Dir) ->
call(Pid, {dir, long, Dir}, string).
+
%%--------------------------------------------------------------------------
%% nlist(Pid) -> Result
%% nlist(Pid, Pathname) -> Result
@@ -246,21 +307,37 @@ ls(Pid, Dir) ->
%%
%% Description: Returns a list of files in short format
%%--------------------------------------------------------------------------
+
+-spec nlist(Pid :: pid()) ->
+ {'ok', Listing :: string()} |
+ {'error', Reason :: restriction_reason() | common_reason()}.
+
nlist(Pid) ->
nlist(Pid, "").
+
+-spec nlist(Pid :: pid(), Pathname :: string()) ->
+ {'ok', Listing :: string()} |
+ {'error', Reason :: restriction_reason() | common_reason()}.
+
nlist(Pid, Dir) ->
call(Pid, {dir, short, Dir}, string).
+
%%--------------------------------------------------------------------------
-%% rename(Pid, CurrFile, NewFile) -> ok | {error, epath} | {error, elogin}
-%% | {error, econn}
+%% rename(Pid, Old, New) -> ok | {error, epath} | {error, elogin}
+%% | {error, econn}
%% Pid = pid()
%% CurrFile = NewFile = string()
%%
%% Description: Rename a file at remote server.
%%--------------------------------------------------------------------------
-rename(Pid, CurrFile, NewFile) ->
- call(Pid, {rename, CurrFile, NewFile}, string).
+
+-spec rename(Pid :: pid(), Old :: string(), New :: string()) ->
+ 'ok' | {'error', Reason :: restriction_reason() | common_reason()}.
+
+rename(Pid, Old, New) ->
+ call(Pid, {rename, Old, New}, string).
+
%%--------------------------------------------------------------------------
%% delete(Pid, File) -> ok | {error, epath} | {error, elogin} |
@@ -270,9 +347,14 @@ rename(Pid, CurrFile, NewFile) ->
%%
%% Description: Remove file at remote server.
%%--------------------------------------------------------------------------
+
+-spec delete(Pid :: pid(), File :: string()) ->
+ 'ok' | {'error', Reason :: restriction_reason() | common_reason()}.
+
delete(Pid, File) ->
call(Pid, {delete, File}, string).
+
%%--------------------------------------------------------------------------
%% mkdir(Pid, Dir) -> ok | {error, epath} | {error, elogin} | {error, econn}
%% Pid = pid(),
@@ -280,9 +362,14 @@ delete(Pid, File) ->
%%
%% Description: Make directory at remote server.
%%--------------------------------------------------------------------------
+
+-spec mkdir(Pid :: pid(), Dir :: string()) ->
+ 'ok' | {'error', Reason :: restriction_reason() | common_reason()}.
+
mkdir(Pid, Dir) ->
call(Pid, {mkdir, Dir}, atom).
+
%%--------------------------------------------------------------------------
%% rmdir(Pid, Dir) -> ok | {error, epath} | {error, elogin} | {error, econn}
%% Pid = pid(),
@@ -290,9 +377,14 @@ mkdir(Pid, Dir) ->
%%
%% Description: Remove directory at remote server.
%%--------------------------------------------------------------------------
+
+-spec rmdir(Pid :: pid(), Dir :: string()) ->
+ 'ok' | {'error', Reason :: restriction_reason() | common_reason()}.
+
rmdir(Pid, Dir) ->
call(Pid, {rmdir, Dir}, atom).
+
%%--------------------------------------------------------------------------
%% type(Pid, Type) -> ok | {error, etype} | {error, elogin} | {error, econn}
%% Pid = pid()
@@ -300,23 +392,41 @@ rmdir(Pid, Dir) ->
%%
%% Description: Set transfer type.
%%--------------------------------------------------------------------------
+
+-spec type(Pid :: pid(), Type :: ascii | binary) ->
+ 'ok' |
+ {'error', Reason :: 'etype' | restriction_reason() | common_reason()}.
+
type(Pid, Type) ->
call(Pid, {type, Type}, atom).
+
%%--------------------------------------------------------------------------
-%% recv(Pid, RemoteFileName <LocalFileName>) -> ok | {error, epath} |
+%% recv(Pid, RemoteFileName [, LocalFileName]) -> ok | {error, epath} |
%% {error, elogin} | {error, econn}
%% Pid = pid()
%% RemoteFileName = LocalFileName = string()
%%
%% Description: Transfer file from remote server.
%%--------------------------------------------------------------------------
+
+-spec recv(Pid :: pid(), RemoteFileName :: string()) ->
+ 'ok' | {'error', Reason :: restriction_reason() |
+ common_reason() |
+ file_write_error_reason()}.
+
recv(Pid, RemotFileName) ->
recv(Pid, RemotFileName, RemotFileName).
+-spec recv(Pid :: pid(),
+ RemoteFileName :: string(),
+ LocalFileName :: string()) ->
+ 'ok' | {'error', Reason :: term()}.
+
recv(Pid, RemotFileName, LocalFileName) ->
call(Pid, {recv, RemotFileName, LocalFileName}, atom).
+
%%--------------------------------------------------------------------------
%% recv_bin(Pid, RemoteFile) -> {ok, Bin} | {error, epath} | {error, elogin}
%% | {error, econn}
@@ -326,9 +436,16 @@ recv(Pid, RemotFileName, LocalFileName) ->
%%
%% Description: Transfer file from remote server into binary.
%%--------------------------------------------------------------------------
+
+-spec recv_bin(Pid :: pid(),
+ RemoteFile :: string()) ->
+ {'ok', Bin :: binary()} |
+ {'error', Reason :: restriction_reason() | common_reason()}.
+
recv_bin(Pid, RemoteFile) ->
call(Pid, {recv_bin, RemoteFile}, bin).
+
%%--------------------------------------------------------------------------
%% recv_chunk_start(Pid, RemoteFile) -> ok | {error, elogin} | {error, epath}
%% | {error, econn}
@@ -337,9 +454,15 @@ recv_bin(Pid, RemoteFile) ->
%%
%% Description: Start receive of chunks of remote file.
%%--------------------------------------------------------------------------
+
+-spec recv_chunk_start(Pid :: pid(),
+ RemoteFile :: string()) ->
+ 'ok' | {'error', Reason :: restriction_reason() | common_reason()}.
+
recv_chunk_start(Pid, RemoteFile) ->
call(Pid, {recv_chunk_start, RemoteFile}, atom).
+
%%--------------------------------------------------------------------------
%% recv_chunk(Pid, RemoteFile) -> ok | {ok, Bin} | {error, Reason}
%% Pid = pid()
@@ -347,24 +470,47 @@ recv_chunk_start(Pid, RemoteFile) ->
%%
%% Description: Transfer file from remote server into binary in chunks
%%--------------------------------------------------------------------------
+
+-spec recv_chunk(Pid :: pid()) ->
+ 'ok' |
+ {'ok', Bin :: binary()} |
+ {'error', Reason :: restriction_reason() | common_reason()}.
+
recv_chunk(Pid) ->
call(Pid, recv_chunk, atom).
+
%%--------------------------------------------------------------------------
-%% send(Pid, LocalFileName <RemotFileName>) -> ok | {error, epath}
-%% | {error, elogin}
-%% | {error, econn}
+%% send(Pid, LocalFileName [, RemotFileName]) -> ok | {error, epath}
+%% | {error, elogin}
+%% | {error, econn}
%% Pid = pid()
%% LocalFileName = RemotFileName = string()
%%
%% Description: Transfer file to remote server.
%%--------------------------------------------------------------------------
+
+-spec send(Pid :: pid(), LocalFileName :: string()) ->
+ 'ok' |
+ {'error', Reason :: restriction_reason() |
+ common_reason() |
+ shortage_reason()}.
+
send(Pid, LocalFileName) ->
send(Pid, LocalFileName, LocalFileName).
+-spec send(Pid :: pid(),
+ LocalFileName :: string(),
+ RemoteFileName :: string()) ->
+ 'ok' |
+ {'error', Reason :: restriction_reason() |
+ common_reason() |
+ shortage_reason()}.
+
send(Pid, LocalFileName, RemotFileName) ->
call(Pid, {send, LocalFileName, RemotFileName}, atom).
+
%%--------------------------------------------------------------------------
%% send_bin(Pid, Bin, RemoteFile) -> ok | {error, epath} | {error, elogin}
%% | {error, enotbinary} | {error, econn}
@@ -374,11 +520,19 @@ send(Pid, LocalFileName, RemotFileName) ->
%%
%% Description: Transfer a binary to a remote file.
%%--------------------------------------------------------------------------
+
+-spec send_bin(Pid :: pid(), Bin :: binary(), RemoteFile :: string()) ->
+ 'ok' |
+ {'error', Reason :: restriction_reason() |
+ common_reason() |
+ shortage_reason()}.
+
send_bin(Pid, Bin, RemoteFile) when is_binary(Bin) ->
call(Pid, {send_bin, Bin, RemoteFile}, atom);
send_bin(_Pid, _Bin, _RemoteFile) ->
{error, enotbinary}.
+
%%--------------------------------------------------------------------------
%% send_chunk_start(Pid, RemoteFile) -> ok | {error, elogin} | {error, epath}
%% | {error, econn}
@@ -387,9 +541,14 @@ send_bin(_Pid, _Bin, _RemoteFile) ->
%%
%% Description: Start transfer of chunks to remote file.
%%--------------------------------------------------------------------------
+
+-spec send_chunk_start(Pid :: pid(), RemoteFile :: string()) ->
+ 'ok' | {'error', Reason :: restriction_reason() | common_reason()}.
+
send_chunk_start(Pid, RemoteFile) ->
call(Pid, {send_chunk_start, RemoteFile}, atom).
+
%%--------------------------------------------------------------------------
%% append_chunk_start(Pid, RemoteFile) -> ok | {error, elogin} |
%% {error, epath} | {error, econn}
@@ -398,9 +557,14 @@ send_chunk_start(Pid, RemoteFile) ->
%%
%% Description: Start append chunks of data to remote file.
%%--------------------------------------------------------------------------
+
+-spec append_chunk_start(Pid :: pid(), RemoteFile :: string()) ->
+ 'ok' | {'error', Reason :: term()}.
+
append_chunk_start(Pid, RemoteFile) ->
call(Pid, {append_chunk_start, RemoteFile}, atom).
+
%%--------------------------------------------------------------------------
%% send_chunk(Pid, Bin) -> ok | {error, elogin} | {error, enotbinary}
%% | {error, echunk} | {error, econn}
@@ -409,11 +573,19 @@ append_chunk_start(Pid, RemoteFile) ->
%%
%% Purpose: Send chunk to remote file.
%%--------------------------------------------------------------------------
+
+-spec send_chunk(Pid :: pid(), Bin :: binary()) ->
+ 'ok' |
+ {'error', Reason :: 'echunk' |
+ restriction_reason() |
+ common_reason()}.
+
send_chunk(Pid, Bin) when is_binary(Bin) ->
call(Pid, {transfer_chunk, Bin}, atom);
send_chunk(_Pid, _Bin) ->
{error, enotbinary}.
+
%%--------------------------------------------------------------------------
%% append_chunk(Pid, Bin) -> ok | {error, elogin} | {error, enotbinary}
%% | {error, echunk} | {error, econn}
@@ -422,11 +594,19 @@ send_chunk(_Pid, _Bin) ->
%%
%% Description: Append chunk to remote file.
%%--------------------------------------------------------------------------
+
+-spec append_chunk(Pid :: pid(), Bin :: binary()) ->
+ 'ok' |
+ {'error', Reason :: 'echunk' |
+ restriction_reason() |
+ common_reason()}.
+
append_chunk(Pid, Bin) when is_binary(Bin) ->
call(Pid, {transfer_chunk, Bin}, atom);
append_chunk(_Pid, _Bin) ->
{error, enotbinary}.
+
%%--------------------------------------------------------------------------
%% send_chunk_end(Pid) -> ok | {error, elogin} | {error, echunk}
%% | {error, econn}
@@ -434,9 +614,17 @@ append_chunk(_Pid, _Bin) ->
%%
%% Description: End sending of chunks to remote file.
%%--------------------------------------------------------------------------
+
+-spec send_chunk_end(Pid :: pid()) ->
+ 'ok' |
+ {'error', Reason :: restriction_reason() |
+ common_reason() |
+ shortage_reason()}.
+
send_chunk_end(Pid) ->
call(Pid, chunk_end, atom).
+
%%--------------------------------------------------------------------------
%% append_chunk_end(Pid) -> ok | {error, elogin} | {error, echunk}
%% | {error, econn}
@@ -444,23 +632,47 @@ send_chunk_end(Pid) ->
%%
%% Description: End appending of chunks to remote file.
%%--------------------------------------------------------------------------
+
+-spec append_chunk_end(Pid :: pid()) ->
+ 'ok' |
+ {'error', Reason :: restriction_reason() |
+ common_reason() |
+ shortage_reason()}.
+
append_chunk_end(Pid) ->
call(Pid, chunk_end, atom).
+
%%--------------------------------------------------------------------------
-%% append(Pid, LocalFileName, RemotFileName) -> ok | {error, epath}
-%% | {error, elogin} | {error, econn}
+%% append(Pid, LocalFileName [, RemotFileName]) -> ok | {error, epath}
+%% | {error, elogin}
+%% | {error, econn}
%% Pid = pid()
%% LocalFileName = RemotFileName = string()
%%
%% Description: Append the local file to the remote file
%%--------------------------------------------------------------------------
+
+-spec append(Pid :: pid(), LocalFileName :: string()) ->
+ 'ok' |
+ {'error', Reason :: 'epath' |
+ 'elogin' |
+ 'etnospc' |
+ 'epnospc' |
+ 'efnamena' | common_reason()}.
+
append(Pid, LocalFileName) ->
append(Pid, LocalFileName, LocalFileName).
+-spec append(Pid :: pid(),
+ LocalFileName :: string(),
+ RemoteFileName :: string()) ->
+ 'ok' | {'error', Reason :: term()}.
+
append(Pid, LocalFileName, RemotFileName) ->
call(Pid, {append, LocalFileName, RemotFileName}, atom).
+
%%--------------------------------------------------------------------------
%% append_bin(Pid, Bin, RemoteFile) -> ok | {error, epath} | {error, elogin}
%% | {error, enotbinary} | {error, econn}
@@ -470,27 +682,44 @@ append(Pid, LocalFileName, RemotFileName) ->
%%
%% Purpose: Append a binary to a remote file.
%%--------------------------------------------------------------------------
+
+-spec append_bin(Pid :: pid(),
+ Bin :: binary(),
+ RemoteFile :: string()) ->
+ 'ok' |
+ {'error', Reason :: restriction_reason() |
+ common_reason() |
+ shortage_reason()}.
+
append_bin(Pid, Bin, RemoteFile) when is_binary(Bin) ->
call(Pid, {append_bin, Bin, RemoteFile}, atom);
append_bin(_Pid, _Bin, _RemoteFile) ->
{error, enotbinary}.
+
%%--------------------------------------------------------------------------
-%% quote(Pid, Cmd) -> ok
+%% quote(Pid, Cmd) -> list()
%% Pid = pid()
%% Cmd = string()
%%
%% Description: Send arbitrary ftp command.
%%--------------------------------------------------------------------------
+
+-spec quote(Pid :: pid(), Cmd :: string()) -> list().
+
quote(Pid, Cmd) when is_list(Cmd) ->
call(Pid, {quote, Cmd}, atom).
+
%%--------------------------------------------------------------------------
%% close(Pid) -> ok
%% Pid = pid()
%%
%% Description: End the ftp session.
%%--------------------------------------------------------------------------
+
+-spec close(Pid :: pid()) -> 'ok'.
+
close(Pid) ->
cast(Pid, close),
ok.
@@ -502,9 +731,13 @@ close(Pid) ->
%%
%% Description: Return diagnostics.
%%--------------------------------------------------------------------------
+
+-spec formaterror(Tag :: term()) -> string().
+
formaterror(Tag) ->
ftp_response:error_string(Tag).
+
info(Pid) ->
call(Pid, info, list).
diff --git a/lib/inets/src/http_client/httpc.erl b/lib/inets/src/http_client/httpc.erl
index 04fae13b20..b70b16f57f 100644
--- a/lib/inets/src/http_client/httpc.erl
+++ b/lib/inets/src/http_client/httpc.erl
@@ -126,7 +126,10 @@ request(Url, Profile) ->
%% Header = {Field, Value}
%% Field = string()
%% Value = string()
-%% Body = string() | binary() - HTLM-code
+%% Body = string() | binary() | {fun(SendAcc) -> SendFunResult, SendAcc} |
+%% {chunkify, fun(SendAcc) -> SendFunResult, SendAcc} - HTLM-code
+%% SendFunResult = eof | {ok, iolist(), NewSendAcc}
+%% SendAcc = NewSendAcc = term()
%%
%% Description: Sends a HTTP-request. The function can be both
%% syncronus and asynchronous in the later case the function will
@@ -426,26 +429,44 @@ service_info(Pid) ->
handle_request(Method, Url,
{Scheme, UserInfo, Host, Port, Path, Query},
- Headers, ContentType, Body,
+ Headers0, ContentType, Body0,
HTTPOptions0, Options0, Profile) ->
- Started = http_util:timestamp(),
- NewHeaders = [{http_util:to_lower(Key), Val} || {Key, Val} <- Headers],
+ Started = http_util:timestamp(),
+ NewHeaders0 = [{http_util:to_lower(Key), Val} || {Key, Val} <- Headers0],
try
begin
+ ?hcrt("begin processing", [{started, Started},
+ {new_headers, NewHeaders0}]),
+
+ {NewHeaders, Body} =
+ case Body0 of
+ {chunkify, ProcessBody, Acc}
+ when is_function(ProcessBody, 1) ->
+ NewHeaders1 = ensure_chunked_encoding(NewHeaders0),
+ Body1 = {mk_chunkify_fun(ProcessBody), Acc},
+ {NewHeaders1, Body1};
+ {ProcessBody, _}
+ when is_function(ProcessBody, 1) ->
+ {NewHeaders0, Body0};
+ _ when is_list(Body0) orelse is_binary(Body0) ->
+ {NewHeaders0, Body0};
+ _ ->
+ throw({error, {bad_body, Body0}})
+ end,
+
HTTPOptions = http_options(HTTPOptions0),
Options = request_options(Options0),
Sync = proplists:get_value(sync, Options),
Stream = proplists:get_value(stream, Options),
Host2 = header_host(Scheme, Host, Port),
HeadersRecord = header_record(NewHeaders, Host2, HTTPOptions),
- Receiver = proplists:get_value(receiver, Options),
- SocketOpts = proplists:get_value(socket_opts, Options),
- UrlEncodeBool = HTTPOptions#http_options.url_encode,
- MaybeEscPath = url_encode(Path, UrlEncodeBool),
- MaybeEscQuery = url_encode(Query, UrlEncodeBool),
- AbsUri = url_encode(Url, UrlEncodeBool),
+ Receiver = proplists:get_value(receiver, Options),
+ SocketOpts = proplists:get_value(socket_opts, Options),
+ MaybeEscPath = maybe_encode_uri(HTTPOptions, Path),
+ MaybeEscQuery = maybe_encode_uri(HTTPOptions, Query),
+ AbsUri = maybe_encode_uri(HTTPOptions, Url),
Request = #request{from = Receiver,
scheme = Scheme,
@@ -458,38 +479,71 @@ handle_request(Method, Url,
settings = HTTPOptions,
abs_uri = AbsUri,
userinfo = UserInfo,
- stream = Stream,
- headers_as_is = headers_as_is(Headers, Options),
+ stream = Stream,
+ headers_as_is = headers_as_is(Headers0, Options),
socket_opts = SocketOpts,
started = Started},
+
case httpc_manager:request(Request, profile_name(Profile)) of
{ok, RequestId} ->
handle_answer(RequestId, Sync, Options);
{error, Reason} ->
+ ?hcrd("request failed", [{reason, Reason}]),
{error, Reason}
end
end
catch
error:{noproc, _} ->
+ ?hcrv("noproc", [{profile, Profile}]),
{error, {not_started, Profile}};
throw:Error ->
+ ?hcrv("throw", [{error, Error}]),
Error
end.
-url_encode(URI, true) ->
+ensure_chunked_encoding(Hdrs) ->
+ Key = "transfer-encoding",
+ lists:keystore(Key, 1, Hdrs, {Key, "chunked"}).
+
+maybe_encode_uri(#http_options{url_encode = true}, URI) ->
http_uri:encode(URI);
-url_encode(URI, false) ->
+maybe_encode_uri(_, URI) ->
URI.
+mk_chunkify_fun(ProcessBody) ->
+ fun(eof_body) ->
+ eof;
+ (Acc) ->
+ case ProcessBody(Acc) of
+ eof ->
+ {ok, <<"0\r\n\r\n">>, eof_body};
+ {ok, Data, NewAcc} ->
+ {ok, mk_chunk_bin(Data), NewAcc}
+ end
+ end.
+
+mk_chunk_bin(Data) ->
+ Bin = iolist_to_binary(Data),
+ iolist_to_binary([hex_size(Bin), "\r\n", Bin, "\r\n"]).
+
+hex_size(Bin) ->
+ hd(io_lib:format("~.16B", [size(Bin)])).
+
+
handle_answer(RequestId, false, _) ->
{ok, RequestId};
handle_answer(RequestId, true, Options) ->
receive
{http, {RequestId, saved_to_file}} ->
+ ?hcrt("received saved-to-file", [{request_id, RequestId}]),
{ok, saved_to_file};
{http, {RequestId, {_,_,_} = Result}} ->
+ ?hcrt("received answer", [{request_id, RequestId},
+ {result, Result}]),
return_answer(Options, Result);
{http, {RequestId, {error, Reason}}} ->
+ ?hcrt("received error", [{request_id, RequestId},
+ {reason, Reason}]),
{error, Reason}
end.
diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl
index cb6f3e2841..1f0e012e7e 100644
--- a/lib/inets/src/http_client/httpc_handler.erl
+++ b/lib/inets/src/http_client/httpc_handler.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2002-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2002-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -29,10 +29,10 @@
%%--------------------------------------------------------------------
%% Internal Application API
-export([
- start_link/2,
- connect_and_send/2,
+ start_link/4,
+ %% connect_and_send/2,
send/2,
- cancel/2,
+ cancel/3,
stream/3,
stream_next/1,
info/1
@@ -51,7 +51,7 @@
-record(state,
{
request, % #request{}
- session, % #tcp_session{}
+ session, % #session{}
status_line, % {Version, StatusCode, ReasonPharse}
headers, % #http_response_h{}
body, % binary()
@@ -94,13 +94,9 @@
%%--------------------------------------------------------------------
%%--------------------------------------------------------------------
-start_link(Options, ProfileName) ->
- Args = [Options, ProfileName],
- gen_server:start_link(?MODULE, Args, []).
-
-connect_and_send(Request, HandlerPid) ->
- call({connect_and_send, Request}, HandlerPid).
-
+start_link(Parent, Request, Options, ProfileName) ->
+ {ok, proc_lib:start_link(?MODULE, init, [[Parent, Request, Options,
+ ProfileName]])}.
%%--------------------------------------------------------------------
%% Function: send(Request, Pid) -> ok
@@ -122,8 +118,8 @@ send(Request, Pid) ->
%% Description: Cancels a request. Intended to be called by the httpc
%% manager process.
%%--------------------------------------------------------------------
-cancel(RequestId, Pid) ->
- cast({cancel, RequestId}, Pid).
+cancel(RequestId, Pid, From) ->
+ cast({cancel, RequestId, From}, Pid).
%%--------------------------------------------------------------------
@@ -229,16 +225,27 @@ stream(BodyPart, Request,_) -> % only 200 and 206 responses can be streamed
%% but we do not want that so errors will be handled by the process
%% sending an init_error message to itself.
%%--------------------------------------------------------------------
-init([Options, ProfileName]) ->
- ?hcrv("init - starting", [{options, Options}, {profile, ProfileName}]),
+init([Parent, Request, Options, ProfileName]) ->
process_flag(trap_exit, true),
- handle_verbose(Options#options.verbose),
- State = #state{status = undefined,
- options = Options,
- profile_name = ProfileName},
- ?hcrd("init - started", []),
- {ok, State}.
+ %% Do not let initial tcp-connection block the manager-process
+ proc_lib:init_ack(Parent, self()),
+ handle_verbose(Options#options.verbose),
+ Address = handle_proxy(Request#request.address, Options#options.proxy),
+ {ok, State} =
+ case {Address /= Request#request.address, Request#request.scheme} of
+ {true, https} ->
+ Error = https_through_proxy_is_not_currently_supported,
+ self() ! {init_error,
+ Error, httpc_response:error(Request, Error)},
+ {ok, #state{request = Request, options = Options,
+ status = ssl_tunnel}};
+ {_, _} ->
+ connect_and_send_first_request(Address, Request,
+ #state{options = Options,
+ profile_name = ProfileName})
+ end,
+ gen_server:enter_loop(?MODULE, [], State).
%%--------------------------------------------------------------------
%% Function: handle_call(Request, From, State) -> {reply, Reply, State} |
@@ -249,41 +256,6 @@ init([Options, ProfileName]) ->
%% {stop, Reason, State} (terminate/2 is called)
%% Description: Handling call messages
%%--------------------------------------------------------------------
-
-
-%% This is the first request, the reason the proc was started
-handle_call({connect_and_send, #request{address = Address0,
- scheme = Scheme} = Request},
- _From,
- #state{options = #options{proxy = Proxy},
- status = undefined,
- session = undefined} = State) ->
- ?hcrv("connect and send", [{address0, Address0}, {proxy, Proxy}]),
- Address = handle_proxy(Address0, Proxy),
- if
- ((Address =/= Address0) andalso (Scheme =:= https)) ->
- %% This is what we should do if and when ssl supports
- %% "socket upgrading"
- %%send_ssl_tunnel_request(Address, Request,
- %% #state{options = Options,
- %% status = ssl_tunnel});
- Reason = {failed_connecting,
- https_through_proxy_is_not_currently_supported},
- %% Send a reply to the original caller
- ErrorResponse = httpc_response:error(Request, Reason),
- httpc_response:send(Request#request.from, ErrorResponse),
- %% Reply to the manager
- ErrorReply = {error, Reason},
- {stop, normal, ErrorReply, State};
- true ->
- case connect_and_send_first_request(Address, Request, State) of
- {ok, NewState} ->
- {reply, ok, NewState};
- {stop, Error, NewState} ->
- {stop, normal, Error, NewState}
- end
- end;
-
handle_call(#request{address = Addr} = Request, _,
#state{status = Status,
session = #session{type = pipeline} = Session,
@@ -445,25 +417,27 @@ handle_call(info, _, State) ->
%% handle_keep_alive_queue/2 on the other hand will just skip the
%% request as if it was never issued as in this case the request will
%% not have been sent.
-handle_cast({cancel, RequestId},
+handle_cast({cancel, RequestId, From},
#state{request = #request{id = RequestId} = Request,
profile_name = ProfileName,
canceled = Canceled} = State) ->
?hcrv("cancel current request", [{request_id, RequestId},
{profile, ProfileName},
{canceled, Canceled}]),
- httpc_manager:request_canceled(RequestId, ProfileName),
+ httpc_manager:request_canceled(RequestId, ProfileName, From),
?hcrv("canceled", []),
{stop, normal,
State#state{canceled = [RequestId | Canceled],
request = Request#request{from = answer_sent}}};
-handle_cast({cancel, RequestId},
+handle_cast({cancel, RequestId, From},
#state{profile_name = ProfileName,
+ request = #request{id = CurrId},
canceled = Canceled} = State) ->
- ?hcrv("cancel", [{request_id, RequestId},
+ ?hcrv("cancel", [{request_id, RequestId},
+ {curr_req_id, CurrId},
{profile, ProfileName},
{canceled, Canceled}]),
- httpc_manager:request_canceled(RequestId, ProfileName),
+ httpc_manager:request_canceled(RequestId, ProfileName, From),
?hcrv("canceled", []),
{noreply, State#state{canceled = [RequestId | Canceled]}};
@@ -872,62 +846,55 @@ connect(SocketType, ToAddress,
Opts3 = [IpFamily | Opts2],
http_transport:connect(SocketType, ToAddress, Opts3, Timeout)
end.
-
-connect_and_send_first_request(Address,
- #request{settings = Settings,
- headers = Headers,
- address = OrigAddress,
- scheme = Scheme} = Request,
- #state{options = Options} = State) ->
-
- ?hcrd("connect",
- [{address, Address}, {request, Request}, {options, Options}]),
+connect_and_send_first_request(Address, Request, #state{options = Options} = State) ->
SocketType = socket_type(Request),
- ConnTimeout = Settings#http_options.connect_timeout,
+ ConnTimeout = (Request#request.settings)#http_options.connect_timeout,
+ ?hcri("connect",
+ [{address, Address}, {request, Request}, {options, Options}]),
case connect(SocketType, Address, Options, ConnTimeout) of
{ok, Socket} ->
- Session = #session{id = {OrigAddress, self()},
- scheme = Scheme,
- socket = Socket,
- socket_type = SocketType},
- ?hcrd("connected - now send first request", [{socket, Socket}]),
+ ClientClose =
+ httpc_request:is_client_closing(
+ Request#request.headers),
+ SessionType = httpc_manager:session_type(Options),
+ SocketType = socket_type(Request),
+ Session = #session{id = {Request#request.address, self()},
+ scheme = Request#request.scheme,
+ socket = Socket,
+ socket_type = SocketType,
+ client_close = ClientClose,
+ type = SessionType},
+ ?hcri("connected - now send first request", [{socket, Socket}]),
+
case httpc_request:send(Address, Session, Request) of
ok ->
- ?hcrd("first request sent", []),
- ClientClose =
- httpc_request:is_client_closing(Headers),
- SessionType = httpc_manager:session_type(Options),
- Session2 =
- Session#session{client_close = ClientClose,
- type = SessionType},
- TmpState =
- State#state{request = Request,
- session = Session2,
- mfa = init_mfa(Request, State),
- status_line = init_status_line(Request),
- headers = undefined,
- body = undefined,
- status = new},
- ?hcrt("activate socket", []),
- activate_once(Session),
+ ?hcri("first request sent", []),
+ TmpState = State#state{request = Request,
+ session = Session,
+ mfa = init_mfa(Request, State),
+ status_line =
+ init_status_line(Request),
+ headers = undefined,
+ body = undefined,
+ status = new},
+ http_transport:setopts(SocketType,
+ Socket, [{active, once}]),
NewState = activate_request_timeout(TmpState),
{ok, NewState};
-
- {error, Reason} = Error ->
- ?hcrv("failed sending request", [{reason, Reason}]),
- {stop, Error,
- State#state{session = {send_failed, Reason},
- request = Request}}
+ {error, Reason} ->
+ self() ! {init_error, error_sending,
+ httpc_response:error(Request, Reason)},
+ {ok, State#state{request = Request,
+ session =
+ #session{socket = Socket}}}
end;
-
- {error, Reason} = Error ->
- ?hcri("connect failed", [{reason, Reason}]),
- {stop, Error, State#state{session = {connect_failed, Reason},
- request = Request}}
+ {error, Reason} ->
+ self() ! {init_error, error_connecting,
+ httpc_response:error(Request, Reason)},
+ {ok, State#state{request = Request}}
end.
-
handler_info(#state{request = Request,
session = Session,
status_line = _StatusLine,
@@ -1167,12 +1134,12 @@ handle_response(#state{request = Request,
{ok, Msg, Data} ->
?hcrd("handle response - ok", []),
end_stream(StatusLine, Request),
- NewState = answer_request(Request, Msg, State),
+ NewState = maybe_send_answer(Request, Msg, State),
handle_queue(NewState, Data);
{stop, Msg} ->
?hcrd("handle response - stop", [{msg, Msg}]),
end_stream(StatusLine, Request),
- NewState = answer_request(Request, Msg, State),
+ NewState = maybe_send_answer(Request, Msg, State),
{stop, normal, NewState}
end.
@@ -1242,7 +1209,8 @@ handle_pipeline(#state{status = pipeline,
%% See comment for handle_cast({cancel, RequestId})
{stop, normal,
State#state{request =
- NextRequest#request{from = answer_sent}}};
+ NextRequest#request{from = answer_sent},
+ pipeline = Pipeline}};
false ->
?hcrv("next request", [{request, NextRequest}]),
NewSession =
@@ -1443,6 +1411,7 @@ answer_request(#request{id = RequestId, from = From} = Request, Msg,
Timer = {RequestId, TimerRef},
cancel_timer(TimerRef, {timeout, Request#request.id}),
httpc_manager:request_done(RequestId, ProfileName),
+
State#state{request = Request#request{from = answer_sent},
timers =
Timers#timers{request_timers =
@@ -1662,71 +1631,28 @@ handle_verbose(_) ->
ok.
-%%% Normaly I do not comment out code, I throw it away. But this might
-%%% actually be used one day if ssl is improved.
-%% send_ssl_tunnel_request(Address, Request = #request{address = {Host, Port}},
-%% State) ->
-%% %% A ssl tunnel request is a special http request that looks like
-%% %% CONNECT host:port HTTP/1.1
-%% SslTunnelRequest = #request{method = connect, scheme = http,
-%% headers =
-%% #http_request_h{
-%% host = Host,
-%% address = Address,
-%% path = Host ++ ":",
-%% pquery = integer_to_list(Port),
-%% other = [{ "Proxy-Connection", "keep-alive"}]},
-%% Ipv6 = (State#state.options)#options.ipv6,
-%% SocketType = socket_type(SslTunnelRequest),
-%% case http_transport:connect(SocketType,
-%% SslTunnelRequest#request.address, Ipv6) of
-%% {ok, Socket} ->
-%% case httpc_request:send(Address, SslTunnelRequest, Socket) of
-%% ok ->
-%% Session = #tcp_session{id =
-%% {SslTunnelRequest#request.address,
-%% self()},
-%% scheme =
-%% SslTunnelRequest#request.scheme,
-%% socket = Socket},
-%% NewState = State#state{mfa =
-%% {httpc_response, parse,
-%% [State#state.max_header_size]},
-%% request = Request,
-%% session = Session},
-%% http_transport:setopts(socket_type(
-%% SslTunnelRequest#request.scheme),
-%% Socket,
-%% [{active, once}]),
-%% {ok, NewState};
-%% {error, Reason} ->
-%% self() ! {init_error, error_sending,
-%% httpc_response:error(Request, Reason)},
-%% {ok, State#state{request = Request,
-%% session = #tcp_session{socket =
-%% Socket}}}
-%% end;
-%% {error, Reason} ->
-%% self() ! {init_error, error_connecting,
-%% httpc_response:error(Request, Reason)},
-%% {ok, State#state{request = Request}}
-%% end.
-
-%% d(F) ->
-%% d(F, []).
-
-%% d(F, A) ->
-%% d(get(dbg), F, A).
-
-%% d(true, F, A) ->
-%% io:format(user, "~w:~w:" ++ F ++ "~n", [self(), ?MODULE | A]);
-%% d(_, _, _) ->
-%% ok.
-
+send_raw(#session{socket = Socket, socket_type = SocketType},
+ {ProcessBody, Acc}) when is_function(ProcessBody, 1) ->
+ ?hcrt("send raw", [{acc, Acc}]),
+ send_raw(SocketType, Socket, ProcessBody, Acc);
send_raw(#session{socket = Socket, socket_type = SocketType}, Body) ->
http_transport:send(SocketType, Socket, Body).
+send_raw(SocketType, Socket, ProcessBody, Acc) ->
+ case ProcessBody(Acc) of
+ eof ->
+ ok;
+ {ok, Data, NewAcc} ->
+ DataBin = iolist_to_binary(Data),
+ ?hcrd("send", [{data, DataBin}]),
+ case http_transport:send(SocketType, Socket, DataBin) of
+ ok ->
+ send_raw(SocketType, Socket, ProcessBody, NewAcc);
+ Error ->
+ Error
+ end
+ end.
call(Msg, Pid) ->
@@ -1738,11 +1664,5 @@ call(Msg, Pid, Timeout) ->
cast(Msg, Pid) ->
gen_server:cast(Pid, Msg).
-
-%% to(To, Start) when is_integer(Start) andalso (Start >= 0) ->
-%% http_util:timeout(To, Start);
-%% to(To, _Start) ->
-%% http_util:timeout(To, t()).
-
t() ->
http_util:timestamp().
diff --git a/lib/inets/src/http_client/httpc_handler_sup.erl b/lib/inets/src/http_client/httpc_handler_sup.erl
index 2a69fd15d0..f7a0b014b3 100644
--- a/lib/inets/src/http_client/httpc_handler_sup.erl
+++ b/lib/inets/src/http_client/httpc_handler_sup.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2007-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2007-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -23,7 +23,7 @@
%% API
-export([start_link/0]).
--export([start_child/2]).
+-export([start_child/1]).
%% Supervisor callback
-export([init/1]).
@@ -34,11 +34,9 @@
start_link() ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
-start_child(Options, Profile) ->
- Args = [Options, Profile],
+start_child(Args) ->
supervisor:start_child(?MODULE, Args).
-
%%%=========================================================================
%%% Supervisor callback
%%%=========================================================================
diff --git a/lib/inets/src/http_client/httpc_manager.erl b/lib/inets/src/http_client/httpc_manager.erl
index 591cb78c29..7f66b477eb 100644
--- a/lib/inets/src/http_client/httpc_manager.erl
+++ b/lib/inets/src/http_client/httpc_manager.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2002-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2002-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -29,7 +29,7 @@
start_link/3,
request/2,
cancel_request/2,
- request_canceled/2,
+ request_canceled/3,
request_done/2,
retry_request/2,
redirect_request/2,
@@ -66,6 +66,7 @@
state % State of the handler: initiating | started | operational | canceled
}).
+-define(DELAY, 500).
%%====================================================================
%% Internal Application API
@@ -158,7 +159,8 @@ cancel_request(RequestId, ProfileName) ->
%% be called by the httpc handler process.
%%--------------------------------------------------------------------
-request_canceled(RequestId, ProfileName) ->
+request_canceled(RequestId, ProfileName, From) ->
+ gen_server:reply(From, ok),
cast(ProfileName, {request_canceled, RequestId}).
@@ -355,44 +357,32 @@ do_init(ProfileName, CookiesDir) ->
%% {stop, Reason, State} (terminate/2 is called)
%% Description: Handling call messages
%%--------------------------------------------------------------------
-handle_call({request, Request}, _From, State) ->
- ?hcrv("request", [{request, Request}]),
+handle_call({request, Request}, _, State) ->
+ ?hcri("request", [{request, Request}]),
case (catch handle_request(Request, State)) of
- {ok, ReqId, NewState} ->
- {reply, {ok, ReqId}, NewState};
-
+ {reply, Msg, NewState} ->
+ {reply, Msg, NewState};
Error ->
- NewError = {error, {failed_process_request, Error}},
- {reply, NewError, State}
+ {stop, Error, httpc_response:error(Request, Error), State}
end;
-
-handle_call({cancel_request, RequestId}, From,
- #state{handler_db = HandlerDb} = State) ->
- ?hcrv("cancel_request", [{request_id, RequestId}]),
+
+handle_call({cancel_request, RequestId}, From, State) ->
+ ?hcri("cancel_request", [{request_id, RequestId}]),
case ets:lookup(State#state.handler_db, RequestId) of
[] ->
- ?hcrd("nothing to cancel", []),
- Reply = ok, %% Nothing to cancel
- {reply, Reply, State};
-
- [#handler_info{handler = Pid}] when is_pid(Pid) ->
- ?hcrd("found operational handler for this request",
- [{handler, Pid}]),
- httpc_handler:cancel(RequestId, Pid),
- {noreply, State#state{cancel =
- [{RequestId, Pid, From} |
- State#state.cancel]}};
-
- [#handler_info{starter = Pid, state = HandlerState}]
- when is_pid(Pid) ->
- ?hcri("found *initiating* handler for this request",
- [{starter, Pid}, {state, HandlerState}]),
- ets:update_element(HandlerDb, RequestId,
- {#handler_info.state, canceled}),
+ %% The request has allready compleated make sure
+ %% it is deliverd to the client process queue so
+ %% it can be thrown away by httpc:cancel_request
+ %% This delay is hopfully a temporary workaround.
+ %% Note that it will not not delay the manager,
+ %% only the client that called httpc:cancel_request
+ timer:apply_after(?DELAY, gen_server, reply, [From, ok]),
+ {noreply, State};
+ [{_, Pid, _}] ->
+ httpc_handler:cancel(RequestId, Pid, From),
{noreply, State#state{cancel =
- [{RequestId, Pid, From} |
+ [{RequestId, Pid, From} |
State#state.cancel]}}
-
end;
handle_call(reset_cookies, _, #state{cookie_db = CookieDb} = State) ->
@@ -437,43 +427,16 @@ handle_call(Req, From, #state{profile_name = ProfileName} = State) ->
%%--------------------------------------------------------------------
handle_cast({retry_or_redirect_request, {Time, Request}},
#state{profile_name = ProfileName} = State) ->
- ?hcrv("retry or redirect request", [{time, Time}, {request, Request}]),
- case timer:apply_after(Time, ?MODULE, retry_request,
- [Request, ProfileName]) of
- {ok, _} ->
- {noreply, State};
- {error, Reason} ->
- error_report(ProfileName,
- "failed scheduling retry/redirect request"
- "~n Time: ~p"
- "~n Request: ~p"
- "~n Reason: ~p", [Time, Request, Reason]),
- {noreply, State}
- end;
+ {ok, _} = timer:apply_after(Time, ?MODULE, retry_request, [Request, ProfileName]),
+ {noreply, State};
-handle_cast({retry_or_redirect_request, Request},
- #state{profile_name = Profile,
- handler_db = HandlerDb} = State) ->
- ?hcrv("retry or redirect request", [{request, Request}]),
+handle_cast({retry_or_redirect_request, Request}, State) ->
case (catch handle_request(Request, State)) of
- {ok, _, NewState} ->
+ {reply, {ok, _}, NewState} ->
{noreply, NewState};
-
Error ->
- ReqId = Request#request.id,
- error_report(Profile,
- "failed to retry or redirect request ~p"
- "~n Error: ~p", [ReqId, Error]),
- case ets:lookup(HandlerDb, ReqId) of
- [#handler_info{from = From}] ->
- Error2 = httpc_response:error(Request, Error),
- httpc_response:send(From, Error2),
- ok;
-
- _ ->
- ok
- end,
- {noreply, State}
+ httpc_response:error(Request, Error),
+ {stop, Error, State}
end;
handle_cast({request_canceled, RequestId}, State) ->
@@ -482,7 +445,6 @@ handle_cast({request_canceled, RequestId}, State) ->
case lists:keysearch(RequestId, 1, State#state.cancel) of
{value, Entry = {RequestId, _, From}} ->
?hcrt("found in cancel", [{from, From}]),
- gen_server:reply(From, ok),
{noreply,
State#state{cancel = lists:delete(Entry, State#state.cancel)}};
Else ->
@@ -539,8 +501,6 @@ handle_cast(Msg, #state{profile_name = ProfileName} = State) ->
"recived unknown message"
"~n Msg: ~p", [Msg]),
{noreply, State}.
-
-
%%--------------------------------------------------------------------
%% Function: handle_info(Info, State) -> {noreply, State} |
@@ -548,39 +508,17 @@ handle_cast(Msg, #state{profile_name = ProfileName} = State) ->
%% {stop, Reason, State} (terminate/2 is called)
%% Description: Handling all non call/cast messages
%%---------------------------------------------------------
-
-handle_info({started, StarterPid, ReqId, HandlerPid}, State) ->
- handle_started(StarterPid, ReqId, HandlerPid, State),
- {noreply, State};
-
-handle_info({connect_and_send, StarterPid, ReqId, HandlerPid, Res}, State) ->
- handle_connect_and_send(StarterPid, ReqId, HandlerPid, Res, State),
- {noreply, State};
-
-handle_info({failed_starting_handler, StarterPid, ReqId, Res}, State) ->
- handle_failed_starting_handler(StarterPid, ReqId, Res, State),
- {noreply, State};
-
-handle_info({'EXIT', Pid, Reason}, #state{handler_db = HandlerDb} = State) ->
- maybe_handle_terminating_starter(Pid, Reason, HandlerDb),
+handle_info({'EXIT', _, _}, State) ->
+ %% Handled in DOWN
{noreply, State};
-
handle_info({'DOWN', _, _, Pid, _}, State) ->
-
- %%
- %% Normally this should have been cleaned up already
- %% (when receiving {request_done, PequestId}), but
- %% just in case there is a glitch, cleanup anyway.
- %%
-
- Pattern = #handler_info{handler = Pid, _ = '_'},
- ets:match_delete(State#state.handler_db, Pattern),
+ ets:match_delete(State#state.handler_db, {'_', Pid, '_'}),
%% If there where any canceled request, handled by the
%% the process that now has terminated, the
%% cancelation can be viewed as sucessfull!
- NewCanceledList =
- lists:foldl(fun({_, HandlerPid, From} = Entry, Acc) ->
+ NewCanceldList =
+ lists:foldl(fun(Entry = {_, HandlerPid, From}, Acc) ->
case HandlerPid of
Pid ->
gen_server:reply(From, ok),
@@ -589,15 +527,13 @@ handle_info({'DOWN', _, _, Pid, _}, State) ->
Acc
end
end, State#state.cancel, State#state.cancel),
- {noreply, State#state{cancel = NewCanceledList}};
-
-handle_info(Info, #state{profile_name = ProfileName} = State) ->
- error_report(ProfileName,
- "received unknown info"
- "~n Info: ~p", [Info]),
+ {noreply, State#state{cancel = NewCanceldList}};
+handle_info(Info, State) ->
+ Report = io_lib:format("Unknown message in "
+ "httpc_manager:handle_info ~p~n", [Info]),
+ error_logger:error_report(Report),
{noreply, State}.
-
%%--------------------------------------------------------------------
%% Function: terminate(Reason, State) -> _ (ignored by gen_server)
%% Description: Shutdown the httpc_handler
@@ -655,224 +591,79 @@ get_handler_info(Tab) ->
{Pid, State} <- Handlers2],
Handlers3.
-
-%%
-%% The request handler process is started asynchronously by a
-%% "starter process". When the handler has sucessfully been started,
-%% this message (started) is sent.
-%%
-
-handle_started(StarterPid, ReqId, HandlerPid,
- #state{profile_name = Profile,
- handler_db = HandlerDb}) ->
- case ets:lookup(HandlerDb, ReqId) of
- [#handler_info{state = initiating} = HandlerInfo] ->
- ?hcri("received started ack for initiating handler", []),
- %% As a last resort, make sure we know when it exits,
- %% in case it forgets to notify us.
- %% We dont need to know the ref id?
- erlang:monitor(process, HandlerPid),
- HandlerInfo2 = HandlerInfo#handler_info{handler = HandlerPid,
- state = started},
- ets:insert(HandlerDb, HandlerInfo2),
- ok;
-
- [#handler_info{state = State}] ->
- error_report(Profile,
- "unexpected (started) message for handler (~p) in state "
- "~p regarding request ~p - ignoring", [HandlerPid, State, ReqId]),
- ?hcri("received unexpected started message", [{state, State}]),
- ok;
-
- [] ->
- error_report(Profile,
- "unknown handler ~p (~p) started for request ~w - canceling",
- [HandlerPid, StarterPid, ReqId]),
- httpc_handler:cancel(ReqId, HandlerPid)
- end.
-
-
-%%
-%% The request handler process is started asynchronously by a
-%% "starter process". When that process terminates it sends
-%% one of two messages. These ara handled by the two functions
-%% below.
-%%
-
-handle_connect_and_send(_StarterPid, ReqId, HandlerPid, Result,
- #state{profile_name = Profile,
- handler_db = HandlerDb}) ->
- case ets:lookup(HandlerDb, ReqId) of
- [#handler_info{state = started} = HandlerInfo] when Result =:= ok ->
- ?hcri("received connect-and-send ack for started handler", []),
- HandlerInfo2 = HandlerInfo#handler_info{starter = undefined,
- handler = HandlerPid,
- state = operational},
- ets:insert(HandlerDb, HandlerInfo2),
- ok;
-
- [#handler_info{state = canceled} = HandlerInfo] when Result =:= ok ->
- ?hcri("received connect-and-send ack for canceled handler", []),
- httpc_handler:cancel(ReqId, HandlerPid),
- HandlerInfo2 = HandlerInfo#handler_info{starter = undefined,
- handler = HandlerPid},
- ets:insert(HandlerDb, HandlerInfo2),
- ok;
-
- [#handler_info{state = State}] when Result =/= ok ->
- error_report(Profile,
- "handler (~p, ~w) failed to connect and/or "
- "send request ~p"
- "~n Result: ~p",
- [HandlerPid, State, ReqId, Result]),
- ?hcri("received connect-and-send error",
- [{result, Result}, {state, State}]),
- %% We don't need to send a response to the original caller
- %% because the handler already sent one in its terminate
- %% function.
- ets:delete(HandlerDb, ReqId),
- ok;
-
- [] ->
- ?hcri("handler successfully started "
- "for unknown request => canceling",
- [{profile, Profile},
- {handler, HandlerPid},
- {request, ReqId}]),
- httpc_handler:cancel(ReqId, HandlerPid)
- end.
-
-
-handle_failed_starting_handler(_StarterPid, ReqId, Error,
- #state{profile_name = Profile,
- handler_db = HandlerDb}) ->
- case ets:lookup(HandlerDb, ReqId) of
- [#handler_info{state = canceled}] ->
- error_report(Profile,
- "failed starting handler for request ~p"
- "~n Error: ~p", [ReqId, Error]),
- request_canceled(Profile, ReqId), % Fake signal from handler
- ets:delete(HandlerDb, ReqId),
- ok;
-
- [#handler_info{from = From}] ->
- error_report(Profile,
- "failed starting handler for request ~p"
- "~n Error: ~p", [ReqId, Error]),
- Reason2 =
- case Error of
- {error, Reason} ->
- {failed_connecting, Reason};
- _ ->
- {failed_connecting, Error}
- end,
- DummyReq = #request{id = ReqId},
- httpc_response:send(From, httpc_response:error(DummyReq, Reason2)),
- ets:delete(HandlerDb, ReqId),
- ok;
-
- [] ->
- error_report(Profile,
- "failed starting handler for unknown request ~p"
- "~n Error: ~p", [ReqId, Error]),
- ok
- end.
-
-
-maybe_handle_terminating_starter(MeybeStarterPid, Reason, HandlerDb) ->
- Pattern = #handler_info{starter = MeybeStarterPid, _ = '_'},
- case ets:match_object(HandlerDb, Pattern) of
- [#handler_info{id = ReqId, from = From, state = initiating}] ->
- %% The starter process crashed before it could start the
- %% the handler process, therefor we need to answer the
- %% original caller.
- ?hcri("starter process crashed bfore starting handler",
- [{starter, MeybeStarterPid}, {reason, Reason}]),
- Reason2 =
- case Reason of
- {error, Error} ->
- {failed_connecting, Error};
- _ ->
- {failed_connecting, Reason}
- end,
- DummyReq = #request{id = ReqId},
- httpc_response:send(From, httpc_response:error(DummyReq, Reason2)),
- ets:delete(HandlerDb, ReqId),
- ok;
-
- [#handler_info{state = State} = HandlerInfo] ->
- %% The starter process crashed after the handler was started.
- %% The handler will answer to the original caller.
- ?hcri("starter process crashed after starting handler",
- [{starter, MeybeStarterPid}, {reason, Reason}, {state, State}]),
- HandlerInfo2 = HandlerInfo#handler_info{starter = undefined},
- ets:insert(HandlerDb, HandlerInfo2),
- ok;
-
- _ ->
- ok
- end.
-
-
-%% -----
-%% Act as an HTTP/0.9 client that does not know anything
-%% about persistent connections
handle_request(#request{settings =
- #http_options{version = "HTTP/0.9"}} = Request0,
+ #http_options{version = "HTTP/0.9"}} = Request,
State) ->
- Request1 = handle_cookies(generate_request_id(Request0), State),
- Hdrs0 = Request1#request.headers,
- Hdrs1 = Hdrs0#http_request_h{connection = undefined},
- Request2 = Request1#request{headers = Hdrs1},
- create_handler_starter(Request2, State),
- {ok, Request2#request.id, State};
-
-%% -----
-%% Act as an HTTP/1.0 client that does not
-%% use persistent connections
+ %% Act as an HTTP/0.9 client that does not know anything
+ %% about persistent connections
+
+ NewRequest = handle_cookies(generate_request_id(Request), State),
+ NewHeaders =
+ (NewRequest#request.headers)#http_request_h{connection
+ = undefined},
+ start_handler(NewRequest#request{headers = NewHeaders}, State),
+ {reply, {ok, NewRequest#request.id}, State};
+
handle_request(#request{settings =
- #http_options{version = "HTTP/1.0"}} = Request0,
+ #http_options{version = "HTTP/1.0"}} = Request,
State) ->
- Request1 = handle_cookies(generate_request_id(Request0), State),
- Hdrs0 = Request1#request.headers,
- Hdrs1 = Hdrs0#http_request_h{connection = "close"},
- Request2 = Request1#request{headers = Hdrs1},
- create_handler_starter(Request2, State),
- {ok, Request2#request.id, State};
-
-
-%% -----
-handle_request(#request{method = Method,
- address = Address,
- scheme = Scheme} = Request0,
- #state{options = Opts} = State) ->
- Request1 = handle_cookies(generate_request_id(Request0), State),
- SessionType = session_type(Opts),
- case select_session(Method, Address, Scheme, SessionType, State) of
+ %% Act as an HTTP/1.0 client that does not
+ %% use persistent connections
+
+ NewRequest = handle_cookies(generate_request_id(Request), State),
+ NewHeaders =
+ (NewRequest#request.headers)#http_request_h{connection
+ = "close"},
+ start_handler(NewRequest#request{headers = NewHeaders}, State),
+ {reply, {ok, NewRequest#request.id}, State};
+
+handle_request(Request, State = #state{options = Options}) ->
+
+ NewRequest = handle_cookies(generate_request_id(Request), State),
+ SessionType = session_type(Options),
+ case select_session(Request#request.method,
+ Request#request.address,
+ Request#request.scheme, SessionType, State) of
{ok, HandlerPid} ->
- pipeline_or_keep_alive(Request1, HandlerPid, State);
+ pipeline_or_keep_alive(NewRequest, HandlerPid, State);
no_connection ->
- create_handler_starter(Request1, State);
- {no_session, OpenSessions}
- when OpenSessions < Opts#options.max_sessions ->
- create_handler_starter(Request1, State);
+ start_handler(NewRequest, State);
+ {no_session, OpenSessions} when OpenSessions
+ < Options#options.max_sessions ->
+ start_handler(NewRequest, State);
{no_session, _} ->
%% Do not start any more persistent connections
%% towards this server.
- Hdrs0 = Request1#request.headers,
- Hdrs1 = Hdrs0#http_request_h{connection = "close"},
- Request2 = Request1#request{headers = Hdrs1},
- create_handler_starter(Request2, State)
+ NewHeaders =
+ (NewRequest#request.headers)#http_request_h{connection
+ = "close"},
+ start_handler(NewRequest#request{headers = NewHeaders}, State)
end,
- {ok, Request1#request.id, State}.
+ {reply, {ok, NewRequest#request.id}, State}.
+
+
+start_handler(Request, State) ->
+ {ok, Pid} =
+ case is_inets_manager() of
+ true ->
+ httpc_handler_sup:start_child([whereis(httpc_handler_sup),
+ Request, State#state.options,
+ State#state.profile_name]);
+ false ->
+ httpc_handler:start_link(self(), Request, State#state.options,
+ State#state.profile_name)
+ end,
+ ets:insert(State#state.handler_db, {Request#request.id,
+ Pid, Request#request.from}),
+ erlang:monitor(process, Pid).
select_session(Method, HostPort, Scheme, SessionType,
#state{options = #options{max_pipeline_length = MaxPipe,
max_keep_alive_length = MaxKeepAlive},
session_db = SessionDb}) ->
- ?hcrd("select session", [{session_type, SessionType},
- {max_pipeline_length, MaxPipe},
+ ?hcrd("select session", [{session_type, SessionType},
+ {max_pipeline_length, MaxPipe},
{max_keep_alive_length, MaxKeepAlive}]),
case httpc_request:is_idempotent(Method) orelse
(SessionType =:= keep_alive) of
@@ -918,92 +709,17 @@ select_session(Candidates, Max) ->
?hcrd("select session - found one", [{handler, HandlerPid}]),
{ok, HandlerPid}
end.
-
-pipeline_or_keep_alive(#request{id = Id} = Request, HandlerPid, State) ->
- ?hcrd("pipeline of keep-alive", [{id, Id}, {handler, HandlerPid}]),
+
+pipeline_or_keep_alive(Request, HandlerPid, State) ->
case (catch httpc_handler:send(Request, HandlerPid)) of
ok ->
- ?hcrd("pipeline or keep-alive - successfully sent", []),
- Entry = #handler_info{id = Id,
- handler = HandlerPid,
- state = operational},
- ets:insert(State#state.handler_db, Entry);
-
- _ -> %% timeout pipelining failed
- ?hcrd("pipeline or keep-alive - failed sending -> "
- "start a new handler", []),
- create_handler_starter(Request, State)
+ ets:insert(State#state.handler_db, {Request#request.id,
+ HandlerPid,
+ Request#request.from});
+ _ -> %timeout pipelining failed
+ start_handler(Request, State)
end.
-
-create_handler_starter(#request{socket_opts = SocketOpts} = Request,
- #state{options = Options} = State)
- when is_list(SocketOpts) ->
- %% The user provided us with (override) socket options
- ?hcrt("create handler starter", [{socket_opts, SocketOpts}, {options, Options}]),
- Options2 = Options#options{socket_opts = SocketOpts},
- create_handler_starter(Request#request{socket_opts = undefined},
- State#state{options = Options2});
-
-create_handler_starter(#request{id = Id,
- from = From} = Request,
- #state{profile_name = ProfileName,
- options = Options,
- handler_db = HandlerDb} = _State) ->
- ?hcrv("create handler starter", [{id, Id}, {profile, ProfileName}]),
- IsInetsManager = is_inets_manager(),
- ManagerPid = self(),
- StarterFun =
- fun() ->
- ?hcrd("handler starter - start",
- [{id, Id},
- {profile, ProfileName},
- {inets_manager, IsInetsManager}]),
- Result1 =
- case IsInetsManager of
- true ->
- httpc_handler_sup:start_child(Options,
- ProfileName);
- false ->
- httpc_handler:start_link(Options,
- ProfileName)
- end,
- ?hcrd("handler starter - maybe connect and send",
- [{id, Id}, {profile, ProfileName}, {result, Result1}]),
- case Result1 of
- {ok, HandlerPid} ->
- StartedMessage =
- {started, self(), Id, HandlerPid},
- ManagerPid ! StartedMessage,
- Result2 = httpc_handler:connect_and_send(Request,
- HandlerPid),
- ?hcrd("handler starter - connected and sent",
- [{id, Id}, {profile, ProfileName},
- {handler, HandlerPid}, {result, Result2}]),
- ConnAndSendMessage =
- {connect_and_send,
- self(), Id, HandlerPid, Result2},
- ManagerPid ! ConnAndSendMessage;
- {error, Reason} ->
- StartFailureMessage =
- {failed_starting_handler, self(), Id, Reason},
- ManagerPid ! StartFailureMessage;
- _ ->
- StartFailureMessage =
- {failed_starting_handler, self(), Id, Result1},
- ManagerPid ! StartFailureMessage
- end
- end,
- Starter = erlang:spawn_link(StarterFun),
- ?hcrd("create handler starter - started", [{id, Id}, {starter, Starter}]),
- Entry = #handler_info{id = Id,
- starter = Starter,
- from = From,
- state = initiating},
- ets:insert(HandlerDb, Entry),
- ok.
-
-
is_inets_manager() ->
case get('$ancestors') of
[httpc_profile_sup | _] ->
@@ -1045,8 +761,6 @@ do_store_cookies([Cookie | Cookies], #state{cookie_db = CookieDb} = State) ->
ok = httpc_cookie:insert(CookieDb, Cookie),
do_store_cookies(Cookies, State).
-
-
session_db_name(ProfileName) ->
make_db_name(ProfileName, "__session_db").
@@ -1074,7 +788,6 @@ cast(ProfileName, Msg) ->
gen_server:cast(ProfileName, Msg).
-
get_proxy(Opts, #options{proxy = Default}) ->
proplists:get_value(proxy, Opts, Default).
@@ -1133,20 +846,6 @@ handle_verbose(trace) ->
handle_verbose(_) ->
ok.
-
error_report(Profile, F, A) ->
Report = io_lib:format("HTTPC-MANAGER<~p> " ++ F ++ "~n", [Profile | A]),
error_logger:error_report(Report).
-
-
-%% d(F) ->
-%% d(F, []).
-
-%% d(F, A) ->
-%% d(get(dbg), F, A).
-
-%% d(true, F, A) ->
-%% io:format(user, "~w:~w:" ++ F ++ "~n", [self(), ?MODULE | A]);
-%% d(_, _, _) ->
-%% ok.
-
diff --git a/lib/inets/src/http_client/httpc_request.erl b/lib/inets/src/http_client/httpc_request.erl
index d4df97ad40..879053f0f2 100644
--- a/lib/inets/src/http_client/httpc_request.erl
+++ b/lib/inets/src/http_client/httpc_request.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2004-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -79,36 +79,62 @@ send(SendAddr, Socket, SocketType,
{settings, HttpOptions},
{userinfo, UserInfo}]),
- TmpHeaders = handle_user_info(UserInfo, Headers),
+ TmpHdrs = handle_user_info(UserInfo, Headers),
- {TmpHeaders2, Body} =
- post_data(Method, TmpHeaders, Content, HeadersAsIs),
+ {TmpHdrs2, Body} = post_data(Method, TmpHdrs, Content, HeadersAsIs),
- {NewHeaders, Uri} = case Address of
- SendAddr ->
- {TmpHeaders2, Path ++ Query};
- _Proxy ->
- TmpHeaders3 =
- handle_proxy(HttpOptions, TmpHeaders2),
- {TmpHeaders3, AbsUri}
- end,
-
- FinalHeaders = case NewHeaders of
- HeaderList when is_list(HeaderList) ->
- http_headers(HeaderList, []);
- _ ->
- http_request:http_headers(NewHeaders)
- end,
+ {NewHeaders, Uri} =
+ case Address of
+ SendAddr ->
+ {TmpHdrs2, Path ++ Query};
+ _Proxy ->
+ TmpHdrs3 = handle_proxy(HttpOptions, TmpHdrs2),
+ {TmpHdrs3, AbsUri}
+ end,
+
+ FinalHeaders =
+ case NewHeaders of
+ HeaderList when is_list(HeaderList) ->
+ http_headers(HeaderList, []);
+ _ ->
+ http_request:http_headers(NewHeaders)
+ end,
Version = HttpOptions#http_options.version,
- Message = [method(Method), " ", Uri, " ",
- version(Version), ?CRLF,
- headers(FinalHeaders, Version), ?CRLF, Body],
+ do_send_body(SocketType, Socket, Method, Uri, Version, FinalHeaders, Body).
+
+
+do_send_body(SocketType, Socket, Method, Uri, Version, Headers,
+ {ProcessBody, Acc}) when is_function(ProcessBody, 1) ->
+ ?hcrt("send", [{acc, Acc}]),
+ case do_send_body(SocketType, Socket, Method, Uri, Version, Headers, []) of
+ ok ->
+ do_send_body(SocketType, Socket, ProcessBody, Acc);
+ Error ->
+ Error
+ end;
+do_send_body(SocketType, Socket, Method, Uri, Version, Headers, Body) ->
+ ?hcrt("create message", [{body, Body}]),
+ Message = [method(Method), " ", Uri, " ",
+ version(Version), ?CRLF,
+ headers(Headers, Version), ?CRLF, Body],
?hcrd("send", [{message, Message}]),
-
- http_transport:send(SocketType, Socket, lists:append(Message)).
+ http_transport:send(SocketType, Socket, Message).
+
+do_send_body(SocketType, Socket, ProcessBody, Acc) ->
+ case ProcessBody(Acc) of
+ eof ->
+ ok;
+ {ok, Data, NewAcc} ->
+ case http_transport:send(SocketType, Socket, Data) of
+ ok ->
+ do_send_body(SocketType, Socket, ProcessBody, NewAcc);
+ Error ->
+ Error
+ end
+ end.
%%-------------------------------------------------------------------------
@@ -161,7 +187,6 @@ is_client_closing(Headers) ->
%%%========================================================================
post_data(Method, Headers, {ContentType, Body}, HeadersAsIs)
when (Method =:= post) orelse (Method =:= put) ->
- ContentLength = body_length(Body),
NewBody = case Headers#http_request_h.expect of
"100-continue" ->
"";
@@ -170,14 +195,22 @@ post_data(Method, Headers, {ContentType, Body}, HeadersAsIs)
end,
NewHeaders = case HeadersAsIs of
- [] ->
- Headers#http_request_h{'content-type' =
- ContentType,
- 'content-length' =
- ContentLength};
- _ ->
- HeadersAsIs
- end,
+ [] ->
+ Headers#http_request_h{
+ 'content-type' = ContentType,
+ 'content-length' = case body_length(Body) of
+ undefined ->
+ % on upload streaming the caller must give a
+ % value to the Content-Length header
+ % (or use chunked Transfer-Encoding)
+ Headers#http_request_h.'content-length';
+ Len when is_list(Len) ->
+ Len
+ end
+ };
+ _ ->
+ HeadersAsIs
+ end,
{NewHeaders, NewBody};
@@ -190,7 +223,10 @@ body_length(Body) when is_binary(Body) ->
integer_to_list(size(Body));
body_length(Body) when is_list(Body) ->
- integer_to_list(length(Body)).
+ integer_to_list(length(Body));
+
+body_length({DataFun, _Acc}) when is_function(DataFun, 1) ->
+ undefined.
method(Method) ->
http_util:to_upper(atom_to_list(Method)).
diff --git a/lib/inets/src/http_lib/http_internal.hrl b/lib/inets/src/http_lib/http_internal.hrl
index 5440f214b5..2e924667c6 100644
--- a/lib/inets/src/http_lib/http_internal.hrl
+++ b/lib/inets/src/http_lib/http_internal.hrl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2002-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2002-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -28,8 +28,8 @@
-define(HTTP_MAX_URI_SIZE, nolimit).
-ifndef(HTTP_DEFAULT_SSL_KIND).
--define(HTTP_DEFAULT_SSL_KIND, ossl).
-%% -define(HTTP_DEFAULT_SSL_KIND, essl).
+%% -define(HTTP_DEFAULT_SSL_KIND, ossl).
+-define(HTTP_DEFAULT_SSL_KIND, essl).
-endif. % -ifdef(HTTP_DEFAULT_SSL_KIND).
diff --git a/lib/inets/src/http_lib/http_transport.erl b/lib/inets/src/http_lib/http_transport.erl
index 0024d19fc1..8cabfe3c71 100644
--- a/lib/inets/src/http_lib/http_transport.erl
+++ b/lib/inets/src/http_lib/http_transport.erl
@@ -23,7 +23,7 @@
-export([
start/1,
connect/3, connect/4,
- listen/2, listen/3,
+ listen/2, listen/3, listen/4,
accept/2, accept/3,
close/2,
send/3,
@@ -110,7 +110,17 @@ connect(ip_comm = _SocketType, {Host, Port}, Opts0, Timeout)
Opts = [binary, {packet, 0}, {active, false}, {reuseaddr, true} | Opts0],
?hlrt("connect using gen_tcp",
[{host, Host}, {port, Port}, {opts, Opts}, {timeout, Timeout}]),
- gen_tcp:connect(Host, Port, Opts, Timeout);
+ try gen_tcp:connect(Host, Port, Opts, Timeout) of
+ {ok, _} = OK ->
+ OK;
+ {error, _} = ERROR ->
+ ERROR
+ catch
+ exit:{badarg, _} ->
+ {error, {eoptions, Opts}};
+ exit:badarg ->
+ {error, {eoptions, Opts}}
+ end;
%% Wrapper for backaward compatibillity
connect({ssl, SslConfig}, Address, Opts, Timeout) ->
@@ -123,7 +133,14 @@ connect({ossl, SslConfig}, {Host, Port}, _, Timeout) ->
{port, Port},
{ssl_config, SslConfig},
{timeout, Timeout}]),
- ssl:connect(Host, Port, Opts, Timeout);
+ case (catch ssl:connect(Host, Port, Opts, Timeout)) of
+ {'EXIT', Reason} ->
+ {error, {eoptions, Reason}};
+ {ok, _} = OK ->
+ OK;
+ {error, _} = ERROR ->
+ ERROR
+ end;
connect({essl, SslConfig}, {Host, Port}, _, Timeout) ->
Opts = [binary, {active, false}, {ssl_imp, new}] ++ SslConfig,
@@ -132,14 +149,22 @@ connect({essl, SslConfig}, {Host, Port}, _, Timeout) ->
{port, Port},
{ssl_config, SslConfig},
{timeout, Timeout}]),
- ssl:connect(Host, Port, Opts, Timeout).
+ case (catch ssl:connect(Host, Port, Opts, Timeout)) of
+ {'EXIT', Reason} ->
+ {error, {eoptions, Reason}};
+ {ok, _} = OK ->
+ OK;
+ {error, _} = ERROR ->
+ ERROR
+ end.
%%-------------------------------------------------------------------------
-%% listen(SocketType, Port) -> {ok, Socket} | {error, Reason}
+%% listen(SocketType, Addr, Port, Fd) -> {ok, Socket} | {error, Reason}
%% SocketType = ip_comm | {ssl, SSLConfig}
%% Port = integer()
-%% Socket = socket()
+%% Socket = socket()
+%% Fd = undefined | fd()
%%
%% Description: Sets up socket to listen on the port Port on the local
%% host using either gen_tcp or ssl. In the gen_tcp case the port
@@ -151,13 +176,8 @@ connect({essl, SslConfig}, {Host, Port}, _, Timeout) ->
listen(SocketType, Port) ->
listen(SocketType, undefined, Port).
-listen(ip_comm, Addr, Port) ->
- case (catch listen_ip_comm(Addr, Port)) of
- {'EXIT', Reason} ->
- {error, {exit, Reason}};
- Else ->
- Else
- end;
+listen(ip_comm = SocketType, Addr, Port) ->
+ listen(SocketType, Addr, Port, undefined);
%% Wrapper for backaward compatibillity
listen({ssl, SSLConfig}, Addr, Port) ->
@@ -186,9 +206,17 @@ listen({essl, SSLConfig} = Ssl, Addr, Port) ->
Opt2 = [{ssl_imp, new}, {reuseaddr, true} | Opt],
ssl:listen(Port, Opt2).
+listen(ip_comm, Addr, Port, Fd) ->
+ case (catch listen_ip_comm(Addr, Port, Fd)) of
+ {'EXIT', Reason} ->
+ {error, {exit, Reason}};
+ Else ->
+ Else
+ end.
+
-listen_ip_comm(Addr, Port) ->
- {NewPort, Opts, IpFamily} = get_socket_info(Addr, Port),
+listen_ip_comm(Addr, Port, Fd) ->
+ {NewPort, Opts, IpFamily} = get_socket_info(Addr, Port, Fd),
case IpFamily of
inet6fb4 ->
Opts2 = [inet6 | Opts],
@@ -223,29 +251,36 @@ listen_ip_comm(Addr, Port) ->
ipfamily_default(Addr, Port) ->
httpd_conf:lookup(Addr, Port, ipfamily, inet6fb4).
-get_socket_info(Addr, Port) ->
- Key = list_to_atom("httpd_" ++ integer_to_list(Port)),
- BaseOpts = [{backlog, 128}, {reuseaddr, true}],
+get_socket_info(Addr, Port, Fd0) ->
+ BaseOpts = [{backlog, 128}, {reuseaddr, true}],
IpFamilyDefault = ipfamily_default(Addr, Port),
- case init:get_argument(Key) of
- {ok, [[Value]]} ->
- {Fd, IpFamily} =
- case string:tokens(Value, [$|]) of
- [FdStr, IpFamilyStr] ->
- Fd0 = fd_of(FdStr),
- IpFamily0 = ip_family_of(IpFamilyStr),
- {Fd0, IpFamily0};
- [FdStr] ->
- {fd_of(FdStr), IpFamilyDefault};
- _ ->
- throw({error, {bad_descriptor, Value}})
- end,
+ %% The presence of a file descriptor takes precedence
+ case get_fd(Port, Fd0, IpFamilyDefault) of
+ {Fd, IpFamily} ->
{0, sock_opt(ip_comm, Addr, [{fd, Fd} | BaseOpts]), IpFamily};
- error ->
+ undefined ->
{Port, sock_opt(ip_comm, Addr, BaseOpts), IpFamilyDefault}
end.
+get_fd(Port, undefined = _Fd, IpFamilyDefault) ->
+ FdKey = list_to_atom("httpd_" ++ integer_to_list(Port)),
+ case init:get_argument(FdKey) of
+ {ok, [[Value]]} ->
+ case string:tokens(Value, [$|]) of
+ [FdStr, IpFamilyStr] ->
+ {fd_of(FdStr), ip_family_of(IpFamilyStr)};
+ [FdStr] ->
+ {fd_of(FdStr), IpFamilyDefault};
+ _ ->
+ throw({error, {bad_descriptor, Value}})
+ end;
+ error ->
+ undefined
+ end;
+get_fd(_Port, Fd, IpFamilyDefault) ->
+ {Fd, IpFamilyDefault}.
+
fd_of(FdStr) ->
case (catch list_to_integer(FdStr)) of
Fd when is_integer(Fd) ->
diff --git a/lib/inets/src/http_lib/http_util.erl b/lib/inets/src/http_lib/http_util.erl
index 4f1147176c..5e6b69ac5e 100644
--- a/lib/inets/src/http_lib/http_util.erl
+++ b/lib/inets/src/http_lib/http_util.erl
@@ -25,7 +25,8 @@
hexlist_to_integer/1, integer_to_hexlist/1,
convert_month/1,
is_hostname/1,
- timestamp/0, timeout/2
+ timestamp/0, timeout/2,
+ html_encode/1
]).
@@ -187,6 +188,13 @@ timeout(Timeout, Started) ->
end.
+html_encode(Chars) ->
+ Reserved = sets:from_list([$&, $<, $>, $\", $', $/]),
+ lists:append(lists:map(fun(Char) ->
+ char_to_html_entity(Char, Reserved)
+ end, Chars)).
+
+
%%%========================================================================
%%% Internal functions
%%%========================================================================
@@ -235,3 +243,11 @@ convert_to_ascii([Num | Reversed], Number)
convert_to_ascii([Num | Reversed], Number)
when (Num > 9) andalso (Num < 16) ->
convert_to_ascii(Reversed, [Num + 55 | Number]).
+
+char_to_html_entity(Char, Reserved) ->
+ case sets:is_element(Char, Reserved) of
+ true ->
+ "&#" ++ integer_to_list(Char) ++ ";";
+ false ->
+ [Char]
+ end.
diff --git a/lib/inets/src/http_server/httpd_file.erl b/lib/inets/src/http_server/httpd_file.erl
index 7e21d9e158..ccc1f7874a 100644
--- a/lib/inets/src/http_server/httpd_file.erl
+++ b/lib/inets/src/http_server/httpd_file.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2006-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2006-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -26,22 +26,21 @@
handle_error(eacces, Op, ModData, Path) ->
- handle_error(403, Op, ModData, Path,"Forbidden");
+ handle_error(403, Op, ModData, Path, ": Forbidden");
handle_error(enoent, Op, ModData, Path) ->
- handle_error(404, Op, ModData, Path,"File not found");
+ handle_error(404, Op, ModData, Path, ": File not found");
handle_error(enotdir, Op, ModData, Path) ->
handle_error(404, Op, ModData, Path,
- ": A component of the file name is not a directory");
+ ": A component of the file name is not a directory");
handle_error(emfile, Op, _ModData, Path) ->
handle_error(500, Op, none, Path, ": To many open files");
handle_error({enfile,_}, Op, _ModData, Path) ->
handle_error(500, Op, none, Path, ": File table overflow");
handle_error(_Reason, Op, ModData, Path) ->
- handle_error(404, Op, ModData, Path, "File not found").
-
-handle_error(StatusCode, Op, none, Path, Reason) ->
- {StatusCode, none, ?NICE("Can't " ++ Op ++ Path ++ Reason)};
+ handle_error(404, Op, ModData, Path, ": File not found").
+handle_error(StatusCode, Op, none, Path, Reason) ->
+ {StatusCode, none, ?NICE("Can't " ++ Op ++ " " ++ Path ++ Reason)};
handle_error(StatusCode, Op, ModData, Path, Reason) ->
{StatusCode, ModData#mod.request_uri,
- ?NICE("Can't " ++ Op ++ Path ++ Reason)}.
+ ?NICE("Can't " ++ Op ++ " " ++ Path ++ Reason)}.
diff --git a/lib/inets/src/http_server/httpd_log.erl b/lib/inets/src/http_server/httpd_log.erl
index f3ea3aa0e2..db1e2c627a 100644
--- a/lib/inets/src/http_server/httpd_log.erl
+++ b/lib/inets/src/http_server/httpd_log.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -113,7 +113,7 @@ do_error_entry(ConfigDB, RemoteHost, undefined, Date, Reason) ->
do_error_entry(ConfigDB, RemoteHost, URI, Date, Reason) ->
case httpd_util:lookup(ConfigDB, error_log_format, pretty) of
pretty ->
- io_lib:format("[~s] access to ~s failed for ~s reason: ~n~p~n",
+ io_lib:format("[~s] access to ~s failed for ~s, reason: ~n~p~n",
[Date, URI, RemoteHost, Reason]);
compact ->
io_lib:format( "[~s] access to ~s failed for ~s, reason: ~w~n",
diff --git a/lib/inets/src/http_server/httpd_request_handler.erl b/lib/inets/src/http_server/httpd_request_handler.erl
index a9db6e2058..c3b47ce390 100644
--- a/lib/inets/src/http_server/httpd_request_handler.erl
+++ b/lib/inets/src/http_server/httpd_request_handler.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -240,13 +240,13 @@ handle_info({ssl_error, _, _} = Reason, State) ->
%% Timeouts
handle_info(timeout, #state{mod = ModData, mfa = {_, parse, _}} = State) ->
- error_log("No request received on keep-alive connection"
+ error_log("No request received on keep-alive connection "
"before server side timeout", ModData),
%% No response should be sent!
{stop, normal, State#state{response_sent = true}};
handle_info(timeout, #state{mod = ModData} = State) ->
httpd_response:send_status(ModData, 408, "Request timeout"),
- error_log("The client did not send the whole request before the"
+ error_log("The client did not send the whole request before the "
"server side timeout", ModData),
{stop, normal, State#state{response_sent = true}};
diff --git a/lib/inets/src/http_server/httpd_sup.erl b/lib/inets/src/http_server/httpd_sup.erl
index f94e5459c1..d028a19bf0 100644
--- a/lib/inets/src/http_server/httpd_sup.erl
+++ b/lib/inets/src/http_server/httpd_sup.erl
@@ -90,7 +90,7 @@ id(Address, Port) ->
%%% Supervisor callback
%%%=========================================================================
init([HttpdServices]) ->
- ?hdrd("starting", []),
+ ?hdrd("starting", [{httpd_service, HttpdServices}]),
RestartStrategy = one_for_one,
MaxR = 10,
MaxT = 3600,
@@ -182,24 +182,32 @@ httpd_child_spec(ConfigFile, AcceptTimeout, Debug) ->
Error
end.
-httpd_child_spec(Config, AcceptTimeout, Debug, Addr, 0) ->
- case start_listen(Addr, 0, Config) of
- {Pid, {NewPort, NewConfig, ListenSocket}} ->
- Name = {httpd_instance_sup, Addr, NewPort},
- StartFunc = {httpd_instance_sup, start_link,
- [NewConfig, AcceptTimeout,
- {Pid, ListenSocket}, Debug]},
- Restart = permanent,
- Shutdown = infinity,
- Modules = [httpd_instance_sup],
- Type = supervisor,
- {Name, StartFunc, Restart, Shutdown, Type, Modules};
- {Pid, {error, Reason}} ->
- exit(Pid, normal),
- {error, Reason}
- end;
-
httpd_child_spec(Config, AcceptTimeout, Debug, Addr, Port) ->
+ case Port == 0 orelse proplists:is_defined(fd, Config) of
+ true ->
+ httpd_child_spec_listen(Config, AcceptTimeout, Debug, Addr, Port);
+ false ->
+ httpd_child_spec_nolisten(Config, AcceptTimeout, Debug, Addr, Port)
+ end.
+
+httpd_child_spec_listen(Config, AcceptTimeout, Debug, Addr, Port) ->
+ case start_listen(Addr, Port, Config) of
+ {Pid, {NewPort, NewConfig, ListenSocket}} ->
+ Name = {httpd_instance_sup, Addr, NewPort},
+ StartFunc = {httpd_instance_sup, start_link,
+ [NewConfig, AcceptTimeout,
+ {Pid, ListenSocket}, Debug]},
+ Restart = permanent,
+ Shutdown = infinity,
+ Modules = [httpd_instance_sup],
+ Type = supervisor,
+ {Name, StartFunc, Restart, Shutdown, Type, Modules};
+ {Pid, {error, Reason}} ->
+ exit(Pid, normal),
+ {error, Reason}
+ end.
+
+httpd_child_spec_nolisten(Config, AcceptTimeout, Debug, Addr, Port) ->
Name = {httpd_instance_sup, Addr, Port},
StartFunc = {httpd_instance_sup, start_link,
[Config, AcceptTimeout, Debug]},
@@ -224,7 +232,8 @@ listen(Address, Port, Config) ->
SocketType = proplists:get_value(socket_type, Config, ip_comm),
case http_transport:start(SocketType) of
ok ->
- case http_transport:listen(SocketType, Address, Port) of
+ Fd = proplists:get_value(fd, Config),
+ case http_transport:listen(SocketType, Address, Port, Fd) of
{ok, ListenSocket} ->
NewConfig = proplists:delete(port, Config),
{ok, NewPort} = inet:port(ListenSocket),
diff --git a/lib/inets/src/http_server/httpd_util.erl b/lib/inets/src/http_server/httpd_util.erl
index 789f12652b..c1aff65d5e 100644
--- a/lib/inets/src/http_server/httpd_util.erl
+++ b/lib/inets/src/http_server/httpd_util.erl
@@ -181,7 +181,7 @@ message(304, _URL,_) ->
message(400,none,_) ->
"Your browser sent a query that this server could not understand.";
message(400,Msg,_) ->
- "Your browser sent a query that this server could not understand. "++ maybe_encode(Msg);
+ "Your browser sent a query that this server could not understand. "++ http_util:html_encode(Msg);
message(401,none,_) ->
"This server could not verify that you
are authorized to access the document you
@@ -190,48 +190,48 @@ credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.";
message(403,RequestURI,_) ->
- "You don't have permission to access "++ maybe_encode(RequestURI) ++" on this server.";
+ "You don't have permission to access "++ http_util:html_encode(RequestURI) ++" on this server.";
message(404,RequestURI,_) ->
- "The requested URL " ++ maybe_encode(RequestURI) ++ " was not found on this server.";
+ "The requested URL " ++ http_util:html_encode(RequestURI) ++ " was not found on this server.";
message(408, Timeout, _) ->
Timeout;
message(412,none,_) ->
- "The requested preconditions where false";
+ "The requested preconditions were false";
message(413, Reason,_) ->
- "Entity: " ++ Reason;
+ "Entity: " ++ http_util:html_encode(Reason);
message(414,ReasonPhrase,_) ->
- "Message "++ ReasonPhrase ++".";
+ "Message "++ http_util:html_encode(ReasonPhrase) ++".";
message(416,ReasonPhrase,_) ->
- ReasonPhrase;
+ http_util:html_encode(ReasonPhrase);
message(500,_,ConfigDB) ->
ServerAdmin=lookup(ConfigDB,server_admin,"unknown@unknown"),
"The server encountered an internal error or "
"misconfiguration and was unable to complete "
"your request.<P>Please contact the server administrator "
- ++ ServerAdmin ++ ", and inform them of the time the error occurred "
+ ++ http_util:html_encode(ServerAdmin) ++ ", and inform them of the time the error occurred "
"and anything you might have done that may have caused the error.";
message(501,{Method, RequestURI, HTTPVersion}, _ConfigDB) ->
if
is_atom(Method) ->
- atom_to_list(Method)++
- " to "++ maybe_encode(RequestURI)++" ("++HTTPVersion++") not supported.";
+ http_util:html_encode(atom_to_list(Method))++
+ " to "++ http_util:html_encode(RequestURI)++" ("++ http_util:html_encode(HTTPVersion)++") not supported.";
is_list(Method) ->
- Method++
- " to "++ maybe_encode(RequestURI)++" ("++HTTPVersion++") not supported."
+ http_util:html_encode(Method)++
+ " to "++ http_util:html_encode(RequestURI)++" ("++ http_util:html_encode(HTTPVersion)++") not supported."
end;
message(503, String, _ConfigDB) ->
- "This service in unavailable due to: "++String.
+ "This service in unavailable due to: "++ http_util:html_encode(String).
maybe_encode(URI) ->
- case lists:member($%, URI) of
- true ->
- URI;
- false ->
- http_uri:encode(URI)
- end.
+ Decoded = try http_uri:decode(URI) of
+ N -> N
+ catch
+ error:_ -> URI
+ end,
+ http_uri:encode(Decoded).
%%convert_rfc_date(Date)->{{YYYY,MM,DD},{HH,MIN,SEC}}
diff --git a/lib/inets/src/http_server/mod_esi.erl b/lib/inets/src/http_server/mod_esi.erl
index 929185a67a..e36c33b282 100644
--- a/lib/inets/src/http_server/mod_esi.erl
+++ b/lib/inets/src/http_server/mod_esi.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -415,7 +415,7 @@ deliver_webpage_chunk(#mod{config_db = Db} = ModData, Pid, Timeout) ->
end;
timeout ->
?hdrv("deliver_webpage_chunk - timeout", []),
- send_headers(ModData, {504, "Timeout"},[{"connection", "close"}]),
+ send_headers(ModData, 504, [{"connection", "close"}]),
httpd_socket:close(ModData#mod.socket_type, ModData#mod.socket),
process_flag(trap_exit,false),
{proceed,[{response, {already_sent, 200, 0}} | ModData#mod.data]}
@@ -452,6 +452,10 @@ handle_body(Pid, ModData, Body, Timeout, Size, IsDisableChunkedSend) ->
?hdrt("handle_body - send chunk", [{timeout, Timeout}, {size, Size}]),
httpd_response:send_chunk(ModData, Body, IsDisableChunkedSend),
receive
+ {esi_data, Data} when is_binary(Data) ->
+ ?hdrt("handle_body - received binary data (esi)", []),
+ handle_body(Pid, ModData, Data, Timeout, Size + byte_size(Data),
+ IsDisableChunkedSend);
{esi_data, Data} ->
?hdrt("handle_body - received data (esi)", []),
handle_body(Pid, ModData, Data, Timeout, Size + length(Data),
diff --git a/lib/inets/src/inets_app/inets.appup.src b/lib/inets/src/inets_app/inets.appup.src
index 07da8ca961..47f3fbba58 100644
--- a/lib/inets/src/inets_app/inets.appup.src
+++ b/lib/inets/src/inets_app/inets.appup.src
@@ -18,9 +18,14 @@
{"%VSN%",
[
+ {"5.5.2",
+ [
+ {restart_application, inets}
+ ]
+ },
{"5.5.1",
[
- {load_module, http_chunk, soft_purge, soft_purge, []}
+ {restart_application, inets}
]
},
{"5.5",
@@ -34,10 +39,15 @@
]
}
],
- [
+ [
+ {"5.5.2",
+ [
+ {restart_application, inets}
+ ]
+ },
{"5.5.1",
[
- {load_module, http_chunk, soft_purge, soft_purge, []}
+ {restart_application, inets}
]
},
{"5.5",
diff --git a/lib/inets/test/ftp_SUITE.erl b/lib/inets/test/ftp_SUITE.erl
index 4bafdbfef8..17e5f6777e 100644
--- a/lib/inets/test/ftp_SUITE.erl
+++ b/lib/inets/test/ftp_SUITE.erl
@@ -57,35 +57,42 @@
%% Description: Returns documentation/test cases in this test suite
%% or a skip tuple if the platform is not supported.
%%--------------------------------------------------------------------
-suite() -> [{ct_hooks,[ts_install_cth]}].
+suite() -> [{ct_hooks, [ts_install_cth]}].
all() ->
- [{group, solaris8_test}, {group, solaris9_test},
- {group, solaris10_test}, {group, linux_x86_test},
- {group, linux_ppc_test}, {group, macosx_x86_test},
- {group, macosx_ppc_test}, {group, openbsd_test},
- {group, freebsd_test}, {group, netbsd_test},
+ [
+ {group, solaris8_test},
+ {group, solaris9_test},
+ {group, solaris10_test},
+ {group, linux_x86_test},
+ {group, linux_ppc_test},
+ {group, macosx_x86_test},
+ {group, macosx_ppc_test},
+ {group, openbsd_test},
+ {group, freebsd_test},
+ {group, netbsd_test},
{group, windows_xp_test},
{group, windows_2003_server_test},
- {group, ticket_tests}].
+ {group, ticket_tests}
+ ].
groups() ->
- [{solaris8_test, [], [{ftp_solaris8_sparc_test, all}]},
- {solaris9_test, [], [{ftp_solaris9_sparc_test, all}]},
- {solaris10_test, [],
- [{ftp_solaris10_sparc_test, all},
- {ftp_solaris10_x86_test, all}]},
- {linux_x86_test, [], [{ftp_linux_x86_test, all}]},
- {linux_ppc_test, [], [{ftp_linux_ppc_test, all}]},
- {macosx_x86_test, [], [{ftp_macosx_x86_test, all}]},
- {macosx_ppc_test, [], [{ftp_macosx_ppc_test, all}]},
- {openbsd_test, [], [{ftp_openbsd_x86_test, all}]},
- {freebsd_test, [], [{ftp_freebsd_x86_test, all}]},
- {netbsd_test, [], [{ftp_netbsd_x86_test, all}]},
- {windows_xp_test, [], [{ftp_windows_xp_test, all}]},
- {windows_2003_server_test, [],
- [{ftp_windows_2003_server_test, all}]},
- {ticket_tests, [], [{ftp_ticket_test, all}]}].
+ [
+ {solaris8_test, [], [{ftp_solaris8_sparc_test, all}]},
+ {solaris9_test, [], [{ftp_solaris9_sparc_test, all}]},
+ {solaris10_test, [], [{ftp_solaris10_sparc_test, all},
+ {ftp_solaris10_x86_test, all}]},
+ {linux_x86_test, [], [{ftp_linux_x86_test, all}]},
+ {linux_ppc_test, [], [{ftp_linux_ppc_test, all}]},
+ {macosx_x86_test, [], [{ftp_macosx_x86_test, all}]},
+ {macosx_ppc_test, [], [{ftp_macosx_ppc_test, all}]},
+ {openbsd_test, [], [{ftp_openbsd_x86_test, all}]},
+ {freebsd_test, [], [{ftp_freebsd_x86_test, all}]},
+ {netbsd_test, [], [{ftp_netbsd_x86_test, all}]},
+ {windows_xp_test, [], [{ftp_windows_xp_test, all}]},
+ {windows_2003_server_test, [], [{ftp_windows_2003_server_test, all}]},
+ {ticket_tests, [], [{ftp_ticket_test, all}]}
+ ].
init_per_group(_GroupName, Config) ->
Config.
diff --git a/lib/inets/test/httpc_SUITE.erl b/lib/inets/test/httpc_SUITE.erl
index 2c8febf5ed..1998bd3950 100644
--- a/lib/inets/test/httpc_SUITE.erl
+++ b/lib/inets/test/httpc_SUITE.erl
@@ -28,6 +28,7 @@
-include("test_server_line.hrl").
-include_lib("kernel/include/file.hrl").
+-include("inets_test_lib.hrl").
%% Note: This directive should only be used in test suites.
-compile(export_all).
@@ -62,36 +63,84 @@
suite() -> [{ct_hooks,[ts_install_cth]}].
all() ->
- [proxy_options, proxy_head, proxy_get, proxy_trace,
- proxy_post, proxy_put, proxy_delete, proxy_auth,
- proxy_headers, proxy_emulate_lower_versions,
- http_options, http_head, http_get, http_post,
- http_dummy_pipe, http_inets_pipe, http_trace,
- http_async, http_save_to_file, http_save_to_file_async,
- http_headers, http_headers_dummy, http_bad_response,
- ssl_head, ossl_head, essl_head, ssl_get, ossl_get,
- essl_get, ssl_trace, ossl_trace, essl_trace,
- http_redirect, http_redirect_loop,
- http_internal_server_error, http_userinfo, http_cookie,
- http_server_does_not_exist, http_invalid_http,
- http_emulate_lower_versions, http_relaxed,
- page_does_not_exist, proxy_page_does_not_exist,
- proxy_https_not_supported, http_stream,
- http_stream_once, proxy_stream, parse_url, options,
- ipv6, headers_as_is, {group, tickets}].
+ [
+ proxy_options,
+ proxy_head,
+ proxy_get,
+ proxy_trace,
+ proxy_post,
+ proxy_put,
+ proxy_delete,
+ proxy_auth,
+ proxy_headers,
+ proxy_emulate_lower_versions,
+ http_options,
+ http_head,
+ http_get,
+ http_post,
+ http_post_streaming,
+ http_dummy_pipe,
+ http_inets_pipe,
+ http_trace,
+ http_async,
+ http_save_to_file,
+ http_save_to_file_async,
+ http_headers,
+ http_headers_dummy,
+ http_bad_response,
+ ssl_head,
+ ossl_head,
+ essl_head,
+ ssl_get,
+ ossl_get,
+ essl_get,
+ ssl_trace,
+ ossl_trace,
+ essl_trace,
+ http_redirect,
+ http_redirect_loop,
+ http_internal_server_error,
+ http_userinfo, http_cookie,
+ http_server_does_not_exist,
+ http_invalid_http,
+ http_emulate_lower_versions,
+ http_relaxed,
+ page_does_not_exist,
+ proxy_page_does_not_exist,
+ proxy_https_not_supported,
+ http_stream,
+ http_stream_once,
+ proxy_stream,
+ parse_url,
+ options,
+ ipv6,
+ headers_as_is,
+ {group, tickets},
+ initial_server_connect
+ ].
groups() ->
- [{tickets, [],
- [hexed_query_otp_6191, empty_body_otp_6243,
- empty_response_header_otp_6830,
- transfer_encoding_otp_6807, proxy_not_modified_otp_6821,
- no_content_204_otp_6982, missing_CR_otp_7304,
- {group, otp_7883}, {group, otp_8154}, {group, otp_8106},
- otp_8056, otp_8352, otp_8371, otp_8739]},
- {otp_7883, [], [otp_7883_1, otp_7883_2]},
+ [{tickets, [], [hexed_query_otp_6191,
+ empty_body_otp_6243,
+ empty_response_header_otp_6830,
+ transfer_encoding_otp_6807,
+ proxy_not_modified_otp_6821,
+ no_content_204_otp_6982,
+ missing_CR_otp_7304,
+ {group, otp_7883},
+ {group, otp_8154},
+ {group, otp_8106},
+ otp_8056,
+ otp_8352,
+ otp_8371,
+ otp_8739]},
+ {otp_7883, [], [otp_7883_1,
+ otp_7883_2]},
{otp_8154, [], [otp_8154_1]},
- {otp_8106, [],
- [otp_8106_pid, otp_8106_fun, otp_8106_mfa]}].
+ {otp_8106, [], [otp_8106_pid,
+ otp_8106_fun,
+ otp_8106_mfa]}].
+
init_per_group(_GroupName, Config) ->
Config.
@@ -138,6 +187,7 @@ init_per_suite(Config) ->
{local_port, ?IP_PORT},
{local_ssl_port, ?SSL_PORT} | Config].
+
%%--------------------------------------------------------------------
%% Function: end_per_suite(Config) -> _
%% Config - [tuple()]
@@ -165,6 +215,20 @@ end_per_suite(Config) ->
%%--------------------------------------------------------------------
init_per_testcase(otp_8154_1 = Case, Config) ->
init_per_testcase(Case, 5, Config);
+
+init_per_testcase(initial_server_connect, Config) ->
+ %% Try to check if crypto actually exist or not,
+ %% this test case does not work unless it does
+ case (catch crypto:start()) of
+ ok ->
+ application:start(public_key),
+ application:start(ssl),
+ inets:start(),
+ Config;
+ _ ->
+ {skip,"Could not start crypto"}
+ end;
+
init_per_testcase(Case, Config) ->
init_per_testcase(Case, 2, Config).
@@ -180,8 +244,8 @@ init_per_testcase_ssl(Tag, PrivDir, SslConfFile, Config) ->
[{local_ssl_server, Server} | Config2].
init_per_testcase(Case, Timeout, Config) ->
- io:format(user, "~n~n*** INIT ~w:[~w][~w] ***~n~n",
- [?MODULE, Timeout, Case]),
+ io:format(user, "~n~n*** INIT ~w:~w[~w] ***~n~n",
+ [?MODULE, Case, Timeout]),
PrivDir = ?config(priv_dir, Config),
tsp("init_per_testcase -> stop inets"),
application:stop(inets),
@@ -205,9 +269,10 @@ init_per_testcase(Case, Timeout, Config) ->
[$e, $s, $s, $l | _] ->
init_per_testcase_ssl(essl, PrivDir, SslConfFile, [{watchdog, Dog} | TmpConfig]);
- "proxy" ++ Rest ->
+ "proxy_" ++ Rest ->
+ io:format("init_per_testcase -> Rest: ~p~n", [Rest]),
case Rest of
- "_https_not_supported" ->
+ "https_not_supported" ->
tsp("init_per_testcase -> [proxy case] start inets"),
inets:start(),
tsp("init_per_testcase -> [proxy case] start ssl"),
@@ -221,13 +286,39 @@ init_per_testcase(Case, Timeout, Config) ->
| TmpConfig]
end;
_ ->
+ %% We use erlang.org for the proxy tests
+ %% and after the switch to erlang-web, many
+ %% of the test cases no longer work (erlang.org
+ %% previously run on Apache).
+ %% Until we have had time to update inets
+ %% (and updated erlang.org to use that inets)
+ %% and the test cases, we simply skip the
+ %% problematic test cases.
+ %% This is not ideal, but I am busy....
case is_proxy_available(?PROXY, ?PROXY_PORT) of
true ->
- inets:start(),
- [{watchdog, Dog} | TmpConfig];
+ BadCases =
+ [
+ "delete",
+ "get",
+ "head",
+ "not_modified_otp_6821",
+ "options",
+ "page_does_not_exist",
+ "post",
+ "put",
+ "stream"
+ ],
+ case lists:member(Rest, BadCases) of
+ true ->
+ [{skip, "TC and server not compatible"}|
+ TmpConfig];
+ false ->
+ inets:start(),
+ [{watchdog, Dog} | TmpConfig]
+ end;
false ->
- [{skip, "Failed to contact proxy"} |
- TmpConfig]
+ [{skip, "proxy not responding"} | TmpConfig]
end
end;
_ ->
@@ -395,6 +486,53 @@ http_post(Config) when is_list(Config) ->
end.
%%-------------------------------------------------------------------------
+http_post_streaming(doc) ->
+ ["Test streaming http post request against local server. "
+ "We only care about the client side of the the post. "
+ "The server script will not actually use the post data."];
+http_post_streaming(suite) ->
+ [];
+http_post_streaming(Config) when is_list(Config) ->
+ case ?config(local_server, Config) of
+ ok ->
+ Port = ?config(local_port, Config),
+ URL = case test_server:os_type() of
+ {win32, _} ->
+ ?URL_START ++ integer_to_list(Port) ++
+ "/cgi-bin/cgi_echo.exe";
+ _ ->
+ ?URL_START ++ integer_to_list(Port) ++
+ "/cgi-bin/cgi_echo"
+ end,
+ %% Cgi-script expects the body length to be 100
+ BodyFun = fun(0) ->
+ io:format("~w:http_post_streaming_fun -> "
+ "zero~n", [?MODULE]),
+ eof;
+ (LenLeft) ->
+ io:format("~w:http_post_streaming_fun -> "
+ "LenLeft: ~p~n", [?MODULE, LenLeft]),
+ {ok, lists:duplicate(10, "1"), LenLeft - 10}
+ end,
+
+ {ok, {{_,200,_}, [_ | _], [_ | _]}} =
+ httpc:request(post, {URL,
+ [{"expect", "100-continue"},
+ {"content-length", "100"}],
+ "text/plain", {BodyFun, 100}}, [], []),
+
+ {ok, {{_,504,_}, [_ | _], []}} =
+ httpc:request(post, {URL,
+ [{"expect", "100-continue"},
+ {"content-length", "10"}],
+ "text/plain", {BodyFun, 10}}, [], []);
+
+ _ ->
+ {skip, "Failed to start local http-server"}
+ end.
+
+
+%%-------------------------------------------------------------------------
http_emulate_lower_versions(doc) ->
["Perform request as 0.9 and 1.0 clients."];
http_emulate_lower_versions(suite) ->
@@ -478,34 +616,35 @@ http_inets_pipe(Config) when is_list(Config) ->
{skip, "Failed to start local http-server"}
end.
+
test_pipeline(URL) ->
- p("test_pipeline -> entry with"
- "~n URL: ~p", [URL]),
+ p("test_pipeline -> entry with"
+ "~n URL: ~p", [URL]),
- httpc:set_options([{pipeline_timeout, 50000}]),
-
- p("test_pipeline -> issue (async) request 1"),
- {ok, RequestId1} =
+ httpc:set_options([{pipeline_timeout, 50000}]),
+
+ p("test_pipeline -> issue (async) request 1"),
+ {ok, RequestId1} =
httpc:request(get, {URL, []}, [], [{sync, false}]),
- test_server:format("RequestId1: ~p~n", [RequestId1]),
- p("test_pipeline -> RequestId1: ~p", [RequestId1]),
+ test_server:format("RequestId1: ~p~n", [RequestId1]),
+ p("test_pipeline -> RequestId1: ~p", [RequestId1]),
- %% Make sure pipeline is initiated
- p("test_pipeline -> sleep some", []),
- test_server:sleep(4000),
+ %% Make sure pipeline is initiated
+ p("test_pipeline -> sleep some", []),
+ test_server:sleep(4000),
- p("test_pipeline -> issue (async) request 2"),
- {ok, RequestId2} =
+ p("test_pipeline -> issue (async) request 2"),
+ {ok, RequestId2} =
httpc:request(get, {URL, []}, [], [{sync, false}]),
- tsp("RequestId2: ~p", [RequestId2]),
- p("test_pipeline -> RequestId2: ~p", [RequestId2]),
+ tsp("RequestId2: ~p", [RequestId2]),
+ p("test_pipeline -> RequestId2: ~p", [RequestId2]),
- p("test_pipeline -> issue (sync) request 3"),
- {ok, {{_,200,_}, [_ | _], [_ | _]}} =
+ p("test_pipeline -> issue (sync) request 3"),
+ {ok, {{_,200,_}, [_ | _], [_ | _]}} =
httpc:request(get, {URL, []}, [], []),
p("test_pipeline -> expect reply for (async) request 1 or 2"),
- receive
+ receive
{http, {RequestId1, {{_, 200, _}, _, _}}} ->
p("test_pipeline -> received reply for (async) request 1 - now wait for 2"),
receive
@@ -523,46 +662,46 @@ test_pipeline(URL) ->
ok;
{http, Msg2} ->
test_server:fail(Msg2)
- end;
+ end;
{http, Msg3} ->
test_server:fail(Msg3)
- after 60000 ->
- receive Any1 ->
- tsp("received crap after timeout: ~n ~p", [Any1]),
- test_server:fail({error, {timeout, Any1}})
- end
+ after 60000 ->
+ receive Any1 ->
+ tsp("received crap after timeout: ~n ~p", [Any1]),
+ test_server:fail({error, {timeout, Any1}})
+ end
end,
-
- p("test_pipeline -> sleep some"),
- test_server:sleep(4000),
- p("test_pipeline -> issue (async) request 4"),
- {ok, RequestId3} =
- httpc:request(get, {URL, []}, [], [{sync, false}]),
- tsp("RequestId3: ~p", [RequestId3]),
- p("test_pipeline -> RequestId3: ~p", [RequestId3]),
+ p("test_pipeline -> sleep some"),
+ test_server:sleep(4000),
- p("test_pipeline -> issue (async) request 5"),
- {ok, RequestId4} =
+ p("test_pipeline -> issue (async) request 4"),
+ {ok, RequestId3} =
httpc:request(get, {URL, []}, [], [{sync, false}]),
- tsp("RequestId4: ~p~n", [RequestId4]),
- p("test_pipeline -> RequestId4: ~p", [RequestId4]),
-
- p("test_pipeline -> cancel (async) request 4"),
- ok = httpc:cancel_request(RequestId3),
-
- p("test_pipeline -> expect *no* reply for cancelled (async) request 4 (for 3 secs)"),
- receive
- {http, {RequestId3, _}} ->
- test_server:fail(http_cancel_request_failed)
- after 3000 ->
- ok
- end,
+ tsp("RequestId3: ~p", [RequestId3]),
+ p("test_pipeline -> RequestId3: ~p", [RequestId3]),
- p("test_pipeline -> expect reply for (async) request 4"),
- Body =
- receive
- {http, {RequestId4, {{_, 200, _}, _, BinBody4}}} = Res ->
+ p("test_pipeline -> issue (async) request 5"),
+ {ok, RequestId4} =
+ httpc:request(get, {URL, []}, [], [{sync, false}]),
+ tsp("RequestId4: ~p~n", [RequestId4]),
+ p("test_pipeline -> RequestId4: ~p", [RequestId4]),
+
+ p("test_pipeline -> cancel (async) request 4"),
+ ok = httpc:cancel_request(RequestId3),
+
+ p("test_pipeline -> expect *no* reply for cancelled (async) request 4 (for 3 secs)"),
+ receive
+ {http, {RequestId3, _}} ->
+ test_server:fail(http_cancel_request_failed)
+ after 3000 ->
+ ok
+ end,
+
+ p("test_pipeline -> expect reply for (async) request 4"),
+ Body =
+ receive
+ {http, {RequestId4, {{_, 200, _}, _, BinBody4}}} = Res ->
p("test_pipeline -> received reply for (async) request 5"),
tsp("Receive : ~p", [Res]),
BinBody4;
@@ -577,9 +716,9 @@ test_pipeline(URL) ->
p("test_pipeline -> check reply for (async) request 5"),
inets_test_lib:check_body(binary_to_list(Body)),
-
+
p("test_pipeline -> ensure no unexpected incomming"),
- receive
+ receive
{http, Any} ->
test_server:fail({unexpected_message, Any})
after 500 ->
@@ -589,8 +728,6 @@ test_pipeline(URL) ->
p("test_pipeline -> done"),
ok.
-
-
%%-------------------------------------------------------------------------
http_trace(doc) ->
["Perform a TRACE request that goes through a proxy."];
@@ -1253,6 +1390,9 @@ proxy_options(doc) ->
proxy_options(suite) ->
[];
proxy_options(Config) when is_list(Config) ->
+ %% As of 2011-03-24, erlang.org (which is used as server)
+ %% does no longer run Apache, but instead runs inets, which
+ %% do not implement "options".
case ?config(skip, Config) of
undefined ->
case httpc:request(options, {?PROXY_URL, []}, [], []) of
@@ -1277,6 +1417,8 @@ proxy_head(doc) ->
proxy_head(suite) ->
[];
proxy_head(Config) when is_list(Config) ->
+ %% As of 2011-03-24, erlang.org (which is used as server)
+ %% does no longer run Apache, but instead runs inets.
case ?config(skip, Config) of
undefined ->
case httpc:request(head, {?PROXY_URL, []}, [], []) of
@@ -1372,6 +1514,8 @@ proxy_post(doc) ->
proxy_post(suite) ->
[];
proxy_post(Config) when is_list(Config) ->
+ %% As of 2011-03-24, erlang.org (which is used as server)
+ %% does no longer run Apache, but instead runs inets.
case ?config(skip, Config) of
undefined ->
case httpc:request(post, {?PROXY_URL, [],
@@ -1394,6 +1538,8 @@ proxy_put(doc) ->
proxy_put(suite) ->
[];
proxy_put(Config) when is_list(Config) ->
+ %% As of 2011-03-24, erlang.org (which is used as server)
+ %% does no longer run Apache, but instead runs inets.
case ?config(skip, Config) of
undefined ->
case httpc:request(put, {"http://www.erlang.org/foobar.html", [],
@@ -1418,6 +1564,8 @@ proxy_delete(doc) ->
proxy_delete(suite) ->
[];
proxy_delete(Config) when is_list(Config) ->
+ %% As of 2011-03-24, erlang.org (which is used as server)
+ %% does no longer run Apache, but instead runs inets.
case ?config(skip, Config) of
undefined ->
URL = ?PROXY_URL ++ "/foobar.html",
@@ -1541,25 +1689,11 @@ proxy_https_not_supported(suite) ->
proxy_https_not_supported(Config) when is_list(Config) ->
Result = httpc:request(get, {"https://login.yahoo.com", []}, [], []),
case Result of
- {error, Reason} ->
- %% ok so far
- case Reason of
- {failed_connecting, Why} ->
- %% ok, now check why
- case Why of
- https_through_proxy_is_not_currently_supported ->
- ok;
- _ ->
- tsf({unexpected_why, Why})
- end;
- _ ->
- tsf({unexpected_reason, Reason})
- end;
+ {error, https_through_proxy_is_not_currently_supported} ->
+ ok;
_ ->
- tsf({unexpected_result, Result})
- end,
- ok.
-
+ tsf({unexpected_reason, Result})
+ end.
%%-------------------------------------------------------------------------
@@ -2312,7 +2446,7 @@ otp_8106_fun(Config) when is_list(Config) ->
ok;
_ ->
{skip, "Failed to start local http-server"}
- end.
+ end.
otp_8106_mfa(doc) ->
@@ -2538,7 +2672,7 @@ otp_8739(Config) when is_list(Config) ->
Request = {URL, []},
HttpOptions = [{connect_timeout, 500}, {timeout, 1}],
Options = [{sync, true}],
- case http:request(Method, Request, HttpOptions, Options) of
+ case httpc:request(Method, Request, HttpOptions, Options) of
{error, timeout} ->
%% And now we check the size of the handler db
Info = httpc:info(),
@@ -2573,7 +2707,7 @@ otp_8739_dummy_server_init(Parent) ->
Parent ! {port, Port},
otp_8739_dummy_server_main(Parent, ListenSocket).
-otp_8739_dummy_server_main(Parent, ListenSocket) ->
+otp_8739_dummy_server_main(_Parent, ListenSocket) ->
case gen_tcp:accept(ListenSocket) of
{ok, Sock} ->
%% Ignore the request, and simply wait for the socket to close
@@ -2595,7 +2729,31 @@ otp_8739_dummy_server_main(Parent, ListenSocket) ->
exit(Error)
end.
-
+%%-------------------------------------------------------------------------
+
+initial_server_connect(doc) ->
+ ["If this test cases times out the init of httpc_handler process is"
+ "blocking the manager/client process (implementation dependent which) but nither"
+ "should be blocked."];
+initial_server_connect(suite) ->
+ [];
+initial_server_connect(Config) when is_list(Config) ->
+ DataDir = ?config(data_dir, Config),
+ ok = httpc:set_options([{ipfamily, inet}]),
+
+ CertFile = filename:join(DataDir, "ssl_server_cert.pem"),
+ SSLOptions = [{certfile, CertFile}, {keyfile, CertFile}],
+
+ {DummyServerPid, Port} = dummy_ssl_server_hang(self(), ipv4, SSLOptions),
+
+ URL = ?SSL_URL_START ++ integer_to_list(Port) ++ "/index.html",
+
+ httpc:request(get, {URL, []}, [{ssl,{essl,[]}}], [{sync, false}]),
+
+ [{session_cookies,[]}] = httpc:which_cookies(),
+
+ DummyServerPid ! stop,
+ ok = httpc:set_options([{ipfamily, inet6fb4}]).
%%--------------------------------------------------------------------
%% Internal functions
@@ -3108,11 +3266,9 @@ pick_header(Headers, Name) ->
Val
end.
-
not_implemented_yet() ->
exit(not_implemented_yet).
-
p(F) ->
p(F, []).
@@ -3126,3 +3282,37 @@ tsp(F, A) ->
tsf(Reason) ->
test_server:fail(Reason).
+
+
+dummy_ssl_server_hang(Caller, IpV, SslOpt) ->
+ Pid = spawn(httpc_SUITE, dummy_ssl_server_hang_init, [Caller, IpV, SslOpt]),
+ receive
+ {port, Port} ->
+ {Pid, Port}
+ end.
+
+dummy_ssl_server_hang_init(Caller, IpV, SslOpt) ->
+ {ok, ListenSocket} =
+ case IpV of
+ ipv4 ->
+ ssl:listen(0, [binary, inet, {packet, 0},
+ {reuseaddr,true},
+ {active, false}] ++ SslOpt);
+ ipv6 ->
+ ssl:listen(0, [binary, inet6, {packet, 0},
+ {reuseaddr,true},
+ {active, false}] ++ SslOpt)
+ end,
+ {ok, {_,Port}} = ssl:sockname(ListenSocket),
+ tsp("dummy_ssl_server_hang_init -> Port: ~p", [Port]),
+ Caller ! {port, Port},
+ {ok, AcceptSocket} = ssl:transport_accept(ListenSocket),
+ dummy_ssl_server_hang_loop(AcceptSocket).
+
+dummy_ssl_server_hang_loop(_) ->
+ %% Do not do ssl:ssl_accept as we
+ %% want to time out the underlying gen_tcp:connect
+ receive
+ stop ->
+ ok
+ end.
diff --git a/lib/inets/test/httpd_basic_SUITE.erl b/lib/inets/test/httpd_basic_SUITE.erl
index 3e29b68283..f23d0b4765 100644
--- a/lib/inets/test/httpd_basic_SUITE.erl
+++ b/lib/inets/test/httpd_basic_SUITE.erl
@@ -29,7 +29,11 @@
suite() -> [{ct_hooks,[ts_install_cth]}].
all() ->
- [uri_too_long_414, header_too_long_413, escaped_url_in_error_body].
+ [
+ uri_too_long_414,
+ header_too_long_413,
+ escaped_url_in_error_body
+ ].
groups() ->
[].
@@ -40,6 +44,7 @@ init_per_group(_GroupName, Config) ->
end_per_group(_GroupName, Config) ->
Config.
+
%%--------------------------------------------------------------------
%% Function: init_per_suite(Config) -> Config
%% Config - [tuple()]
@@ -50,6 +55,8 @@ end_per_group(_GroupName, Config) ->
%% variable, but should NOT alter/remove any existing entries.
%%--------------------------------------------------------------------
init_per_suite(Config) ->
+ tsp("init_per_suite -> entry with"
+ "~n Config: ~p", [Config]),
ok = inets:start(),
PrivDir = ?config(priv_dir, Config),
HttpdConf = [{port, 0}, {ipfamily, inet},
@@ -64,6 +71,8 @@ init_per_suite(Config) ->
%% Description: Cleanup after the whole suite
%%--------------------------------------------------------------------
end_per_suite(_Config) ->
+ tsp("end_per_suite -> entry with"
+ "~n Config: ~p", [_Config]),
inets:stop(),
ok.
@@ -79,9 +88,12 @@ end_per_suite(_Config) ->
%% Note: This function is free to add any key/value pairs to the Config
%% variable, but should NOT alter/remove any existing entries.
%%--------------------------------------------------------------------
-init_per_testcase(_Case, Config) ->
+init_per_testcase(Case, Config) ->
+ tsp("init_per_testcase(~w) -> entry with"
+ "~n Config: ~p", [Case, Config]),
Config.
+
%%--------------------------------------------------------------------
%% Function: end_per_testcase(Case, Config) -> _
%% Case - atom()
@@ -90,9 +102,12 @@ init_per_testcase(_Case, Config) ->
%% A list of key/value pairs, holding the test case configuration.
%% Description: Cleanup after each test case
%%--------------------------------------------------------------------
-end_per_testcase(_, Config) ->
+end_per_testcase(Case, Config) ->
+ tsp("end_per_testcase(~w) -> entry with"
+ "~n Config: ~p", [Case, Config]),
Config.
+
%%-------------------------------------------------------------------------
%% Test cases starts here.
%%-------------------------------------------------------------------------
@@ -142,22 +157,30 @@ escaped_url_in_error_body(doc) ->
escaped_url_in_error_body(suite) ->
[];
escaped_url_in_error_body(Config) when is_list(Config) ->
- HttpdConf = ?config(httpd_conf, Config),
+ tsp("escaped_url_in_error_body -> entry with"
+ "~n Config: ~p", [Config]),
+ HttpdConf = ?config(httpd_conf, Config),
{ok, Pid} = inets:start(httpd, [{port, 0} | HttpdConf]),
Info = httpd:info(Pid),
Port = proplists:get_value(port, Info),
- Address = proplists:get_value(bind_address, Info),
- Path = "/<b>this_is_bold<b>",
+ _Address = proplists:get_value(bind_address, Info),
+ Path = "/<b>this_is_bold</b>",
URL = ?URL_START ++ integer_to_list(Port) ++ Path,
EscapedPath = http_uri:encode(Path),
- {ok, {404, Body}} = httpc:request(get, {URL, []},
- [{url_encode, true}],
- [{version, "HTTP/1.0"}, {full_result, false}]),
- EscapedPath = find_URL_path(string:tokens(Body, " ")),
- {ok, {404, Body1}} = httpc:request(get, {URL, []}, [],
- [{version, "HTTP/1.0"}, {full_result, false}]),
+ {ok, {404, Body1}} = httpc:request(get, {URL, []},
+ [{url_encode, true},
+ {version, "HTTP/1.0"}],
+ [{full_result, false}]),
EscapedPath = find_URL_path(string:tokens(Body1, " ")),
- inets:stop(httpd, Pid).
+ {ok, {404, Body2}} = httpc:request(get, {URL, []},
+ [{url_encode, false},
+ {version, "HTTP/1.0"}],
+ [{full_result, false}]),
+ HTMLEncodedPath = http_util:html_encode(Path),
+ HTMLEncodedPath = find_URL_path(string:tokens(Body2, " ")),
+ inets:stop(httpd, Pid),
+ tsp("escaped_url_in_error_body -> done"),
+ ok.
find_URL_path([]) ->
"";
@@ -165,3 +188,10 @@ find_URL_path(["URL", URL | _]) ->
URL;
find_URL_path([_ | Rest]) ->
find_URL_path(Rest).
+
+
+tsp(F) ->
+ tsp(F, []).
+tsp(F, A) ->
+ test_server:format("~p ~p:" ++ F ++ "~n", [self(), ?MODULE | A]).
+
diff --git a/lib/inets/test/httpd_mod.erl b/lib/inets/test/httpd_mod.erl
index f2c1fd6a65..1754cec7bc 100644
--- a/lib/inets/test/httpd_mod.erl
+++ b/lib/inets/test/httpd_mod.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2005-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2005-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -19,7 +19,6 @@
%%
-module(httpd_mod).
--author('[email protected]').
-include("test_server.hrl").
-include("test_server_line.hrl").
@@ -815,6 +814,8 @@ esi(Type, Port, Host, Node) ->
[{statuscode, 302},
{version, "HTTP/1.0"}]),
ok.
+
+
%%--------------------------------------------------------------------
get(Type, Port, Host, Node) ->
ok = httpd_test_lib:verify_request(Type, Host, Port, Node,
diff --git a/lib/inets/test/inets_app_test.erl b/lib/inets/test/inets_app_test.erl
index 11b507fa26..49ea18501f 100644
--- a/lib/inets/test/inets_app_test.erl
+++ b/lib/inets/test/inets_app_test.erl
@@ -241,6 +241,20 @@ undef_funcs(suite) ->
undef_funcs(doc) ->
[];
undef_funcs(Config) when is_list(Config) ->
+ %% We need to check if there is a point to run this test.
+ %% On some platforms, crypto will not build, which in turn
+ %% causes ssl to not to not build (at this time, this will
+ %% change in the future).
+ %% So, we first check if we can start crypto, and if not,
+ %% we skip this test case!
+ case (catch crypto:start()) of
+ ok ->
+ ok;
+ {error, {already_started, crypto}} ->
+ ok;
+ _ ->
+ ?SKIP(crypto_start_check_failed)
+ end,
App = inets,
AppFile = key1search(app_file, Config),
Mods = key1search(modules, AppFile),
diff --git a/lib/inets/test/inets_test_lib.erl b/lib/inets/test/inets_test_lib.erl
index c56a714f5a..c837326bb5 100644
--- a/lib/inets/test/inets_test_lib.erl
+++ b/lib/inets/test/inets_test_lib.erl
@@ -32,7 +32,7 @@
-export([check_body/1]).
-export([millis/0, millis_diff/2, hours/1, minutes/1, seconds/1, sleep/1]).
-export([oscmd/1]).
--export([non_pc_tc_maybe_skip/4, os_based_skip/1]).
+-export([non_pc_tc_maybe_skip/4, os_based_skip/1, skip/3, fail/3]).
-export([flush/0]).
-export([start_node/1, stop_node/1]).
@@ -395,6 +395,13 @@ sleep(MSecs) ->
skip(Reason, File, Line) ->
exit({skipped, {Reason, File, Line}}).
+fail(Reason, File, Line) ->
+ String = lists:flatten(io_lib:format("Failure ~p(~p): ~p~n",
+ [File, Line, Reason])),
+ tsf(String).
+
+
+
flush() ->
receive
Msg ->
@@ -407,7 +414,7 @@ flush() ->
tsp(F) ->
tsp(F, []).
tsp(F, A) ->
- test_server:format("~p ~p:" ++ F ++ "~n", [self(), ?MODULE | A]).
+ test_server:format("~p ~p ~p:" ++ F ++ "~n", [node(), self(), ?MODULE | A]).
tsf(Reason) ->
test_server:fail(Reason).
diff --git a/lib/inets/test/inets_test_lib.hrl b/lib/inets/test/inets_test_lib.hrl
index 0cdb04139c..cc83a309b5 100644
--- a/lib/inets/test/inets_test_lib.hrl
+++ b/lib/inets/test/inets_test_lib.hrl
@@ -72,7 +72,7 @@
%% - Test case macros -
--define(SKIP(Reason), inets_test_lib:skip(Reason)).
+-define(SKIP(Reason), inets_test_lib:skip(Reason, ?MODULE, ?LINE)).
-define(FAIL(Reason), inets_test_lib:fail(Reason, ?MODULE, ?LINE)).
diff --git a/lib/inets/vsn.mk b/lib/inets/vsn.mk
index b1de3fef43..c0e25a30e3 100644
--- a/lib/inets/vsn.mk
+++ b/lib/inets/vsn.mk
@@ -18,7 +18,7 @@
# %CopyrightEnd%
APPLICATION = inets
-INETS_VSN = 5.5.2
+INETS_VSN = 5.6
PRE_VSN =
APP_VSN = "$(APPLICATION)-$(INETS_VSN)$(PRE_VSN)"
diff --git a/lib/jinterface/doc/src/notes.xml b/lib/jinterface/doc/src/notes.xml
index 962be63968..11fcc5f387 100644
--- a/lib/jinterface/doc/src/notes.xml
+++ b/lib/jinterface/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2000</year><year>2010</year>
+ <year>2000</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/kernel/doc/specs/.gitignore b/lib/kernel/doc/specs/.gitignore
new file mode 100644
index 0000000000..322eebcb06
--- /dev/null
+++ b/lib/kernel/doc/specs/.gitignore
@@ -0,0 +1 @@
+specs_*.xml
diff --git a/lib/kernel/doc/src/Makefile b/lib/kernel/doc/src/Makefile
index f8c1cac8b3..de10e31d36 100644
--- a/lib/kernel/doc/src/Makefile
+++ b/lib/kernel/doc/src/Makefile
@@ -1,19 +1,20 @@
-# ``The contents of this file are subject to the Erlang Public License,
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 1997-2011. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
-# retrieved via the world wide web at http://www.erlang.org/.
-#
+# retrieved online at http://www.erlang.org/.
+#
# 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 Utvecklings AB.
-# Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
-# AB. All Rights Reserved.''
-#
-# $Id$
+#
+# %CopyrightEnd%
#
include $(ERL_TOP)/make/target.mk
include $(ERL_TOP)/make/$(TARGET)/otp.mk
@@ -94,19 +95,24 @@ HTML_REF_MAN_FILE = $(HTMLDIR)/index.html
TOP_PDF_FILE = $(PDFDIR)/$(APPLICATION)-$(VSN).pdf
+SPECS_FILES = $(XML_REF3_FILES:%.xml=$(SPECDIR)/specs_%.xml)
+
+TOP_SPECS_FILE = specs.xml
# ----------------------------------------------------
# FLAGS
# ----------------------------------------------------
XML_FLAGS +=
+SPECS_FLAGS = -I../../include
+
# ----------------------------------------------------
# Targets
# ----------------------------------------------------
$(HTMLDIR)/%.gif: %.gif
$(INSTALL_DATA) $< $@
-docs: pdf html man
+docs: man pdf html
$(TOP_PDF_FILE): $(XML_FILES)
@@ -125,8 +131,22 @@ clean clean_docs:
rm -f $(MAN4DIR)/*
rm -f $(MAN6DIR)/*
rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo)
+ rm -f $(SPECDIR)/*
rm -f errs core *~
+$(SPECDIR)/specs_erl_prim_loader_stub.xml:
+ escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) \
+ -o$(dir $@) -module erl_prim_loader_stub
+$(SPECDIR)/specs_erlang_stub.xml:
+ escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) \
+ -o$(dir $@) -module erlang_stub
+$(SPECDIR)/specs_init_stub.xml:
+ escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) \
+ -o$(dir $@) -module init_stub
+$(SPECDIR)/specs_zlib_stub.xml:
+ escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) \
+ -o$(dir $@) -module zlib_stub
+
# ----------------------------------------------------
# Release Target
# ----------------------------------------------------
diff --git a/lib/kernel/doc/src/application.xml b/lib/kernel/doc/src/application.xml
index 47d578a339..51a3311ec2 100644
--- a/lib/kernel/doc/src/application.xml
+++ b/lib/kernel/doc/src/application.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -50,20 +50,27 @@
<p>Refer to <seealso marker="doc/design_principles:des_princ">OTP Design Principles</seealso> for more information about
applications and behaviours.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="start_type"/>
+ </datatype>
+ <datatype>
+ <name name="restart_type"/>
+ </datatype>
+ <datatype>
+ <!-- Parameterized opaque types are NYI: -->
+ <name><marker id="type-tuple_of">tuple_of(T)</marker></name>
+ <desc><p>A tuple where the elements are of type <c>T</c>.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>get_all_env() -> Env</name>
- <name>get_all_env(Application) -> Env</name>
+ <name name="get_all_env" arity="0"/>
+ <name name="get_all_env" arity="1"/>
<fsummary>Get the configuration parameters for an application</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Env = [{Par,Val}]</v>
- <v>&nbsp;Par = atom()</v>
- <v>&nbsp;Val = term()</v>
- </type>
<desc>
<p>Returns the configuration parameters and their values for
- <c>Application</c>. If the argument is omitted, it defaults to
+ <c><anno>Application</anno></c>. If the argument is omitted, it defaults to
the application of the calling process.</p>
<p>If the specified application is not loaded, or if the process
executing the call does not belong to any application,
@@ -71,18 +78,12 @@
</desc>
</func>
<func>
- <name>get_all_key() -> {ok, Keys} | []</name>
- <name>get_all_key(Application) -> {ok, Keys} | undefined </name>
+ <name name="get_all_key" arity="0"/>
+ <name name="get_all_key" arity="1"/>
<fsummary>Get the application specification keys</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Keys = [{Key,Val}]</v>
- <v>&nbsp;Key = atom()</v>
- <v>&nbsp;Val = term()</v>
- </type>
<desc>
<p>Returns the application specification keys and their values
- for <c>Application</c>. If the argument is omitted, it
+ for <c><anno>Application</anno></c>. If the argument is omitted, it
defaults to the application of the calling process.</p>
<p>If the specified application is not loaded, the function
returns <c>undefined</c>. If the process executing the call
@@ -91,17 +92,12 @@
</desc>
</func>
<func>
- <name>get_application() -> {ok, Application} | undefined</name>
- <name>get_application(Pid | Module) -> {ok, Application} | undefined</name>
+ <name name="get_application" arity="0"/>
+ <name name="get_application" arity="1"/>
<fsummary>Get the name of an application containing a certain process or module</fsummary>
- <type>
- <v>Pid = pid()</v>
- <v>Module = atom()</v>
- <v>Application = atom()</v>
- </type>
<desc>
<p>Returns the name of the application to which the process
- <c>Pid</c> or the module <c>Module</c> belongs. Providing no
+ <c><anno>Pid</anno></c> or the module <c><anno>Module</anno></c> belongs. Providing no
argument is the same as calling
<c>get_application(self())</c>.</p>
<p>If the specified process does not belong to any application,
@@ -110,17 +106,12 @@
</desc>
</func>
<func>
- <name>get_env(Par) -> {ok, Val} | undefined</name>
- <name>get_env(Application, Par) -> {ok, Val} | undefined</name>
+ <name name="get_env" arity="1"/>
+ <name name="get_env" arity="2"/>
<fsummary>Get the value of a configuration parameter</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Par = atom()</v>
- <v>Val = term()</v>
- </type>
<desc>
- <p>Returns the value of the configuration parameter <c>Par</c>
- for <c>Application</c>. If the application argument is
+ <p>Returns the value of the configuration parameter <c><anno>Par</anno></c>
+ for <c><anno>Application</anno></c>. If the application argument is
omitted, it defaults to the application of the calling
process.</p>
<p>If the specified application is not loaded, or
@@ -130,17 +121,12 @@
</desc>
</func>
<func>
- <name>get_key(Key) -> {ok, Val} | undefined</name>
- <name>get_key(Application, Key) -> {ok, Val} | undefined</name>
+ <name name="get_key" arity="1"/>
+ <name name="get_key" arity="2"/>
<fsummary>Get the value of an application specification key</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Key = atom()</v>
- <v>Val = term()</v>
- </type>
<desc>
<p>Returns the value of the application specification key
- <c>Key</c> for <c>Application</c>. If the application
+ <c><anno>Key</anno></c> for <c><anno>Application</anno></c>. If the application
argument is omitted, it defaults to the application of
the calling process.</p>
<p>If the specified application is not loaded, or
@@ -150,45 +136,35 @@
</desc>
</func>
<func>
- <name>load(AppDescr) -> ok | {error, Reason}</name>
- <name>load(AppDescr, Distributed) -> ok | {error, Reason}</name>
+ <name name="load" arity="1"/>
+ <name name="load" arity="2"/>
<fsummary>Load an application</fsummary>
- <type>
- <v>AppDescr = Application | AppSpec</v>
- <v>&nbsp;Application = atom()</v>
- <v>&nbsp;AppSpec = {application,Application,AppSpecKeys}</v>
- <v>&nbsp;&nbsp;AppSpec = [{Key,Val}]</v>
- <v>&nbsp;&nbsp;&nbsp;Key = atom()</v>
- <v>&nbsp;&nbsp;&nbsp;Val = term()</v>
- <v>Distributed = {Application,Nodes} | {Application,Time,Nodes} | default</v>
- <v>&nbsp;Nodes = [node() | {node(),..,node()}]</v>
- <v>&nbsp;Time = integer() > 0</v>
- <v>Reason = term()</v>
- </type>
+ <type name="application_spec"/>
+ <type name="application_opt"/>
<desc>
<p>Loads the application specification for an application into
the application controller. It will also load the application
specifications for any included applications. Note that
the function does not load the actual Erlang object code.</p>
- <p>The application can be given by its name <c>Application</c>.
+ <p>The application can be given by its name <c><anno>Application</anno></c>.
In this case the application controller will search the code
- path for the application resource file <c>Application.app</c>
+ path for the application resource file <c><anno>Application</anno>.app</c>
and load the specification it contains.</p>
<p>The application specification can also be given directly as a
- tuple <c>AppSpec</c>. This tuple should have the format and
+ tuple <c><anno>AppSpec</anno></c>. This tuple should have the format and
contents as described in <c>app(4)</c>.</p>
- <p>If <c>Distributed == {Application,[Time,]Nodes}</c>,
+ <p>If <c><anno>Distributed</anno> == {<anno>Application</anno>,[<anno>Time</anno>,]<anno>Nodes</anno>}</c>,
the application will be distributed. The argument overrides
the value for the application in the Kernel configuration
- parameter <c>distributed</c>. <c>Application</c> must be
+ parameter <c>distributed</c>. <c><anno>Application</anno></c> must be
the name of the application (same as in the first argument).
- If a node crashes and <c>Time</c> has been specified, then
- the application controller will wait for <c>Time</c>
+ If a node crashes and <c><anno>Time</anno></c> has been specified, then
+ the application controller will wait for <c><anno>Time</anno></c>
milliseconds before attempting to restart the application on
- another node. If <c>Time</c> is not specified, it will
+ another node. If <c><anno>Time</anno></c> is not specified, it will
default to 0 and the application will be restarted
immediately.</p>
- <p><c>Nodes</c> is a list of node names where the application
+ <p><c><anno>Nodes</anno></c> is a list of node names where the application
may run, in priority from left to right. Node names can be
grouped using tuples to indicate that they have the same
priority. Example:</p>
@@ -204,32 +180,22 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
</desc>
</func>
<func>
- <name>loaded_applications() -> [{Application, Description, Vsn}]</name>
+ <name name="loaded_applications" arity="0"/>
<fsummary>Get the currently loaded applications</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Description = string()</v>
- <v>Vsn = string()</v>
- </type>
<desc>
<p>Returns a list with information about the applications which
have been loaded using <c>load/1,2</c>, also included
- applications. <c>Application</c> is the application name.
- <c>Description</c> and <c>Vsn</c> are the values of its
+ applications. <c><anno>Application</anno></c> is the application name.
+ <c><anno>Description</anno></c> and <c><anno>Vsn</anno></c> are the values of its
<c>description</c> and <c>vsn</c> application specification
keys, respectively.</p>
</desc>
</func>
<func>
- <name>permit(Application, Bool) -> ok | {error, Reason}</name>
+ <name name="permit" arity="2"/>
<fsummary>Change an application's permission to run on a node.</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Bool = bool()</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>Changes the permission for <c>Application</c> to run at
+ <p>Changes the permission for <c><anno>Application</anno></c> to run at
the current node. The application must have been loaded using
<c>load/1,2</c> for the function to have effect.</p>
<p>If the permission of a loaded, but not started, application
@@ -258,20 +224,14 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
</desc>
</func>
<func>
- <name>set_env(Application, Par, Val) -> ok</name>
- <name>set_env(Application, Par, Val, Timeout) -> ok</name>
+ <name name="set_env" arity="3"/>
+ <name name="set_env" arity="4"/>
<fsummary>Set the value of a configuration parameter</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Par = atom()</v>
- <v>Val = term()</v>
- <v>Timeout = int() | infinity</v>
- </type>
<desc>
- <p>Sets the value of the configuration parameter <c>Par</c> for
- <c>Application</c>.</p>
+ <p>Sets the value of the configuration parameter <c><anno>Par</anno></c> for
+ <c><anno>Application</anno></c>.</p>
<p><c>set_env/3</c> uses the standard <c>gen_server</c> timeout
- value (5000 ms). A <c>Timeout</c> argument can be provided
+ value (5000 ms). A <c><anno>Timeout</anno></c> argument can be provided
if another timeout value is useful, for example, in situations
where the application controller is heavily loaded.</p>
<warning>
@@ -285,20 +245,15 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
</desc>
</func>
<func>
- <name>start(Application) -> ok | {error, Reason}</name>
- <name>start(Application, Type) -> ok | {error, Reason}</name>
+ <name name="start" arity="1"/>
+ <name name="start" arity="2"/>
<fsummary>Load and start an application</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Type = permanent | transient | temporary</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>Starts <c>Application</c>. If it is not loaded,
+ <p>Starts <c><anno>Application</anno></c>. If it is not loaded,
the application controller will first load it using
<c>load/1</c>. It will make sure any included applications
are loaded, but will not start them. That is assumed to be
- taken care of in the code for <c>Application</c>.</p>
+ taken care of in the code for <c><anno>Application</anno></c>.</p>
<p>The application controller checks the value of
the application specification key <c>applications</c>, to
ensure that all applications that should be started before
@@ -310,7 +265,7 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
The application master starts the application by calling
the application callback function <c>Module:start/2</c> as
defined by the application specification key <c>mod</c>.</p>
- <p>The <c>Type</c> argument specifies the type of
+ <p>The <c><anno>Type</anno></c> argument specifies the type of
the application. If omitted, it defaults to <c>temporary</c>.</p>
<list type="bulleted">
<item>If a permanent application terminates, all other
@@ -331,19 +286,15 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
</desc>
</func>
<func>
- <name>start_type() -> StartType | local | undefined</name>
+ <name name="start_type" arity="0"/>
<fsummary>Get the start type of an ongoing application startup.</fsummary>
- <type>
- <v>StartType = normal | {takeover,Node} | {failover,Node}</v>
- <v>&nbsp;Node = node()</v>
- </type>
<desc>
<p>This function is intended to be called by a process belonging
to an application, when the application is being started, to
- determine the start type which is either <c>StartType</c> or
+ determine the start type which is either <c><anno>StartType</anno></c> or
<c>local</c>.</p>
- <p>See <c>Module:start/2</c> for a description of
- <c>StartType</c>.</p>
+ <p>See <seealso marker="#start_type"><c>Module:start/2</c></seealso> for a description of
+ <c><anno>StartType</anno></c>.</p>
<p><c>local</c> is returned if only parts of the application is
being restarted (by a supervisor), or if the function is
called outside a startup.</p>
@@ -352,14 +303,10 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
</desc>
</func>
<func>
- <name>stop(Application) -> ok | {error, Reason}</name>
+ <name name="stop" arity="1"/>
<fsummary>Stop an application</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>Stops <c>Application</c>. The application master calls
+ <p>Stops <c><anno>Application</anno></c>. The application master calls
<c>Module:prep_stop/1</c>, if such a function is defined, and
then tells the top supervisor of the application to shutdown
(see <c>supervisor(3)</c>). This means that the entire
@@ -384,16 +331,11 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
</desc>
</func>
<func>
- <name>takeover(Application, Type) -> ok | {error, Reason}</name>
+ <name name="takeover" arity="2"/>
<fsummary>Take over a distributed application</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Type = permanent | transient | temporary</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>Performs a takeover of the distributed application
- <c>Application</c>, which executes at another node
+ <c><anno>Application</anno></c>, which executes at another node
<c>Node</c>. At the current node, the application is
restarted by calling
<c>Module:start({takeover,Node},StartArgs)</c>. <c>Module</c>
@@ -413,14 +355,10 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
</desc>
</func>
<func>
- <name>unload(Application) -> ok | {error, Reason}</name>
+ <name name="unload" arity="1"/>
<fsummary>Unload an application</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>Unloads the application specification for <c>Application</c>
+ <p>Unloads the application specification for <c><anno>Application</anno></c>
from the application controller. It will also unload
the application specifications for any included applications.
Note that the function does not purge the actual Erlang
@@ -428,19 +366,14 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
</desc>
</func>
<func>
- <name>unset_env(Application, Par) -> ok</name>
- <name>unset_env(Application, Par, Timeout) -> ok</name>
+ <name name="unset_env" arity="2"/>
+ <name name="unset_env" arity="3"/>
<fsummary>Unset the value of a configuration parameter</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Par = atom()</v>
- <v>Timeout = int() | infinity</v>
- </type>
<desc>
- <p>Removes the configuration parameter <c>Par</c> and its value
- for <c>Application</c>.</p>
+ <p>Removes the configuration parameter <c><anno>Par</anno></c> and its value
+ for <c><anno>Application</anno></c>.</p>
<p><c>unset_env/2</c> uses the standard <c>gen_server</c>
- timeout value (5000 ms). A <c>Timeout</c> argument can be
+ timeout value (5000 ms). A <c><anno>Timeout</anno></c> argument can be
provided if another timeout value is useful, for example, in
situations where the application controller is heavily loaded.</p>
<warning>
@@ -454,23 +387,17 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
</desc>
</func>
<func>
- <name>which_applications() -> [{Application, Description, Vsn}]</name>
- <name>which_applications(Timeout) -> [{Application, Description, Vsn}]</name>
+ <name name="which_applications" arity="0"/>
+ <name name="which_applications" arity="1"/>
<fsummary>Get the currently running applications</fsummary>
- <type>
- <v>Application = atom()</v>
- <v>Description = string()</v>
- <v>Vsn = string()</v>
- <v>Timeout = int() | infinity</v>
- </type>
<desc>
<p>Returns a list with information about the applications which
- are currently running. <c>Application</c> is the application
- name. <c>Description</c> and <c>Vsn</c> are the values of its
+ are currently running. <c><anno>Application</anno></c> is the application
+ name. <c><anno>Description</anno></c> and <c><anno>Vsn</anno></c> are the values of its
<c>description</c> and <c>vsn</c> application specification
keys, respectively.</p>
<p><c>which_applications/0</c> uses the standard
- <c>gen_server</c> timeout value (5000 ms). A <c>Timeout</c>
+ <c>gen_server</c> timeout value (5000 ms). A <c><anno>Timeout</anno></c>
argument can be provided if another timeout value is useful,
for example, in situations where the application controller
is heavily loaded.</p>
@@ -501,7 +428,7 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
structured according to the OTP design principles as a
supervision tree, this means starting the top supervisor of
the tree.</p>
- <p><c>StartType</c> defines the type of start:</p>
+ <p><marker id="start_type"/><c>StartType</c> defines the type of start:</p>
<list type="bulleted">
<item><c>normal</c> if it's a normal startup.</item>
<item><c>normal</c> also if the application is distributed and
@@ -532,8 +459,7 @@ Nodes = [cp1@cave, {cp2@cave, cp3@cave}]</code>
<fsummary>Extended start of an application</fsummary>
<type>
<v>Phase = atom()</v>
- <v>StartType = normal | {takeover,Node} | {failover,Node}</v>
- <v>&nbsp;Node = node()</v>
+ <v>StartType = <seealso marker="#type-start_type">start_type()</seealso></v>
<v>PhaseArgs = term()</v>
<v>Pid = pid()</v>
<v>State = state()</v>
diff --git a/lib/kernel/doc/src/auth.xml b/lib/kernel/doc/src/auth.xml
index f53fc8b29a..15d9ef0fe4 100644
--- a/lib/kernel/doc/src/auth.xml
+++ b/lib/kernel/doc/src/auth.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -34,29 +34,28 @@
Cookie system, refer to
<seealso marker="doc/reference_manual:distributed">Distributed Erlang</seealso> in the Erlang Reference Manual.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="cookie"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>is_auth(Node) -> yes | no</name>
+ <name name="is_auth" arity="1"/>
<fsummary>Status of communication authorization (deprecated)</fsummary>
- <type>
- <v>Node = node()</v>
- </type>
<desc>
- <p>Returns <c>yes</c> if communication with <c>Node</c> is
- authorized. Note that a connection to <c>Node</c> will
- be established in this case. Returns <c>no</c> if <c>Node</c>
+ <p>Returns <c>yes</c> if communication with <c><anno>Node</anno></c> is
+ authorized. Note that a connection to <c><anno>Node</anno></c> will
+ be established in this case. Returns <c>no</c> if <c><anno>Node</anno></c>
does not exist or communication is not authorized (it has
another cookie than <c>auth</c> thinks it has).</p>
- <p>Use <seealso marker="net_adm#ping/1">net_adm:ping(Node)</seealso>
+ <p>Use <seealso marker="net_adm#ping/1">net_adm:ping(<anno>Node</anno>)</seealso>
instead.</p>
</desc>
</func>
<func>
- <name>cookie() -> Cookie</name>
+ <name name="cookie" arity="0"/>
<fsummary>Magic cookie for local node (deprecated)</fsummary>
- <type>
- <v>Cookie = atom()</v>
- </type>
<desc>
<p>Use
<seealso marker="erts:erlang#erlang:get_cookie/0">erlang:get_cookie()</seealso>
@@ -64,16 +63,14 @@
</desc>
</func>
<func>
- <name>cookie(TheCookie) -> true</name>
+ <name name="cookie" arity="1"/>
<fsummary>Set the magic for the local node (deprecated)</fsummary>
- <type>
- <v>TheCookie = Cookie | [Cookie]</v>
- <d>The cookie may also be given as a list with a single atom element</d>
- <v>&nbsp;Cookie = atom()</v>
- </type>
+ <type_desc variable="TheCookie">
+ The cookie may also be given as a list with a single atom element.
+ </type_desc>
<desc>
<p>Use
- <seealso marker="erts:erlang#erlang:set_cookie/2">erlang:set_cookie(node(), Cookie)</seealso>
+ <seealso marker="erts:erlang#erlang:set_cookie/2">erlang:set_cookie(node(), <anno>Cookie</anno>)</seealso>
instead.</p>
</desc>
</func>
@@ -82,7 +79,7 @@
<fsummary>Set the magic cookie for a node and verify authorization (deprecated)</fsummary>
<type>
<v>Node = node()</v>
- <v>Cookie = atom()</v>
+ <v>Cookie = <seealso marker="#type-cookie">cookie()</seealso></v>
</type>
<desc>
<p>Equivalent to
@@ -90,18 +87,14 @@
</desc>
</func>
<func>
- <name>node_cookie(Node, Cookie) -> yes | no</name>
+ <name name="node_cookie" arity="2"/>
<fsummary>Set the magic cookie for a node and verify authorization (deprecated)</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Cookie = atom()</v>
- </type>
<desc>
- <p>Sets the magic cookie of <c>Node</c> to <c>Cookie</c>, and
+ <p>Sets the magic cookie of <c><anno>Node</anno></c> to <c><anno>Cookie</anno></c>, and
verifies the status of the authorization.
Equivalent to calling
- <seealso marker="erts:erlang#erlang:set_cookie/2">erlang:set_cookie(Node, Cookie)</seealso>, followed by
- <seealso marker="#is_auth/1">auth:is_auth(Node)</seealso>.</p>
+ <seealso marker="erts:erlang#erlang:set_cookie/2">erlang:set_cookie(<anno>Node</anno>, <anno>Cookie</anno>)</seealso>, followed by
+ <seealso marker="#is_auth/1">auth:is_auth(<anno>Node</anno>)</seealso>.</p>
</desc>
</func>
</funcs>
diff --git a/lib/kernel/doc/src/code.xml b/lib/kernel/doc/src/code.xml
index 4b8f934df1..6f85388c22 100644
--- a/lib/kernel/doc/src/code.xml
+++ b/lib/kernel/doc/src/code.xml
@@ -286,6 +286,12 @@
given to <c>set_path/1</c>.</p>
</section>
+ <datatypes>
+ <datatype>
+ <name name="load_error_rsn"/>
+ </datatype>
+ </datatypes>
+
<funcs>
<func>
<name>set_path(Path) -> true | {error, What}</name>
diff --git a/lib/kernel/doc/src/disk_log.xml b/lib/kernel/doc/src/disk_log.xml
index 324d4264cf..9721907162 100644
--- a/lib/kernel/doc/src/disk_log.xml
+++ b/lib/kernel/doc/src/disk_log.xml
@@ -179,13 +179,48 @@
reopen the log simultaneously.</p>
</note>
</description>
+ <datatypes>
+ <datatype>
+ <name name="log"/>
+ </datatype>
+ <datatype>
+ <name name="dlog_size"/>
+ </datatype>
+ <datatype>
+ <name name="dlog_format"/>
+ </datatype>
+ <datatype>
+ <name name="dlog_head_opt"/>
+ </datatype>
+ <datatype>
+ <name name="dlog_byte"/>
+ </datatype>
+ <datatype>
+ <name name="dlog_mode"/>
+ </datatype>
+ <datatype>
+ <name name="dlog_type"/>
+ </datatype>
+ <datatype>
+ <name name="continuation"/>
+ <desc><p>Chunk continuation returned by
+ <c>chunk/2,3</c>, <c>bchunk/2,3</c>, or <c>chunk_step/3</c>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="bytes"/>
+ </datatype>
+ <datatype>
+ <name name="invalid_header"/>
+ </datatype>
+ <datatype>
+ <name name="file_error"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>accessible_logs() -> {[LocalLog], [DistributedLog]}</name>
+ <name name="accessible_logs" arity="0"/>
<fsummary>Return the accessible disk logs on the current node.</fsummary>
- <type>
- <v>LocalLog = DistributedLog = term()</v>
- </type>
<desc>
<p>The <c>accessible_logs/0</c> function returns
the names of the disk logs accessible on the current node.
@@ -195,16 +230,13 @@
</desc>
</func>
<func>
- <name>alog(Log, Term)</name>
- <name>balog(Log, Bytes) -> ok | {error, Reason}</name>
+ <name name="alog" arity="2"/>
+ <name name="balog" arity="2"/>
+ <type variable="Log"/>
+ <type variable="Term" name_i="1"/>
+ <type variable="Bytes"/>
+ <type name="notify_ret"/>
<fsummary>Asynchronously log an item onto a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Term = term()</v>
- <v>Bytes = binary() | [Byte]</v>
- <v>Byte = [Byte] | 0 =&lt; integer() =&lt; 255</v>
- <v>Reason = no_such_log</v>
- </type>
<desc>
<p>The <c>alog/2</c> and <c>balog/2</c> functions asynchronously
append an item to a disk log. The function <c>alog/2</c> is
@@ -225,17 +257,13 @@
</desc>
</func>
<func>
- <name>alog_terms(Log, TermList)</name>
- <name>balog_terms(Log, BytesList) -> ok | {error, Reason}</name>
+ <name name="alog_terms" arity="2"/>
+ <name name="balog_terms" arity="2"/>
<fsummary>Asynchronously log several items onto a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>TermList = [term()]</v>
- <v>BytesList = [Bytes]</v>
- <v>Bytes = binary() | [Byte]</v>
- <v>Byte = [Byte] | 0 =&lt; integer() =&lt; 255</v>
- <v>Reason = no_such_log</v>
- </type>
+ <type variable="Log"/>
+ <type variable="TermList" name_i="1"/>
+ <type variable="ByteList"/>
+ <type name="notify_ret"/>
<desc>
<p>The <c>alog_terms/2</c> and <c>balog_terms/2</c> functions
asynchronously append a list of items to a disk log.
@@ -257,14 +285,10 @@
</desc>
</func>
<func>
- <name>block(Log)</name>
- <name>block(Log, QueueLogRecords) -> ok | {error, Reason}</name>
+ <name name="block" arity="1"/>
+ <name name="block" arity="2"/>
+ <type name="block_error_rsn"/>
<fsummary>Block a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>QueueLogRecords = bool()</v>
- <v>Reason = no_such_log | nonode | {blocked_log, Log}</v>
- </type>
<desc>
<p>With a call to <c>block/1,2</c> a process can block a log.
If the blocking process is not an owner of the log, a temporary
@@ -280,52 +304,32 @@
affected by the block. Any other attempt than those hitherto
mentioned to update or read a blocked log suspends the
calling process until the log is unblocked or returns an
- error message <c>{blocked_log, Log}</c>, depending on
- whether the value of <c>QueueLogRecords</c> is <c>true</c>
- or <c>false</c>. The default value of <c>QueueLogRecords</c>
+ error message <c>{blocked_log, <anno>Log</anno>}</c>, depending on
+ whether the value of <c><anno>QueueLogRecords</anno></c> is <c>true</c>
+ or <c>false</c>. The default value of <c><anno>QueueLogRecords</anno></c>
is <c>true</c>, which is used by <c>block/1</c>.
</p>
</desc>
</func>
<func>
- <name>change_header(Log, Header) -> ok | {error, Reason}</name>
+ <name name="change_header" arity="2"/>
<fsummary>Change the head or head_func option for an owner of a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Header = {head, Head} | {head_func, {M,F,A}}</v>
- <v>Head = none | term() | binary() | [Byte]</v>
- <v>Byte = [Byte] | 0 =&lt; integer() =&lt; 255</v>
- <v>Reason = no_such_log | nonode | {read_only_mode, Log} | {blocked_log, Log} | {badarg, head}</v>
- </type>
<desc>
<p>The <c>change_header/2</c> function changes the value of
the <c>head</c> or <c>head_func</c> option of a disk log.</p>
</desc>
</func>
<func>
- <name>change_notify(Log, Owner, Notify) -> ok | {error, Reason}</name>
+ <name name="change_notify" arity="3"/>
<fsummary>Change the notify option for an owner of a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Owner = pid()</v>
- <v>Notify = bool()</v>
- <v>Reason = no_such_log | nonode | {blocked_log, Log} | {badarg, notify} | {not_owner, Owner}</v>
- </type>
<desc>
<p>The <c>change_notify/3</c> function changes the value of the
<c>notify</c> option for an owner of a disk log. </p>
</desc>
</func>
<func>
- <name>change_size(Log, Size) -> ok | {error, Reason}</name>
+ <name name="change_size" arity="2"/>
<fsummary>Change the size of an open disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Size = integer() > 0 | infinity | {MaxNoBytes, MaxNoFiles}</v>
- <v>MaxNoBytes = integer() > 0</v>
- <v>MaxNoFiles = integer() > 0</v>
- <v>Reason = no_such_log | nonode | {read_only_mode, Log} | {blocked_log, Log} | {new_size_too_small, CurrentSize} | {badarg, size} | {file_error, FileName, FileError}</v>
- </type>
<desc>
<p>The <c>change_size/2</c> function changes the size of an open log.
For a halt log it is always possible to increase the size,
@@ -363,21 +367,17 @@
</desc>
</func>
<func>
- <name>chunk(Log, Continuation)</name>
- <name>chunk(Log, Continuation, N) -> {Continuation2, Terms} | {Continuation2, Terms, Badbytes} | eof | {error, Reason}</name>
- <name>bchunk(Log, Continuation)</name>
- <name>bchunk(Log, Continuation, N) -> {Continuation2, Binaries} | {Continuation2, Binaries, Badbytes} | eof | {error, Reason}</name>
+ <name name="chunk" arity="2"/>
+ <name name="chunk" arity="3"/>
+ <name name="bchunk" arity="2"/>
+ <name name="bchunk" arity="3"/>
<fsummary>Read a chunk of items written to a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Continuation = start | cont()</v>
- <v>N = integer() > 0 | infinity</v>
- <v>Continuation2 = cont()</v>
- <v>Terms = [term()]</v>
- <v>Badbytes = integer()</v>
- <v>Reason = no_such_log | {format_external, Log} | {blocked_log, Log} | {badarg, continuation} | {not_internal_wrap, Log} | {corrupt_log_file, FileName} | {file_error, FileName, FileError}</v>
- <v>Binaries = [binary()]</v>
- </type>
+ <type variable="Log"/>
+ <type variable="Continuation"/>
+ <type variable="N"/>
+ <type name="chunk_ret"/>
+ <type name="bchunk_ret"/>
+ <type name="chunk_error_rsn"/>
<desc>
<p>The <c>chunk/2,3</c> and <c>bchunk/2,3</c> functions make
it possible to efficiently read the terms which have been
@@ -394,31 +394,31 @@
individual distributed log on some other node is chosen, if
such a log exists.
</p>
- <p>When <c>chunk/3</c> is called, <c>N</c> controls the
+ <p>When <c>chunk/3</c> is called, <c><anno>N</anno></c> controls the
maximum number of terms that are read from the log in each
chunk. Default is <c>infinity</c>, which means that all the
terms contained in the 64 kilobyte chunk are read. If less than
- <c>N</c> terms are returned, this does not necessarily mean
+ <c><anno>N</anno></c> terms are returned, this does not necessarily mean
that the end of the file has been reached.
</p>
<p>The <c>chunk</c> function returns a tuple
- <c>{Continuation2, Terms}</c>, where <c>Terms</c> is a list
- of terms found in the log. <c>Continuation2</c> is yet
+ <c>{<anno>Continuation2</anno>, <anno>Terms</anno>}</c>, where <c><anno>Terms</anno></c> is a list
+ of terms found in the log. <c><anno>Continuation2</anno></c> is yet
another continuation which must be passed on to any
subsequent calls to <c>chunk</c>. With a series of calls to
<c>chunk</c> it is possible to extract all terms from a log.
</p>
<p>The <c>chunk</c> function returns a tuple
- <c>{Continuation2, Terms, Badbytes}</c> if the log is opened
- in read-only mode and the read chunk is corrupt. <c>Badbytes</c>
+ <c>{<anno>Continuation2</anno>, <anno>Terms</anno>, <anno>Badbytes</anno>}</c> if the log is opened
+ in read-only mode and the read chunk is corrupt. <c><anno>Badbytes</anno></c>
is the number of bytes in the file which were found not to be
Erlang terms in the chunk. Note also that the log is not repaired.
When trying to read chunks from a log opened in read-write mode,
- the tuple <c>{corrupt_log_file, FileName}</c> is returned if the
+ the tuple <c>{corrupt_log_file, <anno>FileName</anno>}</c> is returned if the
read chunk is corrupt.
</p>
<p><c>chunk</c> returns <c>eof</c> when the end of the log is
- reached, or <c>{error, Reason}</c> if an error occurs. Should
+ reached, or <c>{error, <anno>Reason</anno>}</c> if an error occurs. Should
a wrap log file be missing, a message is output on the error log.
</p>
<p>When <c>chunk/2,3</c> is used with wrap logs, the returned
@@ -431,12 +431,8 @@
</desc>
</func>
<func>
- <name>chunk_info(Continuation) -> InfoList | {error, Reason}</name>
+ <name name="chunk_info" arity="1"/>
<fsummary>Return information about a chunk continuation of a disk log.</fsummary>
- <type>
- <v>Continuation = cont()</v>
- <v>Reason = {no_continuation, Continuation}</v>
- </type>
<desc>
<p>The <c>chunk_info/1</c> function returns the following pair
describing the chunk continuation returned by
@@ -444,29 +440,22 @@
</p>
<list type="bulleted">
<item>
- <p><c>{node, Node}</c>. Terms are read from
- the disk log running on <c>Node</c>.</p>
+ <p><c>{node, <anno>Node</anno>}</c>. Terms are read from
+ the disk log running on <c><anno>Node</anno></c>.</p>
</item>
</list>
</desc>
</func>
<func>
- <name>chunk_step(Log, Continuation, Step) -> {ok, Continuation2} | {error, Reason}</name>
+ <name name="chunk_step" arity="3"/>
<fsummary>Step forward or backward among the wrap log files of a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Continuation = start | cont()</v>
- <v>Step = integer()</v>
- <v>Continuation2 = cont()</v>
- <v>Reason = no_such_log | end_of_log | {format_external, Log} | {blocked_log, Log} | {badarg, continuation} | {file_error, FileName, FileError}</v>
- </type>
<desc>
<p>The function <c>chunk_step</c> can be used in conjunction
with <c>chunk/2,3</c> and <c>bchunk/2,3</c> to search
through an internally formatted wrap log. It takes as
argument a continuation as returned by <c>chunk/2,3</c>,
<c>bchunk/2,3</c>, or <c>chunk_step/3</c>, and steps forward
- (or backward) <c>Step</c> files in the wrap log. The
+ (or backward) <c><anno>Step</anno></c> files in the wrap log. The
continuation returned points to the first log item in the
new current file.
</p>
@@ -482,11 +471,9 @@
</desc>
</func>
<func>
- <name>close(Log) -> ok | {error, Reason}</name>
+ <name name="close" arity="1"/>
<fsummary>Close a disk log.</fsummary>
- <type>
- <v>Reason = no_such_log | nonode | {file_error, FileName, FileError}</v>
- </type>
+ <type name="close_error_rsn"/>
<desc>
<p> <marker id="close_1"></marker>
The function <c>close/1</c> closes a
@@ -511,11 +498,8 @@ The function <c>close/1</c> closes a
</desc>
</func>
<func>
- <name>format_error(Error) -> Chars</name>
+ <name name="format_error" arity="1"/>
<fsummary>Return an English description of a disk log error reply.</fsummary>
- <type>
- <v>Chars = [char() | Chars]</v>
- </type>
<desc>
<p>Given the error returned by any function in this module,
the function <c>format_error</c> returns a descriptive string
@@ -524,11 +508,10 @@ The function <c>close/1</c> closes a
</desc>
</func>
<func>
- <name>inc_wrap_file(Log) -> ok | {error, Reason}</name>
+ <name name="inc_wrap_file" arity="1"/>
<fsummary>Change to the next wrap log file of a disk log.</fsummary>
- <type>
- <v>Reason = no_such_log | nonode | {read_only_mode, Log} | {blocked_log, Log} | {halt_log, Log} | {invalid_header, InvalidHeader} | {file_error, FileName, FileError}</v>
- </type>
+ <type name="inc_wrap_error_rsn"/>
+ <type name="invalid_header"/>
<desc>
<p>The <c>inc_wrap_file/1</c> function forces the internally formatted
disk log to start logging to the
@@ -543,8 +526,9 @@ The function <c>close/1</c> closes a
</desc>
</func>
<func>
- <name>info(Log) -> InfoList | {error, no_such_log}</name>
+ <name name="info" arity="1"/>
<fsummary>Return information about a disk log.</fsummary>
+ <type name="dlog_info"/>
<desc>
<p>The <c>info/1</c> function returns a list of <c>{Tag, Value}</c>
pairs describing the log. If there is a disk log process running
@@ -556,55 +540,55 @@ The function <c>close/1</c> closes a
</p>
<list type="bulleted">
<item>
- <p><c>{name, Log}</c>, where <c>Log</c> is the name of
+ <p><c>{name, <anno>Log</anno>}</c>, where <c><anno>Log</anno></c> is the name of
the log as given by the <c>open/1</c> option <c>name</c>.</p>
</item>
<item>
- <p><c>{file, File}</c>. For halt logs <c>File</c> is the
- filename, and for wrap logs <c>File</c> is the base name.</p>
+ <p><c>{file, <anno>File</anno>}</c>. For halt logs <c><anno>File</anno></c> is the
+ filename, and for wrap logs <c><anno>File</anno></c> is the base name.</p>
</item>
<item>
- <p><c>{type, Type}</c>, where <c>Type</c> is the type of
+ <p><c>{type, <anno>Type</anno>}</c>, where <c><anno>Type</anno></c> is the type of
the log as given by the <c>open/1</c> option <c>type</c>.</p>
</item>
<item>
- <p><c>{format, Format}</c>, where <c>Format</c> is the format
+ <p><c>{format, <anno>Format</anno>}</c>, where <c><anno>Format</anno></c> is the format
of the log as given by the <c>open/1</c> option <c>format</c>.</p>
</item>
<item>
- <p><c>{size, Size}</c>, where <c>Size</c> is the size
+ <p><c>{size, <anno>Size</anno>}</c>, where <c><anno>Size</anno></c> is the size
of the log as given by the <c>open/1</c> option <c>size</c>,
or the size set by <c>change_size/2</c>. The value set by
<c>change_size/2</c> is reflected immediately.</p>
</item>
<item>
- <p><c>{mode, Mode}</c>, where <c>Mode</c> is the mode
+ <p><c>{mode, <anno>Mode</anno>}</c>, where <c><anno>Mode</anno></c> is the mode
of the log as given by the <c>open/1</c> option <c>mode</c>.</p>
</item>
<item>
- <p><c>{owners, [{pid(), Notify}]}</c> where <c>Notify</c>
+ <p><c>{owners, [{pid(), <anno>Notify</anno>}]}</c> where <c><anno>Notify</anno></c>
is the value set by the <c>open/1</c> option <c>notify</c>
or the function <c>change_notify/3</c> for the owners of
the log.</p>
</item>
<item>
- <p><c>{users, Users}</c> where <c>Users</c> is the number
+ <p><c>{users, <anno>Users</anno>}</c> where <c><anno>Users</anno></c> is the number
of anonymous users of the log, see the <c>open/1</c> option
<seealso marker="#linkto">linkto</seealso>.</p>
</item>
<item>
- <p><c>{status, Status}</c>, where <c>Status</c> is <c>ok</c>
- or <c>{blocked, QueueLogRecords}</c> as set by the functions
+ <p><c>{status, <anno>Status</anno>}</c>, where <c><anno>Status</anno></c> is <c>ok</c>
+ or <c>{blocked, <anno>QueueLogRecords</anno>}</c> as set by the functions
<c>block/1,2</c> and <c>unblock/1</c>.</p>
</item>
<item>
- <p><c>{node, Node}</c>. The information returned by the
+ <p><c>{node, <anno>Node</anno>}</c>. The information returned by the
current invocation of the <c>info/1</c> function has been
- gathered from the disk log process running on <c>Node</c>.</p>
+ gathered from the disk log process running on <c><anno>Node</anno></c>.</p>
</item>
<item>
- <p><c>{distributed, Dist}</c>. If the log is local on
- the current node, then <c>Dist</c> has the value <c>local</c>,
+ <p><c>{distributed, <anno>Dist</anno>}</c>. If the log is local on
+ the current node, then <c><anno>Dist</anno></c> has the value <c>local</c>,
otherwise all nodes where the log is distributed
are returned as a list.</p>
</item>
@@ -614,16 +598,16 @@ The function <c>close/1</c> closes a
</p>
<list type="bulleted">
<item>
- <p><c>{head, Head}</c>. Depending of the value of
+ <p><c>{head, <anno>Head</anno>}</c>. Depending of the value of
the <c>open/1</c> options <c>head</c> and <c>head_func</c>
or set by the function <c>change_header/2</c>, the value
- of <c>Head</c> is <c>none</c> (default),
+ of <c><anno>Head</anno></c> is <c>none</c> (default),
<c>{head, H}</c> (<c>head</c> option) or <c>{M,F,A}</c>
(<c>head_func</c> option).</p>
</item>
<item>
- <p><c>{no_written_items, NoWrittenItems}</c>, where
- <c>NoWrittenItems</c> is the number of items
+ <p><c>{no_written_items, <anno>NoWrittenItems</anno>}</c>, where
+ <c><anno>NoWrittenItems</anno></c> is the number of items
written to the log since the disk log process was created.</p>
</item>
</list>
@@ -632,7 +616,7 @@ The function <c>close/1</c> closes a
</p>
<list type="bulleted">
<item>
- <p><c>{full, Full}</c>, where <c>Full</c> is <c>true</c> or
+ <p><c>{full, <anno>Full</anno>}</c>, where <c><anno>Full</anno></c> is <c>true</c> or
<c>false</c> depending on whether the halt log is full or not.</p>
</item>
</list>
@@ -660,8 +644,8 @@ The function <c>close/1</c> closes a
<c>size</c> or set by <c>change_size/2</c>.</p>
</item>
<item>
- <p><c>{no_overflows, {SinceLogWasOpened, SinceLastInfo}}</c>,
- where <c>SinceLogWasOpened</c> (<c>SinceLastInfo</c>) is
+ <p><c>{no_overflows, {<anno>SinceLogWasOpened</anno>, <anno>SinceLastInfo</anno>}}</c>,
+ where <c><anno>SinceLogWasOpened</anno></c> (<c><anno>SinceLastInfo</anno></c>) is
the number of times a wrap log file has been filled up and a
new one opened or <c>inc_wrap_file/1</c> has been called since
the disk log was last opened (<c>info/1</c>
@@ -677,21 +661,18 @@ The function <c>close/1</c> closes a
</desc>
</func>
<func>
- <name>lclose(Log)</name>
- <name>lclose(Log, Node) -> ok | {error, Reason}</name>
+ <name name="lclose" arity="1"/>
+ <name name="lclose" arity="2"/>
+ <type name="lclose_error_rsn"/>
<fsummary>Close a disk log on one node.</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Reason = no_such_log | {file_error, FileName, FileError}</v>
- </type>
<desc>
<p>The function <c>lclose/1</c> closes a local log or an
individual distributed log on the current node.
The function <c>lclose/2</c> closes an individual
distributed log on the specified node if the node
is not the current one.
- <c>lclose(Log)</c> is equivalent to
- <c>lclose(Log,&nbsp;node())</c>.
+ <c>lclose(<anno>Log</anno>)</c> is equivalent to
+ <c>lclose(<anno>Log</anno>,&nbsp;node())</c>.
See also <seealso marker="#close_1">close/1</seealso>.
</p>
<p>If there is no log with the given name
@@ -700,20 +681,17 @@ The function <c>close/1</c> closes a
</desc>
</func>
<func>
- <name>log(Log, Term)</name>
- <name>blog(Log, Bytes) -> ok | {error, Reason}</name>
+ <name name="log" arity="2"/>
+ <name name="blog" arity="2"/>
<fsummary>Log an item onto a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Term = term()</v>
- <v>Bytes = binary() | [Byte]</v>
- <v>Byte = [Byte] | 0 =&lt; integer() =&lt; 255</v>
- <v>Reason = no_such_log | nonode | {read_only_mode, Log} | {format_external, Log} | {blocked_log, Log} | {full, Log} | {invalid_header, InvalidHeader} | {file_error, FileName, FileError}</v>
- </type>
+ <type variable="Log"/>
+ <type variable="Term" name_i="1"/>
+ <type variable="Bytes"/>
+ <type name="log_error_rsn"/>
<desc>
<p>The <c>log/2</c> and <c>blog/2</c> functions synchronously
append a term to a disk log. They return <c>ok</c> or
- <c>{error, Reason}</c> when the term has been written to
+ <c>{error, <anno>Reason</anno>}</c> when the term has been written to
disk. If the log is distributed, <c>ok</c> is always
returned, unless all nodes are down. Terms are written by
means of the ordinary <c>write()</c> function of the
@@ -736,17 +714,13 @@ The function <c>close/1</c> closes a
</desc>
</func>
<func>
- <name>log_terms(Log, TermList)</name>
- <name>blog_terms(Log, BytesList) -> ok | {error, Reason}</name>
+ <name name="log_terms" arity="2"/>
+ <name name="blog_terms" arity="2"/>
<fsummary>Log several items onto a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>TermList = [term()]</v>
- <v>BytesList = [Bytes]</v>
- <v>Bytes = binary() | [Byte]</v>
- <v>Byte = [Byte] | 0 =&lt; integer() =&lt; 255</v>
- <v>Reason = no_such_log | nonode | {read_only_mode, Log} | {format_external, Log} | {blocked_log, Log} | {full, Log} | {invalid_header, InvalidHeader} | {file_error, FileName, FileError}</v>
- </type>
+ <type variable="Log"/>
+ <type variable="TermList" name_i="1"/>
+ <type variable="BytesList"/>
+ <type name="log_error_rsn"/>
<desc>
<p>The <c>log_terms/2</c> and <c>blog_terms/2</c> functions
synchronously append a list of items to the log. The benefit
@@ -769,47 +743,33 @@ The function <c>close/1</c> closes a
</desc>
</func>
<func>
- <name>open(ArgL) -> OpenRet | DistOpenRet</name>
+ <name name="open" arity="1"/>
+ <type name="dlog_options"/>
+ <type name="dlog_option"/>
+ <type name="open_ret"/>
+ <type name="ret"/>
+ <type name="dist_open_ret"/>
+ <type name="dist_error_rsn"/>
+ <type name="open_error_rsn"/>
+ <type name="dlog_optattr"/>
+ <type name="dlog_size"/>
<fsummary>Open a disk log file.</fsummary>
- <type>
- <v>ArgL = [Opt]</v>
- <v>Opt = {name, term()} | {file, FileName}, {linkto, LinkTo} | {repair, Repair} | {type, Type} | {format, Format} | {size, Size} | {distributed, [Node]} | {notify, bool()} | {head, Head} | {head_func, {M,F,A}} | {mode, Mode}</v>
- <v>FileName = string() | atom()</v>
- <v>LinkTo = pid() | none</v>
- <v>Repair = true | false | truncate</v>
- <v>Type = halt | wrap</v>
- <v>Format = internal | external</v>
- <v>Size = integer() > 0 | infinity | {MaxNoBytes, MaxNoFiles}</v>
- <v>MaxNoBytes = integer() > 0</v>
- <v>MaxNoFiles = 0 &lt; integer() &lt; 65000</v>
- <v>Rec = integer()</v>
- <v>Bad = integer()</v>
- <v>Head = none | term() | binary() | [Byte]</v>
- <v>Byte = [Byte] | 0 =&lt; integer() =&lt; 255</v>
- <v>Mode = read_write | read_only</v>
- <v>OpenRet = Ret | {error, Reason}</v>
- <v>DistOpenRet = {[{Node, Ret}], [{BadNode, {error, DistReason}}]}</v>
- <v>Node = BadNode = atom()</v>
- <v>Ret = {ok, Log} | {repaired, Log, {recovered, Rec}, {badbytes, Bad}}</v>
- <v>DistReason = nodedown | Reason</v>
- <v>Reason = no_such_log | {badarg, Arg} | {size_mismatch, CurrentSize, NewSize} | {arg_mismatch, OptionName, CurrentValue, Value} | {name_already_open, Log} | {open_read_write, Log} | {open_read_only, Log} | {need_repair, Log} | {not_a_log_file, FileName} | {invalid_index_file, FileName} | {invalid_header, InvalidHeader} | {file_error, FileName, FileError} | {node_already_open, Log}</v>
- </type>
<desc>
- <p>The <c>ArgL</c> parameter is a list of options which have
+ <p>The <c><anno>ArgL</anno></c> parameter is a list of options which have
the following meanings:</p>
<list type="bulleted">
<item>
- <p><c>{name, Log}</c> specifies the name of the log.
+ <p><c>{name, <anno>Log</anno>}</c> specifies the name of the log.
This is the name which must be passed on as a parameter in
all subsequent logging operations. A name must always
be supplied.
</p>
</item>
<item>
- <p><c>{file, FileName}</c> specifies the name of the
+ <p><c>{file, <anno>FileName</anno>}</c> specifies the name of the
file which will be used for logged terms. If this value is
omitted and the name of the log is either an atom or a string,
- the file name will default to <c>lists:concat([Log, ".LOG"])</c> for halt logs. For wrap logs, this will be
+ the file name will default to <c>lists:concat([<anno>Log</anno>, ".LOG"])</c> for halt logs. For wrap logs, this will be
the base name of the files. Each file in a wrap log
will be called <c><![CDATA[<base_name>.N]]></c>, where <c>N</c> is an
integer. Each wrap log will also have two files called
@@ -817,22 +777,22 @@ The function <c>close/1</c> closes a
</p>
</item>
<item>
- <p><c>{linkto, LinkTo}</c>. <marker id="linkto"></marker>
+ <p><c>{linkto, <anno>LinkTo</anno>}</c>. <marker id="linkto"></marker>
If
- <c>LinkTo</c> is a pid, that pid becomes an owner of the
- log. If <c>LinkTo</c> is <c>none</c> the log records
+ <c><anno>LinkTo</anno></c> is a pid, that pid becomes an owner of the
+ log. If <c><anno>LinkTo</anno></c> is <c>none</c> the log records
that it is used anonymously by some process by
incrementing the <c>users</c> counter. By default, the
process which calls <c>open/1</c> owns the log.
</p>
</item>
<item>
- <p><c>{repair, Repair}</c>. If <c>Repair</c> is <c>true</c>,
+ <p><c>{repair, <anno>Repair</anno>}</c>. If <c><anno>Repair</anno></c> is <c>true</c>,
the current log file will be repaired, if needed. As the
restoration is initiated, a message is output on the error log.
If <c>false</c> is given,
no automatic repair will be attempted. Instead, the
- tuple <c>{error, {need_repair, Log}}</c> is returned if an
+ tuple <c>{error, {need_repair, <anno>Log</anno>}}</c> is returned if an
attempt is made to open a corrupt log file.
If <c>truncate</c> is given, the log file will
be truncated, creating an empty log. Default is
@@ -841,41 +801,41 @@ If
</p>
</item>
<item>
- <p><c>{type, Type}</c> is the type of the log. Default
+ <p><c>{type, <anno>Type</anno>}</c> is the type of the log. Default
is <c>halt</c>.
</p>
</item>
<item>
- <p><c>{format, Format}</c> specifies the format of the
+ <p><c>{format, <anno>Format</anno>}</c> specifies the format of the
disk log. Default is <c>internal</c>.
</p>
</item>
<item>
- <p><c>{size, Size}</c> specifies the size of the log.
+ <p><c>{size, <anno>Size</anno>}</c> specifies the size of the log.
When a halt log has reached its maximum size, all attempts to
log more items are rejected. The default size is
<c>infinity</c>, which for halt implies that there is no
- maximum size. For wrap logs, the <c>Size</c> parameter
+ maximum size. For wrap logs, the <c><anno>Size</anno></c> parameter
may be either a pair
- <c>{MaxNoBytes, MaxNoFiles}</c> or <c>infinity</c>. In the
+ <c>{<anno>MaxNoBytes</anno>, <anno>MaxNoFiles</anno>}</c> or <c>infinity</c>. In the
latter case, if the files of an already existing wrap log
with the same name can be found, the size is read
from the existing wrap log, otherwise an error is returned.
- Wrap logs write at most <c>MaxNoBytes</c> bytes on each file
- and use <c>MaxNoFiles</c> files before starting all over with
- the first wrap log file. Regardless of <c>MaxNoBytes</c>,
+ Wrap logs write at most <c><anno>MaxNoBytes</anno></c> bytes on each file
+ and use <c><anno>MaxNoFiles</anno></c> files before starting all over with
+ the first wrap log file. Regardless of <c><anno>MaxNoBytes</anno></c>,
at least the header (if there is one) and one
item is written on each wrap log file before
wrapping to the next file.
When opening an existing wrap log, it is not
necessary to supply a value for the option <c>Size</c>, but any
supplied value must equal the current size of the log, otherwise
- the tuple <c>{error, {size_mismatch, CurrentSize, NewSize}}</c>
+ the tuple <c>{error, {size_mismatch, <anno>CurrentSize</anno>, <anno>NewSize</anno>}}</c>
is returned.
</p>
</item>
<item>
- <p><c>{distributed, Nodes}</c>. This option can be used for
+ <p><c>{distributed, <anno>Nodes</anno>}</c>. This option can be used for
adding members to a distributed disk log. The
default value is <c>[]</c>, which means that
the log is local on the current node.
@@ -946,10 +906,10 @@ If
</list>
</item>
<item>
- <p><c>{head, Head}</c> specifies a header to be
+ <p><c>{head, <anno>Head</anno>}</c> specifies a header to be
written first on the log file. If the log is a wrap
- log, the item <c>Head</c> is written first in each new file.
- <c>Head</c> should be a term if the format is
+ log, the item <c><anno>Head</anno></c> is written first in each new file.
+ <c><anno>Head</anno></c> should be a term if the format is
<c>internal</c>, and a deep list of bytes (or a binary)
otherwise. Default is <c>none</c>, which means that
no header is written first on the file.
@@ -966,17 +926,17 @@ If
</p>
</item>
<item>
- <p><c>{mode, Mode}</c> specifies if the log is to be
+ <p><c>{mode, <anno>Mode</anno>}</c> specifies if the log is to be
opened in read-only or read-write mode. It defaults to
<c>read_write</c>.
</p>
</item>
</list>
- <p>The <c>open/1</c> function returns <c>{ok, Log}</c> if the
+ <p>The <c>open/1</c> function returns <c>{ok, <anno>Log</anno>}</c> if the
log file was successfully opened. If the file was
- successfully repaired, the tuple <c>{repaired, Log, {recovered, Rec}, {badbytes, Bad}}</c> is returned, where
- <c>Rec</c> is the number of whole Erlang terms found in the
- file and <c>Bad</c> is the number of bytes in the file which
+ successfully repaired, the tuple <c>{repaired, <anno>Log</anno>, {recovered, <anno>Rec</anno>}, {badbytes, <anno>Bad</anno>}}</c> is returned, where
+ <c><anno>Rec</anno></c> is the number of whole Erlang terms found in the
+ file and <c><anno>Bad</anno></c> is the number of bytes in the file which
were non-Erlang terms. If the <c>distributed</c> parameter
was given, <c>open/1</c> returns a list of
successful replies and a list of erroneous replies. Each
@@ -988,7 +948,7 @@ If
position after the last logged item, and the logging of items
will commence from there. If the format is <c>internal</c>
and the existing file is not recognized as an internally
- formatted log, a tuple <c>{error, {not_a_log_file, FileName}}</c>
+ formatted log, a tuple <c>{error, {not_a_log_file, <anno>FileName</anno>}}</c>
is returned.
</p>
<p>The <c>open/1</c> function cannot be used for changing the
@@ -1000,15 +960,15 @@ If
or <c>change_size/2</c>. As a consequence,
none of the options except <c>name</c> is mandatory. If some
given value differs from the current value, a tuple
- <c>{error, {arg_mismatch, OptionName, CurrentValue, Value}}</c>
+ <c>{error, {arg_mismatch, <anno>OptionName</anno>, <anno>CurrentValue</anno>, <anno>Value</anno>}}</c>
is returned. Caution: an owner's attempt to open a log
as owner once again is acknowledged with the return value
- <c>{ok, Log}</c>, but the state of the disk log is not
+ <c>{ok, <anno>Log</anno>}</c>, but the state of the disk log is not
affected in any way.
</p>
<p>If a log with a given name is local on some node,
and one tries to open the log distributed on the same node,
- then the tuple <c>{error, {node_already_open, Name}}</c> is
+ then the tuple <c>{error, {node_already_open, <anno>Log</anno>}}</c> is
returned. The same tuple is returned if the log is distributed on
some node, and one tries to open the log locally on the same node.
Opening individual distributed disk logs for the first time
@@ -1036,12 +996,8 @@ If
</desc>
</func>
<func>
- <name>pid2name(Pid) -> {ok, Log} | undefined</name>
+ <name name="pid2name" arity="1"/>
<fsummary>Return the name of the disk log handled by a pid.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Pid = pid()</v>
- </type>
<desc>
<p>The <c>pid2name/1</c> function returns the name of the log
given the pid of a disk log process on the current node, or
@@ -1052,26 +1008,23 @@ If
</desc>
</func>
<func>
- <name>reopen(Log, File)</name>
- <name>reopen(Log, File, Head)</name>
- <name>breopen(Log, File, BHead) -> ok | {error, Reason}</name>
+ <name name="reopen" arity="2"/>
+ <name name="reopen" arity="3"/>
+ <name name="breopen" arity="3"/>
<fsummary>Reopen a disk log and save the old log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>File = string()</v>
- <v>Head = term()</v>
- <v>BHead = binary() | [Byte]</v>
- <v>Byte = [Byte] | 0 =&lt; integer() =&lt; 255</v>
- <v>Reason = no_such_log | nonode | {read_only_mode, Log} | {blocked_log, Log} | {same_file_name, Log} | {invalid_index_file, FileName} | {invalid_header, InvalidHeader} | {file_error, FileName, FileError}</v>
- </type>
+ <type variable="Log"/>
+ <type variable="File" name_i="1"/>
+ <type variable="Head" name_i="2"/>
+ <type variable="BHead"/>
+ <type name="reopen_error_rsn"/>
<desc>
<p>The <c>reopen</c> functions first rename the log file
- to <c>File</c> and then re-create a new log file.
- In case of a wrap log, <c>File</c> is used as the base name
+ to <c><anno>File</anno></c> and then re-create a new log file.
+ In case of a wrap log, <c><anno>File</anno></c> is used as the base name
of the renamed files.
By default the header given to <c>open/1</c> is written first in
- the newly opened log file, but if the <c>Head</c> or the
- <c>BHead</c> argument is given, this item is used instead.
+ the newly opened log file, but if the <c><anno>Head</anno></c> or the
+ <c><anno>BHead</anno></c> argument is given, this item is used instead.
The header argument is used once only; next time a wrap log file
is opened, the header given to <c>open/1</c> is used.
</p>
@@ -1089,12 +1042,9 @@ If
</desc>
</func>
<func>
- <name>sync(Log) -> ok | {error, Reason}</name>
+ <name name="sync" arity="1"/>
+ <type name="sync_error_rsn"/>
<fsummary>Flush the contents of a disk log to the disk.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Reason = no_such_log | nonode | {read_only_mode, Log} | {blocked_log, Log} | {file_error, FileName, FileError}</v>
- </type>
<desc>
<p>The <c>sync/1</c> function ensures that the contents of the
log are actually written to the disk.
@@ -1103,20 +1053,17 @@ If
</desc>
</func>
<func>
- <name>truncate(Log)</name>
- <name>truncate(Log, Head)</name>
- <name>btruncate(Log, BHead) -> ok | {error, Reason}</name>
+ <name name="truncate" arity="1"/>
+ <name name="truncate" arity="2"/>
+ <name name="btruncate" arity="2"/>
<fsummary>Truncate a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Head = term()</v>
- <v>BHead = binary() | [Byte]</v>
- <v>Byte = [Byte] | 0 =&lt; integer() =&lt; 255</v>
- <v>Reason = no_such_log | nonode | {read_only_mode, Log} | {blocked_log, Log} | {invalid_header, InvalidHeader} | {file_error, FileName, FileError}</v>
- </type>
+ <type variable="Log"/>
+ <type variable="Head" name_i="2"/>
+ <type variable="BHead"/>
+ <type name="trunc_error_rsn"/>
<desc>
<p>The <c>truncate</c> functions remove all items from a disk log.
- If the <c>Head</c> or the <c>BHead</c> argument is
+ If the <c><anno>Head</anno></c> or the <c><anno>BHead</anno></c> argument is
given, this item is written first in the newly truncated
log, otherwise the header given to <c>open/1</c> is used.
The header argument is only used once; next time a wrap log file
@@ -1138,12 +1085,9 @@ If
</desc>
</func>
<func>
- <name>unblock(Log) -> ok | {error, Reason}</name>
+ <name name="unblock" arity="1"/>
+ <type name="unblock_error_rsn"/>
<fsummary>Unblock a disk log.</fsummary>
- <type>
- <v>Log = term()</v>
- <v>Reason = no_such_log | nonode | {not_blocked, Log} | {not_blocked_by_pid, Log}</v>
- </type>
<desc>
<p>The <c>unblock/1</c> function unblocks a log.
A log can only be unblocked by the blocking process.
@@ -1159,4 +1103,3 @@ If
<seealso marker="wrap_log_reader">wrap_log_reader(3)</seealso></p>
</section>
</erlref>
-
diff --git a/lib/kernel/doc/src/erl_boot_server.xml b/lib/kernel/doc/src/erl_boot_server.xml
index 4e7533810e..472671a80e 100644
--- a/lib/kernel/doc/src/erl_boot_server.xml
+++ b/lib/kernel/doc/src/erl_boot_server.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -49,29 +49,17 @@
</description>
<funcs>
<func>
- <name>start(Slaves) -> {ok, Pid} | {error, What}</name>
+ <name name="start" arity="1"/>
<fsummary>Start the boot server</fsummary>
- <type>
- <v>Slaves = [Host]</v>
- <v>Host = atom()</v>
- <v>Pid = pid()</v>
- <v>What = term()</v>
- </type>
<desc>
- <p>Starts the boot server. <c>Slaves</c> is a list of IP
+ <p>Starts the boot server. <c><anno>Slaves</anno></c> is a list of IP
addresses for hosts which are allowed to use this server as a
boot server.</p>
</desc>
</func>
<func>
- <name>start_link(Slaves) -> {ok, Pid} | {error, What}</name>
+ <name name="start_link" arity="1"/>
<fsummary>Start the boot server and links the caller</fsummary>
- <type>
- <v>Slaves = [Host]</v>
- <v>Host = atom()</v>
- <v>Pid = pid()</v>
- <v>What = term()()</v>
- </type>
<desc>
<p>Starts the boot server and links to the caller. This function
is used to start the server if it is included in a supervision
@@ -79,37 +67,23 @@
</desc>
</func>
<func>
- <name>add_slave(Slave) -> ok | {error, What}</name>
+ <name name="add_slave" arity="1"/>
<fsummary>Add a slave to the list of allowed slaves</fsummary>
- <type>
- <v>Slave = Host</v>
- <v>Host = atom()</v>
- <v>What = term()</v>
- </type>
<desc>
- <p>Adds a <c>Slave</c> node to the list of allowed slave hosts.</p>
+ <p>Adds a <c><anno>Slave</anno></c> node to the list of allowed slave hosts.</p>
</desc>
</func>
<func>
- <name>delete_slave(Slave) -> ok | {error, What}</name>
+ <name name="delete_slave" arity="1"/>
<fsummary>Delete a slave from the list of allowed slaves</fsummary>
- <type>
- <v>Slave = Host</v>
- <v>Host = atom()</v>
- <v>What = void()</v>
- </type>
<desc>
- <p>Deletes a <c>Slave</c> node from the list of allowed slave
+ <p>Deletes a <c><anno>Slave</anno></c> node from the list of allowed slave
hosts.</p>
</desc>
</func>
<func>
- <name>which_slaves() -> Slaves</name>
+ <name name="which_slaves" arity="0"/>
<fsummary>Return the current list of allowed slave hosts</fsummary>
- <type>
- <v>Slaves = [Host]</v>
- <v>Host = atom()</v>
- </type>
<desc>
<p>Returns the current list of allowed slave hosts.</p>
</desc>
diff --git a/lib/kernel/doc/src/erl_ddll.xml b/lib/kernel/doc/src/erl_ddll.xml
index 9a62b45d63..f9514dda2f 100644
--- a/lib/kernel/doc/src/erl_ddll.xml
+++ b/lib/kernel/doc/src/erl_ddll.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1997</year><year>2010</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -172,6 +172,14 @@
</item>
</taglist>
</description>
+ <datatypes>
+ <datatype>
+ <name name="driver"/>
+ </datatype>
+ <datatype>
+ <name name="path"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
<name>demonitor(MonitorRef) -> ok</name>
@@ -189,37 +197,21 @@
</desc>
</func>
<func>
- <name>info() -> AllInfoList</name>
+ <name name="info" arity="0"/>
<fsummary>Retrieve information about all drivers</fsummary>
- <type>
- <v>AllInfoList = [ DriverInfo ]</v>
- <v>DriverInfo = {DriverName, InfoList}</v>
- <v>DriverName = string()</v>
- <v>InfoList = [ InfoItem ]</v>
- <v>InfoItem = {Tag, Value}</v>
- <v>Tag = atom()</v>
- <v>Value = term()</v>
- </type>
<desc>
- <p>Returns a list of tuples <c>{DriverName, InfoList}</c>, where
- <c>InfoList</c> is the result of calling <seealso marker="#info/1">info/1</seealso> for that
- <c>DriverName</c>. Only dynamically linked in drivers are
+ <p>Returns a list of tuples <c>{<anno>DriverName</anno>, <anno>InfoList</anno>}</c>, where
+ <c><anno>InfoList</anno></c> is the result of calling <seealso marker="#info/1">info/1</seealso> for that
+ <c><anno>DriverName</anno></c>. Only dynamically linked in drivers are
included in the list.</p>
</desc>
</func>
<func>
- <name>info(Name) -> InfoList</name>
+ <name name="info" arity="1"/>
<fsummary>Retrieve information about one driver</fsummary>
- <type>
- <v>Name = string() | atom()</v>
- <v>InfoList = [ InfoItem ]</v>
- <v>InfoItem = {Tag, Value}</v>
- <v>Tag = atom()</v>
- <v>Value = term()</v>
- </type>
<desc>
- <p>Returns a list of tuples <c>{Tag, Value}</c>, where
- <c>Tag</c> is the information item and <c>Value</c> is the result
+ <p>Returns a list of tuples <c>{<anno>Tag</anno>, <anno>Value</anno>}</c>, where
+ <c><anno>Tag</anno></c> is the information item and <c><anno>Value</anno></c> is the result
of calling <seealso marker="#info/2">info/2</seealso> with this driver name and
this tag. The result being a tuple list containing all
information available about a driver. </p>
@@ -305,22 +297,18 @@
</desc>
</func>
<func>
- <name>load(Path, Name) -> ok | {error, ErrorDesc}</name>
+ <name name="load" arity="2"/>
<fsummary>Load a driver</fsummary>
- <type>
- <v>Path = Name = string() | atom()</v>
- <v>ErrorDesc = term()</v>
- </type>
<desc>
- <p>Loads and links the dynamic driver <c>Name</c>. <c>Path</c>
+ <p>Loads and links the dynamic driver <c><anno>Name</anno></c>. <c><anno>Path</anno></c>
is a file path to the directory containing the driver.
- <c>Name</c> must be a sharable object/dynamic library. Two
- drivers with different <c>Path</c> parameters cannot be
- loaded under the same name. The <c>Name</c> is a string or
+ <c><anno>Name</anno></c> must be a sharable object/dynamic library. Two
+ drivers with different <c><anno>Path</anno></c> parameters cannot be
+ loaded under the same name. The <c><anno>Name</anno></c> is a string or
atom containing at least one character.</p>
- <p>The <c>Name</c> given should correspond to the filename
+ <p>The <c><anno>Name</anno></c> given should correspond to the filename
of the actual dynamically loadable object file residing in
- the directory given as <c>Path</c>, but <em>without</em> the
+ the directory given as <c><anno>Path</anno></c>, but <em>without</em> the
extension (i.e. <c>.so</c>). The driver name provided in
the driver initialization routine must correspond with the
filename, in much the same way as erlang module names
@@ -328,14 +316,14 @@
<p>If the driver has been previously unloaded, but is still
present due to open ports against it, a call to
<c>load/2</c> will stop the unloading and keep the driver
- (as long as the <c>Path</c> is the same) and <c>ok</c> is
+ (as long as the <c><anno>Path</anno></c> is the same) and <c>ok</c> is
returned. If one actually wants the object code to be
reloaded, one uses <seealso marker="#reload/2">reload/2</seealso> or the low-level
interface <seealso marker="#try_load/3">try_load/3</seealso>
instead. Please refer to the description of <seealso marker="#scenarios">different scenarios</seealso> for
loading/unloading in the introduction.</p>
<p>If more than one process tries to load an already loaded
- driver withe the same <c>Path</c>, or if the same process
+ driver withe the same <c><anno>Path</anno></c>, or if the same process
tries to load it several times, the function will return
<c>ok</c>. The emulator will keep track of the
<c>load/2</c> calls, so that a corresponding number of
@@ -349,16 +337,16 @@
several drivers with the same name but with different
<c>Path</c> parameters.</p>
<note>
- <p>Note especially that the <c>Path</c> is interpreted
+ <p>Note especially that the <c><anno>Path</anno></c> is interpreted
literally, so that all loaders of the same driver needs to
- give the same <em>literal</em><c>Path</c> string, even
+ give the same <em>literal</em><c><anno>Path</anno></c> string, even
though different paths might point out the same directory
in the filesystem (due to use of relative paths and
links).</p>
</note>
<p>On success, the function returns <c>ok</c>. On
- failure, the return value is <c>{error,ErrorDesc}</c>,
- where <c>ErrorDesc</c> is an opaque term to be
+ failure, the return value is <c>{error,<anno>ErrorDesc</anno>}</c>,
+ where <c><anno>ErrorDesc</anno></c> is an opaque term to be
translated into human readable form by the <seealso marker="#format_error/1">format_error/1</seealso>
function.</p>
<p>For more control over the error handling, again use the
@@ -369,20 +357,16 @@
</desc>
</func>
<func>
- <name>load_driver(Path, Name) -> ok | {error, ErrorDesc}</name>
+ <name name="load_driver" arity="2"/>
<fsummary>Load a driver</fsummary>
- <type>
- <v>Path = Name = string() | atom()</v>
- <v>ErrorDesc = term()</v>
- </type>
<desc>
<p>Works essentially as <c>load/2</c>, but will load the driver
- with options other options. All ports that are using the
+ with other options. All ports that are using the
driver will get killed with the reason
<c>driver_unloaded</c> when the driver is to be unloaded.</p>
<p>The number of loads and unloads by different <seealso marker="#users">users</seealso> influence the actual loading
and unloading of a driver file. The port killing will
- therefore only happen when the <em>last</em><seealso marker="#users">user</seealso> unloads the driver, or the
+ therefore only happen when the <em>last</em> <seealso marker="#users">user</seealso> unloads the driver, or the
last process having loaded the driver exits.</p>
<p>This interface (or at least the name of the functions) is
kept for backward compatibility. Using <seealso marker="#try_load/3">try_load/3</seealso> with
@@ -551,16 +535,11 @@
</desc>
</func>
<func>
- <name>reload(Path, Name) -> ok | {error, ErrorDesc}</name>
+ <name name="reload" arity="2"/>
<fsummary>Replace a driver</fsummary>
- <type>
- <v>Path = Name = string() | atom()</v>
- <v>ErrorDesc = pending_process | OpaqueError</v>
- <v>OpaqueError = term()</v>
- </type>
<desc>
- <p>Reloads the driver named <c>Name</c> from a possibly
- different <c>Path</c> than was previously used. This
+ <p>Reloads the driver named <c><anno>Name</anno></c> from a possibly
+ different <c><anno>Path</anno></c> than was previously used. This
function is used in the code change <seealso marker="#scenarios">scenario</seealso> described in the
introduction.</p>
<p>If there are other <seealso marker="#users">users</seealso>
@@ -574,7 +553,7 @@
<p>If one wants to avoid hanging on open ports, one should use
the <seealso marker="#try_load/3">try_load/3</seealso>
function instead.</p>
- <p>The <c>Name</c> and <c>Path</c> parameters have exactly the
+ <p>The <c><anno>Name</anno></c> and <c><anno>Path</anno></c> parameters have exactly the
same meaning as when calling the plain <seealso marker="#load/2">load/2</seealso> function.</p>
<note>
<p>Avoid mixing
@@ -594,13 +573,8 @@
</desc>
</func>
<func>
- <name>reload_driver(Path, Name) -> ok | {error, ErrorDesc}</name>
+ <name name="reload_driver" arity="2"/>
<fsummary>Replace a driver</fsummary>
- <type>
- <v>Path = Name = string() | atom()</v>
- <v>ErrorDesc = pending_process | OpaqueError</v>
- <v>OpaqueError = term()</v>
- </type>
<desc>
<p>Works exactly as <seealso marker="#reload/2">reload/2</seealso>, but for drivers
loaded with the <seealso marker="#load_driver/2">load_driver/2</seealso> interface. </p>
@@ -1066,15 +1040,11 @@
</desc>
</func>
<func>
- <name>unload(Name) -> ok | {error, ErrorDesc}</name>
+ <name name="unload" arity="1"/>
<fsummary>Unload a driver</fsummary>
- <type>
- <v>Name = string() | atom()</v>
- <v>ErrorDesc = term()</v>
- </type>
<desc>
<p>Unloads, or at least dereferences the driver named
- <c>Name</c>. If the caller is the last <seealso marker="#users">user</seealso> of the driver, and there
+ <c><anno>Name</anno></c>. If the caller is the last <seealso marker="#users">user</seealso> of the driver, and there
are no more open ports using the driver, the driver will
actually get unloaded. In all other cases, actual unloading
will be delayed until all ports are closed and there are no
@@ -1084,7 +1054,7 @@
is no longer considered a user of the driver. For usage
scenarios, see the <seealso marker="#scenarios">description</seealso> in the beginning
of this document. </p>
- <p>The <c>ErrorDesc</c> returned is an opaque value to be
+ <p>The <c><anno>ErrorDesc</anno></c> returned is an opaque value to be
passed further on to the <seealso marker="#format_error/1">format_error/1</seealso>
function. For more control over the operation, use the
<seealso marker="#try_unload/2">try_unload/2</seealso>
@@ -1094,15 +1064,11 @@
</desc>
</func>
<func>
- <name>unload_driver(Name) -> ok | {error, ErrorDesc}</name>
+ <name name="unload_driver" arity="1"/>
<fsummary>Unload a driver</fsummary>
- <type>
- <v>Name = string() | atom()</v>
- <v>ErrorDesc = term()</v>
- </type>
<desc>
<p>Unloads, or at least dereferences the driver named
- <c>Name</c>. If the caller is the last <seealso marker="#users">user</seealso> of the driver, all
+ <c><anno>Name</anno></c>. If the caller is the last <seealso marker="#users">user</seealso> of the driver, all
remaining open ports using the driver will get killed with
the reason <c>driver_unloaded</c> and the driver will
eventually get unloaded.</p>
@@ -1112,7 +1078,7 @@
<seealso marker="#users">user</seealso>. For
usage scenarios, see the <seealso marker="#scenarios">description</seealso> in the beginning
of this document.</p>
- <p>The <c>ErrorDesc</c> returned is an opaque value to be
+ <p>The <c><anno>ErrorDesc</anno></c> returned is an opaque value to be
passed further on to the <seealso marker="#format_error/1">format_error/1</seealso>
function. For more control over the operation, use the
<seealso marker="#try_unload/2">try_unload/2</seealso>
@@ -1125,7 +1091,7 @@
<name>loaded_drivers() -> {ok, Drivers}</name>
<fsummary>List loaded drivers</fsummary>
<type>
- <v>Drivers = [Driver()]</v>
+ <v>Drivers = [Driver]</v>
<v>Driver = string()</v>
</type>
<desc>
@@ -1138,13 +1104,10 @@
</desc>
</func>
<func>
- <name>format_error(ErrorDesc) -> string()</name>
+ <name name="format_error" arity="1"/>
<fsummary>Format an error descriptor</fsummary>
- <type>
- <v>ErrorDesc -- see below</v>
- </type>
<desc>
- <p>Takes an <c>ErrorDesc</c> returned by load, unload or
+ <p>Takes an <c><anno>ErrorDesc</anno></c> returned by load, unload or
reload functions and returns a string which
describes the error or warning.</p>
<note>
diff --git a/lib/kernel/doc/src/error_handler.xml b/lib/kernel/doc/src/error_handler.xml
index 7f78322472..acbf9a2c6e 100644
--- a/lib/kernel/doc/src/error_handler.xml
+++ b/lib/kernel/doc/src/error_handler.xml
@@ -37,48 +37,44 @@
</description>
<funcs>
<func>
- <name>undefined_function(Module, Function, Args) -> term()</name>
+ <name name="undefined_function" arity="3"/>
<fsummary>Called when an undefined function is encountered</fsummary>
- <type>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <d>A (possibly empty) list of arguments <c>Arg1,..,ArgN</c></d>
- </type>
+ <type_desc variable="Args">
+ A (possibly empty) list of arguments <c>Arg1,..,ArgN</c>
+ </type_desc>
<desc>
<p>This function is evaluated if a call is made to
- <c>Module:Function(Arg1,.., ArgN)</c> and
- <c>Module:Function/N</c> is undefined. Note that
+ <c><anno>Module</anno>:<anno>Function</anno>(Arg1,.., ArgN)</c> and
+ <c><anno>Module</anno>:<anno>Function</anno>/N</c> is undefined. Note that
<c>undefined_function/3</c> is evaluated inside the process
making the original call.</p>
- <p>If <c>Module</c> is interpreted, the interpreter is invoked
+ <p>If <c><anno>Module</anno></c> is interpreted, the interpreter is invoked
and the return value of the interpreted
- <c>Function(Arg1,.., ArgN)</c> call is returned.</p>
+ <c><anno>Function</anno>(Arg1,.., ArgN)</c> call is returned.</p>
<p>Otherwise, it returns, if possible, the value of
- <c>apply(Module, Function, Args)</c> after an attempt has been
- made to autoload <c>Module</c>. If this is not possible, the
- call to <c>Module:Function(Arg1,.., ArgN)</c> fails with
+ <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>)</c> after an attempt has been
+ made to autoload <c><anno>Module</anno></c>. If this is not possible, the
+ call to <c><anno>Module</anno>:<anno>Function</anno>(Arg1,.., ArgN)</c> fails with
exit reason <c>undef</c>.</p>
</desc>
</func>
<func>
- <name>undefined_lambda(Module, Fun, Args) -> term()</name>
+ <name name="undefined_lambda" arity="3"/>
<fsummary>Called when an undefined lambda (fun) is encountered</fsummary>
- <type>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <d>A (possibly empty) list of arguments <c>Arg1,..,ArgN</c></d>
- </type>
+ <type_desc variable="Args">
+ A (possibly empty) list of arguments <c>Arg1,..,ArgN</c>
+ </type_desc>
<desc>
<p>This function is evaluated if a call is made to
- <c>Fun(Arg1,.., ArgN)</c> when the module defining the fun is
+ <c><anno>Fun</anno>(Arg1,.., ArgN)</c> when the module defining the fun is
not loaded. The function is evaluated inside the process
making the original call.</p>
- <p>If <c>Module</c> is interpreted, the interpreter is invoked
+ <p>If <c><anno>Module</anno></c> is interpreted, the interpreter is invoked
and the return value of the interpreted
- <c>Fun(Arg1,.., ArgN)</c> call is returned.</p>
+ <c><anno>Fun</anno>(Arg1,.., ArgN)</c> call is returned.</p>
<p>Otherwise, it returns, if possible, the value of
- <c>apply(Fun, Args)</c> after an attempt has been made to
- autoload <c>Module</c>. If this is not possible, the call
+ <c>apply(<anno>Fun</anno>, <anno>Args</anno>)</c> after an attempt has been made to
+ autoload <c><anno>Module</anno></c>. If this is not possible, the call
fails with exit reason <c>undef</c>.</p>
</desc>
</func>
diff --git a/lib/kernel/doc/src/error_logger.xml b/lib/kernel/doc/src/error_logger.xml
index e107d9b746..2d95f96ac7 100644
--- a/lib/kernel/doc/src/error_logger.xml
+++ b/lib/kernel/doc/src/error_logger.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -65,19 +65,20 @@
be tagged as warnings or info. Tagging them as warnings may
require rewriting existing user defined event handlers.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="report"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>error_msg(Format) -> ok</name>
- <name>error_msg(Format, Data) -> ok</name>
- <name>format(Format, Data) -> ok</name>
+ <name name="error_msg" arity="1"/>
+ <name name="error_msg" arity="2"/>
+ <name name="format" arity="2"/>
<fsummary>Send an standard error event to the error logger</fsummary>
- <type>
- <v>Format = string()</v>
- <v>Data = [term()]</v>
- </type>
<desc>
<p>Sends a standard error event to the error logger.
- The <c>Format</c> and <c>Data</c> arguments are the same as
+ The <c><anno>Format</anno></c> and <c><anno>Data</anno></c> arguments are the same as
the arguments of <c>io:format/2</c>. The event is handled by
the standard event handler.</p>
<pre>
@@ -94,12 +95,8 @@ ok</pre>
</desc>
</func>
<func>
- <name>error_report(Report) -> ok</name>
+ <name name="error_report" arity="1"/>
<fsummary>Send a standard error report event to the error logger</fsummary>
- <type>
- <v>Report = [{Tag, Data} | term()] | string() | term()</v>
- <v>&nbsp;Tag = Data = term()</v>
- </type>
<desc>
<p>Sends a standard error report event to the error logger.
The event is handled by the standard event handler.</p>
@@ -119,18 +116,13 @@ ok</pre>
</desc>
</func>
<func>
- <name>error_report(Type, Report) -> ok</name>
+ <name name="error_report" arity="2"/>
<fsummary>Send a user defined error report event to the error logger</fsummary>
- <type>
- <v>Type = term()</v>
- <v>Report = [{Tag, Data} | term()] | string() | term()</v>
- <v>&nbsp;Tag = Data = term()</v>
- </type>
<desc>
<p>Sends a user defined error report event to the error logger.
An event handler to handle the event is supposed to have been
added. The event is ignored by the standard event handler.</p>
- <p>It is recommended that <c>Report</c> follows the same
+ <p>It is recommended that <c><anno>Report</anno></c> follows the same
structure as for <c>error_report/1</c>.</p>
</desc>
</func>
@@ -174,16 +166,12 @@ ok</pre>
</desc>
</func>
<func>
- <name>warning_msg(Format) -> ok</name>
- <name>warning_msg(Format, Data) -> ok</name>
+ <name name="warning_msg" arity="1"/>
+ <name name="warning_msg" arity="2"/>
<fsummary>Send a standard warning event to the error logger</fsummary>
- <type>
- <v>Format = string()</v>
- <v>Data = [term()]</v>
- </type>
<desc>
<p>Sends a standard warning event to the error logger.
- The <c>Format</c> and <c>Data</c> arguments are the same as
+ The <c><anno>Format</anno></c> and <c><anno>Data</anno></c> arguments are the same as
the arguments of <c>io:format/2</c>. The event is handled by
the standard event handler. It is tagged either as an error,
warning or info, see
@@ -196,12 +184,8 @@ ok</pre>
</desc>
</func>
<func>
- <name>warning_report(Report) -> ok</name>
+ <name name="warning_report" arity="1"/>
<fsummary>Send a standard warning report event to the error logger</fsummary>
- <type>
- <v>Report = [{Tag, Data} | term()] | string() | term()</v>
- <v>&nbsp;Tag = Data = term()</v>
- </type>
<desc>
<p>Sends a standard warning report event to the error logger.
The event is handled by the standard event handler. It is
@@ -210,13 +194,8 @@ ok</pre>
</desc>
</func>
<func>
- <name>warning_report(Type, Report) -> ok</name>
+ <name name="warning_report" arity="2"/>
<fsummary>Send a user defined warning report event to the error logger</fsummary>
- <type>
- <v>Type = term()</v>
- <v>Report = [{Tag, Data} | term()] | string() | term()</v>
- <v>&nbsp;Tag = Data = term()</v>
- </type>
<desc>
<p>Sends a user defined warning report event to the error
logger. An event handler to handle the event is supposed to
@@ -227,16 +206,12 @@ ok</pre>
</desc>
</func>
<func>
- <name>info_msg(Format) -> ok</name>
- <name>info_msg(Format, Data) -> ok</name>
+ <name name="info_msg" arity="1"/>
+ <name name="info_msg" arity="2"/>
<fsummary>Send a standard information event to the error logger</fsummary>
- <type>
- <v>Format = string()</v>
- <v>Data = [term()]</v>
- </type>
<desc>
<p>Sends a standard information event to the error logger.
- The <c>Format</c> and <c>Data</c> arguments are the same as
+ The <c><anno>Format</anno></c> and <c><anno>Data</anno></c> arguments are the same as
the arguments of <c>io:format/2</c>. The event is handled by
the standard event handler.</p>
<pre>
@@ -253,12 +228,8 @@ ok</pre>
</desc>
</func>
<func>
- <name>info_report(Report) -> ok</name>
+ <name name="info_report" arity="1"/>
<fsummary>Send a standard information report event to the error logger</fsummary>
- <type>
- <v>Report = [{Tag, Data} | term()] | string() | term()</v>
- <v>&nbsp;Tag = Data = term()</v>
- </type>
<desc>
<p>Sends a standard information report event to the error
logger. The event is handled by the standard event handler.</p>
@@ -278,63 +249,49 @@ ok</pre>
</desc>
</func>
<func>
- <name>info_report(Type, Report) -> ok</name>
+ <name name="info_report" arity="2"/>
<fsummary>Send a user defined information report event to the error logger</fsummary>
- <type>
- <v>Type = term()</v>
- <v>Report = [{Tag, Data} | term()] | string() | term()</v>
- <v>&nbsp;Tag = Data = term()</v>
- </type>
<desc>
<p>Sends a user defined information report event to the error
logger. An event handler to handle the event is supposed to
have been added. The event is ignored by the standard event
handler.</p>
- <p>It is recommended that <c>Report</c> follows the same
+ <p>It is recommended that <c><anno>Report</anno></c> follows the same
structure as for <c>info_report/1</c>.</p>
</desc>
</func>
<func>
- <name>add_report_handler(Handler) -> Result</name>
- <name>add_report_handler(Handler, Args) -> Result</name>
+ <name name="add_report_handler" arity="1"/>
+ <name name="add_report_handler" arity="2"/>
<fsummary>Add an event handler to the error logger</fsummary>
- <type>
- <v>Handler, Args, Result -- see gen_event:add_handler/3</v>
- </type>
<desc>
<p>Adds a new event handler to the error logger. The event
handler must be implemented as a <c>gen_event</c> callback
module, see
<seealso marker="stdlib:gen_event">gen_event(3)</seealso>.</p>
- <p><c>Handler</c> is typically the name of the callback module
- and <c>Args</c> is an optional term (defaults to []) passed
- to the initialization callback function <c>Module:init/1</c>.
+ <p><c><anno>Handler</anno></c> is typically the name of the callback module
+ and <c><anno>Args</anno></c> is an optional term (defaults to []) passed
+ to the initialization callback function <c><anno>Handler</anno>:init/1</c>.
The function returns <c>ok</c> if successful.</p>
<p>The event handler must be able to handle the
<seealso marker="#events">events</seealso> described below.</p>
</desc>
</func>
<func>
- <name>delete_report_handler(Handler) -> Result</name>
+ <name name="delete_report_handler" arity="1"/>
<fsummary>Delete an event handler from the error logger</fsummary>
- <type>
- <v>Handler, Result -- see gen_event:delete_handler/3</v>
- </type>
<desc>
<p>Deletes an event handler from the error logger by calling
- <c>gen_event:delete_handler(error_logger, Handler, [])</c>,
+ <c>gen_event:delete_handler(error_logger, <anno>Handler</anno>, [])</c>,
see <seealso marker="stdlib:gen_event">gen_event(3)</seealso>.</p>
</desc>
</func>
<func>
- <name>tty(Flag) -> ok</name>
+ <name name="tty" arity="1"/>
<fsummary>Enable or disable printouts to the tty</fsummary>
- <type>
- <v>Flag = bool()</v>
- </type>
<desc>
- <p>Enables (<c>Flag == true</c>) or disables
- (<c>Flag == false</c>) printout of standard events to the tty.</p>
+ <p>Enables (<c><anno>Flag</anno> == true</c>) or disables
+ (<c><anno>Flag</anno> == false</c>) printout of standard events to the tty.</p>
<p>This is done by adding or deleting the standard event handler
for output to tty, thus calling this function overrides
the value of the Kernel <c>error_logger</c> configuration
@@ -342,13 +299,15 @@ ok</pre>
</desc>
</func>
<func>
- <name>logfile(Request) -> ok | Filename | {error, What}</name>
+ <name name="logfile" arity="1" clause_i="1"/>
+ <name name="logfile" arity="1" clause_i="2"/>
+ <name name="logfile" arity="1" clause_i="3"/>
+ <type variable="Filename"/>
+ <type variable="OpenReason" name_i="1"/>
+ <type variable="CloseReason" name_i="2"/>
+ <type variable="FilenameReason" name_i="3"/>
+ <type name="open_error"/>
<fsummary>Enable or disable error printouts to a file</fsummary>
- <type>
- <v>Request = {open, Filename} | close | filename</v>
- <v>&nbsp;Filename = atom() | string()</v>
- <v>What = allready_have_logfile | no_log_file | term()</v>
- </type>
<desc>
<p>Enables or disables printout of standard events to a file.</p>
<p>This is done by adding or deleting the standard event handler
@@ -361,22 +320,22 @@ ok</pre>
There can only be one active log file at a time.</p>
<p><c>Request</c> is one of:</p>
<taglist>
- <tag><c>{open, Filename}</c></tag>
+ <tag><c>{open, <anno>Filename</anno>}</c></tag>
<item>
- <p>Opens the log file <c>Filename</c>. Returns <c>ok</c> if
+ <p>Opens the log file <c><anno>Filename</anno></c>. Returns <c>ok</c> if
successful, or <c>{error, allready_have_logfile}</c> if
logging to file is already enabled, or an error tuple if
- another error occurred. For example, if <c>Filename</c>
+ another error occurred. For example, if <c><anno>Filename</anno></c>
could not be opened.</p>
</item>
<tag><c>close</c></tag>
<item>
<p>Closes the current log file. Returns <c>ok</c>, or
- <c>{error, What}</c>.</p>
+ <c>{error, module_not_found}</c>.</p>
</item>
<tag><c>filename</c></tag>
<item>
- <p>Returns the name of the log file <c>Filename</c>, or
+ <p>Returns the name of the log file <c><anno>Filename</anno></c>, or
<c>{error, no_log_file}</c> if logging to file is not
enabled.</p>
</item>
diff --git a/lib/kernel/doc/src/file.xml b/lib/kernel/doc/src/file.xml
index 36fce464c5..e0feaf6ee7 100644
--- a/lib/kernel/doc/src/file.xml
+++ b/lib/kernel/doc/src/file.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -93,47 +93,76 @@
is UTF-8...</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-iodata() = iolist() | binary()
- iolist() = [char() | binary() | iolist()]
-
-io_device()
- as returned by file:open/2, a process handling IO protocols
-
-name() = string() | atom() | DeepList | RawFilename
- DeepList = [char() | atom() | DeepList]
- RawFilename = binary()
- If VM is in unicode filename mode, string() and char() are allowed to be > 255.
- RawFilename is a filename not subject to Unicode translation, meaning that it
- can contain characters not conforming to the Unicode encoding expected from the
- filesystem (i.e. non-UTF-8 characters although the VM is started in Unicode
- filename mode).
-
-posix()
- an atom which is named from the POSIX error codes used in
- Unix, and in the runtime libraries of most C compilers
-
-ext_posix() = posix() | badarg
+ <datatypes>
+ <datatype>
+ <name name="bindings"/>
+ </datatype>
+ <datatype>
+ <name name="deep_list"/>
+ </datatype>
+ <datatype>
+ <name name="fd"/>
+ </datatype>
+ <datatype>
+ <name name="filename"/>
+ </datatype>
+ <datatype>
+ <name name="io_device"/>
+ <desc>
+ <p>As returned by
+ <seealso marker="#open/2">file:open/2</seealso>,
+ a process handling IO protocols.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="name"/>
+ <desc>
+ <p>If VM is in Unicode filename mode, <c>string()</c> and <c>char()</c>
+ are allowed to be > 255.
+ <c><anno>RawFilename</anno></c> is a filename not subject to
+ Unicode translation,
+ meaning that it can contain characters not conforming to
+ the Unicode encoding expected from the filesystem
+ (i.e. non-UTF-8 characters although the VM is started
+ in Unicode filename mode).
+ </p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="posix"/>
+ <desc>
+ <p>An atom which is named from the POSIX error codes used in
+ Unix, and in the runtime libraries of most C compilers.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="date"/>
+ </datatype>
+ <datatype>
+ <name name="time"/>
+ </datatype>
+ <datatype>
+ <name name="date_time"/>
+ <desc>
+ <p>Must denote a valid date and time.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="file_info"/>
+ </datatype>
+ <datatype>
+ <name name="location"/>
+ </datatype>
+ <datatype>
+ <name name="mode"/>
+ </datatype>
+ </datatypes>
-time() = {{Year, Month, Day}, {Hour, Minute, Second}}
- Year = Month = Day = Hour = Minute = Second = int()
- Must denote a valid date and time</code>
- </section>
<funcs>
<func>
- <name>advise(IoDevice, Offset, Length, Advise) -> ok | {error, Reason}</name>
+ <name name="advise" arity="4"/>
<fsummary>Predeclare an access pattern for file data</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Offset = int()</v>
- <v>Length = int()</v>
- <v>Advise = posix_file_advise()</v>
- <v>posix_file_advise() = normal | sequential | random | no_reuse
- | will_need | dont_need</v>
- <v>Reason = ext_posix()</v>
- </type>
+ <type name="posix_file_advise"/>
<desc>
<p><c>advise/4</c> can be used to announce an intention to access file
data in a specific pattern in the future, thus allowing the
@@ -142,93 +171,58 @@ time() = {{Year, Month, Day}, {Hour, Minute, Second}}
</desc>
</func>
<func>
- <name>change_group(Filename, Gid) -> ok | {error, Reason}</name>
+ <name name="change_group" arity="2"/>
<fsummary>Change group of a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Gid = int()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Changes group of a file. See
<seealso marker="#write_file_info/2">write_file_info/2</seealso>.</p>
</desc>
</func>
<func>
- <name>change_mode(Filename, Mode) -> ok | {error, Reason}</name>
+ <name name="change_mode" arity="2"/>
<fsummary>Change permissions of a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Mode = int()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Changes permissions of a file. See
<seealso marker="#write_file_info/2">write_file_info/2</seealso>.</p>
</desc>
</func>
<func>
- <name>change_owner(Filename, Uid) -> ok | {error, Reason}</name>
+ <name name="change_owner" arity="2"/>
<fsummary>Change owner of a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Uid = int()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Changes owner of a file. See
<seealso marker="#write_file_info/2">write_file_info/2</seealso>.</p>
</desc>
</func>
<func>
- <name>change_owner(Filename, Uid, Gid) -> ok | {error, Reason}</name>
+ <name name="change_owner" arity="3"/>
<fsummary>Change owner and group of a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Uid = int()</v>
- <v>Gid = int()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Changes owner and group of a file. See
<seealso marker="#write_file_info/2">write_file_info/2</seealso>.</p>
</desc>
</func>
<func>
- <name>change_time(Filename, Mtime) -> ok | {error, Reason}</name>
+ <name name="change_time" arity="2"/>
<fsummary>Change the modification time of a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Mtime = time()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Changes the modification and access times of a file. See
<seealso marker="#write_file_info/2">write_file_info/2</seealso>.</p>
</desc>
</func>
<func>
- <name>change_time(Filename, Mtime, Atime) -> ok | {error, Reason}</name>
+ <name name="change_time" arity="3"/>
<fsummary>Change the modification and last access time of a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Mtime = Atime = time()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Changes the modification and last access times of a file. See
<seealso marker="#write_file_info/2">write_file_info/2</seealso>.</p>
</desc>
</func>
<func>
- <name>close(IoDevice) -> ok | {error, Reason}</name>
+ <name name="close" arity="1"/>
<fsummary>Close a file</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
- <p>Closes the file referenced by <c>IoDevice</c>. It mostly
+ <p>Closes the file referenced by <c><anno>IoDevice</anno></c>. It mostly
returns <c>ok</c>, expect for some severe errors such as out
of memory.</p>
<p>Note that if the option <c>delayed_write</c> was
@@ -238,20 +232,13 @@ time() = {{Year, Month, Day}, {Hour, Minute, Second}}
</desc>
</func>
<func>
- <name>consult(Filename) -> {ok, Terms} | {error, Reason}</name>
+ <name name="consult" arity="1"/>
<fsummary>Read Erlang terms from a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Terms = [term()]</v>
- <v>Reason = ext_posix() | terminated | system_limit
- | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see below</v>
- </type>
<desc>
- <p>Reads Erlang terms, separated by '.', from <c>Filename</c>.
- Returns one of the following:</p>
+ <p>Reads Erlang terms, separated by '.', from
+ <c><anno>Filename</anno></c>. Returns one of the following:</p>
<taglist>
- <tag><c>{ok, Terms}</c></tag>
+ <tag><c>{ok, <anno>Terms</anno>}</c></tag>
<item>
<p>The file was successfully read.</p>
</item>
@@ -261,7 +248,8 @@ time() = {{Year, Month, Day}, {Hour, Minute, Second}}
See <seealso marker="#open/2">open/2</seealso> for a list
of typical error codes.</p>
</item>
- <tag><c>{error, {Line, Mod, Term}}</c></tag>
+ <tag><c>{error, {<anno>Line</anno>, <anno>Mod</anno>,
+ <anno>Term</anno>}}</c></tag>
<item>
<p>An error occurred when interpreting the Erlang terms in
the file. Use <c>format_error/1</c> to convert
@@ -279,53 +267,46 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>copy(Source, Destination) -></name>
- <name>copy(Source, Destination, ByteCount) -> {ok, BytesCopied} | {error, Reason}</name>
+ <name name="copy" arity="2"/>
+ <name name="copy" arity="3"/>
<fsummary>Copy file contents</fsummary>
- <type>
- <v>Source = Destination = io_device() | Filename | {Filename, Modes}</v>
- <v>&nbsp;Filename = name()</v>
- <v>&nbsp;Modes = [Mode] -- see open/2</v>
- <v>ByteCount = int() >= 0 | infinity</v>
- <v>BytesCopied = int()</v>
- </type>
<desc>
- <p>Copies <c>ByteCount</c> bytes from <c>Source</c> to
- <c>Destination</c>. <c>Source</c> and <c>Destination</c> refer
+ <p>Copies <c><anno>ByteCount</anno></c> bytes from
+ <c><anno>Source</anno></c> to <c><anno>Destination</anno></c>.
+ <c><anno>Source</anno></c> and <c><anno>Destination</anno></c> refer
to either filenames or IO devices from e.g. <c>open/2</c>.
- <c>ByteCount</c> defaults <c>infinity</c>, denoting an
+ <c><anno>ByteCount</anno></c> defaults to <c>infinity</c>, denoting an
infinite number of bytes.</p>
- <p>The argument <c>Modes</c> is a list of possible modes, see
- <seealso marker="#open/2">open/2</seealso>, and defaults to
+ <p>The argument <c><anno>Modes</anno></c> is a list of possible modes,
+ see <seealso marker="#open/2">open/2</seealso>, and defaults to
[].</p>
- <p>If both <c>Source</c> and <c>Destination</c> refer to
+ <p>If both <c><anno>Source</anno></c> and
+ <c><anno>Destination</anno></c> refer to
filenames, the files are opened with <c>[read, binary]</c>
and <c>[write, binary]</c> prepended to their mode lists,
respectively, to optimize the copy.</p>
- <p>If <c>Source</c> refers to a filename, it is opened with
+ <p>If <c><anno>Source</anno></c> refers to a filename, it is opened with
<c>read</c> mode prepended to the mode list before the copy,
and closed when done.</p>
- <p>If <c>Destination</c> refers to a filename, it is opened
+ <p>If <c><anno>Destination</anno></c> refers to a filename, it is opened
with <c>write</c> mode prepended to the mode list before
the copy, and closed when done.</p>
- <p>Returns <c>{ok, BytesCopied}</c> where <c>BytesCopied</c> is
+ <p>Returns <c>{ok, <anno>BytesCopied</anno>}</c> where
+ <c><anno>BytesCopied</anno></c> is
the number of bytes that actually was copied, which may be
- less than <c>ByteCount</c> if end of file was encountered on
- the source. If the operation fails, <c>{error, Reason}</c> is
- returned.</p>
+ less than <c><anno>ByteCount</anno></c> if end of file was
+ encountered on the source. If the operation fails,
+ <c>{error, <anno>Reason</anno>}</c> is returned.</p>
<p>Typical error reasons: As for <c>open/2</c> if a file had to
be opened, and as for <c>read/2</c> and <c>write/2</c>.</p>
</desc>
</func>
<func>
- <name>del_dir(Dir) -> ok | {error, Reason}</name>
+ <name name="del_dir" arity="1"/>
<fsummary>Delete a directory</fsummary>
- <type>
- <v>Dir = name()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
- <p>Tries to delete the directory <c>Dir</c>. The directory must
+ <p>Tries to delete the directory <c><anno>Dir</anno></c>.
+ The directory must
be empty before it can be deleted. Returns <c>ok</c> if
successful.</p>
<p>Typical error reasons are:</p>
@@ -333,7 +314,7 @@ f.txt: {person, "kalle", 25}.
<tag><c>eacces</c></tag>
<item>
<p>Missing search or write permissions for the parent
- directories of <c>Dir</c>.</p>
+ directories of <c><anno>Dir</anno></c>.</p>
</item>
<tag><c>eexist</c></tag>
<item>
@@ -345,8 +326,8 @@ f.txt: {person, "kalle", 25}.
</item>
<tag><c>enotdir</c></tag>
<item>
- <p>A component of <c>Dir</c> is not a directory. On some
- platforms, <c>enoent</c> is returned instead.</p>
+ <p>A component of <c><anno>Dir</anno></c> is not a directory.
+ On some platforms, <c>enoent</c> is returned instead.</p>
</item>
<tag><c>einval</c></tag>
<item>
@@ -357,15 +338,11 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>delete(Filename) -> ok | {error, Reason}</name>
+ <name name="delete" arity="1"/>
<fsummary>Delete a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
- <p>Tries to delete the file <c>Filename</c>. Returns <c>ok</c>
- if successful.</p>
+ <p>Tries to delete the file <c><anno>Filename</anno></c>.
+ Returns <c>ok</c> if successful.</p>
<p>Typical error reasons are:</p>
<taglist>
<tag><c>enoent</c></tag>
@@ -387,30 +364,25 @@ f.txt: {person, "kalle", 25}.
</item>
<tag><c>einval</c></tag>
<item>
- <p><c>Filename</c> had an improper type, such as tuple.</p>
+ <p><c><anno>Filename</anno></c> had an improper type, such as tuple.</p>
</item>
</taglist>
<warning>
- <p>In a future release, a bad type for the <c>Filename</c>
- argument will probably generate an exception.</p>
+ <p>In a future release, a bad type for the
+ <c><anno>Filename</anno></c> argument will probably generate
+ an exception.</p>
<p></p>
</warning>
</desc>
</func>
<func>
- <name>eval(Filename) -> ok | {error, Reason}</name>
+ <name name="eval" arity="1"/>
<fsummary>Evaluate Erlang expressions in a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Reason = ext_posix() | terminated | system_limit
- | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see below</v>
- </type>
<desc>
<p>Reads and evaluates Erlang expressions, separated by '.' (or
',', a sequence of expressions is also an expression), from
- <c>Filename</c>. The actual result of the evaluation is not
- returned; any expression sequence in the file must be there
+ <c><anno>Filename</anno></c>. The actual result of the evaluation
+ is not returned; any expression sequence in the file must be there
for its side effect. Returns one of the following:</p>
<taglist>
<tag><c>ok</c></tag>
@@ -422,7 +394,8 @@ f.txt: {person, "kalle", 25}.
<p>An error occurred when opening the file or reading it.
See <c>open/2</c> for a list of typical error codes.</p>
</item>
- <tag><c>{error, {Line, Mod, Term}}</c></tag>
+ <tag><c>{error, {<anno>Line</anno>, <anno>Mod</anno>,
+ <anno>Term</anno>}}</c></tag>
<item>
<p>An error occurred when interpreting the Erlang
expressions in the file. Use <c>format_error/1</c> to
@@ -433,18 +406,11 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>eval(Filename, Bindings) -> ok | {error, Reason}</name>
+ <name name="eval" arity="2"/>
<fsummary>Evaluate Erlang expressions in a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Bindings -- see erl_eval(3)</v>
- <v>Reason = ext_posix() | terminated | system_limit
- | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see eval/1</v>
- </type>
<desc>
<p>The same as <c>eval/1</c> but the variable bindings
- <c>Bindings</c> are used in the evaluation. See
+ <c><anno>Bindings</anno></c> are used in the evaluation. See
<seealso marker="stdlib:erl_eval">erl_eval(3)</seealso> about
variable bindings.</p>
</desc>
@@ -458,27 +424,19 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>format_error(Reason) -> Chars</name>
+ <name name="format_error" arity="1"/>
<fsummary>Return a descriptive string for an error reason</fsummary>
- <type>
- <v>Reason = atom() | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see eval/1</v>
- <v>Chars = [char() | Chars]</v>
- </type>
<desc>
<p>Given the error reason returned by any function in this
module, returns a descriptive string of the error in English.</p>
</desc>
</func>
<func>
- <name>get_cwd() -> {ok, Dir} | {error, Reason}</name>
+ <name name="get_cwd" arity="0"/>
<fsummary>Get the current working directory</fsummary>
- <type>
- <v>Dir = string()</v>
- <v>Reason = posix()</v>
- </type>
<desc>
- <p>Returns <c>{ok, Dir}</c>, where <c>Dir</c> is the current
+ <p>Returns <c>{ok, <anno>Dir</anno>}</c>, where <c><anno>Dir</anno></c>
+ is the current
working directory of the file server.</p>
<note>
<p>In rare circumstances, this function can fail on Unix.
@@ -496,17 +454,14 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>get_cwd(Drive) -> {ok, Dir} | {error, Reason}</name>
+ <name name="get_cwd" arity="1"/>
<fsummary>Get the current working directory for the drive specified</fsummary>
- <type>
- <v>Drive = string() -- see below</v>
- <v>Dir = string()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
- <p><c>Drive</c> should be of the form "<c>Letter</c><c>:</c>",
- for example "c:". Returns <c>{ok, Dir}</c> or
- <c>{error, Reason}</c>, where <c>Dir</c> is the current
+ <p><c><anno>Drive</anno></c> should be of the form
+ "<c>Letter</c><c>:</c>",
+ for example "c:". Returns <c>{ok, <anno>Dir</anno>}</c> or
+ <c>{error, <anno>Reason</anno>}</c>, where <c><anno>Dir</anno></c>
+ is the current
working directory of the drive specified.</p>
<p>This function returns <c>{error, enotsup}</c> on platforms
which have no concept of current drive (Unix, for example).</p>
@@ -514,7 +469,7 @@ f.txt: {person, "kalle", 25}.
<taglist>
<tag><c>enotsup</c></tag>
<item>
- <p>The operating system have no concept of drives.</p>
+ <p>The operating system has no concept of drives.</p>
</item>
<tag><c>eacces</c></tag>
<item>
@@ -522,32 +477,27 @@ f.txt: {person, "kalle", 25}.
</item>
<tag><c>einval</c></tag>
<item>
- <p>The format of <c>Drive</c> is invalid.</p>
+ <p>The format of <c><anno>Drive</anno></c> is invalid.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>list_dir(Dir) -> {ok, Filenames} | {error, Reason}</name>
+ <name name="list_dir" arity="1"/>
<fsummary>List files in a directory</fsummary>
- <type>
- <v>Dir = name()</v>
- <v>Filenames = [Filename]</v>
- <v>&nbsp;Filename = string()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Lists all the files in a directory. Returns
- <c>{ok, Filenames}</c> if successful. Otherwise, it returns
- <c>{error, Reason}</c>. <c>Filenames</c> is a list of
+ <c>{ok, <anno>Filenames</anno>}</c> if successful.
+ Otherwise, it returns <c>{error, <anno>Reason</anno>}</c>.
+ <c><anno>Filenames</anno></c> is a list of
the names of all the files in the directory. The names are
not sorted.</p>
<p>Typical error reasons are:</p>
<taglist>
<tag><c>eacces</c></tag>
<item>
- <p>Missing search or write permissions for <c>Dir</c> or
- one of its parent directories.</p>
+ <p>Missing search or write permissions for <c><anno>Dir</anno></c>
+ or one of its parent directories.</p>
</item>
<tag><c>enoent</c></tag>
<item>
@@ -557,14 +507,10 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>make_dir(Dir) -> ok | {error, Reason}</name>
+ <name name="make_dir" arity="1"/>
<fsummary>Make a directory</fsummary>
- <type>
- <v>Dir = name()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
- <p>Tries to create the directory <c>Dir</c>. Missing parent
+ <p>Tries to create the directory <c><anno>Dir</anno></c>. Missing parent
directories are <em>not</em> created. Returns <c>ok</c> if
successful.</p>
<p>Typical error reasons are:</p>
@@ -572,15 +518,15 @@ f.txt: {person, "kalle", 25}.
<tag><c>eacces</c></tag>
<item>
<p>Missing search or write permissions for the parent
- directories of <c>Dir</c>.</p>
+ directories of <c><anno>Dir</anno></c>.</p>
</item>
<tag><c>eexist</c></tag>
<item>
- <p>There is already a file or directory named <c>Dir</c>.</p>
+ <p>There is already a file or directory named <c><anno>Dir</anno></c>.</p>
</item>
<tag><c>enoent</c></tag>
<item>
- <p>A component of <c>Dir</c> does not exist.</p>
+ <p>A component of <c><anno>Dir</anno></c> does not exist.</p>
</item>
<tag><c>enospc</c></tag>
<item>
@@ -588,35 +534,33 @@ f.txt: {person, "kalle", 25}.
</item>
<tag><c>enotdir</c></tag>
<item>
- <p>A component of <c>Dir</c> is not a directory. On some
- platforms, <c>enoent</c> is returned instead.</p>
+ <p>A component of <c><anno>Dir</anno></c> is not a directory.
+ On some platforms, <c>enoent</c> is returned instead.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>make_link(Existing, New) -> ok | {error, Reason}</name>
+ <name name="make_link" arity="2"/>
<fsummary>Make a hard link to a file</fsummary>
- <type>
- <v>Existing = New = name()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
- <p>Makes a hard link from <c>Existing</c> to <c>New</c>, on
+ <p>Makes a hard link from <c><anno>Existing</anno></c> to
+ <c><anno>New</anno></c>, on
platforms that support links (Unix). This function returns
<c>ok</c> if the link was successfully created, or
- <c>{error, Reason}</c>. On platforms that do not support
+ <c>{error, <anno>Reason</anno>}</c>. On platforms that do not support
links, <c>{error,enotsup}</c> is returned.</p>
<p>Typical error reasons:</p>
<taglist>
<tag><c>eacces</c></tag>
<item>
<p>Missing read or write permissions for the parent
- directories of <c>Existing</c> or <c>New</c>.</p>
+ directories of <c><anno>Existing</anno></c> or
+ <c><anno>New</anno></c>.</p>
</item>
<tag><c>eexist</c></tag>
<item>
- <p><c>New</c> already exists.</p>
+ <p><c><anno>New</anno></c> already exists.</p>
</item>
<tag><c>enotsup</c></tag>
<item>
@@ -626,30 +570,28 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>make_symlink(Name1, Name2) -> ok | {error, Reason}</name>
+ <name name="make_symlink" arity="2"/>
<fsummary>Make a symbolic link to a file or directory</fsummary>
- <type>
- <v>Name1 = Name2 = name()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
- <p>This function creates a symbolic link <c>Name2</c> to
- the file or directory <c>Name1</c>, on platforms that support
- symbolic links (most Unix systems). <c>Name1</c> need not
+ <p>This function creates a symbolic link <c><anno>Name2</anno></c> to
+ the file or directory <c><anno>Name1</anno></c>, on platforms that
+ support
+ symbolic links (most Unix systems). <c><anno>Name1</anno></c> need not
exist. This function returns <c>ok</c> if the link was
- successfully created, or <c>{error, Reason}</c>. On platforms
+ successfully created, or <c>{error, <anno>Reason</anno>}</c>.
+ On platforms
that do not support symbolic links, <c>{error, enotsup}</c>
is returned.</p>
<p>Typical error reasons:</p>
<taglist>
<tag><c>eacces</c></tag>
<item>
- <p>Missing read or write permissions for the parent
- directories of <c>Name1</c> or <c>Name2</c>.</p>
+ <p>Missing read or write permissions for the parent directories
+ of <c><anno>Name1</anno></c> or <c><anno>Name2</anno></c>.</p>
</item>
<tag><c>eexist</c></tag>
<item>
- <p><c>Name2</c> already exists.</p>
+ <p><c><anno>Name2</anno></c> already exists.</p>
</item>
<tag><c>enotsup</c></tag>
<item>
@@ -668,22 +610,12 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>open(Filename, Modes) -> {ok, IoDevice} | {error, Reason}</name>
+ <name name="open" arity="2"/>
<fsummary>Open a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Modes = [Mode]</v>
- <v>&nbsp;Mode = read | write | append | exclusive | raw | binary | {delayed_write, Size, Delay} | delayed_write | {read_ahead, Size} | read_ahead | compressed | {encoding, Encoding}</v>
- <v>&nbsp;&nbsp;Size = Delay = int()</v>
- <v>&nbsp;&nbsp;Encoding = latin1 | unicode | utf8 | utf16 | {utf16, Endian} | utf32 | {utf32, Endian}</v>
- <v>&nbsp;&nbsp;&nbsp;&nbsp;Endian = big | little</v>
- <v>IoDevice = io_device()</v>
- <v>Reason = ext_posix() | system_limit</v>
- </type>
<desc>
- <p>Opens the file <c>Filename</c> in the mode determined by
- <c>Modes</c>, which may contain one or more of the following
- items:</p>
+ <p>Opens the file <c><anno>Filename</anno></c> in the mode determined
+ by <c><anno>Modes</anno></c>, which may contain one or more of the
+ following items:</p>
<taglist>
<tag><c>read</c></tag>
<item>
@@ -841,23 +773,23 @@ f.txt: {person, "kalle", 25}.
</taglist>
<p>Returns:</p>
<taglist>
- <tag><c>{ok, IoDevice}</c></tag>
+ <tag><c>{ok, <anno>IoDevice</anno>}</c></tag>
<item>
<p>The file has been opened in the requested mode.
- <c>IoDevice</c> is a reference to the file.</p>
+ <c><anno>IoDevice</anno></c> is a reference to the file.</p>
</item>
- <tag><c>{error, Reason}</c></tag>
+ <tag><c>{error, <anno>Reason</anno>}</c></tag>
<item>
<p>The file could not be opened.</p>
</item>
</taglist>
- <p><c>IoDevice</c> is really the pid of the process which
+ <p><c><anno>IoDevice</anno></c> is really the pid of the process which
handles the file. This process is linked to the process
which originally opened the file. If any process to which
- the <c>IoDevice</c> is linked terminates, the file will be
- closed and the process itself will be terminated.
- An <c>IoDevice</c> returned from this call can be used as an
- argument to the IO functions (see
+ the <c><anno>IoDevice</anno></c> is linked terminates, the file will
+ be closed and the process itself will be terminated.
+ An <c><anno>IoDevice</anno></c> returned from this call can be used
+ as an argument to the IO functions (see
<seealso marker="stdlib:io">io(3)</seealso>).</p>
<note>
<p>In previous versions of <c>file</c>, modes were given
@@ -897,34 +829,25 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>path_consult(Path, Filename) -> {ok, Terms, FullName} | {error, Reason}</name>
+ <name name="path_consult" arity="2"/>
<fsummary>Read Erlang terms from a file</fsummary>
- <type>
- <v>Path = [Dir]</v>
- <v>&nbsp;Dir = name()</v>
- <v>Filename = name()</v>
- <v>Terms = [term()]</v>
- <v>FullName = string()</v>
- <v>Reason = ext_posix() | terminated | system_limit
- | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see below</v>
- </type>
<desc>
- <p>Searches the path <c>Path</c> (a list of directory names)
- until the file <c>Filename</c> is found. If <c>Filename</c>
- is an absolute filename, <c>Path</c> is ignored.
+ <p>Searches the path <c><anno>Path</anno></c> (a list of directory
+ names) until the file <c><anno>Filename</anno></c> is found.
+ If <c><anno>Filename</anno></c>
+ is an absolute filename, <c><anno>Path</anno></c> is ignored.
Then reads Erlang terms, separated by '.', from the file.
Returns one of the following:</p>
<taglist>
- <tag><c>{ok, Terms, FullName}</c></tag>
+ <tag><c>{ok, <anno>Terms</anno>, <anno>FullName</anno>}</c></tag>
<item>
- <p>The file was successfully read. <c>FullName</c> is
+ <p>The file was successfully read. <c><anno>FullName</anno></c> is
the full name of the file.</p>
</item>
<tag><c>{error, enoent}</c></tag>
<item>
<p>The file could not be found in any of the directories in
- <c>Path</c>.</p>
+ <c><anno>Path</anno></c>.</p>
</item>
<tag><c>{error, atom()}</c></tag>
<item>
@@ -932,7 +855,8 @@ f.txt: {person, "kalle", 25}.
See <seealso marker="#open/2">open/2</seealso> for a list
of typical error codes.</p>
</item>
- <tag><c>{error, {Line, Mod, Term}}</c></tag>
+ <tag><c>{error, {<anno>Line</anno>, <anno>Mod</anno>,
+ <anno>Term</anno>}}</c></tag>
<item>
<p>An error occurred when interpreting the Erlang terms in
the file. Use <c>format_error/1</c> to convert
@@ -943,36 +867,28 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>path_eval(Path, Filename) -> {ok, FullName} | {error, Reason}</name>
+ <name name="path_eval" arity="2"/>
<fsummary>Evaluate Erlang expressions in a file</fsummary>
- <type>
- <v>Path = [Dir]</v>
- <v>&nbsp;Dir = name()</v>
- <v>Filename = name()</v>
- <v>FullName = string()</v>
- <v>Reason = ext_posix() | terminated | system_limit
- | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see below</v>
- </type>
<desc>
- <p>Searches the path <c>Path</c> (a list of directory names)
- until the file <c>Filename</c> is found. If <c>Filename</c>
- is an absolute file name, <c>Path</c> is ignored. Then reads
+ <p>Searches the path <c><anno>Path</anno></c> (a list of directory
+ names) until the file <c><anno>Filename</anno></c> is found.
+ If <c><anno>Filename</anno></c> is an absolute file name,
+ <c><anno>Path</anno></c> is ignored. Then reads
and evaluates Erlang expressions, separated by '.' (or ',', a
sequence of expressions is also an expression), from the file.
The actual result of evaluation is not returned; any
expression sequence in the file must be there for its side
effect. Returns one of the following:</p>
<taglist>
- <tag><c>{ok, FullName}</c></tag>
+ <tag><c>{ok, <anno>FullName</anno>}</c></tag>
<item>
- <p>The file was read and evaluated. <c>FullName</c> is
+ <p>The file was read and evaluated. <c><anno>FullName</anno></c> is
the full name of the file.</p>
</item>
<tag><c>{error, enoent}</c></tag>
<item>
<p>The file could not be found in any of the directories in
- <c>Path</c>.</p>
+ <c><anno>Path</anno></c>.</p>
</item>
<tag><c>{error, atom()}</c></tag>
<item>
@@ -980,7 +896,8 @@ f.txt: {person, "kalle", 25}.
See <seealso marker="#open/2">open/2</seealso> for a list
of typical error codes.</p>
</item>
- <tag><c>{error, {Line, Mod, Term}}</c></tag>
+ <tag><c>{error, {<anno>Line</anno>, <anno>Mod</anno>,
+ <anno>Term</anno>}}</c></tag>
<item>
<p>An error occurred when interpreting the Erlang
expressions in the file. Use <c>format_error/1</c> to
@@ -991,34 +908,26 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>path_open(Path, Filename, Modes) -> {ok, IoDevice, FullName} | {error, Reason}</name>
+ <name name="path_open" arity="3"/>
<fsummary>Open a file</fsummary>
- <type>
- <v>Path = [Dir]</v>
- <v>&nbsp;Dir = name()</v>
- <v>Filename = name()</v>
- <v>Modes = [Mode] -- see open/2</v>
- <v>IoDevice = io_device()</v>
- <v>FullName = string()</v>
- <v>Reason = ext_posix() | system_limit</v>
- </type>
<desc>
- <p>Searches the path <c>Path</c> (a list of directory names)
- until the file <c>Filename</c> is found. If <c>Filename</c>
- is an absolute file name, <c>Path</c> is ignored.
- Then opens the file in the mode determined by <c>Modes</c>.
+ <p>Searches the path <c><anno>Path</anno></c> (a list of directory
+ names) until the file <c><anno>Filename</anno></c> is found.
+ If <c><anno>Filename</anno></c>
+ is an absolute file name, <c><anno>Path</anno></c> is ignored.
+ Then opens the file in the mode determined by <c><anno>Modes</anno></c>.
Returns one of the following:</p>
<taglist>
- <tag><c>{ok, IoDevice, FullName}</c></tag>
+ <tag><c>{ok, <anno>IoDevice</anno>, <anno>FullName</anno>}</c></tag>
<item>
<p>The file has been opened in the requested mode.
- <c>IoDevice</c> is a reference to the file and
- <c>FullName</c> is the full name of the file.</p>
+ <c><anno>IoDevice</anno></c> is a reference to the file and
+ <c><anno>FullName</anno></c> is the full name of the file.</p>
</item>
<tag><c>{error, enoent}</c></tag>
<item>
<p>The file could not be found in any of the directories in
- <c>Path</c>.</p>
+ <c><anno>Path</anno></c>.</p>
</item>
<tag><c>{error, atom()}</c></tag>
<item>
@@ -1028,36 +937,27 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>path_script(Path, Filename) -> {ok, Value, FullName} | {error, Reason}</name>
+ <name name="path_script" arity="2"/>
<fsummary>Evaluate and return the value of Erlang expressions in a file</fsummary>
- <type>
- <v>Path = [Dir]</v>
- <v>&nbsp;Dir = name()</v>
- <v>Filename = name()</v>
- <v>Value = term()</v>
- <v>FullName = string()</v>
- <v>Reason = ext_posix() | terminated | system_limit
- | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see below</v>
- </type>
<desc>
- <p>Searches the path <c>Path</c> (a list of directory names)
- until the file <c>Filename</c> is found. If <c>Filename</c>
- is an absolute file name, <c>Path</c> is ignored. Then reads
+ <p>Searches the path <c><anno>Path</anno></c> (a list of directory
+ names) until the file <c><anno>Filename</anno></c> is found.
+ If <c><anno>Filename</anno></c> is an absolute file name,
+ <c><anno>Path</anno></c> is ignored. Then reads
and evaluates Erlang expressions, separated by '.' (or ',', a
sequence of expressions is also an expression), from the file.
Returns one of the following:</p>
<taglist>
- <tag><c>{ok, Value, FullName}</c></tag>
+ <tag><c>{ok, <anno>Value</anno>, <anno>FullName</anno>}</c></tag>
<item>
- <p>The file was read and evaluated. <c>FullName</c> is
- the full name of the file and <c>Value</c> the value of
+ <p>The file was read and evaluated. <c><anno>FullName</anno></c> is
+ the full name of the file and <c><anno>Value</anno></c> the value of
the last expression.</p>
</item>
<tag><c>{error, enoent}</c></tag>
<item>
<p>The file could not be found in any of the directories in
- <c>Path</c>.</p>
+ <c><anno>Path</anno></c>.</p>
</item>
<tag><c>{error, atom()}</c></tag>
<item>
@@ -1065,7 +965,8 @@ f.txt: {person, "kalle", 25}.
See <seealso marker="#open/2">open/2</seealso> for a list
of typical error codes.</p>
</item>
- <tag><c>{error, {Line, Mod, Term}}</c></tag>
+ <tag><c>{error, {<anno>Line</anno>, <anno>Mod</anno>,
+ <anno>Term</anno>}}</c></tag>
<item>
<p>An error occurred when interpreting the Erlang
expressions in the file. Use <c>format_error/1</c> to
@@ -1076,42 +977,28 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>path_script(Path, Filename, Bindings) -> {ok, Value, FullName} | {error, Reason}</name>
+ <name name="path_script" arity="3"/>
<fsummary>Evaluate and return the value of Erlang expressions in a file</fsummary>
- <type>
- <v>Path = [Dir]</v>
- <v>&nbsp;Dir = name()</v>
- <v>Filename = name()</v>
- <v>Bindings -- see erl_eval(3)</v>
- <v>Value = term()</v>
- <v>FullName = string()</v>
- <v>Reason = posix() | terminated | system_limit
- | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see path_script/2</v>
- </type>
<desc>
<p>The same as <c>path_script/2</c> but the variable bindings
- <c>Bindings</c> are used in the evaluation. See
+ <c><anno>Bindings</anno></c> are used in the evaluation. See
<seealso marker="stdlib:erl_eval">erl_eval(3)</seealso> about
variable bindings.</p>
</desc>
</func>
<func>
- <name>pid2name(Pid) -> string() | undefined</name>
+ <name name="pid2name" arity="1"/>
<fsummary>Return the name of the file handled by a pid</fsummary>
- <type>
- <v>Pid = pid()</v>
- </type>
<desc>
- <p>If <c>Pid</c> is an IO device, that is, a pid returned from
+ <p>If <c><anno>Pid</anno></c> is an IO device, that is, a pid returned from
<c>open/2</c>, this function returns the filename, or rather:</p>
<taglist>
- <tag><c>{ok, Filename}</c></tag>
+ <tag><c>{ok, <anno>Filename</anno>}</c></tag>
<item>
<p>If this node's file server is not a slave, the file was
opened by this node's file server, (this implies that
- <c>Pid</c> must be a local pid) and the file is not
- closed. <c>Filename</c> is the filename in flat string
+ <c><anno>Pid</anno></c> must be a local pid) and the file is not
+ closed. <c><anno>Filename</anno></c> is the filename in flat string
format.</p>
</item>
<tag><c>undefined</c></tag>
@@ -1125,21 +1012,15 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>position(IoDevice, Location) -> {ok, NewPosition} | {error, Reason}</name>
+ <name name="position" arity="2"/>
<fsummary>Set position in a file</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Location = Offset | {bof, Offset} | {cur, Offset} | {eof, Offset} | bof | cur | eof</v>
- <v>&nbsp;Offset = int()</v>
- <v>NewPosition = int()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
- <p>Sets the position of the file referenced by <c>IoDevice</c>
- to <c>Location</c>. Returns <c>{ok, NewPosition}</c> (as
+ <p>Sets the position of the file referenced by <c><anno>IoDevice</anno></c>
+ to <c><anno>Location</anno></c>. Returns
+ <c>{ok, <anno>NewPosition</anno>}</c> (as
absolute offset) if successful, otherwise
- <c>{error, Reason}</c>. <c>Location</c> is one of
- the following:</p>
+ <c>{error, <anno>Reason</anno>}</c>. <c><anno>Location</anno></c> is
+ one of the following:</p>
<taglist>
<tag><c>Offset</c></tag>
<item>
@@ -1167,7 +1048,8 @@ f.txt: {person, "kalle", 25}.
<taglist>
<tag><c>einval</c></tag>
<item>
- <p>Either <c>Location</c> was illegal, or it evaluated to a
+ <p>Either <c><anno>Location</anno></c> was illegal, or it
+ evaluated to a
negative offset in the file. Note that if the resulting
position is a negative value, the result is an error, and
after the call the file position is undefined.</p>
@@ -1176,22 +1058,14 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>pread(IoDevice, LocNums) -> {ok, DataL} | eof | {error, Reason}</name>
+ <name name="pread" arity="2"/>
<fsummary>Read from a file at certain positions</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>LocNums = [{Location, Number}]</v>
- <v>&nbsp;Location -- see position/2</v>
- <v>&nbsp;Number = int()</v>
- <v>DataL = [Data]</v>
- <v>&nbsp;Data = [char()] | binary()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
<p>Performs a sequence of <c>pread/3</c> in one operation,
which is more efficient than calling them one at a time.
- Returns <c>{ok, [Data, ...]}</c> or <c>{error, Reason}</c>,
- where each <c>Data</c>, the result of the corresponding
+ Returns <c>{ok, [<anno>Data</anno>, ...]}</c> or
+ <c>{error, <anno>Reason</anno>}</c>,
+ where each <c><anno>Data</anno></c>, the result of the corresponding
<c>pread</c>, is either a list or a binary depending on
the mode of the file, or <c>eof</c> if the requested position
was beyond end of file.</p>
@@ -1199,76 +1073,53 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>pread(IoDevice, Location, Number) -> {ok, Data} | eof | {error, Reason}</name>
+ <name name="pread" arity="3"/>
<fsummary>Read from a file at a certain position</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Location -- see position/2</v>
- <v>Number = int()</v>
- <v>Data = [char()] | binary()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
<p>Combines <c>position/2</c> and <c>read/2</c> in one
operation, which is more efficient than calling them one at a
- time. If <c>IoDevice</c> has been opened in raw mode, some
- restrictions apply: <c>Location</c> is only allowed to be an
+ time. If <c><anno>IoDevice</anno></c> has been opened in raw mode,
+ some restrictions apply: <c><anno>Location</anno></c> is only allowed
+ to be an
integer; and the current position of the file is undefined
after the operation.</p>
<p>As the position is given as a byte-offset, special caution has to be taken when working with files where <c>encoding</c> is set to something else than <c>latin1</c>, as not every byte position will be a valid character boundary on such a file.</p>
</desc>
</func>
<func>
- <name>pwrite(IoDevice, LocBytes) -> ok | {error, {N, Reason}}</name>
+ <name name="pwrite" arity="2"/>
<fsummary>Write to a file at certain positions</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>LocBytes = [{Location, Bytes}]</v>
- <v>&nbsp;Location -- see position/2</v>
- <v>&nbsp;Bytes = iodata()</v>
- <v>N = int()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
<p>Performs a sequence of <c>pwrite/3</c> in one operation,
which is more efficient than calling them one at a time.
- Returns <c>ok</c> or <c>{error, {N, Reason}}</c>, where
- <c>N</c> is the number of successful writes that was done
+ Returns <c>ok</c> or <c>{error, {<anno>N</anno>,
+ <anno>Reason</anno>}}</c>, where
+ <c><anno>N</anno></c> is the number of successful writes that was done
before the failure.</p>
<p>When positioning in a file with other <c>encoding</c> than <c>latin1</c>, caution must be taken to set the position on a correct character boundary, see <seealso marker="#position/2">position/2</seealso> for details.</p>
</desc>
</func>
<func>
- <name>pwrite(IoDevice, Location, Bytes) -> ok | {error, Reason}</name>
+ <name name="pwrite" arity="3"/>
<fsummary>Write to a file at a certain position</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Location -- see position/2</v>
- <v>Bytes = iodata()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
<p>Combines <c>position/2</c> and <c>write/2</c> in one
operation, which is more efficient than calling them one at a
- time. If <c>IoDevice</c> has been opened in raw mode, some
- restrictions apply: <c>Location</c> is only allowed to be an
+ time. If <c><anno>IoDevice</anno></c> has been opened in raw mode,
+ some restrictions apply: <c><anno>Location</anno></c> is only allowed
+ to be an
integer; and the current position of the file is undefined
after the operation.</p>
<p>When positioning in a file with other <c>encoding</c> than <c>latin1</c>, caution must be taken to set the position on a correct character boundary, see <seealso marker="#position/2">position/2</seealso> for details.</p>
</desc>
</func>
<func>
- <name>read(IoDevice, Number) -> {ok, Data} | eof | {error, Reason}</name>
+ <name name="read" arity="2"/>
<fsummary>Read from a file</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Number = int()</v>
- <v>Data = [char()] | binary()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
- <p>Reads <c>Number</c> bytes/characters from the file referenced by
- <c>IoDevice</c>. The functions <c>read/2</c>, <c>pread/3</c>
+ <p>Reads <c><anno>Number</anno></c> bytes/characters from the file
+ referenced by <c><anno>IoDevice</anno></c>. The functions
+ <c>read/2</c>, <c>pread/3</c>
and <c>read_line/1</c> are the only ways to read from a file
opened in raw mode (although they work for normally opened
files, too).</p>
@@ -1276,7 +1127,7 @@ f.txt: {person, "kalle", 25}.
<p>Also if <c>encoding</c> is set to something else than <c>latin1</c>, the <c>read/3</c> call will fail if the data contains characters larger than 255, why the <seealso marker="stdlib:io">io(3)</seealso> module is to be preferred when reading such a file.</p>
<p>The function returns:</p>
<taglist>
- <tag><c>{ok, Data}</c></tag>
+ <tag><c>{ok, <anno>Data</anno>}</c></tag>
<item>
<p>If the file was opened in binary mode, the read bytes are
returned in a binary, otherwise in a list. The list or
@@ -1285,10 +1136,10 @@ f.txt: {person, "kalle", 25}.
</item>
<tag><c>eof</c></tag>
<item>
- <p>Returned if <c>Number>0</c> and end of file was reached
- before anything at all could be read.</p>
+ <p>Returned if <c><anno>Number</anno>>0</c> and end of file was
+ reached before anything at all could be read.</p>
</item>
- <tag><c>{error, Reason}</c></tag>
+ <tag><c>{error, <anno>Reason</anno>}</c></tag>
<item>
<p>An error occurred.</p>
</item>
@@ -1307,17 +1158,14 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>read_file(Filename) -> {ok, Binary} | {error, Reason}</name>
+ <name name="read_file" arity="1"/>
<fsummary>Read a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Binary = binary()</v>
- <v>Reason = ext_posix() | terminated | system_limit</v>
- </type>
<desc>
- <p>Returns <c>{ok, Binary}</c>, where <c>Binary</c> is a binary
- data object that contains the contents of <c>Filename</c>, or
- <c>{error, Reason}</c> if an error occurs.</p>
+ <p>Returns <c>{ok, <anno>Binary</anno>}</c>, where
+ <c><anno>Binary</anno></c> is a binary
+ data object that contains the contents of
+ <c><anno>Filename</anno></c>, or
+ <c>{error, <anno>Reason</anno>}</c> if an error occurs.</p>
<p>Typical error reasons:</p>
<taglist>
<tag><c>enoent</c></tag>
@@ -1346,17 +1194,13 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>read_file_info(Filename) -> {ok, FileInfo} | {error, Reason}</name>
+ <name name="read_file_info" arity="1"/>
<fsummary>Get information about a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>FileInfo = #file_info{}</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Retrieves information about a file. Returns
- <c>{ok, FileInfo}</c> if successful, otherwise
- <c>{error, Reason}</c>. <c>FileInfo</c> is a record
+ <c>{ok, <anno>FileInfo</anno>}</c> if successful, otherwise
+ <c>{error, <anno>Reason</anno>}</c>. <c><anno>FileInfo</anno></c>
+ is a record
<c>file_info</c>, defined in the Kernel include file
<c>file.hrl</c>. Include the following directive in the module
from which the function is called:</p>
@@ -1364,7 +1208,7 @@ f.txt: {person, "kalle", 25}.
-include_lib("kernel/include/file.hrl").</code>
<p>The record <c>file_info</c> contains the following fields.</p>
<taglist>
- <tag><c>size = int()</c></tag>
+ <tag><c>size = integer()</c></tag>
<item>
<p>Size of file in bytes.</p>
</item>
@@ -1391,7 +1235,7 @@ f.txt: {person, "kalle", 25}.
the file or the inode was changed. In Windows, it is
the create time.</p>
</item>
- <tag><c>mode = int()</c></tag>
+ <tag><c>mode = integer()</c></tag>
<item>
<p>The file permissions as the sum of the following bit
values:</p>
@@ -1422,33 +1266,33 @@ f.txt: {person, "kalle", 25}.
<p>On Unix platforms, other bits than those listed above
may be set.</p>
</item>
- <tag><c>links = int()</c></tag>
+ <tag><c>links = integer()</c></tag>
<item>
<p>Number of links to the file (this will always be 1 for
file systems which have no concept of links).</p>
</item>
- <tag><c>major_device = int()</c></tag>
+ <tag><c>major_device = integer()</c></tag>
<item>
<p>Identifies the file system where the file is located.
In Windows, the number indicates a drive as follows:
0 means A:, 1 means B:, and so on.</p>
</item>
- <tag><c>minor_device = int()</c></tag>
+ <tag><c>minor_device = integer()</c></tag>
<item>
<p>Only valid for character devices on Unix. In all other
cases, this field is zero.</p>
</item>
- <tag><c>inode = int()</c></tag>
+ <tag><c>inode = integer()</c></tag>
<item>
<p>Gives the <c>inode</c> number. On non-Unix file systems,
this field will be zero.</p>
</item>
- <tag><c>uid = int()</c></tag>
+ <tag><c>uid = integer()</c></tag>
<item>
<p>Indicates the owner of the file. Will be zero for
non-Unix file systems.</p>
</item>
- <tag><c>gid = int()</c></tag>
+ <tag><c>gid = integer()</c></tag>
<item>
<p>Gives the group that the owner of the file belongs to.
Will be zero for non-Unix file systems.</p>
@@ -1474,21 +1318,16 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>read_line(IoDevice) -> {ok, Data} | eof | {error, Reason}</name>
+ <name name="read_line" arity="1"/>
<fsummary>Read a line from a file</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Data = [char()] | binary()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
<p>Reads a line of bytes/characters from the file referenced by
- <c>IoDevice</c>. Lines are defined to be delimited by the linefeed (LF, <c>\n</c>) character, but any carriage return (CR, <c>\r</c>) followed by a newline is also treated as a single LF character (the carriage return is silently ignored). The line is returned <em>including</em> the LF, but excluding any CR immediately followed by a LF. This behaviour is consistent with the behaviour of <seealso marker="stdlib:io#get_line/2">io:get_line/2</seealso>. If end of file is reached without any LF ending the last line, a line with no trailing LF is returned.</p>
+ <c><anno>IoDevice</anno></c>. Lines are defined to be delimited by the linefeed (LF, <c>\n</c>) character, but any carriage return (CR, <c>\r</c>) followed by a newline is also treated as a single LF character (the carriage return is silently ignored). The line is returned <em>including</em> the LF, but excluding any CR immediately followed by a LF. This behaviour is consistent with the behaviour of <seealso marker="stdlib:io#get_line/2">io:get_line/2</seealso>. If end of file is reached without any LF ending the last line, a line with no trailing LF is returned.</p>
<p>The function can be used on files opened in <c>raw</c> mode. It is however inefficient to use it on <c>raw</c> files if the file is not opened with the option <c>{read_ahead, Size}</c> specified, why combining <c>raw</c> and <c>{read_ahead, Size}</c> is highly recommended when opening a text file for raw line oriented reading.</p>
<p>If <c>encoding</c> is set to something else than <c>latin1</c>, the <c>read_line/1</c> call will fail if the data contains characters larger than 255, why the <seealso marker="stdlib:io">io(3)</seealso> module is to be preferred when reading such a file.</p>
<p>The function returns:</p>
<taglist>
- <tag><c>{ok, Data}</c></tag>
+ <tag><c>{ok, <anno>Data</anno>}</c></tag>
<item>
<p>One line from the file is returned, including the trailing LF, but with CRLF sequences replaced by a single LF (see above).</p>
<p>If the file was opened in binary mode, the read bytes are
@@ -1499,7 +1338,7 @@ f.txt: {person, "kalle", 25}.
<p>Returned if end of file was reached
before anything at all could be read.</p>
</item>
- <tag><c>{error, Reason}</c></tag>
+ <tag><c>{error, <anno>Reason</anno>}</c></tag>
<item>
<p>An error occurred.</p>
</item>
@@ -1518,23 +1357,19 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>read_link(Name) -> {ok, Filename} | {error, Reason}</name>
+ <name name="read_link" arity="1"/>
<fsummary>See what a link is pointing to</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Filename = string()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
- <p>This function returns <c>{ok, Filename}</c> if <c>Name</c>
- refers to a symbolic link or <c>{error, Reason}</c> otherwise.
+ <p>This function returns <c>{ok, <anno>Filename</anno>}</c> if
+ <c><anno>Name</anno></c> refers to a symbolic link or
+ <c>{error, <anno>Reason</anno>}</c> otherwise.
On platforms that do not support symbolic links, the return
value will be <c>{error,enotsup}</c>.</p>
<p>Typical error reasons:</p>
<taglist>
<tag><c>einval</c></tag>
<item>
- <p><c>Linkname</c> does not refer to a symbolic link.</p>
+ <p><c><anno>Name</anno></c> does not refer to a symbolic link.</p>
</item>
<tag><c>enoent</c></tag>
<item>
@@ -1548,34 +1383,26 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>read_link_info(Name) -> {ok, FileInfo} | {error, Reason}</name>
+ <name name="read_link_info" arity="1"/>
<fsummary>Get information about a link or file</fsummary>
- <type>
- <v>Name = name()</v>
- <v>FileInfo = #file_info{}, see read_file_info/1</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>This function works like <c>read_file_info/1</c>, except that
- if <c>Name</c> is a symbolic link, information about the link
- will be returned in the <c>file_info</c> record and
+ if <c><anno>Name</anno></c> is a symbolic link, information about
+ the link will be returned in the <c>file_info</c> record and
the <c>type</c> field of the record will be set to
<c>symlink</c>.</p>
- <p>If <c>Name</c> is not a symbolic link, this function returns
+ <p>If <c><anno>Name</anno></c> is not a symbolic link, this function returns
exactly the same result as <c>read_file_info/1</c>.
On platforms that do not support symbolic links, this function
is always equivalent to <c>read_file_info/1</c>.</p>
</desc>
</func>
<func>
- <name>rename(Source, Destination) -> ok | {error, Reason}</name>
+ <name name="rename" arity="2"/>
<fsummary>Rename a file</fsummary>
- <type>
- <v>Source = Destination = name()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
- <p>Tries to rename the file <c>Source</c> to <c>Destination</c>.
+ <p>Tries to rename the file <c><anno>Source</anno></c> to
+ <c><anno>Destination</anno></c>.
It can be used to move files (and directories) between
directories, but it is not sufficient to specify
the destination only. The destination file name must also be
@@ -1593,25 +1420,28 @@ f.txt: {person, "kalle", 25}.
<tag><c>eacces</c></tag>
<item>
<p>Missing read or write permissions for the parent
- directories of <c>Source</c> or <c>Destination</c>. On
+ directories of <c><anno>Source</anno></c> or
+ <c><anno>Destination</anno></c>. On
some platforms, this error is given if either
- <c>Source</c> or <c>Destination</c> is open.</p>
+ <c><anno>Source</anno></c> or <c><anno>Destination</anno></c>
+ is open.</p>
</item>
<tag><c>eexist</c></tag>
<item>
- <p><c>Destination</c> is not an empty directory. On some
- platforms, also given when <c>Source</c> and
- <c>Destination</c> are not of the same type.</p>
+ <p><c><anno>Destination</anno></c> is not an empty directory.
+ On some platforms, also given when <c><anno>Source</anno></c> and
+ <c><anno>Destination</anno></c> are not of the same type.</p>
</item>
<tag><c>einval</c></tag>
<item>
- <p><c>Source</c> is a root directory, or <c>Destination</c>
- is a sub-directory of <c>Source</c>.</p>
+ <p><c><anno>Source</anno></c> is a root directory, or
+ <c><anno>Destination</anno></c>
+ is a sub-directory of <c><anno>Source</anno></c>.</p>
</item>
<tag><c>eisdir</c></tag>
<item>
- <p><c>Destination</c> is a directory, but <c>Source</c> is
- not.</p>
+ <p><c><anno>Destination</anno></c> is a directory, but
+ <c><anno>Source</anno></c> is not.</p>
</item>
<tag><c>enoent</c></tag>
<item>
@@ -1619,35 +1449,28 @@ f.txt: {person, "kalle", 25}.
</item>
<tag><c>enotdir</c></tag>
<item>
- <p><c>Source</c> is a directory, but <c>Destination</c> is
- not.</p>
+ <p><c><anno>Source</anno></c> is a directory, but
+ <c><anno>Destination</anno></c> is not.</p>
</item>
<tag><c>exdev</c></tag>
<item>
- <p><c>Source</c> and <c>Destination</c> are on different
- file systems.</p>
+ <p><c><anno>Source</anno></c> and <c><anno>Destination</anno></c>
+ are on different file systems.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>script(Filename) -> {ok, Value} | {error, Reason}</name>
+ <name name="script" arity="1"/>
<fsummary>Evaluate and return the value of Erlang expressions in a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Value = term()</v>
- <v>Reason = ext_posix() | terminated | system_limit
- | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see below</v>
- </type>
<desc>
<p>Reads and evaluates Erlang expressions, separated by '.' (or
',', a sequence of expressions is also an expression), from
the file. Returns one of the following:</p>
<taglist>
- <tag><c>{ok, Value}</c></tag>
+ <tag><c>{ok, <anno>Value</anno>}</c></tag>
<item>
- <p>The file was read and evaluated. <c>Value</c> is
+ <p>The file was read and evaluated. <c><anno>Value</anno></c> is
the value of the last expression.</p>
</item>
<tag><c>{error, atom()}</c></tag>
@@ -1656,7 +1479,8 @@ f.txt: {person, "kalle", 25}.
See <seealso marker="#open/2">open/2</seealso> for a list
of typical error codes.</p>
</item>
- <tag><c>{error, {Line, Mod, Term}}</c></tag>
+ <tag><c>{error, {<anno>Line</anno>, <anno>Mod</anno>,
+ <anno>Term</anno>}}</c></tag>
<item>
<p>An error occurred when interpreting the Erlang
expressions in the file. Use <c>format_error/1</c> to
@@ -1667,33 +1491,21 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>script(Filename, Bindings) -> {ok, Value} | {error, Reason}</name>
+ <name name="script" arity="2"/>
<fsummary>Evaluate and return the value of Erlang expressions in a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Bindings -- see erl_eval(3)</v>
- <v>Value = term()</v>
- <v>Reason = ext_posix() | terminated | system_limit
- | {Line, Mod, Term}</v>
- <v>&nbsp;Line, Mod, Term -- see below</v>
- </type>
<desc>
<p>The same as <c>script/1</c> but the variable bindings
- <c>Bindings</c> are used in the evaluation. See
+ <c><anno>Bindings</anno></c> are used in the evaluation. See
<seealso marker="stdlib:erl_eval">erl_eval(3)</seealso> about
variable bindings.</p>
</desc>
</func>
<func>
- <name>set_cwd(Dir) -> ok | {error,Reason}</name>
+ <name name="set_cwd" arity="1"/>
<fsummary>Set the current working directory</fsummary>
- <type>
- <v>Dir = name()</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Sets the current working directory of the file server to
- <c>Dir</c>. Returns <c>ok</c> if successful.</p>
+ <c><anno>Dir</anno></c>. Returns <c>ok</c> if successful.</p>
<p>Typical error reasons are:</p>
<taglist>
<tag><c>enoent</c></tag>
@@ -1702,8 +1514,8 @@ f.txt: {person, "kalle", 25}.
</item>
<tag><c>enotdir</c></tag>
<item>
- <p>A component of <c>Dir</c> is not a directory. On some
- platforms, <c>enoent</c> is returned.</p>
+ <p>A component of <c><anno>Dir</anno></c> is not a directory.
+ On some platforms, <c>enoent</c> is returned.</p>
</item>
<tag><c>eacces</c></tag>
<item>
@@ -1712,23 +1524,21 @@ f.txt: {person, "kalle", 25}.
</item>
<tag><c>badarg</c></tag>
<item>
- <p><c>Filename</c> had an improper type, such as tuple.</p>
+ <p><c><anno>Dir</anno></c> had an improper type,
+ such as tuple.</p>
</item>
</taglist>
<warning>
- <p>In a future release, a bad type for the <c>Filename</c>
+ <p>In a future release, a bad type for the
+ <c><anno>Dir</anno></c>
argument will probably generate an exception.</p>
<p></p>
</warning>
</desc>
</func>
<func>
- <name>sync(IoDevice) -> ok | {error, Reason}</name>
+ <name name="sync" arity="1"/>
<fsummary>Synchronizes the in-memory state of a file with that on the physical medium</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
<p>Makes sure that any buffers kept by the operating system
(not by the Erlang runtime system) are written to disk. On
@@ -1743,12 +1553,8 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>datasync(IoDevice) -> ok | {error, Reason}</name>
+ <name name="datasync" arity="1"/>
<fsummary>Synchronizes the in-memory data of a file, ignoring most of its metadata, with that on the physical medium</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
<p>Makes sure that any buffers kept by the operating system
(not by the Erlang runtime system) are written to disk. In
@@ -1770,32 +1576,23 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>truncate(IoDevice) -> ok | {error, Reason}</name>
+ <name name="truncate" arity="1"/>
<fsummary>Truncate a file</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
- <p>Truncates the file referenced by <c>IoDevice</c> at
+ <p>Truncates the file referenced by <c><anno>IoDevice</anno></c> at
the current position. Returns <c>ok</c> if successful,
- otherwise <c>{error, Reason}</c>.</p>
+ otherwise <c>{error, <anno>Reason</anno>}</c>.</p>
</desc>
</func>
<func>
- <name>write(IoDevice, Bytes) -> ok | {error, Reason}</name>
+ <name name="write" arity="2"/>
<fsummary>Write to a file</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Bytes = iodata()</v>
- <v>Reason = ext_posix() | terminated</v>
- </type>
<desc>
- <p>Writes <c>Bytes</c> to the file referenced by
- <c>IoDevice</c>. This function is the only way to write to a
+ <p>Writes <c><anno>Bytes</anno></c> to the file referenced by
+ <c><anno>IoDevice</anno></c>. This function is the only way to write to a
file opened in raw mode (although it works for normally
opened files, too). Returns <c>ok</c> if successful, and
- <c>{error, Reason}</c> otherwise.</p>
+ <c>{error, <anno>Reason</anno>}</c> otherwise.</p>
<p>If the file is opened with <c>encoding</c> set to something else than <c>latin1</c>, each byte written might result in several bytes actually being written to the file, as the byte range 0..255 might represent anything between one and four bytes depending on value and UTF encoding type.</p>
<p>Typical error reasons are:</p>
<taglist>
@@ -1811,18 +1608,14 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>write_file(Filename, Bytes) -> ok | {error, Reason}</name>
+ <name name="write_file" arity="2"/>
<fsummary>Write a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Bytes = iodata()</v>
- <v>Reason = ext_posix() | terminated | system_limit</v>
- </type>
<desc>
- <p>Writes the contents of the iodata term <c>Bytes</c> to the
- file <c>Filename</c>. The file is created if it does not
+ <p>Writes the contents of the iodata term <c><anno>Bytes</anno></c>
+ to the file <c><anno>Filename</anno></c>.
+ The file is created if it does not
exist. If it exists, the previous contents are
- overwritten. Returns <c>ok</c>, or <c>{error, Reason}</c>.</p>
+ overwritten. Returns <c>ok</c>, or <c>{error, <anno>Reason</anno>}</c>.</p>
<p>Typical error reasons are:</p>
<taglist>
<tag><c>enoent</c></tag>
@@ -1851,33 +1644,23 @@ f.txt: {person, "kalle", 25}.
</desc>
</func>
<func>
- <name>write_file(Filename, Bytes, Modes) -> ok | {error, Reason}</name>
+ <name name="write_file" arity="3"/>
<fsummary>Write a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Bytes = iodata()</v>
- <v>Modes = [Mode] -- see open/2</v>
- <v>Reason = ext_posix() | terminated | system_limit</v>
- </type>
<desc>
<p>Same as <c>write_file/2</c>, but takes a third argument
- <c>Modes</c>, a list of possible modes, see
+ <c><anno>Modes</anno></c>, a list of possible modes, see
<seealso marker="#open/2">open/2</seealso>. The mode flags
<c>binary</c> and <c>write</c> are implicit, so they should
not be used.</p>
</desc>
</func>
<func>
- <name>write_file_info(Filename, FileInfo) -> ok | {error, Reason}</name>
+ <name name="write_file_info" arity="2"/>
<fsummary>Change information about a file</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>FileInfo = #file_info{} -- see also read_file_info/1</v>
- <v>Reason = ext_posix()</v>
- </type>
<desc>
<p>Change file information. Returns <c>ok</c> if successful,
- otherwise <c>{error, Reason}</c>. <c>FileInfo</c> is a record
+ otherwise <c>{error, <anno>Reason</anno>}</c>.
+ <c><anno>FileInfo</anno></c> is a record
<c>file_info</c>, defined in the Kernel include file
<c>file.hrl</c>. Include the following directive in the module
from which the function is called:</p>
@@ -1901,7 +1684,7 @@ f.txt: {person, "kalle", 25}.
time). On Windows, this field is the new creation time to
set for the file.</p>
</item>
- <tag><c>mode = int()</c></tag>
+ <tag><c>mode = integer()</c></tag>
<item>
<p>The file permissions as the sum of the following bit
values:</p>
@@ -1932,12 +1715,12 @@ f.txt: {person, "kalle", 25}.
<p>On Unix platforms, other bits than those listed above
may be set.</p>
</item>
- <tag><c>uid = int()</c></tag>
+ <tag><c>uid = integer()</c></tag>
<item>
<p>Indicates the owner of the file. Ignored for non-Unix
file systems.</p>
</item>
- <tag><c>gid = int()</c></tag>
+ <tag><c>gid = integer()</c></tag>
<item>
<p>Gives the group that the owner of the file belongs to.
Ignored non-Unix file systems.</p>
diff --git a/lib/kernel/doc/src/gen_sctp.xml b/lib/kernel/doc/src/gen_sctp.xml
index fb09092f1c..5ceb82ae41 100644
--- a/lib/kernel/doc/src/gen_sctp.xml
+++ b/lib/kernel/doc/src/gen_sctp.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2007</year><year>2010</year>
+ <year>2007</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -65,77 +65,71 @@
<item><seealso marker="#seealso">SEE ALSO</seealso></item>
<item><seealso marker="#authors">AUTHORS</seealso></item>
</list>
+ <marker id="types"></marker>
</section>
- <section>
- <marker id="types"></marker>
- <title>DATA TYPES</title>
- <marker id="type-assoc_id"></marker>
- <taglist>
- <tag><c>assoc_id()</c></tag>
- <item>
+ <datatypes>
+ <datatype>
+ <name name="assoc_id"/>
+ <desc>
<p>An opaque term returned in for example #sctp_paddr_change{}
that identifies an association for an SCTP socket. The term
is opaque except for the special value <c>0</c> that has a
- meaning such as "the whole endpoint" or "all future associations".</p>
- <marker id="type-charlist"></marker>
- </item>
- <tag><c>charlist() = [char()]</c></tag>
- <item> <marker id="type-iolist"></marker>
-</item>
- <tag><c>iolist() = [char() | binary()]</c></tag>
- <item> <marker id="type-ip_address"></marker>
-</item>
- <tag><c>ip_address()</c></tag>
- <item>
+ meaning such as "the whole endpoint" or "all future associations".
+ </p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="hostname"/>
+ </datatype>
+ <datatype>
+ <name name="ip_address"/>
+ <desc>
<p>Represents an address of an SCTP socket.
It is a tuple as explained in
<seealso marker="inet">inet(3)</seealso>.</p>
- <marker id="type-port_number"></marker>
- </item>
- <tag><c>port_number() = 0 .. 65535</c></tag>
- <item> <marker id="type-posix"></marker>
-</item>
- <tag><c>posix()</c></tag>
- <item>
- <p>See
- <seealso marker="inet#error_codes">inet(3); POSIX Error Codes.</seealso></p>
- <marker id="type-sctp_option"></marker>
- </item>
- <tag><c>sctp_option()</c></tag>
- <item>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="port_number"/>
+ </datatype>
+ <datatype>
+ <name name="posix"/>
+ <desc>
+ <p>See <seealso marker="inet#error_codes">
+ inet(3); POSIX Error Codes</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="sctp_option"/>
+ <desc>
<p>One of the
<seealso marker="#options">SCTP Socket Options.</seealso></p>
<marker id="type-sctp_socket"></marker>
- </item>
- <tag><c>sctp_socket()</c></tag>
- <item>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="sctp_socket"/>
+ <desc>
<p>Socket identifier returned from <c>open/*</c>.</p>
- <marker id="type-timeout"></marker>
- </item>
- <tag><c>timeout() = int() | infinity</c></tag>
- <item>
- <p>Timeout used in SCTP connect and receive calls.</p>
- </item>
- </taglist>
- <marker id="exports"></marker>
- </section>
+ <marker id="exports"></marker>
+ </desc>
+ </datatype>
+ </datatypes>
+
<funcs>
<func>
- <name>abort(sctp_socket(), Assoc) -&gt; ok | {error, posix()}</name>
+ <name name="abort" arity="2"/>
<fsummary>Abnormally terminate the association given by Assoc, without flushing of unsent data</fsummary>
- <type>
- <v>Assoc = #sctp_assoc_change{}</v>
- </type>
<desc>
- <p>Abnormally terminates the association given by <c>Assoc</c>, without
+ <p>Abnormally terminates the association given by <c><anno>Assoc</anno></c>, without
flushing of unsent data. The socket itself remains open. Other
associations opened on this socket are still valid, and it can be
used in new associations.</p>
</desc>
</func>
<func>
- <name>close(sctp_socket()) -&gt; ok | {error, posix()}</name>
+ <name name="close" arity="1"/>
<fsummary>Completely close the socket and all associations on it</fsummary>
<desc>
<p>Completely closes the socket and all associations on it. The unsent
@@ -148,35 +142,26 @@
</desc>
</func>
<func>
- <name>connect(Socket, Addr, Port, Opts) -&gt; {ok,Assoc} | {error, posix()}</name>
+ <name name="connect" arity="4"/>
<fsummary>Same as <c>connect(Socket, Addr, Port, Opts, infinity)</c>.</fsummary>
<desc>
- <p>Same as <c>connect(Socket, Addr, Port, Opts, infinity)</c>.</p>
+ <p>Same as <c>connect(<anno>Socket</anno>, <anno>Addr</anno>, <anno>Port</anno>, <anno>Opts</anno>, infinity)</c>.</p>
</desc>
</func>
<func>
- <name>connect(Socket, Addr, Port, [Opt], Timeout) -&gt; {ok, Assoc} | {error, posix()}</name>
+ <name name="connect" arity="5"/>
<fsummary>Establish a new association for the socket <c>Socket</c>, with a peer (SCTP server socket)</fsummary>
- <type>
- <v>Socket = sctp_socket()</v>
- <v>Addr = ip_address() | Host</v>
- <v>Port = port_number()</v>
- <v>Opt = sctp_option()</v>
- <v>Timeout = timeout()</v>
- <v>Host = atom() | string()</v>
- <v>Assoc = #sctp_assoc_change{}</v>
- </type>
<desc>
- <p>Establishes a new association for the socket <c>Socket</c>,
+ <p>Establishes a new association for the socket <c><anno>Socket</anno></c>,
with the peer (SCTP server socket) given by
- <c>Addr</c> and <c>Port</c>. The <c>Timeout</c>,
+ <c><anno>Addr</anno></c> and <c><anno>Port</anno></c>. The <c><anno>Timeout</anno></c>,
is expressed in milliseconds. A socket can be associated with multiple peers.</p>
- <p><b>WARNING:</b>Using a value of <c>Timeout</c> less than
+ <p><b>WARNING:</b>Using a value of <c><anno>Timeout</anno></c> less than
the maximum time taken by the OS to establish an association (around 4.5 minutes
if the default values from RFC 4960 are used) can result in
inconsistent or incorrect return values. This is especially
- relevant for associations sharing the same <c>Socket</c>
+ relevant for associations sharing the same <c><anno>Socket</anno></c>
(i.e. source address and port) since the controlling process
blocks until <c>connect/*</c> returns.
<seealso marker="#connect_init/4">connect_init/*</seealso>
@@ -185,7 +170,7 @@
<p><marker id="record-sctp_assoc_change"></marker>
The result of <c>connect/*</c> is an <c>#sctp_assoc_change{}</c>
event which contains, in particular, the new
- <seealso marker="#type-assoc_id">Association ID:</seealso></p>
+ <seealso marker="#type-assoc_id">Association ID</seealso>.</p>
<pre>
#sctp_assoc_change{
state = atom(),
@@ -198,13 +183,13 @@
giving an <c>sctp_initmsg</c> option to <c>connect</c>
as in:</p>
<pre>
- connect(Socket, Ip, Port,
+ connect(<anno>Socket</anno>, Ip, <anno>Port</anno>,
[{sctp_initmsg,#sctp_initmsg{num_ostreams=OutStreams,
max_instreams=MaxInStreams}}]) </pre>
- <p>All options <c>Opt</c> are set on the socket before the
+ <p>All options <c><anno>Opt</anno></c> are set on the socket before the
association is attempted. If an option record has got undefined
field values, the options record is first read from the socket
- for those values. In effect, <c>Opt</c> option records only
+ for those values. In effect, <c><anno>Opt</anno></c> option records only
define field values to change before connecting.</p>
<p>The returned <c>outbound_streams</c> and <c>inbound_streams</c>
are the actual stream numbers on the socket, which may be different
@@ -242,27 +227,19 @@
</desc>
</func>
<func>
- <name>connect_init(Socket, Addr, Port, Opts) -&gt; ok | {error, posix()}</name>
+ <name name="connect_init" arity="4"/>
<fsummary>Same as <c>connect_init(Socket, Addr, Port, Opts, infinity)</c>.</fsummary>
<desc>
- <p>Same as <c>connect_init(Socket, Addr, Port, Opts, infinity)</c>.</p>
+ <p>Same as <c>connect_init(<anno>Socket</anno>, <anno>Addr</anno>, <anno>Port</anno>, <anno>Opts</anno>, infinity)</c>.</p>
</desc>
</func>
<func>
- <name>connect_init(Socket, Addr, Port, [Opt], Timeout) -&gt; ok | {error, posix()}</name>
+ <name name="connect_init" arity="5"/>
<fsummary>Initiate a new association for the socket <c>Socket</c>, with a peer (SCTP server socket)</fsummary>
- <type>
- <v>Socket = sctp_socket()</v>
- <v>Addr = ip_address() | Host</v>
- <v>Port = port_number()</v>
- <v>Opt = sctp_option()</v>
- <v>Timeout = timeout()</v>
- <v>Host = atom() | string()</v>
- </type>
<desc>
- <p>Initiates a new association for the socket <c>Socket</c>,
+ <p>Initiates a new association for the socket <c><anno>Socket</anno></c>,
with the peer (SCTP server socket) given by
- <c>Addr</c> and <c>Port</c>.</p>
+ <c><anno>Addr</anno></c> and <c><anno>Port</anno></c>.</p>
<p>The fundamental difference between this API
and <c>connect/*</c> is that the return value is that of the
underlying OS connect(2) system call. If <c>ok</c> is returned
@@ -275,64 +252,52 @@
active option.</p>
<p>The parameters are as described
in <seealso marker="#connect/5">connect/*</seealso>, with the
- exception of the <c>Timeout</c> value.</p>
- <p>The timer associated with <c>Timeout</c> only supervises
- IP resolution of <c>Addr</c></p>
+ exception of the <c><anno>Timeout</anno></c> value.</p>
+ <p>The timer associated with <c><anno>Timeout</anno></c> only supervises
+ IP resolution of <c><anno>Addr</anno></c></p>
</desc>
</func>
<func>
- <name>controlling_process(sctp_socket(), pid()) -&gt; ok</name>
+ <name name="controlling_process" arity="2"/>
<fsummary>Assign a new controlling process pid to the socket</fsummary>
<desc>
- <p>Assigns a new controlling process Pid to Socket. Same implementation
+ <p>Assigns a new controlling process <c><anno>Pid</anno></c> to <c><anno>Socket</anno></c>. Same implementation
as <c>gen_udp:controlling_process/2</c>.</p>
</desc>
</func>
<func>
- <name>eof(Socket, Assoc) -&gt; ok | {error, Reason}</name>
+ <name name="eof" arity="2"/>
<fsummary>Gracefully terminate the association given by Assoc, with flushing of all unsent data</fsummary>
- <type>
- <v>Socket = sctp_socket()</v>
- <v>Assoc = #sctp_assoc_change{}</v>
- </type>
<desc>
- <p>Gracefully terminates the association given by <c>Assoc</c>, with
+ <p>Gracefully terminates the association given by <c><anno>Assoc</anno></c>, with
flushing of all unsent data. The socket itself remains open. Other
associations opened on this socket are still valid, and it can be
used in new associations.</p>
</desc>
</func>
<func>
- <name>listen(Socket, IsServer) -&gt; ok | {error, Reason}</name>
+ <name name="listen" arity="2"/>
<fsummary>Set up a socket to listen.</fsummary>
- <type>
- <v>Socket = sctp_socket()</v>
- <v>IsServer = bool()</v>
- </type>
<desc>
<p>Sets up a socket to listen on the IP address and port number
- it is bound to. IsServer must be 'true' or 'false'.
+ it is bound to. <c><anno>IsServer</anno></c> must be <c>true</c>
+ or <c>false</c>.
In the contrast to TCP, in SCTP there is no listening queue length.
- If IsServer is 'true' the socket accepts new associations, i.e.
+ If <c><anno>IsServer</anno></c> is <c>true</c> the socket accepts new associations, i.e.
it will become an SCTP server socket.</p>
</desc>
</func>
<func>
- <name>open() -&gt; {ok, Socket} | {error, posix()}</name>
- <name>open(Port) -&gt; {ok, Socket} | {error, posix()}</name>
- <name>open([Opt]) -&gt; {ok, Socket} | {error, posix()}</name>
- <name>open(Port, [Opt]) -&gt; {ok, Socket} | {error, posix()}</name>
+ <name name="open" arity="0"/>
+ <name name="open" arity="1" clause_i="1"/>
+ <name name="open" arity="1" clause_i="2"/>
+ <name name="open" arity="2"/>
<fsummary>Create an SCTP socket and bind it to local addresses</fsummary>
- <type>
- <v>Opt = {ip,IP} | {ifaddr,IP} | {port,Port} | sctp_option()</v>
- <v>IP = ip_address() | any | loopback</v>
- <v>Port = port_number()</v>
- </type>
<desc>
<p>Creates an SCTP socket and binds it to the local addresses
- specified by all <c>{ip,IP}</c> (or synonymously <c>{ifaddr,IP}</c>)
+ specified by all <c>{ip,<anno>IP</anno>}</c> (or synonymously <c>{ifaddr,<anno>IP</anno>}</c>)
options (this feature is called SCTP multi-homing).
- The default <c>IP</c> and <c>Port</c> are <c>any</c>
+ The default <c><anno>IP</anno></c> and <c><anno>Port</anno></c> are <c>any</c>
and <c>0</c>, meaning bind to all local addresses on any
one free port.</p>
<p>A default set of socket <seealso marker="#options">options</seealso>
@@ -345,27 +310,16 @@
</desc>
</func>
<func>
- <name>recv(sctp_socket()) -&gt; {ok, {FromIP, FromPort, AncData, BinMsg}} | {error, Reason}</name>
- <name>recv(sctp_socket(), timeout()) -&gt; {ok, {FromIP, FromPort, AncData, Data}} | {error, Reason}</name>
+ <name name="recv" arity="1"/>
+ <name name="recv" arity="2"/>
<fsummary>Receive a message from a socket</fsummary>
- <type>
- <v>FromIP = ip_address()</v>
- <v>FromPort = port_number()</v>
- <v>AncData = [#sctp_sndrcvinfo{}]</v>
- <v>Data = binary() | charlist() | #sctp_sndrcvinfo{} |
- #sctp_assoc_change{} | #sctp_paddr_change{} |
- #sctp_adaptation_event{} </v>
- <v>Reason = posix() | #sctp_send_failed{} | #scpt_paddr_change{} |
- #sctp_pdapi_event{} | #sctp_remote_error{} |
- #sctp_shutdown_event{}</v>
- </type>
<desc>
- <p>Receives the <c>Data</c> message from any association of the socket.
+ <p>Receives the <c><anno>Data</anno></c> message from any association of the socket.
If the receive times out <c>{error,timeout</c> is returned.
The default timeout is <c>infinity</c>.
- <c>FromIP</c> and <c>FromPort</c> indicate the sender's address.</p>
- <p><c>AncData</c> is a list of Ancillary Data items which
- may be received along with the main <c>Data</c>.
+ <c><anno>FromIP</anno></c> and <c><anno>FromPort</anno></c> indicate the sender's address.</p>
+ <p><c><anno>AncData</anno></c> is a list of Ancillary Data items which
+ may be received along with the main <c><anno>Data</anno></c>.
This list can be empty, or contain a single
<seealso marker="#record-sctp_sndrcvinfo">#sctp_sndrcvinfo{}</seealso>
record, if receiving of such ancillary data is enabled
@@ -375,10 +329,10 @@
provide an easy way of determining the association and stream
over which the message has been received.
(An alternative way would be to get the Association ID from the
- <c>FromIP</c> and <c>FromPort</c> using the
+ <c><anno>FromIP</anno></c> and <c><anno>FromPort</anno></c> using the
<seealso marker="#option-sctp_get_peer_addr_info">sctp_get_peer_addr_info</seealso> socket option,
but this would still not produce the Stream number).</p>
- <p>The actual <c>Data</c> received may be a <c>binary()</c>,
+ <p>The actual <c><anno>Data</anno></c> received may be a <c>binary()</c>,
or <c>list()</c> of bytes (integers in the range 0 through 255)
depending on the socket mode, or an SCTP Event.
<marker id="sctp_events"></marker>
@@ -476,15 +430,10 @@
</desc>
</func>
<func>
- <name>send(Socket, SndRcvInfo, Data) -&gt; ok | {error, Reason}</name>
+ <name name="send" arity="3"/>
<fsummary>Send a message using an <c>#sctp_sndrcvinfo{}</c>record</fsummary>
- <type>
- <v>Socket = sctp_socket()</v>
- <v>SndRcvInfo = #sctp_sndrcvinfo{}</v>
- <v>Data = binary() | iolist()</v>
- </type>
<desc>
- <p>Sends the <c>Data</c> message with all sending parameters from a
+ <p>Sends the <c><anno>Data</anno></c> message with all sending parameters from a
<seealso marker="#record-sctp_sndrcvinfo">#sctp_sndrcvinfo{}</seealso> record.
This way, the user can specify the PPID (passed to the remote end)
and Context (passed to the local SCTP layer) which can be used
@@ -494,21 +443,15 @@
</desc>
</func>
<func>
- <name>send(Socket, Assoc, Stream, Data) -&gt; ok | {error, Reason}</name>
+ <name name="send" arity="4"/>
<fsummary>Send a message over an existing association and given stream</fsummary>
- <type>
- <v>Socket = sctp_socket()</v>
- <v>Assoc = #sctp_assoc_change{} | assoc_id()</v>
- <v>Stream = integer()</v>
- <v>Data = binary() | iolist()</v>
- </type>
<desc>
- <p>Sends <c>Data</c> message over an existing association and given
+ <p>Sends <c><anno>Data</anno></c> message over an existing association and given
stream.</p>
</desc>
</func>
<func>
- <name>error_string(integer()) -> ok | string() | undefined</name>
+ <name name="error_string" arity="1"/>
<fsummary>Translate an SCTP error number into a string</fsummary>
<desc>
<p>Translates an SCTP error number from for example
diff --git a/lib/kernel/doc/src/gen_tcp.xml b/lib/kernel/doc/src/gen_tcp.xml
index aa171c77c2..f1d42d9faa 100644
--- a/lib/kernel/doc/src/gen_tcp.xml
+++ b/lib/kernel/doc/src/gen_tcp.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1997</year><year>2010</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -63,36 +63,45 @@ do_recv(Sock, Bs) ->
<p>For more examples, see the <seealso marker="#examples">examples</seealso> section.</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-ip_address()
- see inet(3)
-
-posix()
- see inet(3)
+ <datatypes>
+ <datatype>
+ <name name="hostname"/>
+ </datatype>
+ <datatype>
+ <name name="ip_address"/>
+ <desc>
+ <p>Represents an address of a TCP socket.
+ It is a tuple as explained in
+ <seealso marker="inet">inet(3)</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="port_number"/>
+ </datatype>
+ <datatype>
+ <name name="posix"/>
+ <desc>
+ <p>See <seealso marker="inet#error_codes">
+ inet(3); POSIX Error Codes</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name><marker id="type-socket">socket()</marker></name>
+ <desc>
+ <p>As returned by accept/1,2 and connect/3,4.</p>
+ <marker id="connect"></marker>
+ </desc>
+ </datatype>
+ </datatypes>
-socket()
- as returned by accept/1,2 and connect/3,4</code>
- <marker id="connect"></marker>
- </section>
<funcs>
<func>
- <name>connect(Address, Port, Options) -> {ok, Socket} | {error, Reason}</name>
- <name>connect(Address, Port, Options, Timeout) -> {ok, Socket} | {error, Reason}</name>
+ <name name="connect" arity="3"/>
+ <name name="connect" arity="4"/>
<fsummary>Connect to a TCP port</fsummary>
- <type>
- <v>Address = string() | atom() | ip_address()</v>
- <v>Port = 0..65535</v>
- <v>Options = [Opt]</v>
- <v>&nbsp;Opt -- see below</v>
- <v>Timeout = int() | infinity</v>
- <v>Socket = socket()</v>
- <v>Reason = posix()</v>
- </type>
<desc>
- <p>Connects to a server on TCP port <c>Port</c> on the host
- with IP address <c>Address</c>. The <c>Address</c> argument
+ <p>Connects to a server on TCP port <c><anno>Port</anno></c> on the host
+ with IP address <c><anno>Address</anno></c>. The <c><anno>Address</anno></c> argument
can be either a hostname, or an IP address.</p>
<p>The available options are:</p>
<taglist>
@@ -127,13 +136,13 @@ socket()
<item>
<p>Set up the socket for IPv4.</p>
</item>
- <tag>Opt</tag>
+ <tag><c>Opt</c></tag>
<item>
<p>See
<seealso marker="inet#setopts/2">inet:setopts/2</seealso>.</p>
</item>
</taglist>
- <p>Packets can be sent to the returned socket <c>Socket</c>
+ <p>Packets can be sent to the returned socket <c><anno>Socket</anno></c>
using <c>send/2</c>. Packets sent from the peer are delivered
as messages:</p>
<code type="none">
@@ -148,7 +157,7 @@ socket()
<p>unless <c>{active, false}</c> is specified in the option list
for the socket, in which case packets are retrieved by
calling <c>recv/2</c>.</p>
- <p>The optional <c>Timeout</c> parameter specifies a timeout in
+ <p>The optional <c><anno>Timeout</anno></c> parameter specifies a timeout in
milliseconds. The default value is <c>infinity</c>.</p>
<note>
<p>The default values for options given to <c>connect</c> can
@@ -159,19 +168,12 @@ socket()
</desc>
</func>
<func>
- <name>listen(Port, Options) -> {ok, ListenSocket} | {error, Reason}</name>
+ <name name="listen" arity="2"/>
<fsummary>Set up a socket to listen on a port</fsummary>
- <type>
- <v>Port = 0..65535</v>
- <v>Options = [Opt]</v>
- <v>&nbsp;Opt -- see below</v>
- <v>ListenSocket -- see below</v>
- <v>Reason = posix()</v>
- </type>
<desc>
- <p>Sets up a socket to listen on the port <c>Port</c> on
+ <p>Sets up a socket to listen on the port <c><anno>Port</anno></c> on
the local host.</p>
- <p>If <c>Port == 0</c>, the underlying OS assigns an available
+ <p>If <c><anno>Port</anno> == 0</c>, the underlying OS assigns an available
port number, use <c>inet:port/1</c> to retrieve it.</p>
<p>The available options are:</p>
<taglist>
@@ -214,7 +216,7 @@ socket()
<seealso marker="inet#setopts/2">inet:setopts/2</seealso>.</p>
</item>
</taglist>
- <p>The returned socket <c>ListenSocket</c> can only be used in
+ <p>The returned socket <c><anno>ListenSocket</anno></c> can only be used in
calls to <c>accept/1,2</c>.</p>
<note>
<p>The default values for options given to <c>listen</c> can
@@ -225,27 +227,23 @@ socket()
</desc>
</func>
<func>
- <name>accept(ListenSocket) -> {ok, Socket} | {error, Reason}</name>
- <name>accept(ListenSocket, Timeout) -> {ok, Socket} | {error, Reason}</name>
+ <name name="accept" arity="1"/>
+ <name name="accept" arity="2"/>
<fsummary>Accept an incoming connection request on a listen socket</fsummary>
- <type>
- <v>ListenSocket -- see listen/2</v>
- <v>Timeout = int() | infinity</v>
- <v>Socket = socket()</v>
- <v>Reason = closed | timeout | posix()</v>
- </type>
+ <type_desc variable="ListenSocket">Returned by <c>listen/2</c>.
+ </type_desc>
<desc>
<p>Accepts an incoming connection request on a listen socket.
- <c>Socket</c> must be a socket returned from <c>listen/2</c>.
- <c>Timeout</c> specifies a timeout value in ms, defaults to
+ <c><anno>Socket</anno></c> must be a socket returned from <c>listen/2</c>.
+ <c><anno>Timeout</anno></c> specifies a timeout value in ms, defaults to
<c>infinity</c>.</p>
- <p>Returns <c>{ok, Socket}</c> if a connection is established,
- or <c>{error, closed}</c> if <c>ListenSocket</c> is closed,
+ <p>Returns <c>{ok, <anno>Socket</anno>}</c> if a connection is established,
+ or <c>{error, closed}</c> if <c><anno>ListenSocket</anno></c> is closed,
or <c>{error, timeout}</c> if no connection is established
within the specified time. May also return a POSIX error
value if something else goes wrong, see inet(3) for possible
error values.</p>
- <p>Packets can be sent to the returned socket <c>Socket</c>
+ <p>Packets can be sent to the returned socket <c><anno>Socket</anno></c>
using <c>send/2</c>. Packets sent from the peer are delivered
as messages:</p>
<code type="none">
@@ -264,13 +262,8 @@ socket()
</desc>
</func>
<func>
- <name>send(Socket, Packet) -> ok | {error, Reason}</name>
+ <name name="send" arity="2"/>
<fsummary>Send a packet</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Packet = [char()] | binary()</v>
- <v>Reason = posix()</v>
- </type>
<desc>
<p>Sends a packet on a socket. </p>
<p>There is no <c>send</c> call with timeout option, you use the
@@ -279,70 +272,52 @@ socket()
</desc>
</func>
<func>
- <name>recv(Socket, Length) -> {ok, Packet} | {error, Reason}</name>
- <name>recv(Socket, Length, Timeout) -> {ok, Packet} | {error, Reason}</name>
+ <name name="recv" arity="2"/>
+ <name name="recv" arity="3"/>
<fsummary>Receive a packet from a passive socket</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Length = int()</v>
- <v>Packet = [char()] | binary() | HttpPacket</v>
- <v>Timeout = int() | infinity</v>
- <v>Reason = closed | posix()</v>
- <v>HttpPacket = see the description of <c>HttpPacket</c> in <seealso marker="erts:erlang#decode_packet/3">erlang:decode_packet/3</seealso></v>
- </type>
+ <type_desc variable="HttpPacket">See the description of
+ <c>HttpPacket</c> in <seealso marker="erts:erlang#decode_packet/3">
+ erlang:decode_packet/3</seealso>.
+ </type_desc>
<desc>
<p>This function receives a packet from a socket in passive
mode. A closed socket is indicated by a return value
<c>{error, closed}</c>.</p>
- <p>The <c>Length</c> argument is only meaningful when
+ <p>The <c><anno>Length</anno></c> argument is only meaningful when
the socket is in <c>raw</c> mode and denotes the number of
- bytes to read. If <c>Length</c> = 0, all available bytes are
- returned. If <c>Length</c> &gt; 0, exactly <c>Length</c>
+ bytes to read. If <c><anno>Length</anno></c> = 0, all available bytes are
+ returned. If <c><anno>Length</anno></c> &gt; 0, exactly <c><anno>Length</anno></c>
bytes are returned, or an error; possibly discarding less
- than <c>Length</c> bytes of data when the socket gets closed
+ than <c><anno>Length</anno></c> bytes of data when the socket gets closed
from the other side.</p>
- <p>The optional <c>Timeout</c> parameter specifies a timeout in
+ <p>The optional <c><anno>Timeout</anno></c> parameter specifies a timeout in
milliseconds. The default value is <c>infinity</c>.</p>
</desc>
</func>
<func>
- <name>controlling_process(Socket, Pid) -> ok | {error, Reason}</name>
+ <name name="controlling_process" arity="2"/>
<fsummary>Change controlling process of a socket</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Pid = pid()</v>
- <v>Reason = closed | not_owner | posix()</v>
- </type>
<desc>
- <p>Assigns a new controlling process <c>Pid</c> to
- <c>Socket</c>. The controlling process is the process which
+ <p>Assigns a new controlling process <c><anno>Pid</anno></c> to
+ <c><anno>Socket</anno></c>. The controlling process is the process which
receives messages from the socket. If called by any other
process than the current controlling process,
<c>{error, eperm}</c> is returned.</p>
</desc>
</func>
<func>
- <name>close(Socket) -> ok | {error, Reason}</name>
+ <name name="close" arity="1"/>
<fsummary>Close a TCP socket</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Reason = posix()</v>
- </type>
<desc>
<p>Closes a TCP socket.</p>
</desc>
</func>
<func>
- <name>shutdown(Socket, How) -> ok | {error, Reason}</name>
+ <name name="shutdown" arity="2"/>
<fsummary>Immediately close a socket</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>How = read | write | read_write</v>
- <v>Reason = posix()</v>
- </type>
<desc>
<p>Immediately close a socket in one or two directions.</p>
- <p><c>How == write</c> means closing the socket for writing,
+ <p><c><anno>How</anno> == write</c> means closing the socket for writing,
reading from it is still possible.</p>
<p>To be able to handle that the peer has done a shutdown on
the write side, the <c>{exit_on_close, false}</c> option
diff --git a/lib/kernel/doc/src/gen_udp.xml b/lib/kernel/doc/src/gen_udp.xml
index 71f2e9bd83..c0e783f508 100644
--- a/lib/kernel/doc/src/gen_udp.xml
+++ b/lib/kernel/doc/src/gen_udp.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1997</year><year>2009</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -34,32 +34,43 @@
with sockets using the UDP protocol.</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-ip_address()
- see inet(3)
-
-posix()
- see inet(3)
+ <datatypes>
+ <datatype>
+ <name name="hostname"/>
+ </datatype>
+ <datatype>
+ <name name="ip_address"/>
+ <desc>
+ <p>Represents an address of a TCP socket.
+ It is a tuple as explained in
+ <seealso marker="inet">inet(3)</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="port_number"/>
+ </datatype>
+ <datatype>
+ <name name="posix"/>
+ <desc>
+ <p>See <seealso marker="inet#error_codes">
+ inet(3); POSIX Error Codes</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name><marker id="type-socket">socket()</marker></name>
+ <desc>
+ <p>As returned by open/1,2.</p>
+ </desc>
+ </datatype>
+ </datatypes>
-socket()
- as returned by open/1,2</code>
- </section>
<funcs>
<func>
- <name>open(Port) -> {ok, Socket} | {error, Reason}</name>
- <name>open(Port, Options) -> {ok, Socket} | {error, Reason}</name>
+ <name name="open" arity="1"/>
+ <name name="open" arity="2"/>
<fsummary>Associate a UDP port number with the process calling it</fsummary>
- <type>
- <v>Port = 0..65535</v>
- <v>Options = [Opt]</v>
- <v>&nbsp;Opt -- see below</v>
- <v>Socket = socket()</v>
- <v>Reason = posix()</v>
- </type>
<desc>
- <p>Associates a UDP port number (<c>Port</c>) with the calling
+ <p>Associates a UDP port number (<c><anno>Port</anno></c>) with the calling
process.</p>
<p>The available options are:</p>
<taglist>
@@ -96,7 +107,7 @@ socket()
<seealso marker="inet#setopts/2">inet:setopts/2</seealso>.</p>
</item>
</taglist>
- <p>The returned socket <c>Socket</c> is used to send packets
+ <p>The returned socket <c><anno>Socket</anno></c> is used to send packets
from this port with <c>send/4</c>. When UDP packets arrive at
the opened port, they are delivered as messages:</p>
<code type="none">
@@ -110,66 +121,42 @@ socket()
binary if the option <c>binary</c> was specified.</p>
<p>Default value for the receive buffer option is
<c>{recbuf, 8192}</c>.</p>
- <p>If <c>Port == 0</c>, the underlying OS assigns a free UDP
+ <p>If <c><anno>Port</anno> == 0</c>, the underlying OS assigns a free UDP
port, use <c>inet:port/1</c> to retrieve it.</p>
</desc>
</func>
<func>
- <name>send(Socket, Address, Port, Packet) -> ok | {error, Reason}</name>
+ <name name="send" arity="4"/>
<fsummary>Send a packet</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Address = string() | atom() | ip_address()</v>
- <v>Port = 0..65535</v>
- <v>Packet = [char()] | binary()</v>
- <v>Reason = not_owner | posix()</v>
- </type>
<desc>
<p>Sends a packet to the specified address and port.
- The <c>Address</c> argument can be either a hostname, or an
+ The <c><anno>Address</anno></c> argument can be either a hostname, or an
IP address.</p>
</desc>
</func>
<func>
- <name>recv(Socket, Length) -> {ok, {Address, Port, Packet}} | {error, Reason}</name>
- <name>recv(Socket, Length, Timeout) -> {ok, {Address, Port, Packet}} | {error, Reason}</name>
+ <name name="recv" arity="2"/>
+ <name name="recv" arity="3"/>
<fsummary>Receive a packet from a passive socket</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Length = int()</v>
- <v>Address = ip_address()</v>
- <v>Port = 0..65535</v>
- <v>Packet = [char()] | binary()</v>
- <v>Timeout = int() | infinity</v>
- <v>Reason = not_owner | posix()</v>
- </type>
<desc>
<p>This function receives a packet from a socket in passive
mode.</p>
- <p>The optional <c>Timeout</c> parameter specifies a timeout in
+ <p>The optional <c><anno>Timeout</anno></c> parameter specifies a timeout in
milliseconds. The default value is <c>infinity</c>.</p>
</desc>
</func>
<func>
- <name>controlling_process(Socket, Pid) -> ok</name>
+ <name name="controlling_process" arity="2"/>
<fsummary>Change controlling process of a socket</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Pid = pid()</v>
- </type>
<desc>
- <p>Assigns a new controlling process <c>Pid</c> to
- <c>Socket</c>. The controlling process is the process which
+ <p>Assigns a new controlling process <c><anno>Pid</anno></c> to
+ <c><anno>Socket</anno></c>. The controlling process is the process which
receives messages from the socket.</p>
</desc>
</func>
<func>
- <name>close(Socket) -> ok | {error, Reason}</name>
+ <name name="close" arity="1"/>
<fsummary>Close a UDP socket</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Reason = not_owner | posix()</v>
- </type>
<desc>
<p>Closes a UDP socket.</p>
</desc>
diff --git a/lib/kernel/doc/src/global.xml b/lib/kernel/doc/src/global.xml
index 077109d6c9..304a9b1d88 100644
--- a/lib/kernel/doc/src/global.xml
+++ b/lib/kernel/doc/src/global.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -106,45 +106,37 @@
</description>
+ <datatypes>
+ <datatype>
+ <name name="id"/>
+ </datatype>
+ </datatypes>
+
<funcs>
<func>
- <name>del_lock(Id)</name>
- <name>del_lock(Id, Nodes) -> void()</name>
+ <name name="del_lock" arity="1"/>
+ <name name="del_lock" arity="2"/>
<fsummary>Delete a lock</fsummary>
- <type>
- <v>Id = {ResourceId, LockRequesterId}</v>
- <v>&nbsp;ResourceId = term()</v>
- <v>&nbsp;LockRequesterId = term()</v>
- <v>Nodes = [node()]</v>
- </type>
<desc>
- <p>Deletes the lock <c>Id</c> synchronously.</p>
+ <p>Deletes the lock <c><anno>Id</anno></c> synchronously.</p>
</desc>
</func>
<func>
- <name>notify_all_name(Name, Pid1, Pid2) -> none</name>
+ <name name="notify_all_name" arity="3"/>
<fsummary>Name resolving function that notifies both pids</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid1 = Pid2 = pid()</v>
- </type>
<desc>
<p>This function can be used as a name resolving function for
<c>register_name/3</c> and <c>re_register_name/3</c>. It
unregisters both pids, and sends the message
- <c>{global_name_conflict, Name, OtherPid}</c> to both
+ <c>{global_name_conflict, <anno>Name</anno>, OtherPid}</c> to both
processes.</p>
</desc>
</func>
<func>
- <name>random_exit_name(Name, Pid1, Pid2) -> Pid1 | Pid2</name>
+ <name name="random_exit_name" arity="3"/>
<fsummary>Name resolving function that kills one pid</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid1 = Pid2 = pid()</v>
- </type>
<desc>
<p>This function can be used as a name resolving function for
<c>register_name/3</c> and <c>re_register_name/3</c>. It
@@ -154,33 +146,27 @@
</func>
<func>
- <name>random_notify_name(Name, Pid1, Pid2) -> Pid1 | Pid2</name>
+ <name name="random_notify_name" arity="3"/>
<fsummary>Name resolving function that notifies one pid</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid1 = Pid2 = pid()</v>
- </type>
<desc>
<p>This function can be used as a name resolving function for
<c>register_name/3</c> and <c>re_register_name/3</c>. It
randomly chooses one of the pids for registration, and sends
- the message <c>{global_name_conflict, Name}</c> to the other
+ the message <c>{global_name_conflict, <anno>Name</anno>}</c> to the other
pid.</p>
</desc>
</func>
<func>
- <name>register_name(Name, Pid)</name>
- <name>register_name(Name, Pid, Resolve) -> yes | no</name>
+ <name name="register_name" arity="2"/>
+ <name name="register_name" arity="3"/>
<fsummary>Globally register a name for a pid</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid = pid()</v>
- <v>Resolve = fun() or {Module, Function} where</v>
- <v>&nbsp;&nbsp;Resolve(Name, Pid, Pid2) -> Pid | Pid2 | none</v>
- </type>
+ <type name="method"/>
+ <type_desc name="method">{<c>Module</c>, <c>Function</c>}
+ is also allowed
+ </type_desc>
<desc>
- <p>Globally associates the name <c>Name</c> with a pid, that is,
+ <p>Globally associates the name <c><anno>Name</anno></c> with a pid, that is,
Globally notifies all nodes of a new global name in a network
of Erlang nodes.</p>
@@ -188,7 +174,7 @@
of the globally registered names that already exist.
The network is also informed of any global names in newly
connected nodes. If any name clashes are discovered,
- the <c>Resolve</c> function is called. Its purpose is to
+ the <c><anno>Resolve</anno></c> function is called. Its purpose is to
decide which pid is correct. If the function crashes, or
returns anything other than one of the pids, the name is
unregistered. This function is called once for each name
@@ -196,7 +182,7 @@
<p>There are three pre-defined resolve functions:
<c>random_exit_name/3</c>, <c>random_notify_name/3</c>, and
- <c>notify_all_name/3</c>. If no <c>Resolve</c> function is
+ <c>notify_all_name/3</c>. If no <c><anno>Resolve</anno></c> function is
defined, <c>random_exit_name</c> is used. This means that one
of the two registered processes will be selected as correct
while the other is killed.</p>
@@ -225,78 +211,63 @@
</func>
<func>
- <name>registered_names() -> [Name]</name>
+ <name name="registered_names" arity="0"/>
<fsummary>All globally registered names</fsummary>
- <type>
- <v>Name = term()</v>
- </type>
<desc>
<p>Returns a lists of all globally registered names.</p>
</desc>
</func>
<func>
- <name>re_register_name(Name, Pid)</name>
- <name>re_register_name(Name, Pid, Resolve) -> void()</name>
+ <name name="re_register_name" arity="2"/>
+ <name name="re_register_name" arity="3"/>
<fsummary>Atomically re-register a name</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid = pid()</v>
- <v>Resolve = fun() or {Module, Function} where</v>
- <v>&nbsp;&nbsp;Resolve(Name, Pid, Pid2) -> Pid | Pid2 | none</v>
- </type>
+ <type name="method"/>
+ <type_desc name="method">{<c>Module</c>, <c>Function</c>}
+ is also allowed
+ </type_desc>
<desc>
- <p>Atomically changes the registered name <c>Name</c> on all
- nodes to refer to <c>Pid</c>.</p>
+ <p>Atomically changes the registered name <c><anno>Name</anno></c> on all
+ nodes to refer to <c><anno>Pid</anno></c>.</p>
- <p>The <c>Resolve</c> function has the same behavior as in
+ <p>The <c><anno>Resolve</anno></c> function has the same behavior as in
<c>register_name/2,3</c>.</p>
</desc>
</func>
<func>
- <name>send(Name, Msg) -> Pid</name>
+ <name name="send" arity="2"/>
<fsummary>Send a message to a globally registered pid</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Msg = term()</v>
- <v>Pid = pid()</v>
- </type>
<desc>
- <p>Sends the message <c>Msg</c> to the pid globally registered
- as <c>Name</c>.</p>
+ <p>Sends the message <c><anno>Msg</anno></c> to the pid globally registered
+ as <c><anno>Name</anno></c>.</p>
- <p>Failure: If <c>Name</c> is not a globally registered
+ <p>Failure: If <c><anno>Name</anno></c> is not a globally registered
name, the calling function will exit with reason
- <c>{badarg, {Name, Msg}}</c>.</p>
+ <c>{badarg, {<anno>Name</anno>, <anno>Msg</anno>}}</c>.</p>
</desc>
</func>
<func>
- <name>set_lock(Id)</name>
- <name>set_lock(Id, Nodes)</name>
- <name>set_lock(Id, Nodes, Retries) -> boolean()</name>
+ <name name="set_lock" arity="1"/>
+ <name name="set_lock" arity="2"/>
+ <name name="set_lock" arity="3"/>
<fsummary>Set a lock on the specified nodes</fsummary>
- <type>
- <v>Id = {ResourceId, LockRequesterId}</v>
- <v>&nbsp;ResourceId = term()</v>
- <v>&nbsp;LockRequesterId = term()</v>
- <v>Nodes = [node()]</v>
- <v>Retries = int() >= 0 | infinity</v>
- </type>
+ <type name="id"/>
+ <type name="retries"/>
<desc>
<p>Sets a lock on the specified nodes (or on all nodes if none
- are specified) on <c>ResourceId</c> for
- <c>LockRequesterId</c>. If a lock already exists on
- <c>ResourceId</c> for another requester than
- <c>LockRequesterId</c>, and <c>Retries</c> is not equal to 0,
+ are specified) on <c><anno>ResourceId</anno></c> for
+ <c><anno>LockRequesterId</anno></c>. If a lock already exists on
+ <c><anno>ResourceId</anno></c> for another requester than
+ <c><anno>LockRequesterId</anno></c>, and <c><anno>Retries</anno></c> is not equal to 0,
the process sleeps for a while and will try to execute
- the action later. When <c>Retries</c> attempts have been made,
+ the action later. When <c><anno>Retries</anno></c> attempts have been made,
<c>false</c> is returned, otherwise <c>true</c>. If
- <c>Retries</c> is <c>infinity</c>, <c>true</c> is eventually
+ <c><anno>Retries</anno></c> is <c>infinity</c>, <c>true</c> is eventually
returned (unless the lock is never released).</p>
- <p>If no value for <c>Retries</c> is given, <c>infinity</c> is
+ <p>If no value for <c><anno>Retries</anno></c> is given, <c>infinity</c> is
used.</p>
<p>This function is completely synchronous.</p>
@@ -315,7 +286,7 @@
application to detect and rectify a deadlock.</p>
<note>
- <p>Some values of <c>ResourceId</c> should be avoided or
+ <p>Some values of <c><anno>ResourceId</anno></c> should be avoided or
Erlang/OTP will not work properly. A list of resources to
avoid: <c>global</c>, <c>dist_ac</c>,
<c>mnesia_table_lock</c>, <c>mnesia_adjust_log_writes</c>,
@@ -326,7 +297,7 @@
</func>
<func>
- <name>sync() -> void()</name>
+ <name name="sync" arity="0"/>
<fsummary>Synchronize the global name server</fsummary>
<desc>
<p>Synchronizes the global name server with all nodes known to
@@ -335,56 +306,45 @@
the global name server will receive global information from
all nodes. This function can be called when new nodes are
added to the network.</p>
+ <p>The only possible error reason <c>Reason</c> is
+ <c>{"global_groups definition error", Error}</c>.</p>
</desc>
</func>
<func>
- <name>trans(Id, Fun)</name>
- <name>trans(Id, Fun, Nodes)</name>
- <name>trans(Id, Fun, Nodes, Retries) -> Res | aborted</name>
+ <name name="trans" arity="2"/>
+ <name name="trans" arity="3"/>
+ <name name="trans" arity="4"/>
<fsummary>Micro transaction facility</fsummary>
- <type>
- <v>Id = {ResourceId, LockRequesterId}</v>
- <v>&nbsp;ResourceId = term()</v>
- <v>&nbsp;LockRequesterId = term()</v>
- <v>Fun = fun() | {M, F}</v>
- <v>Nodes = [node()]</v>
- <v>Retries = int() >= 0 | infinity</v>
- <v>Res = term()</v>
- </type>
+ <type name="retries"/>
+ <type name="trans_fun"/>
<desc>
- <p>Sets a lock on <c>Id</c> (using <c>set_lock/3</c>). If this
- succeeds, <c>Fun()</c> is evaluated and the result <c>Res</c>
+ <p>Sets a lock on <c><anno>Id</anno></c> (using <c>set_lock/3</c>). If this
+ succeeds, <c><anno>Fun</anno>()</c> is evaluated and the result <c><anno>Res</anno></c>
is returned. Returns <c>aborted</c> if the lock attempt
- failed. If <c>Retries</c> is set to <c>infinity</c>,
+ failed. If <c><anno>Retries</anno></c> is set to <c>infinity</c>,
the transaction will not abort.</p>
<p><c>infinity</c> is the default setting and will be used if
- no value is given for <c>Retries</c>.</p>
+ no value is given for <c><anno>Retries</anno></c>.</p>
</desc>
</func>
<func>
- <name>unregister_name(Name) -> void()</name>
+ <name name="unregister_name" arity="1"/>
<fsummary>Remove a globally registered name for a pid</fsummary>
- <type>
- <v>Name = term()</v>
- </type>
<desc>
- <p>Removes the globally registered name <c>Name</c> from
+ <p>Removes the globally registered name <c><anno>Name</anno></c> from
the network of Erlang nodes.</p>
</desc>
</func>
<func>
- <name>whereis_name(Name) -> pid() | undefined</name>
+ <name name="whereis_name" arity="1"/>
<fsummary>Get the pid with a given globally registered name</fsummary>
- <type>
- <v>Name = term()</v>
- </type>
<desc>
<p>Returns the pid with the globally registered name
- <c>Name</c>. Returns <c>undefined</c> if the name is not
+ <c><anno>Name</anno></c>. Returns <c>undefined</c> if the name is not
globally registered.</p>
</desc>
</func>
diff --git a/lib/kernel/doc/src/global_group.xml b/lib/kernel/doc/src/global_group.xml
index 4facf4a4aa..abf6178fc4 100644
--- a/lib/kernel/doc/src/global_group.xml
+++ b/lib/kernel/doc/src/global_group.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1998</year><year>2009</year>
+ <year>1998</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -42,26 +42,7 @@
<seealso marker="kernel_app">kernel(6)</seealso>,
<seealso marker="config">config(4)</seealso>:</p>
<code type="none">
-{global_groups, [GroupTuple]}</code>
- <p>Types:</p>
- <list type="bulleted">
- <item><c>GroupTuple = {GroupName, [Node]} | {GroupName, PublishType, [Node]}</c></item>
- <item><c>GroupName = atom()</c> (naming a global group)</item>
- <item><c>PublishType = normal | hidden</c></item>
- <item><c>Node = atom()</c> (naming a node)</item>
- </list>
- <p>A <c>GroupTuple</c> without <c>PublishType</c> is the same as a
- <c>GroupTuple</c> with <c>PublishType == normal</c>.</p>
- <p>A node started with the command line flag <c>-hidden</c>, see
- <seealso marker="erts:erl">erl(1)</seealso>, is said to be a
- <em>hidden</em> node. A hidden node will establish hidden
- connections to nodes not part of the same global group, but
- normal (visible) connections to nodes part of the same global
- group.</p>
- <p>A global group defined with <c>PublishType == hidden</c>, is
- said to be a hidden global group. All nodes in a hidden global
- group are hidden nodes, regardless if they are started with
- the <c>-hidden</c> command line flag or not.</p>
+{global_groups, [GroupTuple :: group_tuple()]}</code>
<p>For the processes and nodes to run smoothly using the global
group functionality, the following criteria must be met:</p>
<list type="bulleted">
@@ -82,14 +63,44 @@
<p>In the following description, a <em>group node</em> is a node
belonging to the same global group as the local node.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="group_tuple"/>
+ <desc>
+ <p>A <c>GroupTuple</c> without <c>PublishType</c> is the same as a
+ <c>GroupTuple</c> with <c>PublishType == normal</c>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="group_name"/>
+ </datatype>
+ <datatype>
+ <name name="publish_type"/>
+ <desc>
+ <p>A node started with the command line flag <c>-hidden</c>, see
+ <seealso marker="erts:erl">erl(1)</seealso>, is said to be a
+ <em>hidden</em> node. A hidden node will establish hidden
+ connections to nodes not part of the same global group, but
+ normal (visible) connections to nodes part of the same global
+ group.</p>
+ <p>A global group defined with <c>PublishType == hidden</c>, is
+ said to be a hidden global group. All nodes in a hidden global
+ group are hidden nodes, regardless if they are started with
+ the <c>-hidden</c> command line flag or not.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="name"/>
+ <desc><p>A registered name.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="where"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>global_groups() -> {GroupName, GroupNames} | undefined</name>
+ <name name="global_groups" arity="0"/>
<fsummary>Return the global group names</fsummary>
- <type>
- <v>GroupName = atom()</v>
- <v>GroupNames = [GroupName]</v>
- </type>
<desc>
<p>Returns a tuple containing the name of the global group
the local node belongs to, and the list of all other known
@@ -98,53 +109,52 @@
</desc>
</func>
<func>
- <name>info() -> [{Item, Info}]</name>
+ <name name="info" arity="0"/>
<fsummary>Information about global groups</fsummary>
- <type>
- <v>Item, Info -- see below</v>
- </type>
+ <type name="info_item"/>
+ <type name="sync_state"/>
<desc>
<p>Returns a list containing information about the global
groups. Each element of the list is a tuple. The order of
the tuples is not defined.</p>
<taglist>
- <tag><c>{state, State}</c></tag>
+ <tag><c>{state, <anno>State</anno>}</c></tag>
<item>
<p>If the local node is part of a global group,
- <c>State == synced</c>. If no global groups are defined,
- <c>State == no_conf</c>.</p>
+ <c><anno>State</anno> == synced</c>. If no global groups are defined,
+ <c><anno>State</anno> == no_conf</c>.</p>
</item>
- <tag><c>{own_group_name, GroupName}</c></tag>
+ <tag><c>{own_group_name, <anno>GroupName</anno>}</c></tag>
<item>
<p>The name (atom) of the group that the local node belongs
to.</p>
</item>
- <tag><c>{own_group_nodes, Nodes}</c></tag>
+ <tag><c>{own_group_nodes, <anno>Nodes</anno>}</c></tag>
<item>
<p>A list of node names (atoms), the group nodes.</p>
</item>
- <tag><c>{synced_nodes, Nodes}</c></tag>
+ <tag><c>{synced_nodes, <anno>Nodes</anno>}</c></tag>
<item>
<p>A list of node names, the group nodes currently
synchronized with the local node.</p>
</item>
- <tag><c>{sync_error, Nodes}</c></tag>
+ <tag><c>{sync_error, <anno>Nodes</anno>}</c></tag>
<item>
<p>A list of node names, the group nodes with which
the local node has failed to synchronize.</p>
</item>
- <tag><c>{no_contact, Nodes}</c></tag>
+ <tag><c>{no_contact, <anno>Nodes</anno>}</c></tag>
<item>
<p>A list of node names, the group nodes to which there are
currently no connections.</p>
</item>
- <tag><c>{other_groups, Groups}</c></tag>
+ <tag><c>{other_groups, <anno>Groups</anno>}</c></tag>
<item>
- <p><c>Groups</c> is a list of tuples
- <c>{GroupName, Nodes}</c>, specifying the name and nodes
+ <p><c><anno>Groups</anno></c> is a list of tuples
+ <c>{<anno>GroupName</anno>, <anno>Nodes</anno>}</c>, specifying the name and nodes
of the other global groups.</p>
</item>
- <tag><c>{monitoring, Pids}</c></tag>
+ <tag><c>{monitoring, <anno>Pids</anno>}</c></tag>
<item>
<p>A list of pids, specifying the processes which have
subscribed to <c>nodeup</c> and <c>nodedown</c> messages.</p>
@@ -153,73 +163,52 @@
</desc>
</func>
<func>
- <name>monitor_nodes(Flag) -> ok </name>
+ <name name="monitor_nodes" arity="1"/>
<fsummary>Subscribe to node status changes</fsummary>
- <type>
- <v>Flag = bool()</v>
- </type>
<desc>
- <p>Depending on <c>Flag</c>, the calling process starts
- subscribing (<c>Flag == true</c>) or stops subscribing
- (<c>Flag == false</c>) to node status change messages.</p>
+ <p>Depending on <c><anno>Flag</anno></c>, the calling process starts
+ subscribing (<c><anno>Flag</anno> == true</c>) or stops subscribing
+ (<c><anno>Flag</anno> == false</c>) to node status change messages.</p>
<p>A process which has subscribed will receive the messages
<c>{nodeup, Node}</c> and <c>{nodedown, Node}</c> when a
group node connects or disconnects, respectively.</p>
</desc>
</func>
<func>
- <name>own_nodes() -> Nodes</name>
+ <name name="own_nodes" arity="0"/>
<fsummary>Return the group nodes</fsummary>
- <type>
- <v>Nodes = [Node]</v>
- <v>&nbsp;Node = node()</v>
- </type>
<desc>
<p>Returns the names of all group nodes, regardless of their
current status.</p>
</desc>
</func>
<func>
- <name>registered_names(Where) -> Names</name>
+ <name name="registered_names" arity="1"/>
<fsummary>Return globally registered names</fsummary>
- <type>
- <v>Where = {node, Node} | {group, GroupName}</v>
- <v>&nbsp;Node = node()</v>
- <v>&nbsp;GroupName = atom()</v>
- <v>Names = [Name]</v>
- <v>&nbsp;Name = atom()</v>
- </type>
<desc>
<p>Returns a list of all names which are globally registered
on the specified node or in the specified global group.</p>
</desc>
</func>
<func>
- <name>send(Name, Msg) -> pid() | {badarg, {Name, Msg}}</name>
- <name>send(Where, Name, Msg) -> pid() | {badarg, {Name, Msg}}</name>
+ <name name="send" arity="2"/>
+ <name name="send" arity="3"/>
<fsummary>Send a message to a globally registered pid</fsummary>
- <type>
- <v>Where = {node, Node} | {group, GroupName}</v>
- <v>&nbsp;Node = node()</v>
- <v>&nbsp;GroupName = atom()</v>
- <v>Name = atom()</v>
- <v>Msg = term()</v>
- </type>
<desc>
- <p>Searches for <c>Name</c>, globally registered on
+ <p>Searches for <c><anno>Name</anno></c>, globally registered on
the specified node or in the specified global group, or --
- if the <c>Where</c> argument is not provided -- in any global
+ if the <c><anno>Where</anno></c> argument is not provided -- in any global
group. The global groups are searched in the order in which
they appear in the value of the <c>global_groups</c>
configuration parameter.</p>
- <p>If <c>Name</c> is found, the message <c>Msg</c> is sent to
+ <p>If <c><anno>Name</anno></c> is found, the message <c><anno>Msg</anno></c> is sent to
the corresponding pid. The pid is also the return value of
the function. If the name is not found, the function returns
- <c>{badarg, {Name, Msg}}</c>.</p>
+ <c>{badarg, {<anno>Name</anno>, <anno>Msg</anno>}}</c>.</p>
</desc>
</func>
<func>
- <name>sync() -> ok</name>
+ <name name="sync" arity="0"/>
<fsummary>Synchronize the group nodes</fsummary>
<desc>
<p>Synchronizes the group nodes, that is, the global name
@@ -235,23 +224,17 @@
</desc>
</func>
<func>
- <name>whereis_name(Name) -> pid() | undefined</name>
- <name>whereis_name(Where, Name) -> pid() | undefined</name>
+ <name name="whereis_name" arity="1"/>
+ <name name="whereis_name" arity="2"/>
<fsummary>Get the pid with a given globally registered name</fsummary>
- <type>
- <v>Where = {node, Node} | {group, GroupName}</v>
- <v>&nbsp;Node = node()</v>
- <v>&nbsp;GroupName = atom()</v>
- <v>Name = atom()</v>
- </type>
<desc>
- <p>Searches for <c>Name</c>, globally registered on
+ <p>Searches for <c><anno>Name</anno></c>, globally registered on
the specified node or in the specified global group, or -- if
- the <c>Where</c> argument is not provided -- in any global
+ the <c><anno>Where</anno></c> argument is not provided -- in any global
group. The global groups are searched in the order in which
they appear in the value of the <c>global_groups</c>
configuration parameter.</p>
- <p>If <c>Name</c> is found, the corresponding pid is returned.
+ <p>If <c><anno>Name</anno></c> is found, the corresponding pid is returned.
If the name is not found, the function returns
<c>undefined</c>.</p>
</desc>
diff --git a/lib/kernel/doc/src/heart.xml b/lib/kernel/doc/src/heart.xml
index 0df699572d..e2dbcbe63d 100644
--- a/lib/kernel/doc/src/heart.xml
+++ b/lib/kernel/doc/src/heart.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -76,11 +76,8 @@
</description>
<funcs>
<func>
- <name>set_cmd(Cmd) -> ok | {error, {bad_cmd, Cmd}}</name>
+ <name name="set_cmd" arity="1"/>
<fsummary>Set a temporary reboot command</fsummary>
- <type>
- <v>Cmd = string()</v>
- </type>
<desc>
<p>Sets a temporary reboot command. This command is used if
a <c>HEART_COMMAND</c> other than the one specified with
@@ -88,12 +85,12 @@
the system. The new Erlang runtime system will (if it
misbehaves) use the environment variable
<c>HEART_COMMAND</c> to reboot.</p>
- <p>Limitations: The length of the <c>Cmd</c> command string
+ <p>Limitations: The length of the <c><anno>Cmd</anno></c> command string
must be less than 2047 characters.</p>
</desc>
</func>
<func>
- <name>clear_cmd() -> ok</name>
+ <name name="clear_cmd" arity="0"/>
<fsummary>Clear the temporary boot command</fsummary>
<desc>
<p>Clears the temporary boot command. If the system terminates,
@@ -101,11 +98,8 @@
</desc>
</func>
<func>
- <name>get_cmd() -> {ok, Cmd}</name>
+ <name name="get_cmd" arity="0"/>
<fsummary>Get the temporary reboot command</fsummary>
- <type>
- <v>Cmd = string()</v>
- </type>
<desc>
<p>Get the temporary reboot command. If the command is cleared,
the empty string will be returned.</p>
diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml
index f05a224f33..fd843b00d9 100644
--- a/lib/kernel/doc/src/inet.xml
+++ b/lib/kernel/doc/src/inet.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1997</year><year>2010</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -54,33 +54,6 @@ $ <input>erl -sname test -kernel \</input>
<input>inet_default_listen_options '[{delay_send,true}]'</input></pre>
<p>Note that the default option <c>{active, true}</c> currently
cannot be changed, for internal reasons.</p>
- </description>
-
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-#hostent{h_addr_list = [ip_address()] % list of addresses for this host
- h_addrtype = inet | inet6
- h_aliases = [hostname()] % list of aliases
- h_length = int() % length of address in bytes
- h_name = hostname() % official name for host
- The record is defined in the Kernel include file "inet.hrl"
- Add the following directive to the module:
- -include_lib("kernel/include/inet.hrl").
-
-hostname() = atom() | string()
-
-ip_address() = {N1,N2,N3,N4} % IPv4
- | {K1,K2,K3,K4,K5,K6,K7,K8} % IPv6
- Ni = 0..255
- Ki = 0..65535
-
-posix()
- an atom which is named from the Posix error codes used in
- Unix, and in the runtime libraries of most C compilers
-
-socket()
- see gen_tcp(3), gen_udp(3)</code>
<p>Addresses as inputs to functions can be either a string or a
tuple. For instance, the IP address 150.236.20.73 can be passed to
<c>gethostbyaddr/1</c> either as the string "150.236.20.73"
@@ -109,24 +82,58 @@ fe80::204:acff:fe17:bf38
{ok,{192,168,42,2}}
2> <input>inet_parse:address("FFFF::192.168.42.2").</input>
{ok,{65535,0,0,0,0,0,49320,10754}}</pre>
- </section>
+ </description>
+
+ <datatypes>
+ <datatype>
+ <name name="hostent"/>
+ <desc>
+ <p>The record is defined in the Kernel include file "inet.hrl".
+ Add the following directive to the module:</p>
+<code>-include_lib("kernel/include/inet.hrl").</code></desc>
+ </datatype>
+ <datatype>
+ <name name="hostname"/>
+ </datatype>
+ <datatype>
+ <name name="ip_address"/>
+ </datatype>
+ <datatype>
+ <name name="ip4_address"/>
+ </datatype>
+ <datatype>
+ <name name="ip6_address"/>
+ </datatype>
+ <datatype>
+ <name name="posix"/>
+ <desc><p>An atom which is named from the Posix error codes
+ used in Unix, and in the runtime libraries of most
+ C compilers. See
+ <seealso marker="#error_codes">POSIX Error Codes</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name><marker id="type-socket">socket()</marker></name>
+ <desc><p>See <seealso marker="gen_tcp#type-socket">gen_tcp(3)</seealso>
+ and <seealso marker="gen_udp#type-socket">gen_udp(3)</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="family_option"/>
+ </datatype>
+ </datatypes>
+
<funcs>
<func>
- <name>close(Socket) -> ok</name>
+ <name name="close" arity="1"/>
<fsummary>Close a socket of any type</fsummary>
- <type>
- <v>Socket = socket()</v>
- </type>
<desc>
<p>Closes a socket of any type.</p>
</desc>
</func>
<func>
- <name>get_rc() -> [{Par, Val}]</name>
+ <name name="get_rc" arity="0"/>
<fsummary>Return a list of IP configuration parameters</fsummary>
- <type>
- <v>Par, Val -- see below</v>
- </type>
<desc>
<p>Returns the state of the Inet configuration database in
form of a list of recorded configuration parameters. (See the
@@ -135,116 +142,74 @@ fe80::204:acff:fe17:bf38
</desc>
</func>
<func>
- <name>format_error(Posix) -> string()</name>
+ <name name="format_error" arity="1"/>
<fsummary>Return a descriptive string for an error reason</fsummary>
- <type>
- <v>Posix = posix()</v>
- </type>
<desc>
<p>Returns a diagnostic error string. See the section below
- for possible <c>Posix</c> values and the corresponding
+ for possible <c><anno>Posix</anno></c> values and the corresponding
strings.</p>
</desc>
</func>
<func>
- <name>getaddr(Host, Family) -> {ok, Address} | {error, posix()}</name>
+ <name name="getaddr" arity="2"/>
<fsummary>Return the IP-address for a host</fsummary>
- <type>
- <v>Host = ip_address() | string() | atom()</v>
- <v>Family = inet | inet6</v>
- <v>Address = ip_address()</v>
- <v>posix() = term()</v>
- </type>
<desc>
- <p>Returns the IP-address for <c>Host</c> as a tuple of
- integers. <c>Host</c> can be an IP-address, a single hostname
+ <p>Returns the IP-address for <c><anno>Host</anno></c> as a tuple of
+ integers. <c><anno>Host</anno></c> can be an IP-address, a single hostname
or a fully qualified hostname.</p>
</desc>
</func>
<func>
- <name>getaddrs(Host, Family) -> {ok, Addresses} | {error, posix()}</name>
+ <name name="getaddrs" arity="2"/>
<fsummary>Return the IP-addresses for a host</fsummary>
- <type>
- <v>Host = ip_address() | string() | atom()</v>
- <v>Addresses = [ip_address()]</v>
- <v>Family = inet | inet6</v>
- </type>
<desc>
- <p>Returns a list of all IP-addresses for <c>Host</c>.
- <c>Host</c> can be an IP-address, a single hostname or a fully
+ <p>Returns a list of all IP-addresses for <c><anno>Host</anno></c>.
+ <c><anno>Host</anno></c> can be an IP-address, a single hostname or a fully
qualified hostname.</p>
</desc>
</func>
<func>
- <name>gethostbyaddr(Address) -> {ok, Hostent} | {error, posix()}</name>
+ <name name="gethostbyaddr" arity="1"/>
<fsummary>Return a hostent record for the host with the given address</fsummary>
- <type>
- <v>Address = string() | ip_address()</v>
- <v>Hostent = #hostent{}</v>
- </type>
<desc>
<p>Returns a <c>hostent</c> record given an address.</p>
</desc>
</func>
<func>
- <name>gethostbyname(Name) -> {ok, Hostent} | {error, posix()}</name>
+ <name name="gethostbyname" arity="1"/>
<fsummary>Return a hostent record for the host with the given name</fsummary>
- <type>
- <v>Hostname = hostname()</v>
- <v>Hostent = #hostent{}</v>
- </type>
<desc>
<p>Returns a <c>hostent</c> record given a hostname.</p>
</desc>
</func>
<func>
- <name>gethostbyname(Name, Family) -> {ok, Hostent} | {error, posix()}</name>
+ <name name="gethostbyname" arity="2"/>
<fsummary>Return a hostent record for the host with the given name</fsummary>
- <type>
- <v>Hostname = hostname()</v>
- <v>Family = inet | inet6</v>
- <v>Hostent = #hostent{}</v>
- </type>
<desc>
<p>Returns a <c>hostent</c> record given a hostname, restricted
to the given address family.</p>
</desc>
</func>
<func>
- <name>gethostname() -> {ok, Hostname}</name>
+ <name name="gethostname" arity="0"/>
<fsummary>Return the local hostname</fsummary>
- <type>
- <v>Hostname = string()</v>
- </type>
<desc>
<p>Returns the local hostname. Will never fail.</p>
</desc>
</func>
<func>
- <name>getifaddrs() -> {ok,Iflist} | {error,posix}</name>
+ <name name="getifaddrs" arity="0"/>
<fsummary>Return a list of interfaces and their addresses</fsummary>
- <type>
- <v>Iflist = {Ifname,[Ifopt]}</v>
- <v>Ifname = string()</v>
- <v>Ifopt = {flag,[Flag]} | {addr,Addr} | {netmask,Netmask}
- | {broadaddr,Broadaddr} | {dstaddr,Dstaddr}
- | {hwaddr,Hwaddr}</v>
- <v>Flag = up | broadcast | loopback | pointtopoint
- | running | multicast</v>
- <v>Addr = Netmask = Broadadddr = Dstaddr = ip_address()</v>
- <v>Hwaddr = [byte()]</v>
- </type>
- </func>
<desc>
<p>
Returns a list of 2-tuples containing interface names and the
- interface's addresses. <c>Ifname</c> is a Unicode string.
- <c>Hwaddr</c> is hardware dependent, e.g on Ethernet interfaces
+ interface's addresses. <c><anno>Ifname</anno></c> is a Unicode string.
+ <c><anno>Hwaddr</anno></c> is hardware dependent, e.g on Ethernet interfaces
it is the 6-byte Ethernet address (MAC address (EUI-48 address)).
</p>
<p>
- The <c>{addr,Addr}</c>, <c>{netmask,_}</c> and <c>{broadaddr,_}</c>
+ The <c>{addr,<anno>Addr</anno>}</c>, <c>{netmask,_}</c> and <c>{broadaddr,_}</c>
tuples are repeated in the result list iff the interface has multiple
addresses. If you come across an interface that has
multiple <c>{flag,_}</c> or <c>{hwaddr,_}</c> tuples you have
@@ -252,8 +217,8 @@ fe80::204:acff:fe17:bf38
The <c>{flag,_}</c> tuple is mandatory, all other optional.
</p>
<p>
- Do not rely too much on the order of <c>Flag</c> atoms or
- <c>Ifopt</c> tuples. There are some rules, though:
+ Do not rely too much on the order of <c><anno>Flag</anno></c> atoms or
+ <c><anno>Ifopt</anno></c> tuples. There are some rules, though:
<list>
<item>
Immediately after <c>{addr,_}</c> follows <c>{netmask,_}</c>
@@ -261,7 +226,7 @@ fe80::204:acff:fe17:bf38
<item>
Immediately thereafter follows <c>{broadaddr,_}</c> if
the <c>broadcast</c> flag is <em>not</em> set and the
- <c>pointtopoint</c>flag <em>is</em> set.
+ <c>pointtopoint</c> flag <em>is</em> set.
</item>
<item>
Any <c>{netmask,_}</c>, <c>{broadaddr,_}</c> or
@@ -277,11 +242,12 @@ fe80::204:acff:fe17:bf38
</p>
<p>
On Windows, the data is fetched from quite different OS API
- functions, so the <c>Netmask</c> and <c>Broadaddr</c>
- values may be calculated, just as some <c>Flag</c> values.
+ functions, so the <c><anno>Netmask</anno></c> and <c><anno>Broadaddr</anno></c>
+ values may be calculated, just as some <c><anno>Flag</anno></c> values.
You have been warned. Report flagrant bugs.
</p>
</desc>
+ </func>
<func>
<name>getopts(Socket, Options) -> {ok, OptionValues} | {error, posix()}</name>
@@ -291,13 +257,14 @@ fe80::204:acff:fe17:bf38
<v>Options = [Opt | RawOptReq]</v>
<v>Opt = atom()</v>
<v>RawOptReq = {raw, Protocol, OptionNum, ValueSpec}</v>
- <v>Protocol = int()</v>
- <v>OptionNum = int()</v>
+ <v>Protocol = integer()</v>
+ <v>OptionNum = integer()</v>
<v>ValueSpec = ValueSize | ValueBin</v>
- <v>ValueSize = int()</v>
+ <v>ValueSize = integer()</v>
<v>ValueBin = binary()</v>
<v>OptionValues = [{Opt, Val} | {raw, Protocol, OptionNum, ValueBin}]</v>
</type>
+ <type name="socket_getopt"/>
<desc>
<p>Gets one or more options for a socket.
See <seealso marker="#setopts/2">setopts/2</seealso>
@@ -419,13 +386,8 @@ fe80::204:acff:fe17:bf38
</func>
<func>
- <name>peername(Socket) -> {ok, {Address, Port}} | {error, posix()}</name>
+ <name name="peername" arity="1"/>
<fsummary>Return the address and port for the other end of a connection</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Address = ip_address()</v>
- <v>Port = int()</v>
- </type>
<desc>
<p>Returns the address and port for the other end of a
connection.</p>
@@ -436,20 +398,15 @@ fe80::204:acff:fe17:bf38
<fsummary>Return the local port number for a socket</fsummary>
<type>
<v>Socket = socket()</v>
- <v>Port = int()</v>
+ <v>Port = integer()</v>
</type>
<desc>
<p>Returns the local port number for a socket.</p>
</desc>
</func>
<func>
- <name>sockname(Socket) -> {ok, {Address, Port}} | {error, posix()}</name>
+ <name name="sockname" arity="1"/>
<fsummary>Return the local address and port number for a socket</fsummary>
- <type>
- <v>Socket = socket()</v>
- <v>Address = ip_address()</v>
- <v>Port = int()</v>
- </type>
<desc>
<p>Returns the local address and port number for a socket.</p>
</desc>
@@ -460,8 +417,8 @@ fe80::204:acff:fe17:bf38
<type>
<v>Socket = term()</v>
<v>Options = [{Opt, Val} | {raw, Protocol, Option, ValueBin}]</v>
- <v>Protocol = int()</v>
- <v>OptionNum = int()</v>
+ <v>Protocol = integer()</v>
+ <v>OptionNum = integer()</v>
<v>ValueBin = binary()</v>
<v>&nbsp;Opt, Val -- see below</v>
</type>
diff --git a/lib/kernel/doc/src/inet_res.xml b/lib/kernel/doc/src/inet_res.xml
index d8fe23544b..bf73ccf13d 100644
--- a/lib/kernel/doc/src/inet_res.xml
+++ b/lib/kernel/doc/src/inet_res.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2009</year><year>2009</year>
+ <year>2009</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -76,64 +76,38 @@
query is tried for the <c>alt_nameservers</c>.</p>
</section>
-
-
-
- <section>
- <title>DATA TYPES</title>
- <p>As defined in the module
- <seealso marker="kernel:inet">inet</seealso>:</p>
- <code type="none">
-hostent() = #hostent{}
-posix() = some atom()s
-ip_address() = tuple of integers of arity 4 or 8</code>
-
+ <datatypes>
<p>Resolver types:</p>
- <code type="none">These correspond to resolver options:
-
-res_option() =
- [ {alt_nameservers, [ nameserver() ]}
- | {edns, 0 | false} % Use EDNS
- | {inet6, bool()} % Return IPv6 addresses
- | {nameservers, [ nameserver() ]} % List of nameservers
- | {recurse, bool()} % Request server recursion
- | {retry, integer()} % UDP retries
- | {timeout, integer()} % UDP query timeout
- | {udp_payload_size, integer()} % EDNS payload size
- | {usevc, bool()} ] % Use TCP (Virtual Circuit)
-
-nameserver() = {ip_address(),Port}
- Port = integer(1..65535)
-
-res_error() =
- formerr |
- qfmterror |
- servfail |
- nxdomain |
- notimp |
- refused |
- badvers |
- timeout
-</code>
-
- <p>DNS types:</p>
- <marker id="dns_types"/>
- <code type="none">dns_name() = string() with no adjacent dots
-
-rr_type() = a | aaaa | cname | gid | hinfo | ns | mb | md | mg | mf
- | minfo | mx | naptr | null | ptr | soa | spf | srv | txt
- | uid | uinfo | unspec | wks
-
-query_type() = axfr | mailb | maila | any | rr_type()
-
-dns_class() = in | chaos | hs | any
-
+ <datatype>
+ <name name="res_option"/>
+ </datatype>
+ <datatype>
+ <name name="nameserver"/>
+ </datatype>
+ <datatype>
+ <name name="res_error"/>
+ </datatype>
+
+ <p><marker id="dns_types"/>DNS types:</p>
+ <datatype>
+ <name name="dns_name"/>
+ <desc><p>A string with no adjacent dots.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="rr_type"/>
+ </datatype>
+ <datatype>
+ <name name="dns_class"/>
+ </datatype>
+ <datatype>
+ <name name="dns_msg"/>
+ <desc>
+ <p>This is the start of a hiearchy of opaque data structures
+ that can be examined with access functions in inet_dns that
+ return lists of {Field,Value} tuples. The arity 2 functions
+ just return the value for a given field.
+<pre>
dns_msg() = DnsMsg
- This is the start of a hiearchy of opaque data structures
- that can be examined with access functions in inet_dns
- that return lists of {Field,Value} tuples. The arity 2
- functions just return the value for a given field.
-
inet_dns:msg(DnsMsg) ->
[ {header, dns_header()}
| {qdlist, dns_query()}
@@ -143,19 +117,21 @@ dns_msg() = DnsMsg
inet_dns:msg(DnsMsg, header) -> dns_header() % for example
inet_dns:msg(DnsMsg, Field) -> Value
-dhs_header() = DnsHeader
+dns_header() = DnsHeader
inet_dns:header(DnsHeader) ->
[ {id, integer()}
- | {qr, bool()}
+ | {qr, boolean()}
| {opcode, 'query' | iquery | status | integer()}
- | {aa, bool()}
- | {tc, bool()}
- | {rd, bool()}
- | {ra, bool()}
- | {pr, bool()}
+ | {aa, boolean()}
+ | {tc, boolean()}
+ | {rd, boolean()}
+ | {ra, boolean()}
+ | {pr, boolean()}
| {rcode, integer(0..16)} ]
inet_dns:header(DnsHeader, Field) -> Value
+query_type() = axfr | mailb | maila | any | rr_type()
+
dns_query() = DnsQuery
inet_dns:dns_query(DnsQuery) ->
[ {domain, dns_name()}
@@ -179,32 +155,6 @@ dns_rr() = DnsRr
| {data, dns_data()} ]
inet_dns:rr(DnsRr, Field) -> Value
-dns_data() = % for dns_type()
- [ dns_name() % ns, md, mf, cname, mb, mg, mr, ptr
- | ip_address(v4) % a
- | ip_address(v6) % aaaa
- | {MName,RName,Serial,Refresh,Retry,Expiry,Minimum} % soa
- | {ip_address(v4),Proto,BitMap} % wks
- | {CpuString,OsString} % hinfo
- | {RM,EM} % minfo
- | {Prio,dns_name()} % mx
- | {Prio,Weight,Port,dns_name()} % srv
- | {Order,Preference,Flags,Services,Regexp,dns_name()} % naptr
- | [ string() ] % txt, spf
- | binary() ] % null, integer()
-MName, RName = dns_name()
-Serial, Refresh, Retry, Expiry, Minimum = integer(),
-Proto = integer()
-BitMap = binary()
-CpuString, OsString = string()
-RM = EM = dns_name()
-Prio, Weight, Port = integer()
-Order, Preference = integer()
-Flags, Services = string(),
-Regexp = string(utf8)
-
-
-
There is an info function for the types above:
inet_dns:record_type(dns_msg()) -> msg;
@@ -214,26 +164,25 @@ inet_dns:record_type(dns_rr()) -> rr;
inet_dns:record_type(_) -> undefined.
So; inet_dns:(inet_dns:record_type(X))(X) will convert
-any of these data structures into a {Field,Value} list.</code>
- </section>
-
+any of these data structures into a {Field,Value} list.</pre></p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="dns_data"/>
+ <desc><p><c><anno>Regexp</anno></c> is a string with characters encoded in the
+ UTF-8 coding standard.</p>
+ </desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>getbyname(Name, Type) -> {ok,hostent()} | {error,Reason}</name>
- <name>getbyname(Name, Type, Timeout) ->
- {ok,hostent()} | {error,Reason}
- </name>
+ <name name="getbyname" arity="2"/>
+ <name name="getbyname" arity="3"/>
<fsummary>Resolve a DNS record of the given type for the given host
</fsummary>
- <type>
- <v>Name = dns_name()</v>
- <v>Type = rr_type()</v>
- <v>Timeout = integer() >= 0 | infinity</v>
- <v>Reason = posix() | res_error()</v>
- </type>
<desc>
<p>Resolve a DNS record of the given type for the given host,
of class <c>in</c>. On success returns a <c>hostent()</c> record with
@@ -252,17 +201,10 @@ any of these data structures into a {Field,Value} list.</code>
</func>
<func>
- <name>gethostbyaddr(Address) -> {ok,hostent()} | {error,Reason}</name>
- <name>gethostbyaddr(Address, Timeout) ->
- {ok,hostent()} | {error,Reason}
- </name>
+ <name name="gethostbyaddr" arity="1"/>
+ <name name="gethostbyaddr" arity="2"/>
<fsummary>Return a hostent record for the host with the given address
</fsummary>
- <type>
- <v>Address = ip_address()</v>
- <v>Timeout = integer() >= 0 | infinity</v>
- <v>Reason = posix() | res_error()</v>
- </type>
<desc>
<p>Backend functions used by
<seealso marker="kernel:inet#gethostbyaddr/1">
@@ -273,20 +215,11 @@ any of these data structures into a {Field,Value} list.</code>
</func>
<func>
- <name>gethostbyname(Name) -> {ok,hostent()} | Reason}</name>
- <name>gethostbyname(Name, Family) ->
- {ok,hostent()} | {error,Reason}}
- </name>
- <name>gethostbyname(Name, Family, Timeout) ->
- {ok,hostent()} | {error,Reason}
- </name>
+ <name name="gethostbyname" arity="1"/>
+ <name name="gethostbyname" arity="2"/>
+ <name name="gethostbyname" arity="3"/>
<fsummary>Return a hostent record for the host with the given name
</fsummary>
- <type>
- <v>Name = dns_name()</v>
- <v>Timeout = integer() >= 0 | infinity</v>
- <v>Reason = posix() | res_error()</v>
- </type>
<desc>
<p>Backend functions used by
<seealso marker="kernel:inet#gethostbyname/1">
@@ -305,26 +238,16 @@ any of these data structures into a {Field,Value} list.</code>
</func>
<func>
- <name>lookup(Name, Class, Type) -> [ dns_data() ]
- </name>
- <name>lookup(Name, Class, Type, Opts) -> [ dns_data() ]
- </name>
- <name>lookup(Name, Class, Type, Opts, Timeout) -> [ dns_data() ]
- </name>
+ <name name="lookup" arity="3"/>
+ <name name="lookup" arity="4"/>
+ <name name="lookup" arity="5"/>
<fsummary>Resolve the DNS data for the record of the given type and class
for the given name
</fsummary>
- <type>
- <v>Name = dns_name() | ip_address()</v>
- <v>Type = rr_type()</v>
- <v>Opts = res_option() | verbose</v>
- <v>Timeout = integer() >= 0 | infinity</v>
- <v>Reason = posix() | res_error()</v>
- </type>
<desc>
<p>Resolve the DNS data for the record of the given type and class
for the given name. On success filters out the answer records
- with the correct <c>Class</c> and <c>Type</c> and returns
+ with the correct <c><anno>Class</anno></c> and <c><anno>Type</anno></c> and returns
a list of their data fields. So a lookup for type <c>any</c>
will give an empty answer since the answer records have
specific types that are not <c>any</c>. An empty answer
@@ -332,44 +255,33 @@ any of these data structures into a {Field,Value} list.</code>
</p><p>
Calls <seealso marker="#resolve/3">resolve/2..4</seealso>
with the same arguments and filters the result, so
- <c>Opts</c> is explained there.
+ <c><anno>Opts</anno></c> is explained there.
</p>
</desc>
</func>
<func>
- <name>resolve(Name, Class, Type) -> {ok,dns_msg()} | Error
- </name>
- <name>resolve(Name, Class, Type, Opts) -> {ok,dns_msg()} | Error
- </name>
- <name>resolve(Name, Class, Type, Opts, Timeout) -> {ok,dns_msg()} | Error
- </name>
+ <name name="resolve" arity="3"/>
+ <name name="resolve" arity="4"/>
+ <name name="resolve" arity="5"/>
<fsummary>Resolve a DNS record of the given type and class
for the given name
</fsummary>
- <type>
- <v>Name = dns_name() | ip_address()</v>
- <v>Type = rr_type()</v>
- <v>Opts = res_option() | verbose | atom()</v>
- <v>Timeout = integer() >= 0 | infinity</v>
- <v>Error = {error,Reason} | {error,{Reason,dns_msg()}}</v>
- <v>Reason = posix() | res_error()</v>
- </type>
<desc>
<p>Resolve a DNS record of the given type and class for the given name.
The returned <c>dns_msg()</c> can be examined using
access functions in <c>inet_db</c> as described
in <seealso marker="#dns_types">DNS types</seealso>.
</p><p>
- If <c>Name</c> is an <c>ip_address()</c>, the domain name
+ If <c><anno>Name</anno></c> is an <c>ip_address()</c>, the domain name
to query for is generated as the standard reverse
".IN-ADDR.ARPA." name for an IPv4 address, or the
".IP6.ARPA." name for an IPv6 address.
In this case you most probably want to use
- <c>Class = in</c> and <c>Type = ptr</c> but it
+ <c><anno>Class</anno> = in</c> and <c><anno>Type</anno> = ptr</c> but it
is not done automatically.
</p><p>
- <c>Opts</c> override the corresponding resolver options.
+ <c><anno>Opts</anno></c> override the corresponding resolver options.
If the option <c>nameservers</c> is given, it is
also assumed that it is the complete list of nameserves,
so the resolver option <c>alt_nameserves</c> is ignored.
@@ -382,14 +294,14 @@ any of these data structures into a {Field,Value} list.</code>
of queries, replies retransmissions, etc, similar
to from utilities like <c>dig</c>, <c>nslookup</c> et.al.
</p><p>
- If <c>Opt</c> is an arbitrary atom it is interpreted
- as <c>{Opt,true}</c> unless the atom string starts with
- <c>"no"</c> making the interpretation <c>{Opt,false}</c>.
+ If <c><anno>Opt</anno></c> is an arbitrary atom it is interpreted
+ as <c>{<anno>Opt</anno>,true}</c> unless the atom string starts with
+ <c>"no"</c> making the interpretation <c>{<anno>Opt</anno>,false}</c>.
For example: <c>usevc</c> is an alias for <c>{usevc,true}</c>,
and <c>nousevc</c> an alias for <c>{usevc,false}</c>.
</p><p>
The <c>inet6</c> option currently has no effect on this function.
- You probably want to use <c>Type = a | aaaa</c> instead.
+ You probably want to use <c><anno>Type</anno> = a | aaaa</c> instead.
</p>
</desc>
</func>
@@ -430,24 +342,18 @@ any of these data structures into a {Field,Value} list.</code>
<funcs>
<func>
- <name>nslookup(Name, Class, Type) -> {ok,dns_msg()} | {error,Reason}
- </name>
- <name>nslookup(Name, Class, Type, Timeout) ->
- {ok,dns_msg()} | {error,Reason}
- </name>
- <name>nslookup(Name, Class, Type, Nameservers) ->
- {ok,dns_msg()} | {error,Reason}
- </name>
+ <name name="nslookup" arity="3"/>
+ <name name="nslookup" arity="4" clause_i="1"/>
+ <name name="nslookup" arity="4" clause_i="2"/>
<fsummary>Resolve a DNS record of the given type and class
for the given name
</fsummary>
- <type>
- <v>Name = dns_name() | ip_address()</v>
- <v>Type = rr_type()</v>
- <v>Nameservers = [ nameserver() ]</v>
- <v>Timeout = integer() >= 0 | infinity</v>
- <v>Reason = posix() | res_error()</v>
- </type>
+ <type variable="Name"/>
+ <type variable="Class"/>
+ <type variable="Type"/>
+ <type variable="Timeout" name_i="2"/>
+ <type variable="Nameservers"/>
+ <type variable="Reason"/>
<desc>
<p>Resolve a DNS record of the given type and class for the given name.
</p>
@@ -455,22 +361,11 @@ any of these data structures into a {Field,Value} list.</code>
</func>
<func>
- <name>nnslookup(Name, Class, Type, Nameservers) ->
- {ok,dns_msg()} | {error,posix()}
- </name>
- <name>nnslookup(Name, Class, Type, Nameservers, Timeout) ->
- {ok,dns_msg()} | {error,posix()}
- </name>
+ <name name="nnslookup" arity="4"/>
+ <name name="nnslookup" arity="5"/>
<fsummary>Resolve a DNS record of the given type and class
for the given name
</fsummary>
- <type>
- <v>Name = dns_name() | ip_address()</v>
- <v>Type = rr_type()</v>
- <v>Nameservers = [ nameserver() ]</v>
- <v>Timeout = integer() >= 0 | infinity</v>
- <v>Reason = posix() | res_error()</v>
- </type>
<desc>
<p>Resolve a DNS record of the given type and class for the given name.
</p>
diff --git a/lib/kernel/doc/src/net_adm.xml b/lib/kernel/doc/src/net_adm.xml
index 7ec4f7f0e7..f2aac9282c 100644
--- a/lib/kernel/doc/src/net_adm.xml
+++ b/lib/kernel/doc/src/net_adm.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -34,94 +34,70 @@
</description>
<funcs>
<func>
- <name>dns_hostname(Host) -> {ok, Name} | {error, Host}</name>
+ <name name="dns_hostname" arity="1"/>
<fsummary>Official name of a host</fsummary>
- <type>
- <v>Host = atom() | string()</v>
- <v>Name = string()</v>
- </type>
<desc>
- <p>Returns the official name of <c>Host</c>, or
- <c>{error, Host}</c> if no such name is found. See also
+ <p>Returns the official name of <c><anno>Host</anno></c>, or
+ <c>{error, <anno>Host</anno>}</c> if no such name is found. See also
<c>inet(3)</c>.</p>
</desc>
</func>
<func>
- <name>host_file() -> Hosts | {error, Reason}</name>
+ <name name="host_file" arity="0"/>
<fsummary>Read the <c>.hosts.erlang</c>file</fsummary>
- <type>
- <v>Hosts = [Host]</v>
- <v>&nbsp;Host = atom()</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>Reads the <c>.hosts.erlang</c> file, see the section
<em>Files</em> below. Returns the hosts in this file as a
- list, or returns <c>{error, Reason}</c> if the file could not
- be read. See <c>file(3)</c> for possible values of
- <c>Reason</c>.</p>
+ list, or returns <c>{error, <anno>Reason</anno>}</c> if the file could not
+ be read or the Erlang terms on the file could not be interpreted.</p>
</desc>
</func>
<func>
- <name>localhost() -> Name</name>
+ <name name="localhost" arity="0"/>
<fsummary>Name of the local host</fsummary>
- <type>
- <v>Name = string()</v>
- </type>
<desc>
<p>Returns the name of the local host. If Erlang was started
- with the <c>-name</c> command line flag, <c>Name</c> is
+ with the <c>-name</c> command line flag, <c><anno>Name</anno></c> is
the fully qualified name.</p>
</desc>
</func>
<func>
- <name>names() -> {ok, [{Name, Port}]} | {error, Reason}</name>
- <name>names(Host) -> {ok, [{Name, Port}]} | {error, Reason}</name>
+ <name name="names" arity="0"/>
+ <name name="names" arity="1"/>
<fsummary>Names of Erlang nodes at a host</fsummary>
- <type>
- <v>Name = string()</v>
- <v>Port = int()</v>
- <v>Reason = address | term()</v>
- </type>
<desc>
<p>Similar to <c>epmd -names</c>, see <c>epmd(1)</c>.
- <c>Host</c> defaults to the local host. Returns the names and
+ <c><anno>Host</anno></c> defaults to the local host. Returns the names and
associated port numbers of the Erlang nodes that <c>epmd</c>
at the specified host has registered.</p>
<p>Returns <c>{error, address}</c> if <c>epmd</c> is not
- running. See <c>inet(3)</c> for other possible values of
- <c>Reason</c>.</p>
+ running.</p>
<pre>
(arne@dunn)1> <input>net_adm:names().</input>
{ok,[{"arne",40262}]}</pre>
</desc>
</func>
<func>
- <name>ping(Node) -> pong | pang</name>
+ <name name="ping" arity="1"/>
<fsummary>Set up a connection to a node</fsummary>
- <type>
- <v>Node = node()</v>
- </type>
<desc>
- <p>Tries to set up a connection to <c>Node</c>. Returns
+ <p>Tries to set up a connection to <c><anno>Node</anno></c>. Returns
<c>pang</c> if it fails, or <c>pong</c> if it is successful.</p>
</desc>
</func>
<func>
- <name>world() -> [node()]</name>
- <name>world(Arg) -> [node()]</name>
+ <name name="world" arity="0"/>
+ <name name="world" arity="1"/>
+ <type name="verbosity"/>
<fsummary>Lookup and connect to all nodes at all hosts in <c>.hosts.erlang</c></fsummary>
- <type>
- <v>Arg = silent | verbose</v>
- </type>
<desc>
<p>This function calls <c>names(Host)</c> for all hosts which
are specified in the Erlang host file <c>.hosts.erlang</c>,
collects the replies and then evaluates <c>ping(Node)</c> on
all those nodes. Returns the list of all nodes that were,
successfully pinged.</p>
- <p><c>Arg</c> defaults to <c>silent</c>.
- If <c>Arg == verbose</c>, the function writes information about which
+ <p><c><anno>Arg</anno></c> defaults to <c>silent</c>.
+ If <c><anno>Arg</anno> == verbose</c>, the function writes information about which
nodes it is pinging to stdout.</p>
<p>This function can be useful when a node is started, and
the names of the other nodes in the network are not initially
@@ -131,14 +107,10 @@
</desc>
</func>
<func>
- <name>world_list(Hosts) -> [node()]</name>
- <name>world_list(Hosts, Arg) -> [node()]</name>
+ <name name="world_list" arity="1"/>
+ <name name="world_list" arity="2"/>
+ <type name="verbosity"/>
<fsummary>Lookup and connect to all nodes at specified hosts</fsummary>
- <type>
- <v>Hosts = [Host]</v>
- <v>&nbsp;Host = atom()</v>
- <v>Arg = silent | verbose</v>
- </type>
<desc>
<p>As <c>world/0,1</c>, but the hosts are given as argument
instead of being read from <c>.hosts.erlang</c>.</p>
diff --git a/lib/kernel/doc/src/net_kernel.xml b/lib/kernel/doc/src/net_kernel.xml
index a18226e779..96e2aa665d 100644
--- a/lib/kernel/doc/src/net_kernel.xml
+++ b/lib/kernel/doc/src/net_kernel.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -64,50 +64,38 @@ $ <input>erl -sname foobar</input></pre>
</description>
<funcs>
<func>
- <name>allow(Nodes) -> ok | error</name>
+ <name name="allow" arity="1"/>
<fsummary>Limit access to a specified set of nodes</fsummary>
- <type>
- <v>Nodes = [node()]</v>
- </type>
<desc>
<p>Limits access to the specified set of nodes. Any access
- attempts made from (or to) nodes not in <c>Nodes</c> will be
+ attempts made from (or to) nodes not in <c><anno>Nodes</anno></c> will be
rejected.</p>
- <p>Returns <c>error</c> if any element in <c>Nodes</c> is not
+ <p>Returns <c>error</c> if any element in <c><anno>Nodes</anno></c> is not
an atom.</p>
</desc>
</func>
<func>
- <name>connect_node(Node) -> true | false | ignored</name>
+ <name name="connect_node" arity="1"/>
<fsummary>Establish a connection to a node</fsummary>
- <type>
- <v>Node = node()</v>
- </type>
<desc>
- <p>Establishes a connection to <c>Node</c>. Returns <c>true</c>
+ <p>Establishes a connection to <c><anno>Node</anno></c>. Returns <c>true</c>
if successful, <c>false</c> if not, and <c>ignored</c> if
the local node is not alive.</p>
</desc>
</func>
<func>
- <name>monitor_nodes(Flag) -> ok | Error</name>
- <name>monitor_nodes(Flag, Options) -> ok | Error</name>
+ <name name="monitor_nodes" arity="1"/>
+ <name name="monitor_nodes" arity="2"/>
<fsummary>Subscribe to node status change messages</fsummary>
- <type>
- <v>Flag = true | false</v>
- <v>Options = [Option]</v>
- <v>&nbsp;Option -- see below</v>
- <v>Error = error | {error, term()}</v>
- </type>
<desc>
<p>The calling process subscribes or unsubscribes to node
status change messages. A <c>nodeup</c> message is delivered
to all subscribing process when a new node is connected, and
a <c>nodedown</c> message is delivered when a node is
disconnected.</p>
- <p>If <c>Flag</c> is <c>true</c>, a new subscription is started.
- If <c>Flag</c> is <c>false</c>, all previous subscriptions --
- started with the same <c>Options</c> -- are stopped. Two
+ <p>If <c><anno>Flag</anno></c> is <c>true</c>, a new subscription is started.
+ If <c><anno>Flag</anno></c> is <c>false</c>, all previous subscriptions --
+ started with the same <c><anno>Options</anno></c> -- are stopped. Two
option lists are considered the same if they contain the same
set of options.</p>
<p>As of <c>kernel</c> version 2.11.4, and <c>erts</c> version
@@ -139,23 +127,23 @@ $ <input>erl -sname foobar</input></pre>
<p>Note, that this is <em>not</em> guaranteed for <c>kernel</c>
versions before 2.13.</p>
<p>The format of the node status change messages depends on
- <c>Options</c>. If <c>Options</c> is [], which is the default,
+ <c><anno>Options</anno></c>. If <c><anno>Options</anno></c> is [], which is the default,
the format is:</p>
<code type="none">
{nodeup, Node} | {nodedown, Node}
Node = node()</code>
- <p>If <c>Options /= []</c>, the format is:</p>
+ <p>If <c><anno>Options</anno> /= []</c>, the format is:</p>
<code type="none">
{nodeup, Node, InfoList} | {nodedown, Node, InfoList}
Node = node()
InfoList = [{Tag, Val}]</code>
<p><c>InfoList</c> is a list of tuples. Its contents depends on
- <c>Options</c>, see below.</p>
+ <c><anno>Options</anno></c>, see below.</p>
<p>Also, when <c>OptionList == []</c> only visible nodes, that
is, nodes that appear in the result of
<seealso marker="erts:erlang#nodes/0">nodes/0</seealso>, are
monitored.</p>
- <p><c>Option</c> can be any of the following:</p>
+ <p><c><anno>Option</anno></c> can be any of the following:</p>
<taglist>
<tag><c>{node_type, NodeType}</c></tag>
<item>
@@ -209,61 +197,51 @@ $ <input>erl -sname foobar</input></pre>
</desc>
</func>
<func>
- <name>get_net_ticktime() -> Res</name>
+ <name name="get_net_ticktime" arity="0"/>
<fsummary>Get <c>net_ticktime</c></fsummary>
- <type>
- <v>Res = NetTicktime | {ongoing_change_to, NetTicktime}</v>
- <v>&nbsp;NetTicktime = int()</v>
- </type>
<desc>
<p>Gets <c>net_ticktime</c> (see
<seealso marker="kernel_app">kernel(6)</seealso>).</p>
- <p>Currently defined return values (<c>Res</c>):</p>
+ <p>Currently defined return values (<c><anno>Res</anno></c>):</p>
<taglist>
- <tag><c>NetTicktime</c></tag>
+ <tag><c><anno>NetTicktime</anno></c></tag>
<item>
- <p><c>net_ticktime</c> is <c>NetTicktime</c> seconds.</p>
+ <p><c>net_ticktime</c> is <c><anno>NetTicktime</anno></c> seconds.</p>
</item>
- <tag><c>{ongoing_change_to, NetTicktime}</c></tag>
+ <tag><c>{ongoing_change_to, <anno>NetTicktime</anno>}</c></tag>
<item>
<p><c>net_kernel</c> is currently changing
- <c>net_ticktime</c> to <c>NetTicktime</c> seconds.</p>
+ <c>net_ticktime</c> to <c><anno>NetTicktime</anno></c> seconds.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>set_net_ticktime(NetTicktime) -> Res</name>
- <name>set_net_ticktime(NetTicktime, TransitionPeriod) -> Res</name>
+ <name name="set_net_ticktime" arity="1"/>
+ <name name="set_net_ticktime" arity="2"/>
<fsummary>Set <c>net_ticktime</c></fsummary>
- <type>
- <v>NetTicktime = int() > 0</v>
- <v>TransitionPeriod = int() >= 0</v>
- <v>Res = unchanged | change_initiated | {ongoing_change_to, NewNetTicktime}</v>
- <v>&nbsp;NewNetTicktime = int() > 0</v>
- </type>
<desc>
<p>Sets <c>net_ticktime</c> (see
<seealso marker="kernel_app">kernel(6)</seealso>) to
- <c>NetTicktime</c> seconds. <c>TransitionPeriod</c> defaults
+ <c><anno>NetTicktime</anno></c> seconds. <c><anno>TransitionPeriod</anno></c> defaults
to 60.</p>
<p>Some definitions:</p>
<p></p>
<taglist>
<tag>The minimum transition traffic interval (<c>MTTI</c>)</tag>
<item>
- <p><c>minimum(NetTicktime, PreviousNetTicktime)*1000 div 4</c> milliseconds.</p>
+ <p><c>minimum(<anno>NetTicktime</anno>, PreviousNetTicktime)*1000 div 4</c> milliseconds.</p>
</item>
<tag>The transition period</tag>
<item>
<p>The time of the least number of consecutive <c>MTTI</c>s
- to cover <c>TransitionPeriod</c> seconds following
+ to cover <c><anno>TransitionPeriod</anno></c> seconds following
the call to <c>set_net_ticktime/2</c> (i.e.
- ((<c>TransitionPeriod*1000 - 1) div MTTI + 1)*MTTI</c>
+ ((<c><anno>TransitionPeriod</anno>*1000 - 1) div MTTI + 1)*MTTI</c>
milliseconds).</p>
</item>
</taglist>
- <p>If <c><![CDATA[NetTicktime < PreviousNetTicktime]]></c>, the actual
+ <p>If <c><![CDATA[<anno>NetTicktime</anno> < PreviousNetTicktime]]></c>, the actual
<c>net_ticktime</c> change will be done at the end of
the transition period; otherwise, at the beginning. During
the transition period, <c>net_kernel</c> will ensure that
@@ -271,7 +249,7 @@ $ <input>erl -sname foobar</input></pre>
every <c>MTTI</c> millisecond.</p>
<note>
<p>The <c>net_ticktime</c> changes have to be initiated on all
- nodes in the network (with the same <c>NetTicktime</c>)
+ nodes in the network (with the same <c><anno>NetTicktime</anno></c>)
before the end of any transition period on any node;
otherwise, connections may erroneously be disconnected.</p>
</note>
@@ -280,18 +258,18 @@ $ <input>erl -sname foobar</input></pre>
<tag><c>unchanged</c></tag>
<item>
<p><c>net_ticktime</c> already had the value of
- <c>NetTicktime</c> and was left unchanged.</p>
+ <c><anno>NetTicktime</anno></c> and was left unchanged.</p>
</item>
<tag><c>change_initiated</c></tag>
<item>
<p><c>net_kernel</c> has initiated the change of
- <c>net_ticktime</c> to <c>NetTicktime</c> seconds.</p>
+ <c>net_ticktime</c> to <c><anno>NetTicktime</anno></c> seconds.</p>
</item>
- <tag><c>{ongoing_change_to, NewNetTicktime}</c></tag>
+ <tag><c>{ongoing_change_to, <anno>NewNetTicktime</anno>}</c></tag>
<item>
<p>The request was <em>ignored</em>; because,
<c>net_kernel</c> was busy changing <c>net_ticktime</c> to
- <c>NewTicktime</c> seconds.</p>
+ <c><anno>NewNetTicktime</anno></c> seconds.</p>
</item>
</taglist>
</desc>
@@ -315,7 +293,7 @@ $ <input>erl -sname foobar</input></pre>
</desc>
</func>
<func>
- <name>stop() -> ok | {error, not_allowed | not_found}</name>
+ <name name="stop" arity="0"/>
<fsummary>Turn a node into a non-distributed Erlang runtime system</fsummary>
<desc>
<p>Turns a distributed node into a non-distributed node. For
diff --git a/lib/kernel/doc/src/notes.xml b/lib/kernel/doc/src/notes.xml
index 065b24c53d..f92837dfe5 100644
--- a/lib/kernel/doc/src/notes.xml
+++ b/lib/kernel/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/kernel/doc/src/os.xml b/lib/kernel/doc/src/os.xml
index 2c9cc33eb7..56fc1834ec 100644
--- a/lib/kernel/doc/src/os.xml
+++ b/lib/kernel/doc/src/os.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1997</year><year>2009</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -38,13 +38,10 @@
</description>
<funcs>
<func>
- <name>cmd(Command) -> string()</name>
+ <name name="cmd" arity="1"/>
<fsummary>Execute a command in a shell of the target OS</fsummary>
- <type>
- <v>Command = string() | atom()</v>
- </type>
<desc>
- <p>Executes <c>Command</c> in a command shell of the target OS,
+ <p>Executes <c><anno>Command</anno></c> in a command shell of the target OS,
captures the standard output of the command and returns this
result as a string. This function is a replacement of
the previous <c>unix:cmd/1</c>; on a Unix platform they are
@@ -60,23 +57,18 @@ DirOut = os:cmd("dir"), % on Win32 platform</code>
</desc>
</func>
<func>
- <name>find_executable(Name) -> Filename | false</name>
- <name>find_executable(Name, Path) -> Filename | false</name>
+ <name name="find_executable" arity="1"/>
+ <name name="find_executable" arity="2"/>
<fsummary>Absolute filename of a program</fsummary>
- <type>
- <v>Name = string()</v>
- <v>Path = string()</v>
- <v>Filename = string()</v>
- </type>
<desc>
<p>These two functions look up an executable program given its
name and a search path, in the same way as the underlying
operating system. <c>find_executable/1</c> uses the current
execution path (that is, the environment variable PATH on
Unix and Windows).</p>
- <p><c>Path</c>, if given, should conform to the syntax of
+ <p><c><anno>Path</anno></c>, if given, should conform to the syntax of
execution paths on the operating system. The absolute
- filename of the executable program <c>Name</c> is returned,
+ filename of the executable program <c><anno>Name</anno></c> is returned,
or <c>false</c> if the program was not found.</p>
</desc>
</func>
@@ -137,7 +129,7 @@ DirOut = os:cmd("dir"), % on Win32 platform</code>
<name>timestamp() -> {MegaSecs, Secs, MicroSecs}</name>
<fsummary>Returna a timestamp from the OS in the erlang:now/0 format</fsummary>
<type>
- <v>MegaSecs = Secs = MicroSecs = int()</v>
+ <v>MegaSecs = Secs = MicroSecs = integer() >= 0</v>
</type>
<desc>
<p>Returns a tuple in the same format as <seealso marker="erts:erlang#now/0">erlang:now/0</seealso>. The difference is that this function returns what the operating system thinks (a.k.a. the wall clock time) without any attempts at time correction. The result of two different calls to this function is <em>not</em> guaranteed to be different.</p>
@@ -165,19 +157,15 @@ format_utc_timestamp() ->
</desc>
</func>
<func>
- <name>type() -> {Osfamily, Osname} | Osfamily</name>
+ <name name="type" arity="0"/>
<fsummary>Return the OS family and, in some cases, OS name of the current operating system</fsummary>
- <type>
- <v>Osfamily = win32 | unix | vxworks</v>
- <v>Osname = atom()</v>
- </type>
<desc>
- <p>Returns the <c>Osfamily</c> and, in some cases, <c>Osname</c>
+ <p>Returns the <c><anno>Osfamily</anno></c> and, in some cases, <c><anno>Osname</anno></c>
of the current operating system.</p>
- <p>On Unix, <c>Osname</c> will have same value as
+ <p>On Unix, <c><anno>Osname</anno></c> will have same value as
<c>uname -s</c> returns, but in lower case. For example, on
Solaris 1 and 2, it will be <c>sunos</c>.</p>
- <p>In Windows, <c>Osname</c> will be either <c>nt</c> (on
+ <p>In Windows, <c><anno>Osname</anno></c> will be either <c>nt</c> (on
Windows NT), or <c>windows</c> (on Windows 95).</p>
<p>On VxWorks the OS family alone is returned, that is
<c>vxworks</c>.</p>
@@ -185,17 +173,13 @@ format_utc_timestamp() ->
<p>Think twice before using this function. Use the
<c>filename</c> module if you want to inspect or build
file names in a portable way.
- Avoid matching on the <c>Osname</c> atom.</p>
+ Avoid matching on the <c><anno>Osname</anno></c> atom.</p>
</note>
</desc>
</func>
<func>
- <name>version() -> {Major, Minor, Release} | VersionString</name>
+ <name name="version" arity="0"/>
<fsummary>Return the Operating System version</fsummary>
- <type>
- <v>Major = Minor = Release = integer()</v>
- <v>VersionString = string()</v>
- </type>
<desc>
<p>Returns the operating system version.
On most systems, this function returns a tuple, but a string
diff --git a/lib/kernel/doc/src/pg2.xml b/lib/kernel/doc/src/pg2.xml
index 7463fd10f5..d26ff0fc6b 100644
--- a/lib/kernel/doc/src/pg2.xml
+++ b/lib/kernel/doc/src/pg2.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1997</year><year>2009</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -60,13 +60,16 @@
to avoid name clashes.</p>
</warning>
</description>
+ <datatypes>
+ <datatype>
+ <name name="name"/>
+ <desc><p>The name of a process group.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>create(Name) -> void()</name>
+ <name name="create" arity="1"/>
<fsummary>Create a new, empty process group</fsummary>
- <type>
- <v>Name = term()</v>
- </type>
<desc>
<p>Creates a new, empty process group. The group is globally
visible on all nodes. If the group exists, nothing happens.
@@ -74,24 +77,16 @@
</desc>
</func>
<func>
- <name>delete(Name) -> void()</name>
+ <name name="delete" arity="1"/>
<fsummary>Delete a process group</fsummary>
- <type>
- <v>Name = term()</v>
- </type>
<desc>
<p>Deletes a process group.
</p>
</desc>
</func>
<func>
- <name>get_closest_pid(Name) -> Pid | {error, Reason}</name>
+ <name name="get_closest_pid" arity="1"/>
<fsummary>Common dispatch function</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid = pid()</v>
- <v>Reason = {no_process, Name} | {no_such_group, Name}</v>
- </type>
<desc>
<p>This is a useful dispatch function which can be used from
client functions. It returns a process on the local node, if
@@ -100,13 +95,8 @@
</desc>
</func>
<func>
- <name>get_members(Name) -> [Pid] | {error, Reason}</name>
+ <name name="get_members" arity="1"/>
<fsummary>Return all processes in a group</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid = pid()</v>
- <v>Reason = {no_such_group, Name}</v>
- </type>
<desc>
<p>Returns all processes in the group <c>Name</c>. This
function should be used from within a client function that
@@ -115,13 +105,8 @@
</desc>
</func>
<func>
- <name>get_local_members(Name) -> [Pid] | {error, Reason}</name>
+ <name name="get_local_members" arity="1"/>
<fsummary>Return all local processes in a group</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid = pid()</v>
- <v>Reason = {no_such_group, Name}</v>
- </type>
<desc>
<p>Returns all processes running on the local node in the
group <c>Name</c>. This function should to be used from
@@ -131,13 +116,8 @@
</desc>
</func>
<func>
- <name>join(Name, Pid) -> ok | {error, Reason}</name>
+ <name name="join" arity="2"/>
<fsummary>Join a process to a group</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid = pid()</v>
- <v>Reason = {no_such_group, Name}</v>
- </type>
<desc>
<p>Joins the process <c>Pid</c> to the group <c>Name</c>.
A process can join a group several times; it must then
@@ -146,13 +126,8 @@
</desc>
</func>
<func>
- <name>leave(Name, Pid) -> ok | {error, Reason}</name>
+ <name name="leave" arity="2"/>
<fsummary>Make a process leave a group</fsummary>
- <type>
- <v>Name = term()</v>
- <v>Pid = pid()</v>
- <v>Reason = {no_such_group, Name}</v>
- </type>
<desc>
<p>Makes the process <c>Pid</c> leave the group <c>Name</c>.
If the process is not a member of the group, <c>ok</c> is
@@ -161,24 +136,17 @@
</desc>
</func>
<func>
- <name>which_groups() -> [Name]</name>
+ <name name="which_groups" arity="0"/>
<fsummary>Return a list of all known groups</fsummary>
- <type>
- <v>Name = term()</v>
- </type>
<desc>
<p>Returns a list of all known groups.
</p>
</desc>
</func>
<func>
- <name>start()</name>
- <name>start_link() -> {ok, Pid} | {error, Reason}</name>
+ <name name="start" arity="0"/>
+ <name name="start_link" arity="0"/>
<fsummary>Start the pg2 server</fsummary>
- <type>
- <v>Pid = pid()</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>Starts the pg2 server. Normally, the server does not need
to be started explicitly, as it is started dynamically if it
diff --git a/lib/kernel/doc/src/rpc.xml b/lib/kernel/doc/src/rpc.xml
index 2b81de170d..b01ff16c85 100644
--- a/lib/kernel/doc/src/rpc.xml
+++ b/lib/kernel/doc/src/rpc.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -37,40 +37,34 @@
for collecting information on a remote node, or for running a
function with some specific side effects on the remote node.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="key"/>
+ <desc>
+ <p>As returned by <seealso marker="#async_call/4">
+ <c>async_call/4</c>.</seealso></p>
+ </desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>call(Node, Module, Function, Args) -> Res | {badrpc, Reason}</name>
+ <name name="call" arity="4"/>
<fsummary>Evaluate a function call on a node</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>Res = term()</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>Evaluates <c>apply(Module, Function, Args)</c> on the node
- <c>Node</c> and returns the corresponding value <c>Res</c>, or
- <c>{badrpc, Reason}</c> if the call fails.</p>
+ <p>Evaluates <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>)</c> on the node
+ <c><anno>Node</anno></c> and returns the corresponding value <c><anno>Res</anno></c>, or
+ <c>{badrpc, <anno>Reason</anno>}</c> if the call fails.</p>
</desc>
</func>
<func>
- <name>call(Node, Module, Function, Args, Timeout) -> Res | {badrpc, Reason}</name>
+ <name name="call" arity="5"/>
<fsummary>Evaluate a function call on a node</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>Res = term()</v>
- <v>Reason = timeout | term()</v>
- <v>Timeout = int() | infinity</v>
- </type>
<desc>
- <p>Evaluates <c>apply(Module, Function, Args)</c> on the node
- <c>Node</c> and returns the corresponding value <c>Res</c>, or
- <c>{badrpc, Reason}</c> if the call fails. <c>Timeout</c> is
+ <p>Evaluates <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>)</c> on the node
+ <c><anno>Node</anno></c> and returns the corresponding value <c><anno>Res</anno></c>, or
+ <c>{badrpc, <anno>Reason</anno>}</c> if the call fails. <c><anno>Timeout</anno></c> is
a timeout value in milliseconds. If the call times out,
- <c>Reason</c> is <c>timeout</c>.</p>
+ <c><anno>Reason</anno></c> is <c>timeout</c>.</p>
<p>If the reply arrives after the call times out, no message
will contaminate the caller's message queue, since this
function spawns off a middleman process to act as (a void)
@@ -80,17 +74,10 @@
</desc>
</func>
<func>
- <name>block_call(Node, Module, Function, Args) -> Res | {badrpc, Reason}</name>
+ <name name="block_call" arity="4"/>
<fsummary>Evaluate a function call on a node in the RPC server's context</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>Res = term()</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>Like <c>call/4</c>, but the RPC server at <c>Node</c> does
+ <p>Like <c>call/4</c>, but the RPC server at <c><anno>Node</anno></c> does
not create a separate process to handle the call. Thus,
this function can be used if the intention of the call is to
block the RPC server from any other incoming requests until
@@ -101,50 +88,31 @@
</desc>
</func>
<func>
- <name>block_call(Node, Module, Function, Args, Timeout) -> Res | {badrpc, Reason}</name>
+ <name name="block_call" arity="5"/>
<fsummary>Evaluate a function call on a node in the RPC server's context</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>Timeout = int() | infinity</v>
- <v>Res = term()</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>Like <c>block_call/4</c>, but with a timeout value in
the same manner as <c>call/5</c>.</p>
</desc>
</func>
<func>
- <name>async_call(Node, Module, Function, Args) -> Key</name>
+ <name name="async_call" arity="4"/>
<fsummary>Evaluate a function call on a node, asynchronous version</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>Key -- see below</v>
- </type>
<desc>
<p>Implements <em>call streams with promises</em>, a type of
RPC which does not suspend the caller until the result is
finished. Instead, a key is returned which can be used at a
later stage to collect the value. The key can be viewed as a
promise to deliver the answer.</p>
- <p>In this case, the key <c>Key</c> is returned, which can be
+ <p>In this case, the key <c><anno>Key</anno></c> is returned, which can be
used in a subsequent call to <c>yield/1</c> or
<c>nb_yield/1,2</c> to retrieve the value of evaluating
- <c>apply(Module, Function, Args)</c> on the node <c>Node</c>.</p>
+ <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>)</c> on the node <c><anno>Node</anno></c>.</p>
</desc>
</func>
<func>
- <name>yield(Key) -> Res | {badrpc, Reason}</name>
+ <name name="yield" arity="1"/>
<fsummary>Deliver the result of evaluating a function call on a node (blocking)</fsummary>
- <type>
- <v>Key -- see async_call/4</v>
- <v>Res = term()</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>Returns the promised answer from a previous
<c>async_call/4</c>. If the answer is available, it is
@@ -153,87 +121,46 @@
</desc>
</func>
<func>
- <name>nb_yield(Key) -> {value, Val} | timeout</name>
+ <name name="nb_yield" arity="1"/>
<fsummary>Deliver the result of evaluating a function call on a node (non-blocking)</fsummary>
- <type>
- <v>Key -- see async_call/4</v>
- <v>Val = Res | {badrpc, Reason}</v>
- <v>&nbsp;Res = term()</v>
- <v>&nbsp;Reason = term()</v>
- </type>
<desc>
- <p>Equivalent to <c>nb_yield(Key, 0)</c>.</p>
+ <p>Equivalent to <c>nb_yield(<anno>Key</anno>, 0)</c>.</p>
</desc>
</func>
<func>
- <name>nb_yield(Key, Timeout) -> {value, Val} | timeout</name>
+ <name name="nb_yield" arity="2"/>
<fsummary>Deliver the result of evaluating a function call on a node (non-blocking)</fsummary>
- <type>
- <v>Key -- see async_call/4</v>
- <v>Timeout = int() | infinity</v>
- <v>Val = Res | {badrpc, Reason}</v>
- <v>&nbsp;Res = term()</v>
- <v>&nbsp;Reason = term()</v>
- </type>
<desc>
<p>This is a non-blocking version of <c>yield/1</c>. It returns
- the tuple <c>{value, Val}</c> when the computation has
- finished, or <c>timeout</c> when <c>Timeout</c> milliseconds
+ the tuple <c>{value, <anno>Val</anno>}</c> when the computation has
+ finished, or <c>timeout</c> when <c><anno>Timeout</anno></c> milliseconds
has elapsed.</p>
</desc>
</func>
<func>
- <name>multicall(Module, Function, Args) -> {ResL, BadNodes}</name>
+ <name name="multicall" arity="3"/>
<fsummary>Evaluate a function call on a number of nodes</fsummary>
- <type>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>ResL = [term()]</v>
- <v>BadNodes = [node()]</v>
- </type>
<desc>
- <p>Equivalent to <c>multicall([node()|nodes()], Module, Function, Args, infinity)</c>.</p>
+ <p>Equivalent to <c>multicall([node()|nodes()], <anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>, infinity)</c>.</p>
</desc>
</func>
<func>
- <name>multicall(Nodes, Module, Function, Args) -> {ResL, BadNodes}</name>
+ <name name="multicall" arity="4" clause_i="1"/>
<fsummary>Evaluate a function call on a number of nodes</fsummary>
- <type>
- <v>Nodes = [node()]</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>ResL = [term()]</v>
- <v>BadNodes = [node()]</v>
- </type>
<desc>
- <p>Equivalent to <c>multicall(Nodes, Module, Function, Args, infinity)</c>.</p>
+ <p>Equivalent to <c>multicall(<anno>Nodes</anno>, <anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>, infinity)</c>.</p>
</desc>
</func>
<func>
- <name>multicall(Module, Function, Args, Timeout) -> {ResL, BadNodes}</name>
+ <name name="multicall" arity="4" clause_i="2"/>
<fsummary>Evaluate a function call on a number of nodes</fsummary>
- <type>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>Timeout = int() | infinity</v>
- <v>ResL = [term()]</v>
- <v>BadNodes = [node()]</v>
- </type>
<desc>
- <p>Equivalent to <c>multicall([node()|nodes()], Module, Function, Args, Timeout)</c>.</p>
+ <p>Equivalent to <c>multicall([node()|nodes()], <anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>, <anno>Timeout</anno>)</c>.</p>
</desc>
</func>
<func>
- <name>multicall(Nodes, Module, Function, Args, Timeout) -> {ResL, BadNodes}</name>
+ <name name="multicall" arity="5"/>
<fsummary>Evaluate a function call on a number of nodes</fsummary>
- <type>
- <v>Nodes = [node()]</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>Timeout = int() | infinity</v>
- <v>ResL = [term()]</v>
- <v>BadNodes = [node()]</v>
- </type>
<desc>
<p>In contrast to an RPC, a multicall is an RPC which is sent
concurrently from one client to multiple servers. This is
@@ -243,12 +170,12 @@
making a series of RPCs on all the nodes, but the multicall
is faster as all the requests are sent at the same time
and are collected one by one as they come back.</p>
- <p>The function evaluates <c>apply(Module, Function, Args)</c>
+ <p>The function evaluates <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>)</c>
on the specified nodes and collects the answers. It returns
- <c>{ResL, Badnodes}</c>, where <c>Badnodes</c> is a list
+ <c>{<anno>ResL</anno>, <anno>BadNodes</anno>}</c>, where <c><anno>BadNodes</anno></c> is a list
of the nodes that terminated or timed out during computation,
- and <c>ResL</c> is a list of the return values.
- <c>Timeout</c> is a time (integer) in milliseconds, or
+ and <c><anno>ResL</anno></c> is a list of the return values.
+ <c><anno>Timeout</anno></c> is a time (integer) in milliseconds, or
<c>infinity</c>.</p>
<p>The following example is useful when new object code is to
be loaded on all nodes in the network, and also indicates
@@ -264,93 +191,60 @@
</desc>
</func>
<func>
- <name>cast(Node, Module, Function, Args) -> void()</name>
+ <name name="cast" arity="4"/>
<fsummary>Run a function on a node ignoring the result</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- </type>
<desc>
- <p>Evaluates <c>apply(Module, Function, Args)</c> on the node
- <c>Node</c>. No response is delivered and the calling
+ <p>Evaluates <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>)</c> on the node
+ <c><anno>Node</anno></c>. No response is delivered and the calling
process is not suspended until the evaluation is complete, as
is the case with <c>call/4,5</c>.</p>
</desc>
</func>
<func>
- <name>eval_everywhere(Module, Funtion, Args) -> void()</name>
+ <name name="eval_everywhere" arity="3"/>
<fsummary>Run a function on all nodes, ignoring the result</fsummary>
- <type>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- </type>
<desc>
- <p>Equivalent to <c>eval_everywhere([node()|nodes()], Module, Function, Args)</c>.</p>
+ <p>Equivalent to <c>eval_everywhere([node()|nodes()], <anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>)</c>.</p>
</desc>
</func>
<func>
- <name>eval_everywhere(Nodes, Module, Function, Args) -> void()</name>
+ <name name="eval_everywhere" arity="4"/>
<fsummary>Run a function on specific nodes, ignoring the result</fsummary>
- <type>
- <v>Nodes = [node()]</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- </type>
<desc>
- <p>Evaluates <c>apply(Module, Function, Args)</c> on
+ <p>Evaluates <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>)</c> on
the specified nodes. No answers are collected.</p>
</desc>
</func>
<func>
- <name>abcast(Name, Msg) -> void()</name>
+ <name name="abcast" arity="2"/>
<fsummary>Broadcast a message asynchronously to a registered process on all nodes</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>Msg = term()</v>
- </type>
<desc>
- <p>Equivalent to <c>abcast([node()|nodes()], Name, Msg)</c>.</p>
+ <p>Equivalent to <c>abcast([node()|nodes()], <anno>Name</anno>, <anno>Msg</anno>)</c>.</p>
</desc>
</func>
<func>
- <name>abcast(Nodes, Name, Msg) -> void()</name>
+ <name name="abcast" arity="3"/>
<fsummary>Broadcast a message asynchronously to a registered process on specific nodes</fsummary>
- <type>
- <v>Nodes = [node()]</v>
- <v>Name = atom()</v>
- <v>Msg = term()</v>
- </type>
<desc>
- <p>Broadcasts the message <c>Msg</c> asynchronously to
- the registered process <c>Name</c> on the specified nodes.</p>
+ <p>Broadcasts the message <c><anno>Msg</anno></c> asynchronously to
+ the registered process <c><anno>Name</anno></c> on the specified nodes.</p>
</desc>
</func>
<func>
- <name>sbcast(Name, Msg) -> {GoodNodes, BadNodes}</name>
+ <name name="sbcast" arity="2"/>
<fsummary>Broadcast a message synchronously to a registered process on all nodes</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>Msg = term()</v>
- <v>GoodNodes = BadNodes = [node()]</v>
- </type>
<desc>
- <p>Equivalent to <c>sbcast([node()|nodes()], Name, Msg)</c>.</p>
+ <p>Equivalent to <c>sbcast([node()|nodes()], <anno>Name</anno>, <anno>Msg</anno>)</c>.</p>
</desc>
</func>
<func>
- <name>sbcast(Nodes, Name, Msg) -> {GoodNodes, BadNodes}</name>
+ <name name="sbcast" arity="3"/>
<fsummary>Broadcast a message synchronously to a registered process on specific nodes</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>Msg = term()</v>
- <v>Nodes = GoodNodes = BadNodes = [node()]</v>
- </type>
<desc>
- <p>Broadcasts the message <c>Msg</c> synchronously to
- the registered process <c>Name</c> on the specified nodes.</p>
- <p>Returns <c>{GoodNodes, BadNodes}</c>, where <c>GoodNodes</c>
- is the list of nodes which have <c>Name</c> as a registered
+ <p>Broadcasts the message <c><anno>Msg</anno></c> synchronously to
+ the registered process <c><anno>Name</anno></c> on the specified nodes.</p>
+ <p>Returns <c>{<anno>GoodNodes</anno>, <anno>BadNodes</anno>}</c>, where <c><anno>GoodNodes</anno></c>
+ is the list of nodes which have <c><anno>Name</anno></c> as a registered
process.</p>
<p>The function is synchronous in the sense that it is known
that all servers have received the message when the call
@@ -362,67 +256,46 @@
</desc>
</func>
<func>
- <name>server_call(Node, Name, ReplyWrapper, Msg) -> Reply | {error, Reason}</name>
+ <name name="server_call" arity="4"/>
<fsummary>Interact with a server on a node</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Name = atom()</v>
- <v>ReplyWrapper = Msg = Reply = term()</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>This function can be used when interacting with a server
- called <c>Name</c> at node <c>Node</c>. It is assumed that
+ called <c><anno>Name</anno></c> at node <c><anno>Node</anno></c>. It is assumed that
the server receives messages in the format
- <c>{From, Msg}</c> and replies using <c>From ! {ReplyWrapper, Node, Reply}</c>. This function makes such
+ <c>{From, <anno>Msg</anno>}</c> and replies using <c>From ! {<anno>ReplyWrapper</anno>, <anno>Node</anno>, <anno>Reply</anno>}</c>. This function makes such
a server call and ensures that the entire call is packed into
an atomic transaction which either succeeds or fails. It
never hangs, unless the server itself hangs.</p>
- <p>The function returns the answer <c>Reply</c> as produced by
- the server <c>Name</c>, or <c>{error, Reason}</c>.</p>
+ <p>The function returns the answer <c><anno>Reply</anno></c> as produced by
+ the server <c><anno>Name</anno></c>, or <c>{error, <anno>Reason</anno>}</c>.</p>
</desc>
</func>
<func>
- <name>multi_server_call(Name, Msg) -> {Replies, BadNodes}</name>
+ <name name="multi_server_call" arity="2"/>
<fsummary>Interact with the servers on a number of nodes</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>Msg = term()</v>
- <v>Replies = [Reply]</v>
- <v>&nbsp;Reply = term()</v>
- <v>BadNodes = [node()]</v>
- </type>
<desc>
- <p>Equivalent to <c>multi_server_call([node()|nodes()], Name, Msg)</c>.</p>
+ <p>Equivalent to <c>multi_server_call([node()|nodes()], <anno>Name</anno>, <anno>Msg</anno>)</c>.</p>
</desc>
</func>
<func>
- <name>multi_server_call(Nodes, Name, Msg) -> {Replies, BadNodes}</name>
+ <name name="multi_server_call" arity="3"/>
<fsummary>Interact with the servers on a number of nodes</fsummary>
- <type>
- <v>Nodes = [node()]</v>
- <v>Name = atom()</v>
- <v>Msg = term()</v>
- <v>Replies = [Reply]</v>
- <v>&nbsp;Reply = term()</v>
- <v>BadNodes = [node()]</v>
- </type>
<desc>
<p>This function can be used when interacting with servers
- called <c>Name</c> on the specified nodes. It is assumed that
- the servers receive messages in the format <c>{From, Msg}</c>
- and reply using <c>From ! {Name, Node, Reply}</c>, where
+ called <c><anno>Name</anno></c> on the specified nodes. It is assumed that
+ the servers receive messages in the format <c>{From, <anno>Msg</anno>}</c>
+ and reply using <c>From ! {<anno>Name</anno>, Node, <anno>Reply</anno>}</c>, where
<c>Node</c> is the name of the node where the server is
- located. The function returns <c>{Replies, Badnodes}</c>,
- where <c>Replies</c> is a list of all <c>Reply</c> values and
- <c>BadNodes</c> is a list of the nodes which did not exist, or
+ located. The function returns <c>{<anno>Replies</anno>, <anno>BadNodes</anno>}</c>,
+ where <c><anno>Replies</anno></c> is a list of all <c><anno>Reply</anno></c> values and
+ <c><anno>BadNodes</anno></c> is a list of the nodes which did not exist, or
where the server did not exist, or where the server terminated
before sending any reply.</p>
</desc>
</func>
<func>
- <name>safe_multi_server_call(Name, Msg) -> {Replies, BadNodes}</name>
- <name>safe_multi_server_call(Nodes, Name, Msg) -> {Replies, BadNodes}</name>
+ <name name="safe_multi_server_call" arity="2"/>
+ <name name="safe_multi_server_call" arity="3"/>
<fsummary>Interact with the servers on a number of nodes (deprecated)</fsummary>
<desc>
<warning>
@@ -432,66 +305,47 @@
<p>In Erlang/OTP R6B and earlier releases,
<c>multi_server_call/2,3</c> could not handle the case
where the remote node exists, but there is no server called
- <c>Name</c>. Instead this function had to be used. In
+ <c><anno>Name</anno></c>. Instead this function had to be used. In
Erlang/OTP R7B and later releases, however, the functions are
equivalent, except for this function being slightly slower.</p>
</desc>
</func>
<func>
- <name>parallel_eval(FuncCalls) -> ResL</name>
+ <name name="parallel_eval" arity="1"/>
<fsummary>Evaluate several function calls on all nodes in parallel</fsummary>
- <type>
- <v>FuncCalls = [{Module, Function, Args}]</v>
- <v>&nbsp;Module = Function = atom()</v>
- <v>&nbsp;Args = [term()]</v>
- <v>ResL = [term()]</v>
- </type>
<desc>
- <p>For every tuple in <c>FuncCalls</c>, evaluates
- <c>apply(Module, Function, Args)</c> on some node in
+ <p>For every tuple in <c><anno>FuncCalls</anno></c>, evaluates
+ <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Args</anno>)</c> on some node in
the network. Returns the list of return values, in the same
- order as in <c>FuncCalls</c>.</p>
+ order as in <c><anno>FuncCalls</anno></c>.</p>
</desc>
</func>
<func>
- <name>pmap({Module, Function}, ExtraArgs, List1) -> List2</name>
+ <name name="pmap" arity="3"/>
<fsummary>Parallell evaluation of mapping a function over a list </fsummary>
- <type>
- <v>Module = Function = atom()</v>
- <v>ExtraArgs = [term()]</v>
- <v>List1 = [Elem]</v>
- <v>&nbsp;Elem = term()</v>
- <v>List2 = [term()]</v>
- </type>
<desc>
- <p>Evaluates <c>apply(Module, Function, [Elem|ExtraArgs])</c>,
- for every element <c>Elem</c> in <c>List1</c>, in parallel.
+ <p>Evaluates <c>apply(<anno>Module</anno>, <anno>Function</anno>, [<anno>Elem</anno>|<anno>ExtraArgs</anno>])</c>,
+ for every element <c><anno>Elem</anno></c> in <c><anno>List1</anno></c>, in parallel.
Returns the list of return values, in the same order as in
- <c>List1</c>.</p>
+ <c><anno>List1</anno></c>.</p>
</desc>
</func>
<func>
- <name>pinfo(Pid) -> [{Item, Info}] | undefined</name>
+ <name name="pinfo" arity="1"/>
<fsummary>Information about a process</fsummary>
- <type>
- <v>Pid = pid()</v>
- <v>Item, Info -- see erlang:process_info/1</v>
- </type>
<desc>
<p>Location transparent version of the BIF
- <c>process_info/1</c>.</p>
+ <seealso marker="erts:erlang#process_info/1">
+ <c>process_info/1</c></seealso>.</p>
</desc>
</func>
<func>
- <name>pinfo(Pid, Item) -> {Item, Info} | undefined | []</name>
+ <name name="pinfo" arity="2"/>
<fsummary>Information about a process</fsummary>
- <type>
- <v>Pid = pid()</v>
- <v>Item, Info -- see erlang:process_info/1</v>
- </type>
<desc>
<p>Location transparent version of the BIF
- <c>process_info/2</c>.</p>
+ <seealso marker="erts:erlang#process_info/2">
+ <c>process_info/2</c></seealso>.</p>
</desc>
</func>
</funcs>
diff --git a/lib/kernel/doc/src/seq_trace.xml b/lib/kernel/doc/src/seq_trace.xml
index 6c043dd767..1ab955bd8a 100644
--- a/lib/kernel/doc/src/seq_trace.xml
+++ b/lib/kernel/doc/src/seq_trace.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1998</year><year>2009</year>
+ <year>1998</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -47,17 +47,22 @@
from users.</p>
</note>
</description>
+ <datatypes>
+ <datatype>
+ <name name="token"/>
+ <desc>
+ <p>An opaque term (a tuple) representing a trace token.</p>
+ </desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>set_token(Token) -> PreviousToken</name>
+ <name name="set_token" arity="1"/>
<fsummary>Set the trace token</fsummary>
- <type>
- <v>Token = PreviousToken = term() | []</v>
- </type>
<desc>
- <p>Sets the trace token for the calling process to <c>Token</c>.
- If <c>Token == []</c> then tracing is disabled, otherwise
- <c>Token</c> should be an Erlang term returned from
+ <p>Sets the trace token for the calling process to <c><anno>Token</anno></c>.
+ If <c><anno>Token</anno> == []</c> then tracing is disabled, otherwise
+ <c><anno>Token</anno></c> should be an Erlang term returned from
<c>get_token/0</c> or <c>set_token/1</c>. <c>set_token/1</c>
can be used to temporarily exclude message passing from
the trace by setting the trace token to empty like this:</p>
@@ -72,18 +77,16 @@ seq_trace:set_token(OldToken), % activate the trace token again
</desc>
</func>
<func>
- <name>set_token(Component, Val) -> {Component, OldVal}</name>
+ <name name="set_token" arity="2"/>
<fsummary>Set a component of the trace token</fsummary>
- <type>
- <v>Component = label | serial | Flag</v>
- <v>&nbsp;Flag = send | 'receive' | print | timestamp </v>
- <v>Val = OldVal -- see below</v>
- </type>
+ <type name="component"/>
+ <type name="flag"/>
+ <type name="value"/>
<desc>
- <p>Sets the individual <c>Component</c> of the trace token to
- <c>Val</c>. Returns the previous value of the component.</p>
+ <p>Sets the individual <c><anno>Component</anno></c> of the trace token to
+ <c><anno>Val</anno></c>. Returns the previous value of the component.</p>
<taglist>
- <tag><c>set_token(label, Int)</c></tag>
+ <tag><c>set_token(label, <anno>Integer</anno>)</c></tag>
<item>
<p>The <c>label</c> component is an integer which
identifies all events belonging to the same sequential
@@ -93,31 +96,31 @@ seq_trace:set_token(OldToken), % activate the trace token again
</item>
<tag><c>set_token(serial, SerialValue)</c></tag>
<item>
- <p><c>SerialValue = {Previous, Current}</c>.
+ <p><c>SerialValue = {<anno>Previous</anno>, <anno>Current</anno>}</c>.
The <c>serial</c> component contains counters which
enables the traced messages to be sorted, should never be
set explicitly by the user as these counters are updated
automatically. Default is <c>{0, 0}</c>.</p>
</item>
- <tag><c>set_token(send, Bool)</c></tag>
+ <tag><c>set_token(send, <anno>Bool</anno>)</c></tag>
<item>
<p>A trace token flag (<c>true | false</c>) which
enables/disables tracing on message sending. Default is
<c>false</c>.</p>
</item>
- <tag><c>set_token('receive', Bool)</c></tag>
+ <tag><c>set_token('receive', <anno>Bool</anno>)</c></tag>
<item>
<p>A trace token flag (<c>true | false</c>) which
enables/disables tracing on message reception. Default is
<c>false</c>.</p>
</item>
- <tag><c>set_token(print, Bool)</c></tag>
+ <tag><c>set_token(print, <anno>Bool</anno>)</c></tag>
<item>
<p>A trace token flag (<c>true | false</c>) which
enables/disables tracing on explicit calls to
<c>seq_trace:print/1</c>. Default is <c>false</c>.</p>
</item>
- <tag><c>set_token(timestamp, Bool)</c></tag>
+ <tag><c>set_token(timestamp, <anno>Bool</anno>)</c></tag>
<item>
<p>A trace token flag (<c>true | false</c>) which
enables/disables a timestamp to be generated for each
@@ -127,11 +130,8 @@ seq_trace:set_token(OldToken), % activate the trace token again
</desc>
</func>
<func>
- <name>get_token() -> TraceToken</name>
+ <name name="get_token" arity="0"/>
<fsummary>Return the value of the trace token</fsummary>
- <type>
- <v>TraceToken = term() | []</v>
- </type>
<desc>
<p>Returns the value of the trace token for the calling process.
If <c>[]</c> is returned, it means that tracing is not active.
@@ -141,13 +141,11 @@ seq_trace:set_token(OldToken), % activate the trace token again
</desc>
</func>
<func>
- <name>get_token(Component) -> {Component, Val}</name>
+ <name name="get_token" arity="1"/>
<fsummary>Return the value of a trace token component</fsummary>
- <type>
- <v>Component = label | serial | Flag</v>
- <v>&nbsp;Flag = send | 'receive' | print | timestamp </v>
- <v>Val -- see set_token/2</v>
- </type>
+ <type name="component"/>
+ <type name="flag"/>
+ <type name="value"/>
<desc>
<p>Returns the value of the trace token component
<c>Component</c>. See
@@ -156,33 +154,26 @@ seq_trace:set_token(OldToken), % activate the trace token again
</desc>
</func>
<func>
- <name>print(TraceInfo) -> void()</name>
+ <name name="print" arity="1"/>
<fsummary>Put the Erlang term <c>TraceInfo</c>into the sequential trace output</fsummary>
- <type>
- <v>TraceInfo = term()</v>
- </type>
<desc>
- <p>Puts the Erlang term <c>TraceInfo</c> into the sequential
+ <p>Puts the Erlang term <c><anno>TraceInfo</anno></c> into the sequential
trace output if the calling process currently is executing
within a sequential trace and the <c>print</c> flag of
the trace token is set.</p>
</desc>
</func>
<func>
- <name>print(Label, TraceInfo) -> void()</name>
+ <name name="print" arity="2"/>
<fsummary>Put the Erlang term <c>TraceInfo</c>into the sequential trace output</fsummary>
- <type>
- <v>Label = int()</v>
- <v>TraceInfo = term()</v>
- </type>
<desc>
<p>Same as <c>print/1</c> with the additional condition that
- <c>TraceInfo</c> is output only if <c>Label</c> is equal to
+ <c><anno>TraceInfo</anno></c> is output only if <c>Label</c> is equal to
the label component of the trace token.</p>
</desc>
</func>
<func>
- <name>reset_trace() -> void()</name>
+ <name name="reset_trace" arity="0"/>
<fsummary>Stop all sequential tracing on the local node</fsummary>
<desc>
<p>Sets the trace token to empty for all processes on the
@@ -194,26 +185,22 @@ seq_trace:set_token(OldToken), % activate the trace token again
</desc>
</func>
<func>
- <name>set_system_tracer(Tracer) -> OldTracer</name>
+ <name name="set_system_tracer" arity="1"/>
<fsummary>Set the system tracer</fsummary>
- <type>
- <v>Tracer = OldTracer = pid() | port() | false</v>
- </type>
+ <type name="tracer"/>
<desc>
<p>Sets the system tracer. The system tracer can be either a
- process or port denoted by <c>Tracer</c>. Returns the previous
+ process or port denoted by <c><anno>Tracer</anno></c>. Returns the previous
value (which can be <c>false</c> if no system tracer is
active).</p>
- <p>Failure: <c>{badarg, Info}}</c> if <c>Pid</c> is not an
+ <p>Failure: <c>{badarg, Info}}</c> if <c><anno>Pid</anno></c> is not an
existing local pid.</p>
</desc>
</func>
<func>
- <name>get_system_tracer() -> Tracer</name>
+ <name name="get_system_tracer" arity="0"/>
<fsummary>Return the pid() or port() of the current system tracer.</fsummary>
- <type>
- <v>Tracer = pid() | port() | false</v>
- </type>
+ <type name="tracer"/>
<desc>
<p>Returns the pid or port identifier of the current system
tracer or <c>false</c> if no system tracer is activated.</p>
diff --git a/lib/kernel/doc/src/specs.xml b/lib/kernel/doc/src/specs.xml
new file mode 100644
index 0000000000..b41addaa0c
--- /dev/null
+++ b/lib/kernel/doc/src/specs.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="latin1" ?>
+<specs xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:include href="../specs/specs_application.xml"/>
+ <xi:include href="../specs/specs_auth.xml"/>
+ <xi:include href="../specs/specs_code.xml"/>
+ <xi:include href="../specs/specs_disk_log.xml"/>
+ <xi:include href="../specs/specs_erl_boot_server.xml"/>
+ <xi:include href="../specs/specs_erl_ddll.xml"/>
+ <xi:include href="../specs/specs_erl_prim_loader_stub.xml"/>
+ <xi:include href="../specs/specs_erlang_stub.xml"/>
+ <xi:include href="../specs/specs_error_handler.xml"/>
+ <xi:include href="../specs/specs_error_logger.xml"/>
+ <xi:include href="../specs/specs_file.xml"/>
+ <xi:include href="../specs/specs_gen_tcp.xml"/>
+ <xi:include href="../specs/specs_gen_udp.xml"/>
+ <xi:include href="../specs/specs_gen_sctp.xml"/>
+ <xi:include href="../specs/specs_global.xml"/>
+ <xi:include href="../specs/specs_global_group.xml"/>
+ <xi:include href="../specs/specs_heart.xml"/>
+ <xi:include href="../specs/specs_inet.xml"/>
+ <xi:include href="../specs/specs_inet_res.xml"/>
+ <xi:include href="../specs/specs_init_stub.xml"/>
+ <xi:include href="../specs/specs_net_adm.xml"/>
+ <xi:include href="../specs/specs_net_kernel.xml"/>
+ <xi:include href="../specs/specs_os.xml"/>
+ <xi:include href="../specs/specs_pg2.xml"/>
+ <xi:include href="../specs/specs_rpc.xml"/>
+ <xi:include href="../specs/specs_seq_trace.xml"/>
+ <xi:include href="../specs/specs_user.xml"/>
+ <xi:include href="../specs/specs_wrap_log_reader.xml"/>
+ <xi:include href="../specs/specs_zlib_stub.xml"/>
+ <xi:include href="../specs/specs_packages.xml"/>
+</specs>
diff --git a/lib/kernel/doc/src/wrap_log_reader.xml b/lib/kernel/doc/src/wrap_log_reader.xml
index 18664a029f..6cf480b532 100644
--- a/lib/kernel/doc/src/wrap_log_reader.xml
+++ b/lib/kernel/doc/src/wrap_log_reader.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1998</year><year>2009</year>
+ <year>1998</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -50,18 +50,20 @@
the called node, it is entirely up to the user to be sure that all items are read.
</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="continuation"/>
+ <desc><p>Continuation returned by
+ <c>open/1,2</c> or <c>chunk/1,2</c>.</p>
+ </desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>chunk(Continuation)</name>
- <name>chunk(Continuation, N) -> {Continuation2, Terms} | {Continuation2, Terms, Badbytes} | {Continuation2, eof} | {error, Reason}</name>
+ <name name="chunk" arity="1"/>
+ <name name="chunk" arity="2"/>
<fsummary>Read a chunk of objects written to a wrap log.</fsummary>
- <type>
- <v>Continuation = continuation()</v>
- <v>N = int() > 0 | infinity</v>
- <v>Continuation2 = continuation()</v>
- <v>Terms= [term()]</v>
- <v>Badbytes = integer()</v>
- </type>
+ <type name="chunk_ret"/>
<desc>
<p>This function makes it possible to efficiently read the
terms which have been appended to a log. It minimises disk
@@ -70,29 +72,29 @@
<p>The first time <c>chunk</c> is called an initial
continuation returned from the <c>open/1</c>, <c>open/2</c> must be provided.
</p>
- <p>When <c>chunk/3</c> is called, <c>N</c> controls the
+ <p>When <c>chunk/3</c> is called, <c><anno>N</anno></c> controls the
maximum number of terms that are read from the log in each
chunk. Default is <c>infinity</c>, which means that all the
terms contained in the 8K chunk are read. If less than
- <c>N</c> terms are returned, this does not necessarily mean
+ <c><anno>N</anno></c> terms are returned, this does not necessarily mean
that end of file is reached.
</p>
<p>The <c>chunk</c> function returns a tuple
- <c>{Continuation2, Terms}</c>, where <c>Terms</c> is a list
- of terms found in the log. <c>Continuation2</c> is yet
+ <c>{<anno>Continuation2</anno>, <anno>Terms</anno>}</c>, where <c><anno>Terms</anno></c> is a list
+ of terms found in the log. <c><anno>Continuation2</anno></c> is yet
another continuation which must be passed on into any
subsequent calls to <c>chunk</c>. With a series of calls to
<c>chunk</c> it is then possible to extract all terms from a
log.
</p>
<p>The <c>chunk</c> function returns a tuple
- <c>{Continuation2, Terms, Badbytes}</c> if the log is opened
- in read only mode and the read chunk is corrupt. <c>Badbytes</c>
+ <c>{<anno>Continuation2</anno>, <anno>Terms</anno>, <anno>Badbytes</anno>}</c> if the log is opened
+ in read only mode and the read chunk is corrupt. <c><anno>Badbytes</anno></c>
indicates the number of non-Erlang terms found in the chunk.
Note also that the log is not repaired.
</p>
- <p><c>chunk</c> returns <c>{Continuation2, eof}</c> when the end of the log is
- reached, and <c>{error, Reason}</c> if an error occurs.
+ <p><c>chunk</c> returns <c>{<anno>Continuation2</anno>, eof}</c> when the end of the log is
+ reached, and <c>{error, <anno>Reason</anno>}</c> if an error occurs.
</p>
<p>The returned continuation may or may not be valid in the next call to
<c>chunk</c>. This is because the log may wrap and delete
@@ -103,37 +105,29 @@
</desc>
</func>
<func>
- <name>close(Continuation) -> ok </name>
+ <name name="close" arity="1"/>
<fsummary>Close a log</fsummary>
- <type>
- <v>Continuation = continuation()</v>
- </type>
<desc>
<p>This function closes a log file properly.
</p>
</desc>
</func>
<func>
- <name>open(Filename) -> OpenRet</name>
- <name>open(Filename, N) -> OpenRet</name>
+ <name name="open" arity="1"/>
+ <name name="open" arity="2"/>
<fsummary>Open a log file</fsummary>
- <type>
- <v>File = string() | atom()</v>
- <v>N = integer()</v>
- <v>OpenRet = {ok, Continuation} | {error, Reason} </v>
- <v>Continuation = continuation()</v>
- </type>
+ <type name="open_ret"/>
<desc>
- <p><c>Filename</c> specifies the name of the file which is to be read. </p>
- <p><c>N</c> specifies the index of the file which is to be read.
- If <c>N</c> is omitted the whole wrap log file will be read; if it
+ <p><c><anno>Filename</anno></c> specifies the name of the file which is to be read. </p>
+ <p><c><anno>N</anno></c> specifies the index of the file which is to be read.
+ If <c><anno>N</anno></c> is omitted the whole wrap log file will be read; if it
is specified only the specified index file will be read.
</p>
- <p>The <c>open</c> function returns <c>{ok, Continuation}</c> if the
- log/index file was successfully opened. The <c>Continuation</c>
+ <p>The <c>open</c> function returns <c>{ok, <anno>Continuation</anno>}</c> if the
+ log/index file was successfully opened. The <c><anno>Continuation</anno></c>
is to be used when chunking or closing the file.
</p>
- <p>The function returns <c>{error, Reason}</c> for all errors.
+ <p>The function returns <c>{error, <anno>Reason</anno>}</c> for all errors.
</p>
</desc>
</func>
diff --git a/lib/kernel/include/inet.hrl b/lib/kernel/include/inet.hrl
index 929b2ee294..3e64d4bb79 100644
--- a/lib/kernel/include/inet.hrl
+++ b/lib/kernel/include/inet.hrl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -19,18 +19,11 @@
%% This record is returned by inet:gethostbyaddr/2 and inet:gethostbyname/2.
--type hostname() :: atom() | string().
--type ip4_address() :: {0..255,0..255,0..255,0..255}.
--type ip6_address() :: {0..65535,0..65535,0..65535,0..65535,
- 0..65535,0..65535,0..65535,0..65535}.
--type ip_address() :: ip4_address() | ip6_address().
--type ip_port() :: 0..65535.
-
-record(hostent,
{
- h_name :: hostname(), %% offical name of host
- h_aliases = [] :: [hostname()], %% alias list
+ h_name :: inet:hostname(), %% offical name of host
+ h_aliases = [] :: [inet:hostname()], %% alias list
h_addrtype :: 'inet' | 'inet6', %% host address type
h_length :: non_neg_integer(), %% length of address
- h_addr_list = [] :: [ip_address()] %% list of addresses from name server
+ h_addr_list = [] :: [inet:ip_address()]%% list of addresses from name server
}).
diff --git a/lib/kernel/src/application.erl b/lib/kernel/src/application.erl
index 2a193affd4..fa3a4c3d36 100644
--- a/lib/kernel/src/application.erl
+++ b/lib/kernel/src/application.erl
@@ -32,20 +32,30 @@
%%%-----------------------------------------------------------------
+-type start_type() :: 'normal'
+ | {'takeover', Node :: node()}
+ | {'failover', Node :: node()}.
-type restart_type() :: 'permanent' | 'transient' | 'temporary'.
--type application_opt() :: {'description', string()}
- | {'vsn', string()}
- | {'id', string()}
- | {'modules', [atom() | {atom(), any()}]}
- | {'registered', [atom()]}
- | {'applications', [atom()]}
- | {'included_applications', [atom()]}
- | {'env', [{atom(), any()}]}
- | {'start_phases', [{atom(), any()}] | 'undefined'}
- | {'maxT', timeout()} % max timeout
- | {'maxP', integer() | 'infinity'} % max processes
- | {'mod', {atom(), any()}}.
--type application_spec() :: {'application', atom(), [application_opt()]}.
+-type application_opt() :: {'description', Description :: string()}
+ | {'vsn', Vsn :: string()}
+ | {'id', Id :: string()}
+ | {'modules', [(Module :: module()) |
+ {Module :: module(), Version :: term()}]}
+ | {'registered', Names :: [Name :: atom()]}
+ | {'applications', [Application :: atom()]}
+ | {'included_applications', [Application :: atom()]}
+ | {'env', [{Par :: atom(), Val :: term()}]}
+ | {'start_phases',
+ [{Phase :: atom(), PhaseArgs :: term()}] | 'undefined'}
+ | {'maxT', MaxT :: timeout()} % max timeout
+ | {'maxP',
+ MaxP :: pos_integer() | 'infinity'} % max processes
+ | {'mod', Start :: {Module :: module(), StartArgs :: term()}}.
+-type application_spec() :: {'application',
+ Application :: atom(),
+ AppSpecKeys :: [application_opt()]}.
+
+-type(tuple_of(_T) :: tuple()).
%%------------------------------------------------------------------
@@ -61,16 +71,29 @@ behaviour_info(_Other) ->
%%% application_master.
%%%-----------------------------------------------------------------
--spec load(Application :: atom() | application_spec()) ->
- 'ok' | {'error', term()}.
+-spec load(AppDescr) -> 'ok' | {'error', Reason} when
+ AppDescr :: Application | (AppSpec :: application_spec()),
+ Application :: atom(),
+ Reason :: term().
load(Application) ->
- load(Application, []).
-
--spec load(Application :: atom() | application_spec(),
- Distributed :: any()) -> 'ok' | {'error', term()}.
+ load1(Application, []).
+
+-spec load(AppDescr, Distributed) -> 'ok' | {'error', Reason} when
+ AppDescr :: Application | (AppSpec :: application_spec()),
+ Application :: atom(),
+ Distributed :: {Application,Nodes}
+ | {Application,Time,Nodes}
+ | 'default',
+ Nodes :: [node() | tuple_of(node())],
+ Time :: pos_integer(),
+ Reason :: term().
load(Application, DistNodes) ->
+ load1(Application, DistNodes).
+
+%% Workaround due to specs.
+load1(Application, DistNodes) ->
case application_controller:load_application(Application) of
ok when DistNodes =/= [] ->
AppName = get_appl_name(Application),
@@ -85,18 +108,24 @@ load(Application, DistNodes) ->
Else
end.
--spec unload(Application :: atom()) -> 'ok' | {'error', term()}.
+-spec unload(Application) -> 'ok' | {'error', Reason} when
+ Application :: atom(),
+ Reason :: term().
unload(Application) ->
application_controller:unload_application(Application).
--spec start(Application :: atom()) -> 'ok' | {'error', term()}.
+-spec start(Application) -> 'ok' | {'error', Reason} when
+ Application :: atom(),
+ Reason :: term().
start(Application) ->
start(Application, temporary).
--spec start(Application :: atom() | application_spec(),
- RestartType :: restart_type()) -> any().
+-spec start(Application, Type) -> 'ok' | {'error', Reason} when
+ Application :: atom(),
+ Type :: restart_type(),
+ Reason :: term().
start(Application, RestartType) ->
case load(Application) of
@@ -120,12 +149,18 @@ start_boot(Application) ->
start_boot(Application, RestartType) ->
application_controller:start_boot_application(Application, RestartType).
--spec takeover(Application :: atom(), RestartType :: restart_type()) -> any().
+-spec takeover(Application, Type) -> 'ok' | {'error', Reason} when
+ Application :: atom(),
+ Type :: restart_type(),
+ Reason :: term().
takeover(Application, RestartType) ->
dist_ac:takeover_application(Application, RestartType).
--spec permit(Application :: atom(), Bool :: boolean()) -> 'ok' | {'error', term()}.
+-spec permit(Application, Permission) -> 'ok' | {'error', Reason} when
+ Application :: atom(),
+ Permission :: boolean(),
+ Reason :: term().
permit(Application, Bool) ->
case Bool of
@@ -142,105 +177,146 @@ permit(Application, Bool) ->
LocalResult
end.
--spec stop(Application :: atom()) -> 'ok' | {'error', term()}.
+-spec stop(Application) -> 'ok' | {'error', Reason} when
+ Application :: atom(),
+ Reason :: term().
stop(Application) ->
application_controller:stop_application(Application).
--spec which_applications() -> [{atom(), string(), string()}].
+-spec which_applications() -> [{Application, Description, Vsn}] when
+ Application :: atom(),
+ Description :: string(),
+ Vsn :: string().
which_applications() ->
application_controller:which_applications().
--spec which_applications(timeout()) -> [{atom(), string(), string()}].
+-spec which_applications(Timeout) -> [{Application, Description, Vsn}] when
+ Timeout :: timeout(),
+ Application :: atom(),
+ Description :: string(),
+ Vsn :: string().
which_applications(infinity) ->
application_controller:which_applications(infinity);
which_applications(Timeout) when is_integer(Timeout), Timeout>=0 ->
application_controller:which_applications(Timeout).
--spec loaded_applications() -> [{atom(), string(), string()}].
+-spec loaded_applications() -> [{Application, Description, Vsn}] when
+ Application :: atom(),
+ Description :: string(),
+ Vsn :: string().
loaded_applications() ->
application_controller:loaded_applications().
--spec info() -> any().
+-spec info() -> term().
info() ->
application_controller:info().
--spec set_env(Application :: atom(), Key :: atom(), Value :: any()) -> 'ok'.
+-spec set_env(Application, Par, Val) -> 'ok' when
+ Application :: atom(),
+ Par :: atom(),
+ Val :: term().
set_env(Application, Key, Val) ->
application_controller:set_env(Application, Key, Val).
--spec set_env(Application :: atom(), Key :: atom(),
- Value :: any(), Timeout :: timeout()) -> 'ok'.
+-spec set_env(Application, Par, Val, Timeout) -> 'ok' when
+ Application :: atom(),
+ Par :: atom(),
+ Val :: term(),
+ Timeout :: timeout().
set_env(Application, Key, Val, infinity) ->
application_controller:set_env(Application, Key, Val, infinity);
set_env(Application, Key, Val, Timeout) when is_integer(Timeout), Timeout>=0 ->
application_controller:set_env(Application, Key, Val, Timeout).
--spec unset_env(atom(), atom()) -> 'ok'.
+-spec unset_env(Application, Par) -> 'ok' when
+ Application :: atom(),
+ Par :: atom().
unset_env(Application, Key) ->
application_controller:unset_env(Application, Key).
--spec unset_env(atom(), atom(), timeout()) -> 'ok'.
+-spec unset_env(Application, Par, Timeout) -> 'ok' when
+ Application :: atom(),
+ Par :: atom(),
+ Timeout :: timeout().
unset_env(Application, Key, infinity) ->
application_controller:unset_env(Application, Key, infinity);
unset_env(Application, Key, Timeout) when is_integer(Timeout), Timeout>=0 ->
application_controller:unset_env(Application, Key, Timeout).
--spec get_env(atom()) -> 'undefined' | {'ok', term()}.
+-spec get_env(Par) -> 'undefined' | {'ok', Val} when
+ Par :: atom(),
+ Val :: term().
get_env(Key) ->
application_controller:get_pid_env(group_leader(), Key).
--spec get_env(atom(), atom()) -> 'undefined' | {'ok', term()}.
+-spec get_env(Application, Par) -> 'undefined' | {'ok', Val} when
+ Application :: atom(),
+ Par :: atom(),
+ Val :: term().
get_env(Application, Key) ->
application_controller:get_env(Application, Key).
--spec get_all_env() -> [{atom(), any()}].
+-spec get_all_env() -> Env when
+ Env :: [{Par :: atom(), Val :: term()}].
get_all_env() ->
application_controller:get_pid_all_env(group_leader()).
--spec get_all_env(atom()) -> [{atom(), any()}].
+-spec get_all_env(Application) -> Env when
+ Application :: atom(),
+ Env :: [{Par :: atom(), Val :: term()}].
get_all_env(Application) ->
application_controller:get_all_env(Application).
--spec get_key(atom()) -> 'undefined' | {'ok', term()}.
+-spec get_key(Key) -> 'undefined' | {'ok', Val} when
+ Key :: atom(),
+ Val :: term().
get_key(Key) ->
application_controller:get_pid_key(group_leader(), Key).
--spec get_key(atom(), atom()) -> 'undefined' | {'ok', term()}.
+-spec get_key(Application, Key) -> 'undefined' | {'ok', Val} when
+ Application :: atom(),
+ Key :: atom(),
+ Val :: term().
get_key(Application, Key) ->
application_controller:get_key(Application, Key).
--spec get_all_key() -> 'undefined' | [] | {'ok', [{atom(),any()},...]}.
+-spec get_all_key() -> [] | {'ok', Keys} when
+ Keys :: [{Key :: atom(),Val :: term()},...].
get_all_key() ->
application_controller:get_pid_all_key(group_leader()).
--spec get_all_key(atom()) -> 'undefined' | {'ok', [{atom(),any()},...]}.
+-spec get_all_key(Application) -> 'undefined' | Keys when
+ Application :: atom(),
+ Keys :: {'ok', [{Key :: atom(),Val :: term()},...]}.
get_all_key(Application) ->
application_controller:get_all_key(Application).
--spec get_application() -> 'undefined' | {'ok', atom()}.
+-spec get_application() -> 'undefined' | {'ok', Application} when
+ Application :: atom().
get_application() ->
application_controller:get_application(group_leader()).
--spec get_application(Pid :: pid()) -> 'undefined' | {'ok', atom()}
- ; (Module :: atom()) -> 'undefined' | {'ok', atom()}.
+-spec get_application(PidOrModule) -> 'undefined' | {'ok', Application} when
+ PidOrModule :: (Pid :: pid()) | (Module :: module()),
+ Application :: atom().
get_application(Pid) when is_pid(Pid) ->
case process_info(Pid, group_leader) of
@@ -252,8 +328,8 @@ get_application(Pid) when is_pid(Pid) ->
get_application(Module) when is_atom(Module) ->
application_controller:get_application_module(Module).
--spec start_type() -> 'undefined' | 'local' | 'normal'
- | {'takeover', node()} | {'failover', node()}.
+-spec start_type() -> StartType | 'undefined' | 'local' when
+ StartType :: start_type().
start_type() ->
application_controller:start_type(group_leader()).
diff --git a/lib/kernel/src/auth.erl b/lib/kernel/src/auth.erl
index 5c7fe2421d..25c88a4e1d 100644
--- a/lib/kernel/src/auth.erl
+++ b/lib/kernel/src/auth.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -57,7 +57,8 @@ start_link() ->
%%--Deprecated interface------------------------------------------------
--spec is_auth(Node :: node()) -> 'yes' | 'no'.
+-spec is_auth(Node) -> 'yes' | 'no' when
+ Node :: Node :: node().
is_auth(Node) ->
case net_adm:ping(Node) of
@@ -65,12 +66,15 @@ is_auth(Node) ->
pang -> no
end.
--spec cookie() -> cookie().
+-spec cookie() -> Cookie when
+ Cookie :: cookie().
cookie() ->
get_cookie().
--spec cookie(Cookies :: [cookie(),...] | cookie()) -> 'true'.
+-spec cookie(TheCookie) -> 'true' when
+ TheCookie :: Cookie | [Cookie],
+ Cookie :: cookie().
cookie([Cookie]) ->
set_cookie(Cookie);
@@ -82,7 +86,9 @@ cookie(Cookie) ->
node_cookie([Node, Cookie]) ->
node_cookie(Node, Cookie).
--spec node_cookie(Node :: node(), Cookie :: cookie()) -> 'yes' | 'no'.
+-spec node_cookie(Node, Cookie) -> 'yes' | 'no' when
+ Node :: node(),
+ Cookie :: cookie().
node_cookie(Node, Cookie) ->
set_cookie(Node, Cookie),
diff --git a/lib/kernel/src/disk_log.erl b/lib/kernel/src/disk_log.erl
index 7f1b5f9ec6..9b8d2db437 100644
--- a/lib/kernel/src/disk_log.erl
+++ b/lib/kernel/src/disk_log.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -70,9 +70,10 @@
%%% Contract type specifications
%%%----------------------------------------------------------------------
+-opaque continuation() :: #continuation{}.
+
-type bytes() :: binary() | [byte()].
--type log() :: term(). % XXX: refine
-type file_error() :: term(). % XXX: refine
-type invalid_header() :: term(). % XXX: refine
@@ -87,27 +88,30 @@
-type open_error_rsn() :: 'no_such_log'
| {'badarg', term()}
- | {'size_mismatch', dlog_size(), dlog_size()}
- | {'arg_mismatch', dlog_optattr(), term(), term()}
- | {'name_already_open', log()}
- | {'open_read_write', log()}
- | {'open_read_only', log()}
- | {'need_repair', log()}
- | {'not_a_log_file', string()}
- | {'invalid_index_file', string()}
+ | {'size_mismatch', CurrentSize :: dlog_size(),
+ NewSize :: dlog_size()}
+ | {'arg_mismatch', OptionName :: dlog_optattr(),
+ CurrentValue :: term(), Value :: term()}
+ | {'name_already_open', Log :: log()}
+ | {'open_read_write', Log :: log()}
+ | {'open_read_only', Log :: log()}
+ | {'need_repair', Log :: log()}
+ | {'not_a_log_file', FileName :: file:filename()}
+ | {'invalid_index_file', FileName :: file:filename()}
| {'invalid_header', invalid_header()}
| {'file_error', file:filename(), file_error()}
- | {'node_already_open', log()}.
+ | {'node_already_open', Log :: log()}.
-type dist_error_rsn() :: 'nodedown' | open_error_rsn().
--type ret() :: {'ok', log()}
- | {'repaired', log(), {'recovered', non_neg_integer()},
- {'badbytes', non_neg_integer()}}.
+-type ret() :: {'ok', Log :: log()}
+ | {'repaired', Log :: log(),
+ {'recovered', Rec :: non_neg_integer()},
+ {'badbytes', Bad :: non_neg_integer()}}.
-type open_ret() :: ret() | {'error', open_error_rsn()}.
-type dist_open_ret() :: {[{node(), ret()}],
[{node(), {'error', dist_error_rsn()}}]}.
--type all_open_ret() :: open_ret() | dist_open_ret().
--spec open(Args :: dlog_options()) -> all_open_ret().
+-spec open(ArgL) -> open_ret() | dist_open_ret() when
+ ArgL :: dlog_options().
open(A) ->
disk_log_server:open(check_arg(A, #arg{options = A})).
@@ -116,40 +120,57 @@ open(A) ->
| {'full', log()} | {'invalid_header', invalid_header()}
| {'file_error', file:filename(), file_error()}.
--spec log(Log :: log(), Term :: term()) -> 'ok' | {'error', log_error_rsn()}.
+-spec log(Log, Term) -> ok | {error, Reason :: log_error_rsn()} when
+ Log :: log(),
+ Term :: term().
log(Log, Term) ->
req(Log, {log, term_to_binary(Term)}).
--spec blog(Log :: log(), Bytes :: bytes()) -> 'ok' | {'error', log_error_rsn()}.
+-spec blog(Log, Bytes) -> ok | {error, Reason :: log_error_rsn()} when
+ Log :: log(),
+ Bytes :: bytes().
blog(Log, Bytes) ->
req(Log, {blog, check_bytes(Bytes)}).
--spec log_terms(Log :: log(), Terms :: [term()]) -> 'ok' | {'error', term()}.
+-spec log_terms(Log, TermList) -> ok | {error, Resaon :: log_error_rsn()} when
+ Log :: log(),
+ TermList :: [term()].
log_terms(Log, Terms) ->
Bs = terms2bins(Terms),
req(Log, {log, Bs}).
--spec blog_terms(Log :: log(), Bytes :: [bytes()]) -> 'ok' | {'error', term()}.
+-spec blog_terms(Log, BytesList) ->
+ ok | {error, Reason :: log_error_rsn()} when
+ Log :: log(),
+ BytesList :: [bytes()].
blog_terms(Log, Bytess) ->
Bs = check_bytes_list(Bytess, Bytess),
req(Log, {blog, Bs}).
-type notify_ret() :: 'ok' | {'error', 'no_such_log'}.
--spec alog(Log :: log(), Term :: term()) -> notify_ret().
+-spec alog(Log, Term) -> notify_ret() when
+ Log :: log(),
+ Term :: term().
alog(Log, Term) ->
notify(Log, {alog, term_to_binary(Term)}).
--spec alog_terms(Log :: log(), Terms :: [term()]) -> notify_ret().
+-spec alog_terms(Log, TermList) -> notify_ret() when
+ Log :: log(),
+ TermList :: [term()].
alog_terms(Log, Terms) ->
Bs = terms2bins(Terms),
notify(Log, {alog, Bs}).
--spec balog(Log :: log(), Bytes :: bytes()) -> notify_ret().
+-spec balog(Log, Bytes) -> notify_ret() when
+ Log :: log(),
+ Bytes :: bytes().
balog(Log, Bytes) ->
notify(Log, {balog, check_bytes(Bytes)}).
--spec balog_terms(Log :: log(), Bytes :: [bytes()]) -> notify_ret().
+-spec balog_terms(Log, ByteList) -> notify_ret() when
+ Log :: log(),
+ ByteList :: [bytes()].
balog_terms(Log, Bytess) ->
Bs = check_bytes_list(Bytess, Bytess),
notify(Log, {balog, Bs}).
@@ -157,18 +178,22 @@ balog_terms(Log, Bytess) ->
-type close_error_rsn() ::'no_such_log' | 'nonode'
| {'file_error', file:filename(), file_error()}.
--spec close(Log :: log()) -> 'ok' | {'error', close_error_rsn()}.
+-spec close(Log) -> 'ok' | {'error', close_error_rsn()} when
+ Log :: log().
close(Log) ->
req(Log, close).
-type lclose_error_rsn() :: 'no_such_log'
| {'file_error', file:filename(), file_error()}.
--spec lclose(Log :: log()) -> 'ok' | {'error', lclose_error_rsn()}.
+-spec lclose(Log) -> 'ok' | {'error', lclose_error_rsn()} when
+ Log :: log().
lclose(Log) ->
lclose(Log, node()).
--spec lclose(Log :: log(), Node :: node()) -> 'ok' | {'error', lclose_error_rsn()}.
+-spec lclose(Log, Node) -> 'ok' | {'error', lclose_error_rsn()} when
+ Log :: log(),
+ Node :: node().
lclose(Log, Node) ->
lreq(Log, close, Node).
@@ -178,29 +203,49 @@ lclose(Log, Node) ->
| {'invalid_header', invalid_header()}
| {'file_error', file:filename(), file_error()}.
--spec truncate(Log :: log()) -> 'ok' | {'error', trunc_error_rsn()}.
+-spec truncate(Log) -> 'ok' | {'error', trunc_error_rsn()} when
+ Log :: log().
truncate(Log) ->
req(Log, {truncate, none, truncate, 1}).
--spec truncate(Log :: log(), Head :: term()) -> 'ok' | {'error', trunc_error_rsn()}.
+-spec truncate(Log, Head) -> 'ok' | {'error', trunc_error_rsn()} when
+ Log :: log(),
+ Head :: term().
truncate(Log, Head) ->
req(Log, {truncate, {ok, term_to_binary(Head)}, truncate, 2}).
--spec btruncate(Log :: log(), Head :: bytes()) -> 'ok' | {'error', trunc_error_rsn()}.
+-spec btruncate(Log, BHead) -> 'ok' | {'error', trunc_error_rsn()} when
+ Log :: log(),
+ BHead :: bytes().
btruncate(Log, Head) ->
req(Log, {truncate, {ok, check_bytes(Head)}, btruncate, 2}).
--spec reopen(Log :: log(), Filename :: file:filename()) -> 'ok' | {'error', term()}.
+-type reopen_error_rsn() :: no_such_log
+ | nonode
+ | {read_only_mode, log()}
+ | {blocked_log, log()}
+ | {same_file_name, log()} |
+ {invalid_index_file, file:filename()}
+ | {invalid_header, invalid_header()}
+ | {'file_error', file:filename(), file_error()}.
+
+-spec reopen(Log, File) -> 'ok' | {'error', reopen_error_rsn()} when
+ Log :: log(),
+ File :: file:filename().
reopen(Log, NewFile) ->
req(Log, {reopen, NewFile, none, reopen, 2}).
--spec reopen(Log :: log(), Filename :: file:filename(), Head :: term()) ->
- 'ok' | {'error', term()}.
+-spec reopen(Log, File, Head) -> 'ok' | {'error', reopen_error_rsn()} when
+ Log :: log(),
+ File :: file:filename(),
+ Head :: term().
reopen(Log, NewFile, NewHead) ->
req(Log, {reopen, NewFile, {ok, term_to_binary(NewHead)}, reopen, 3}).
--spec breopen(Log :: log(), Filename :: file:filename(), Head :: bytes()) ->
- 'ok' | {'error', term()}.
+-spec breopen(Log, File, BHead) -> 'ok' | {'error', reopen_error_rsn()} when
+ Log :: log(),
+ File :: file:filename(),
+ BHead :: bytes().
breopen(Log, NewFile, NewHead) ->
req(Log, {reopen, NewFile, {ok, check_bytes(NewHead)}, breopen, 3}).
@@ -210,21 +255,36 @@ breopen(Log, NewFile, NewHead) ->
| {'invalid_header', invalid_header()}
| {'file_error', file:filename(), file_error()}.
--spec inc_wrap_file(Log :: log()) -> 'ok' | {'error', inc_wrap_error_rsn()}.
+-spec inc_wrap_file(Log) -> 'ok' | {'error', inc_wrap_error_rsn()} when
+ Log :: log().
inc_wrap_file(Log) ->
req(Log, inc_wrap_file).
--spec change_size(Log :: log(), Size :: dlog_size()) -> 'ok' | {'error', term()}.
+-spec change_size(Log, Size) -> 'ok' | {'error', Reason} when
+ Log :: log(),
+ Size :: dlog_size(),
+ Reason :: no_such_log | nonode | {read_only_mode, Log}
+ | {blocked_log, Log}
+ | {new_size_too_small, CurrentSize :: pos_integer()}
+ | {badarg, size}
+ | {file_error, file:filename(), file_error()}.
change_size(Log, NewSize) ->
req(Log, {change_size, NewSize}).
--spec change_notify(Log :: log(), Pid :: pid(), Notify :: boolean()) ->
- 'ok' | {'error', term()}.
+-spec change_notify(Log, Owner, Notify) -> 'ok' | {'error', Reason} when
+ Log :: log(),
+ Owner :: pid(),
+ Notify :: boolean(),
+ Reason :: no_such_log | nonode | {blocked_log, Log}
+ | {badarg, notify} | {not_owner, Owner}.
change_notify(Log, Pid, NewNotify) ->
req(Log, {change_notify, Pid, NewNotify}).
--spec change_header(Log :: log(), Head :: {atom(), term()}) ->
- 'ok' | {'error', term()}.
+-spec change_header(Log, Header) -> 'ok' | {'error', Reason} when
+ Log :: log(),
+ Header :: {head, dlog_head_opt()} | {head_func, mfa()},
+ Reason :: no_such_log | nonode | {read_only_mode, Log}
+ | {blocked_log, Log} | {badarg, head}.
change_header(Log, NewHead) ->
req(Log, {change_header, NewHead}).
@@ -232,17 +292,21 @@ change_header(Log, NewHead) ->
| {'blocked_log', log()}
| {'file_error', file:filename(), file_error()}.
--spec sync(Log :: log()) -> 'ok' | {'error', sync_error_rsn()}.
+-spec sync(Log) -> 'ok' | {'error', sync_error_rsn()} when
+ Log :: log().
sync(Log) ->
req(Log, sync).
-type block_error_rsn() :: 'no_such_log' | 'nonode' | {'blocked_log', log()}.
--spec block(Log :: log()) -> 'ok' | {'error', block_error_rsn()}.
+-spec block(Log) -> 'ok' | {'error', block_error_rsn()} when
+ Log :: log().
block(Log) ->
block(Log, true).
--spec block(Log :: log(), QueueLogRecords :: boolean()) -> 'ok' | {'error', term()}.
+-spec block(Log, QueueLogRecords) -> 'ok' | {'error', block_error_rsn()} when
+ Log :: log(),
+ QueueLogRecords :: boolean().
block(Log, QueueLogRecords) ->
req(Log, {block, QueueLogRecords}).
@@ -250,19 +314,46 @@ block(Log, QueueLogRecords) ->
| {'not_blocked', log()}
| {'not_blocked_by_pid', log()}.
--spec unblock(Log :: log()) -> 'ok' | {'error', unblock_error_rsn()}.
+-spec unblock(Log) -> 'ok' | {'error', unblock_error_rsn()} when
+ Log :: log().
unblock(Log) ->
req(Log, unblock).
--spec format_error(Error :: term()) -> string().
+-spec format_error(Error) -> io_lib:chars() when
+ Error :: term().
format_error(Error) ->
do_format_error(Error).
--spec info(Log :: log()) -> [{atom(), any()}] | {'error', term()}.
+-type dlog_info() :: {name, Log :: log()}
+ | {file, File :: file:filename()}
+ | {type, Type :: dlog_type()}
+ | {format, Format :: dlog_format()}
+ | {size, Size :: dlog_size()}
+ | {mode, Mode :: dlog_mode()}
+ | {owners, [{pid(), Notify :: boolean()}]}
+ | {users, Users :: non_neg_integer()}
+ | {status, Status ::
+ ok | {blocked, QueueLogRecords :: boolean()}}
+ | {node, Node :: node()}
+ | {distributed, Dist :: local | [node()]}
+ | {head, Head :: none | {head, term()} | mfa()}
+ | {no_written_items, NoWrittenItems ::non_neg_integer()}
+ | {full, Full :: boolean}
+ | {no_current_bytes, non_neg_integer()}
+ | {no_current_items, non_neg_integer()}
+ | {no_items, non_neg_integer()}
+ | {current_file, pos_integer()}
+ | {no_overflows, {SinceLogWasOpened :: non_neg_integer(),
+ SinceLastInfo :: non_neg_integer()}}.
+-spec info(Log) -> InfoList | {'error', no_such_log} when
+ Log :: log(),
+ InfoList :: [dlog_info()].
info(Log) ->
sreq(Log, info).
--spec pid2name(Pid :: pid()) -> {'ok', log()} | 'undefined'.
+-spec pid2name(Pid) -> {'ok', Log} | 'undefined' when
+ Pid :: pid(),
+ Log :: log().
pid2name(Pid) ->
disk_log_server:start(),
case ets:lookup(?DISK_LOG_PID_TABLE, Pid) of
@@ -274,13 +365,31 @@ pid2name(Pid) ->
%% It retuns a {Cont2, ObjList} | eof | {error, Reason}
%% The initial continuation is the atom 'start'
--spec chunk(Log :: log(), Cont :: any()) ->
- {'error', term()} | 'eof' | {any(), [any()]} | {any(), [any()], integer()}.
+-type chunk_error_rsn() :: no_such_log
+ | {format_external, log()}
+ | {blocked_log, log()}
+ | {badarg, continuation}
+ | {not_internal_wrap, log()}
+ | {corrupt_log_file, FileName :: file:filename()}
+ | {file_error, file:filename(), file_error()}.
+
+-type chunk_ret() :: {Continuation2 :: continuation(), Terms :: [term()]}
+ | {Continuation2 :: continuation(),
+ Terms :: [term()],
+ Badbytes :: non_neg_integer()}
+ | eof
+ | {error, Reason :: chunk_error_rsn()}.
+
+-spec chunk(Log, Continuation) -> chunk_ret() when
+ Log :: log(),
+ Continuation :: start | continuation().
chunk(Log, Cont) ->
chunk(Log, Cont, infinity).
--spec chunk(Log :: log(), Cont :: any(), N :: pos_integer() | 'infinity') ->
- {'error', term()} | 'eof' | {any(), [any()]} | {any(), [any()], integer()}.
+-spec chunk(Log, Continuation, N) -> chunk_ret() when
+ Log :: log(),
+ Continuation :: start | continuation(),
+ N :: pos_integer() | infinity.
chunk(Log, Cont, infinity) ->
%% There cannot be more than ?MAX_CHUNK_SIZE terms in a chunk.
ichunk(Log, Cont, ?MAX_CHUNK_SIZE);
@@ -346,13 +455,24 @@ ichunk_bad_end([B | Bs], Mode, Log, C, Bad, A) ->
ichunk_bad_end(Bs, Mode, Log, C, Bad, [T | A])
end.
--spec bchunk(Log :: log(), Cont :: any()) ->
- {'error', any()} | 'eof' | {any(), [binary()]} | {any(), [binary()], integer()}.
+-type bchunk_ret() :: {Continuation2 :: continuation(),
+ Binaries :: [binary()]}
+ | {Continuation2 :: continuation(),
+ Binaries :: [binary()],
+ Badbytes :: non_neg_integer()}
+ | eof
+ | {error, Reason :: chunk_error_rsn()}.
+
+-spec bchunk(Log, Continuation) -> bchunk_ret() when
+ Log :: log(),
+ Continuation :: start | continuation().
bchunk(Log, Cont) ->
bchunk(Log, Cont, infinity).
--spec bchunk(Log :: log(), Cont :: any(), N :: 'infinity' | pos_integer()) ->
- {'error', any()} | 'eof' | {any(), [binary()]} | {any(), [binary()], integer()}.
+-spec bchunk(Log, Continuation, N) -> bchunk_ret() when
+ Log :: log(),
+ Continuation :: start | continuation(),
+ N :: pos_integer() | infinity.
bchunk(Log, Cont, infinity) ->
%% There cannot be more than ?MAX_CHUNK_SIZE terms in a chunk.
bichunk(Log, Cont, ?MAX_CHUNK_SIZE);
@@ -375,8 +495,14 @@ bichunk_end({C = #continuation{}, R, Bad}) ->
bichunk_end(R) ->
R.
--spec chunk_step(Log :: log(), Cont :: any(), N :: integer()) ->
- {'ok', any()} | {'error', term()}.
+-spec chunk_step(Log, Continuation, Step) ->
+ {'ok', any()} | {'error', Reason} when
+ Log :: log(),
+ Continuation :: start | continuation(),
+ Step :: integer(),
+ Reason :: no_such_log | end_of_log | {format_external, Log}
+ | {blocked_log, Log} | {badarg, continuation}
+ | {file_error, file:filename(), file_error()}.
chunk_step(Log, Cont, N) when is_integer(N) ->
ichunk_step(Log, Cont, N).
@@ -387,14 +513,18 @@ ichunk_step(_Log, More, N) when is_record(More, continuation) ->
ichunk_step(_Log, _, _) ->
{error, {badarg, continuation}}.
--spec chunk_info(More :: any()) ->
- [{'node', node()},...] | {'error', {'no_continuation', any()}}.
+-spec chunk_info(Continuation) -> InfoList | {error, Reason} when
+ Continuation :: continuation(),
+ InfoList :: [{node, Node :: node()}, ...],
+ Reason :: {no_continuation, Continuation}.
chunk_info(More = #continuation{}) ->
[{node, node(More#continuation.pid)}];
chunk_info(BadCont) ->
{error, {no_continuation, BadCont}}.
--spec accessible_logs() -> {[_], [_]}.
+-spec accessible_logs() -> {[LocalLog], [DistributedLog]} when
+ LocalLog :: log(),
+ DistributedLog :: log().
accessible_logs() ->
disk_log_server:accessible_logs().
diff --git a/lib/kernel/src/disk_log.hrl b/lib/kernel/src/disk_log.hrl
index 9a94d4d3b9..259967650f 100644
--- a/lib/kernel/src/disk_log.hrl
+++ b/lib/kernel/src/disk_log.hrl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -53,18 +53,34 @@
%% Types -- alphabetically
%%------------------------------------------------------------------------
+-type dlog_byte() :: [dlog_byte()] | byte().
-type dlog_format() :: 'external' | 'internal'.
-type dlog_format_type() :: 'halt_ext' | 'halt_int' | 'wrap_ext' | 'wrap_int'.
-type dlog_head() :: 'none' | {'ok', binary()} | mfa().
+-type dlog_head_opt() :: none | term() | binary() | [dlog_byte()].
+-type log() :: term(). % XXX: refine
-type dlog_mode() :: 'read_only' | 'read_write'.
-type dlog_name() :: atom() | string().
-type dlog_optattr() :: 'name' | 'file' | 'linkto' | 'repair' | 'type'
| 'format' | 'size' | 'distributed' | 'notify'
| 'head' | 'head_func' | 'mode'.
--type dlog_options() :: [{dlog_optattr(), any()}].
+-type dlog_option() :: {name, Log :: log()}
+ | {file, FileName :: file:filename()}
+ | {linkto, LinkTo :: none | pid()}
+ | {repair, Repair :: true | false | truncate}
+ | {type, Type :: dlog_type}
+ | {format, Format :: dlog_format()}
+ | {size, Size :: dlog_size()}
+ | {distributed, Nodes :: [node()]}
+ | {notify, boolean()}
+ | {head, Head :: dlog_head_opt()}
+ | {head_func, mfa()}
+ | {mode, Mode :: dlog_mode()}.
+-type dlog_options() :: [dlog_option()].
-type dlog_repair() :: 'truncate' | boolean().
-type dlog_size() :: 'infinity' | pos_integer()
- | {pos_integer(), pos_integer()}.
+ | {MaxNoBytes :: pos_integer(),
+ MaxNoFiles :: pos_integer()}.
-type dlog_status() :: 'ok' | {'blocked', 'false' | [_]}. %QueueLogRecords
-type dlog_type() :: 'halt' | 'wrap'.
@@ -75,7 +91,7 @@
%% record of args for open
-record(arg, {name = 0,
version = undefined,
- file = none :: 'none' | string(),
+ file = none :: 'none' | file:filename(),
repair = true :: dlog_repair(),
size = infinity :: dlog_size(),
type = halt :: dlog_type(),
diff --git a/lib/kernel/src/erl_boot_server.erl b/lib/kernel/src/erl_boot_server.erl
index b4c5f5e27c..0d68d3e198 100644
--- a/lib/kernel/src/erl_boot_server.erl
+++ b/lib/kernel/src/erl_boot_server.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -59,7 +59,11 @@
-type ip4_address() :: {0..255,0..255,0..255,0..255}.
--spec start(Slaves :: [atom()]) -> {'ok', pid()} | {'error', any()}.
+-spec start(Slaves) -> {'ok', Pid} | {'error', What} when
+ Slaves :: [Host],
+ Host :: atom(),
+ Pid :: pid(),
+ What :: any().
start(Slaves) ->
case check_arg(Slaves) of
@@ -69,7 +73,11 @@ start(Slaves) ->
{error, {badarg, Slaves}}
end.
--spec start_link(Slaves :: [atom()]) -> {'ok', pid()} | {'error', any()}.
+-spec start_link(Slaves) -> {'ok', Pid} | {'error', What} when
+ Slaves :: [Host],
+ Host :: atom(),
+ Pid :: pid(),
+ What :: any().
start_link(Slaves) ->
case check_arg(Slaves) of
@@ -95,7 +103,10 @@ check_arg([], Result) ->
check_arg(_, _Result) ->
error.
--spec add_slave(Slave :: atom()) -> 'ok' | {'error', any()}.
+-spec add_slave(Slave) -> 'ok' | {'error', What} when
+ Slave :: Host,
+ Host :: atom(),
+ What :: any().
add_slave(Slave) ->
case inet:getaddr(Slave, inet) of
@@ -105,7 +116,10 @@ add_slave(Slave) ->
{error, {badarg, Slave}}
end.
--spec delete_slave(Slave :: atom()) -> 'ok' | {'error', any()}.
+-spec delete_slave(Slave) -> 'ok' | {'error', What} when
+ Slave :: Host,
+ Host :: atom(),
+ What :: any().
delete_slave(Slave) ->
case inet:getaddr(Slave, inet) of
@@ -131,7 +145,9 @@ add_subnet(Mask, Addr) when is_tuple(Mask), is_tuple(Addr) ->
delete_subnet(Mask, Addr) when is_tuple(Mask), is_tuple(Addr) ->
gen_server:call(boot_server, {delete, {Mask, Addr}}).
--spec which_slaves() -> [atom()].
+-spec which_slaves() -> Slaves when
+ Slaves :: [Host],
+ Host :: atom().
which_slaves() ->
gen_server:call(boot_server, which).
diff --git a/lib/kernel/src/erl_ddll.erl b/lib/kernel/src/erl_ddll.erl
index ce64589a29..646cac99c5 100644
--- a/lib/kernel/src/erl_ddll.erl
+++ b/lib/kernel/src/erl_ddll.erl
@@ -44,14 +44,18 @@ start() ->
stop() ->
ok.
--spec load_driver(Path :: path(), Driver :: driver()) ->
- 'ok' | {'error', any()}.
+-spec load_driver(Path, Name) -> 'ok' | {'error', ErrorDesc} when
+ Path :: path(),
+ Name :: driver(),
+ ErrorDesc :: term().
load_driver(Path, Driver) ->
do_load_driver(Path, Driver, [{driver_options,[kill_ports]}]).
--spec load(Path :: path(), Driver :: driver()) ->
- 'ok' | {'error', any()}.
+-spec load(Path, Name) -> 'ok' | {'error', ErrorDesc} when
+ Path :: path(),
+ Name :: driver(),
+ ErrorDesc ::term().
load(Path, Driver) ->
do_load_driver(Path, Driver, []).
@@ -100,30 +104,41 @@ do_unload_driver(Driver,Flags) ->
end
end.
--spec unload_driver(Driver :: driver()) -> 'ok' | {'error', any()}.
+-spec unload_driver(Name) -> 'ok' | {'error', ErrorDesc} when
+ Name :: driver(),
+ ErrorDesc :: term().
unload_driver(Driver) ->
do_unload_driver(Driver,[{monitor,pending_driver},kill_ports]).
--spec unload(Driver :: driver()) -> 'ok' | {'error', any()}.
+-spec unload(Name) -> 'ok' | {'error', ErrorDesc} when
+ Name :: driver(),
+ ErrorDesc :: term().
unload(Driver) ->
do_unload_driver(Driver,[]).
--spec reload(Path :: path(), Driver :: driver()) ->
- 'ok' | {'error', any()}.
+-spec reload(Path, Name) -> 'ok' | {'error', ErrorDesc} when
+ Path :: path(),
+ Name :: driver(),
+ ErrorDesc :: pending_process | OpaqueError,
+ OpaqueError :: term().
reload(Path,Driver) ->
do_load_driver(Path, Driver, [{reload,pending_driver}]).
--spec reload_driver(Path :: path(), Driver :: driver()) ->
- 'ok' | {'error', any()}.
+-spec reload_driver(Path, Name) -> 'ok' | {'error', ErrorDesc} when
+ Path :: path(),
+ Name :: driver(),
+ ErrorDesc :: pending_process | OpaqueError,
+ OpaqueError :: term().
reload_driver(Path,Driver) ->
do_load_driver(Path, Driver, [{reload,pending_driver},
{driver_options,[kill_ports]}]).
--spec format_error(Code :: atom()) -> string().
+-spec format_error(ErrorDesc) -> string() when
+ ErrorDesc :: term().
format_error(Code) ->
case Code of
@@ -135,7 +150,10 @@ format_error(Code) ->
erl_ddll:format_error_int(Code)
end.
--spec info(Driver :: driver()) -> [{atom(), any()}, ...].
+-spec info(Name) -> InfoList when
+ Name :: driver(),
+ InfoList :: [InfoItem, ...],
+ InfoItem :: {Tag :: atom(), Value :: term()}.
info(Driver) ->
[{processes, erl_ddll:info(Driver,processes)},
@@ -146,7 +164,12 @@ info(Driver) ->
{awaiting_load, erl_ddll:info(Driver,awaiting_load)},
{awaiting_unload, erl_ddll:info(Driver,awaiting_unload)}].
--spec info() -> [{string(), [{atom(), any()}]}].
+-spec info() -> AllInfoList when
+ AllInfoList :: [DriverInfo],
+ DriverInfo :: {DriverName, InfoList},
+ DriverName :: string(),
+ InfoList :: [InfoItem],
+ InfoItem :: {Tag :: atom(), Value :: term()}.
info() ->
{ok,DriverList} = erl_ddll:loaded_drivers(),
diff --git a/lib/kernel/src/error_handler.erl b/lib/kernel/src/error_handler.erl
index 6f69f4ccb9..e1f99bf417 100644
--- a/lib/kernel/src/error_handler.erl
+++ b/lib/kernel/src/error_handler.erl
@@ -28,8 +28,11 @@
-export([undefined_function/3, undefined_lambda/3, stub_function/3,
breakpoint/3]).
--spec undefined_function(Module :: atom(), Function :: atom(), Args :: [_]) ->
- any().
+-spec undefined_function(Module, Function, Args) ->
+ any() when
+ Module :: atom(),
+ Function :: atom(),
+ Args :: list().
undefined_function(Module, Func, Args) ->
case ensure_loaded(Module) of
@@ -51,8 +54,10 @@ undefined_function(Module, Func, Args) ->
crash(Module, Func, Args)
end.
--spec undefined_lambda(Module :: atom(), Function :: fun(), Args :: [_]) ->
- any().
+-spec undefined_lambda(Module, Fun, Args) -> term() when
+ Module :: atom(),
+ Fun :: fun(),
+ Args :: list().
undefined_lambda(Module, Fun, Args) ->
case ensure_loaded(Module) of
diff --git a/lib/kernel/src/error_logger.erl b/lib/kernel/src/error_logger.erl
index cafdc52e84..f94cca000f 100644
--- a/lib/kernel/src/error_logger.erl
+++ b/lib/kernel/src/error_logger.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -69,17 +69,22 @@ start_link() ->
%% Used for simple messages; error or information.
%%-----------------------------------------------------------------
--spec error_msg(Format :: string()) -> 'ok'.
+-spec error_msg(Format) -> 'ok' when
+ Format :: string().
error_msg(Format) ->
error_msg(Format,[]).
--spec error_msg(Format :: string(), Args :: list()) -> 'ok'.
+-spec error_msg(Format, Data) -> 'ok' when
+ Format :: string(),
+ Data :: list().
error_msg(Format, Args) ->
notify({error, group_leader(), {self(), Format, Args}}).
--spec format(Format :: string(), Args :: list()) -> 'ok'.
+-spec format(Format, Data) -> 'ok' when
+ Format :: string(),
+ Data :: list().
format(Format, Args) ->
notify({error, group_leader(), {self(), Format, Args}}).
@@ -90,12 +95,18 @@ format(Format, Args) ->
%% The 'std_error' error_report type can always be used.
%%-----------------------------------------------------------------
--spec error_report(Report :: any()) -> 'ok'.
+-type report() ::
+ [{Tag :: term(), Data :: term()} | term()] | string() | term().
+
+-spec error_report(Report) -> 'ok' when
+ Report :: report().
error_report(Report) ->
error_report(std_error, Report).
--spec error_report(Type :: any(), Report :: any()) -> 'ok'.
+-spec error_report(Type, Report) -> 'ok' when
+ Type :: term(),
+ Report :: report().
error_report(Type, Report) ->
notify({error_report, group_leader(), {self(), Type, Report}}).
@@ -109,12 +120,15 @@ error_report(Type, Report) ->
%% mapped to std_info or std_error accordingly.
%%-----------------------------------------------------------------
--spec warning_report(Report :: any()) -> 'ok'.
+-spec warning_report(Report) -> 'ok' when
+ Report :: report().
warning_report(Report) ->
warning_report(std_warning, Report).
--spec warning_report(Type :: any(), Report :: any()) -> 'ok'.
+-spec warning_report(Type, Report) -> 'ok' when
+ Type :: any(),
+ Report :: report().
warning_report(Type, Report) ->
{Tag, NType} = case error_logger:warning_map() of
@@ -143,12 +157,15 @@ warning_report(Type, Report) ->
%% other types of reports.
%%-----------------------------------------------------------------
--spec warning_msg(Format :: string()) -> 'ok'.
+-spec warning_msg(Format) -> 'ok' when
+ Format :: string().
warning_msg(Format) ->
warning_msg(Format,[]).
--spec warning_msg(Format :: string(), Args :: list()) -> 'ok'.
+-spec warning_msg(Format, Data) -> 'ok' when
+ Format :: string(),
+ Data :: list().
warning_msg(Format, Args) ->
Tag = case error_logger:warning_map() of
@@ -167,12 +184,15 @@ warning_msg(Format, Args) ->
%% The 'std_info' info_report type can always be used.
%%-----------------------------------------------------------------
--spec info_report(Report :: any()) -> 'ok'.
+-spec info_report(Report) -> 'ok' when
+ Report :: report().
info_report(Report) ->
info_report(std_info, Report).
--spec info_report(Type :: any(), Report :: any()) -> 'ok'.
+-spec info_report(Type, Report) -> 'ok' when
+ Type :: any(),
+ Report :: report().
info_report(Type, Report) ->
notify({info_report, group_leader(), {self(), Type, Report}}).
@@ -182,12 +202,15 @@ info_report(Type, Report) ->
%% information messages.
%%-----------------------------------------------------------------
--spec info_msg(Format :: string()) -> 'ok'.
+-spec info_msg(Format) -> 'ok' when
+ Format :: string().
info_msg(Format) ->
info_msg(Format,[]).
--spec info_msg(Format :: string(), Args :: list()) -> 'ok'.
+-spec info_msg(Format, Data) -> 'ok' when
+ Format :: string(),
+ Data :: list().
info_msg(Format, Args) ->
notify({info_msg, group_leader(), {self(), Format, Args}}).
@@ -223,17 +246,23 @@ swap_handler(silent) ->
swap_handler(false) ->
ok. % keep primitive event handler as-is
--spec add_report_handler(Module :: atom()) -> any().
+-spec add_report_handler(Handler) -> any() when
+ Handler :: module().
add_report_handler(Module) when is_atom(Module) ->
gen_event:add_handler(error_logger, Module, []).
--spec add_report_handler(atom(), any()) -> any().
+-spec add_report_handler(Handler, Args) -> Result when
+ Handler :: module(),
+ Args :: gen_event:handler_args(),
+ Result :: gen_event:add_handler_ret().
add_report_handler(Module, Args) when is_atom(Module) ->
gen_event:add_handler(error_logger, Module, Args).
--spec delete_report_handler(Module :: atom()) -> any().
+-spec delete_report_handler(Handler) -> Result when
+ Handler :: module(),
+ Result :: gen_event:del_handler_ret().
delete_report_handler(Module) when is_atom(Module) ->
gen_event:delete_handler(error_logger, Module, []).
@@ -250,9 +279,16 @@ simple_logger() ->
%% Log all errors to File for all eternity
--spec logfile(Request :: {'open', string()}) -> 'ok' | {'error',any()}
- ; (Request :: 'close') -> 'ok' | {'error', any()}
- ; (Request :: 'filename') -> atom() | string() | {'error', any()}.
+-type open_error() :: file:posix() | badarg | system_limit.
+
+-spec logfile(Request :: {open, Filename}) -> ok | {error, OpenReason} when
+ Filename ::file:name(),
+ OpenReason :: allready_have_logfile | open_error()
+ ; (Request :: close) -> ok | {error, CloseReason} when
+ CloseReason :: module_not_found
+ ; (Request :: filename) -> Filename | {error, FilenameReason} when
+ Filename :: file:name(),
+ FilenameReason :: no_log_file.
logfile({open, File}) ->
case lists:member(error_logger_file_h,
@@ -280,7 +316,8 @@ logfile(filename) ->
%% Possibly turn off all tty printouts, maybe we only want the errors
%% to go to a file
--spec tty(Flag :: boolean()) -> 'ok'.
+-spec tty(Flag) -> 'ok' when
+ Flag :: boolean().
tty(true) ->
Hs = gen_event:which_handlers(error_logger),
diff --git a/lib/kernel/src/file.erl b/lib/kernel/src/file.erl
index 88bcf9a9cc..f1a8aa9f77 100644
--- a/lib/kernel/src/file.erl
+++ b/lib/kernel/src/file.erl
@@ -79,15 +79,19 @@
-type file_info() :: #file_info{}.
-type fd() :: #file_descriptor{}.
-type io_device() :: pid() | fd().
--type location() :: integer() | {'bof', integer()} | {'cur', integer()}
- | {'eof', integer()} | 'bof' | 'cur' | 'eof'.
+-type location() :: integer() | {'bof', Offset :: integer()}
+ | {'cur', Offset :: integer()}
+ | {'eof', Offset :: integer()} | 'bof' | 'cur' | 'eof'.
-type mode() :: 'read' | 'write' | 'append'
| 'exclusive' | 'raw' | 'binary'
- | {'delayed_write', non_neg_integer(), non_neg_integer()}
- | 'delayed_write' | {'read_ahead', pos_integer()}
+ | {'delayed_write',
+ Size :: non_neg_integer(),
+ Delay :: non_neg_integer()}
+ | 'delayed_write' | {'read_ahead', Size :: pos_integer()}
| 'read_ahead' | 'compressed'
| {'encoding', unicode:encoding()}.
--type name() :: string() | atom() | [name()] | binary().
+-type deep_list() :: [char() | atom() | deep_list()].
+-type name() :: string() | atom() | deep_list() | (RawFilename :: binary()).
-type posix() :: 'eacces' | 'eagain' | 'ebadf' | 'ebusy' | 'edquot'
| 'eexist' | 'efault' | 'efbig' | 'eintr' | 'einval'
| 'eio' | 'eisdir' | 'eloop' | 'emfile' | 'emlink'
@@ -96,10 +100,14 @@
| 'enotblk' | 'enotdir' | 'enotsup' | 'enxio' | 'eperm'
| 'epipe' | 'erofs' | 'espipe' | 'esrch' | 'estale'
| 'exdev'.
--type bindings() :: any().
-
--type date() :: {pos_integer(), pos_integer(), pos_integer()}.
--type time() :: {non_neg_integer(), non_neg_integer(), non_neg_integer()}.
+-type bindings() :: erl_eval:binding_struct().
+
+-type date() :: {Year :: pos_integer(),
+ Month :: pos_integer(),
+ Day ::pos_integer()}.
+-type time() :: {Hour :: non_neg_integer(),
+ Minute :: non_neg_integer(),
+ Second :: non_neg_integer()}.
-type date_time() :: {date(), time()}.
-type posix_file_advise() :: 'normal' | 'sequential' | 'random'
| 'no_reuse' | 'will_need' | 'dont_need'.
@@ -107,8 +115,10 @@
%%%-----------------------------------------------------------------
%%% General functions
--spec format_error(Reason :: posix() | {integer(), atom(), any()}) ->
- string().
+-spec format_error(Reason) -> Chars when
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()},
+ Chars :: string().
format_error({_Line, ?MODULE, undefined_script}) ->
"no value returned from script";
@@ -129,7 +139,9 @@ format_error(terminated) ->
format_error(ErrorId) ->
erl_posix_msg:message(ErrorId).
--spec pid2name(Pid :: pid()) -> {'ok', filename()} | 'undefined'.
+-spec pid2name(Pid) -> {ok, Filename} | undefined when
+ Filename :: filename(),
+ Pid :: pid().
pid2name(Pid) when is_pid(Pid) ->
case whereis(?FILE_SERVER) of
@@ -148,42 +160,61 @@ pid2name(Pid) when is_pid(Pid) ->
%%% File server functions.
%%% Functions that do not operate on a single open file.
%%% Stateless.
--spec get_cwd() -> {'ok', filename()} | {'error', posix()}.
+-spec get_cwd() -> {ok, Dir} | {error, Reason} when
+ Dir :: filename(),
+ Reason :: posix().
get_cwd() ->
call(get_cwd, []).
--spec get_cwd(Drive :: string()) -> {'ok', filename()} | {'error', posix()}.
+-spec get_cwd(Drive) -> {ok, Dir} | {error, Reason} when
+ Drive :: string(),
+ Dir :: filename(),
+ Reason :: posix() | badarg.
get_cwd(Drive) ->
check_and_call(get_cwd, [file_name(Drive)]).
--spec set_cwd(Dirname :: name()) -> 'ok' | {'error', posix()}.
+-spec set_cwd(Dir) -> ok | {error, Reason} when
+ Dir :: name(),
+ Reason :: posix() | badarg.
set_cwd(Dirname) ->
check_and_call(set_cwd, [file_name(Dirname)]).
--spec delete(Name :: name()) -> 'ok' | {'error', posix()}.
+-spec delete(Filename) -> ok | {error, Reason} when
+ Filename :: name(),
+ Reason :: posix() | badarg.
delete(Name) ->
check_and_call(delete, [file_name(Name)]).
--spec rename(From :: name(), To :: name()) -> 'ok' | {'error', posix()}.
+-spec rename(Source, Destination) -> ok | {error, Reason} when
+ Source :: name(),
+ Destination :: name(),
+ Reason :: posix() | badarg.
rename(From, To) ->
check_and_call(rename, [file_name(From), file_name(To)]).
--spec make_dir(Name :: name()) -> 'ok' | {'error', posix()}.
+-spec make_dir(Dir) -> ok | {error, Reason} when
+ Dir :: name(),
+ Reason :: posix() | badarg.
make_dir(Name) ->
check_and_call(make_dir, [file_name(Name)]).
--spec del_dir(Name :: name()) -> 'ok' | {'error', posix()}.
+-spec del_dir(Dir) -> ok | {error, Reason} when
+ Dir :: name(),
+ Reason :: posix() | badarg.
del_dir(Name) ->
check_and_call(del_dir, [file_name(Name)]).
--spec read_file_info(Name :: name()) -> {'ok', file_info()} | {'error', posix()}.
+-spec read_file_info(Filename) -> {ok, FileInfo} | {error, Reason} when
+ Filename :: name(),
+ FileInfo :: file_info(),
+ Reason :: posix() | badarg.
read_file_info(Name) ->
check_and_call(read_file_info, [file_name(Name)]).
@@ -193,45 +224,66 @@ read_file_info(Name) ->
altname(Name) ->
check_and_call(altname, [file_name(Name)]).
--spec read_link_info(Name :: name()) -> {'ok', file_info()} | {'error', posix()}.
+-spec read_link_info(Name) -> {ok, FileInfo} | {error, Reason} when
+ Name :: name(),
+ FileInfo :: file_info(),
+ Reason :: posix() | badarg.
read_link_info(Name) ->
check_and_call(read_link_info, [file_name(Name)]).
--spec read_link(Name :: name()) -> {'ok', filename()} | {'error', posix()}.
+-spec read_link(Name) -> {ok, Filename} | {error, Reason} when
+ Name :: name(),
+ Filename :: filename(),
+ Reason :: posix() | badarg.
read_link(Name) ->
check_and_call(read_link, [file_name(Name)]).
--spec write_file_info(Name :: name(), Info :: file_info()) ->
- 'ok' | {'error', posix()}.
+-spec write_file_info(Filename, FileInfo) -> ok | {error, Reason} when
+ Filename :: name(),
+ FileInfo :: file_info(),
+ Reason :: posix() | badarg.
write_file_info(Name, Info = #file_info{}) ->
check_and_call(write_file_info, [file_name(Name), Info]).
--spec list_dir(Name :: name()) -> {'ok', [filename()]} | {'error', posix()}.
+-spec list_dir(Dir) -> {ok, Filenames} | {error, Reason} when
+ Dir :: name(),
+ Filenames :: [filename()],
+ Reason :: posix() | badarg.
list_dir(Name) ->
check_and_call(list_dir, [file_name(Name)]).
--spec read_file(Name :: name()) ->
- {'ok', binary()} | {'error', posix() | 'terminated' | 'system_limit'}.
+-spec read_file(Filename) -> {ok, Binary} | {error, Reason} when
+ Filename :: name(),
+ Binary :: binary(),
+ Reason :: posix() | badarg | terminated | system_limit.
read_file(Name) ->
check_and_call(read_file, [file_name(Name)]).
--spec make_link(Old :: name(), New :: name()) -> 'ok' | {'error', posix()}.
+-spec make_link(Existing, New) -> ok | {error, Reason} when
+ Existing :: name(),
+ New :: name(),
+ Reason :: posix() | badarg.
make_link(Old, New) ->
check_and_call(make_link, [file_name(Old), file_name(New)]).
--spec make_symlink(Old :: name(), New :: name()) -> 'ok' | {'error', posix()}.
+-spec make_symlink(Name1, Name2) -> ok | {error, Reason} when
+ Name1 :: name(),
+ Name2 :: name(),
+ Reason :: posix() | badarg.
make_symlink(Old, New) ->
check_and_call(make_symlink, [file_name(Old), file_name(New)]).
--spec write_file(Name :: name(), Bin :: iodata()) ->
- 'ok' | {'error', posix() | 'terminated' | 'system_limit'}.
+-spec write_file(Filename, Bytes) -> ok | {error, Reason} when
+ Filename :: name(),
+ Bytes :: iodata(),
+ Reason :: posix() | badarg | terminated | system_limit.
write_file(Name, Bin) ->
check_and_call(write_file, [file_name(Name), make_binary(Bin)]).
@@ -240,8 +292,11 @@ write_file(Name, Bin) ->
%% when it is time to change file server protocol again.
%% Meanwhile, it is implemented here, slightly less efficient.
--spec write_file(Name :: name(), Bin :: iodata(), Modes :: [mode()]) ->
- 'ok' | {'error', posix()}.
+-spec write_file(Filename, Bytes, Modes) -> ok | {error, Reason} when
+ Filename :: name(),
+ Bytes :: iodata(),
+ Modes :: [mode()],
+ Reason :: posix() | badarg | terminated | system_limit.
write_file(Name, Bin, ModeList) when is_list(ModeList) ->
case make_binary(Bin) of
@@ -295,8 +350,11 @@ raw_write_file_info(Name, #file_info{} = Info) ->
%% Contemporary mode specification - list of options
--spec open(Name :: name(), Modes :: [mode()]) ->
- {'ok', io_device()} | {'error', posix() | 'system_limit'}.
+-spec open(Filename, Modes) -> {ok, IoDevice} | {error, Reason} when
+ Filename :: name(),
+ Modes :: [mode()],
+ IoDevice :: io_device(),
+ Reason :: posix() | badarg | system_limit.
open(Item, ModeList) when is_list(ModeList) ->
case lists:member(raw, ModeList) of
@@ -349,7 +407,9 @@ open(Item, Mode) ->
%%% The File argument must be either a Pid or a handle
%%% returned from ?PRIM_FILE:open.
--spec close(File :: io_device()) -> 'ok' | {'error', posix() | 'terminated'}.
+-spec close(IoDevice) -> ok | {error, Reason} when
+ IoDevice :: io_device(),
+ Reason :: posix() | badarg | terminated.
close(File) when is_pid(File) ->
R = file_request(File, close),
@@ -367,9 +427,12 @@ close(#file_descriptor{module = Module} = Handle) ->
close(_) ->
{error, badarg}.
--spec advise(File :: io_device(), Offset :: integer(),
- Length :: integer(), Advise :: posix_file_advise()) ->
- 'ok' | {'error', posix()}.
+-spec advise(IoDevice, Offset, Length, Advise) -> ok | {error, Reason} when
+ IoDevice :: io_device(),
+ Offset :: integer(),
+ Length :: integer(),
+ Advise :: posix_file_advise(),
+ Reason :: posix() | badarg.
advise(File, Offset, Length, Advise) when is_pid(File) ->
R = file_request(File, {advise, Offset, Length, Advise}),
@@ -379,8 +442,11 @@ advise(#file_descriptor{module = Module} = Handle, Offset, Length, Advise) ->
advise(_, _, _, _) ->
{error, badarg}.
--spec read(File :: io_device() | atom(), Size :: non_neg_integer()) ->
- 'eof' | {'ok', [char()] | binary()} | {'error', posix()}.
+-spec read(IoDevice, Number) -> {ok, Data} | eof | {error, Reason} when
+ IoDevice :: io_device() | atom(),
+ Number :: non_neg_integer(),
+ Data :: string() | binary(),
+ Reason :: posix() | badarg | terminated.
read(File, Sz) when (is_pid(File) orelse is_atom(File)), is_integer(Sz), Sz >= 0 ->
case io:request(File, {get_chars, '', Sz}) of
@@ -395,8 +461,10 @@ read(#file_descriptor{module = Module} = Handle, Sz)
read(_, _) ->
{error, badarg}.
--spec read_line(File :: io_device() | atom()) ->
- 'eof' | {'ok', [char()] | binary()} | {'error', posix()}.
+-spec read_line(IoDevice) -> {ok, Data} | eof | {error, Reason} when
+ IoDevice :: io_device() | atom(),
+ Data :: string() | binary(),
+ Reason :: posix() | badarg | terminated.
read_line(File) when (is_pid(File) orelse is_atom(File)) ->
case io:request(File, {get_line, ''}) of
@@ -410,9 +478,12 @@ read_line(#file_descriptor{module = Module} = Handle) ->
read_line(_) ->
{error, badarg}.
--spec pread(File :: io_device(),
- LocationNumbers :: [{location(), non_neg_integer()}]) ->
- {'ok', [string() | binary() | 'eof']} | {'error', posix()}.
+-spec pread(IoDevice, LocNums) -> {ok, DataL} | eof | {error, Reason} when
+ IoDevice :: io_device(),
+ LocNums :: [{Location :: location(), Number :: non_neg_integer()}],
+ DataL :: [Data],
+ Data :: string() | binary() | eof,
+ Reason :: posix() | badarg | terminated.
pread(File, L) when is_pid(File), is_list(L) ->
pread_int(File, L, []);
@@ -435,10 +506,13 @@ pread_int(File, [{At, Sz} | T], R) when is_integer(Sz), Sz >= 0 ->
pread_int(_, _, _) ->
{error, badarg}.
--spec pread(File :: io_device(),
- Location :: location(),
- Size :: non_neg_integer()) ->
- 'eof' | {'ok', string() | binary()} | {'error', posix()}.
+-spec pread(IoDevice, Location, Number) ->
+ {ok, Data} | eof | {error, Reason} when
+ IoDevice :: io_device(),
+ Location :: location(),
+ Number :: non_neg_integer(),
+ Data :: string() | binary(),
+ Reason :: posix() | badarg | terminated.
pread(File, At, Sz) when is_pid(File), is_integer(Sz), Sz >= 0 ->
R = file_request(File, {pread, At, Sz}),
@@ -449,8 +523,10 @@ pread(#file_descriptor{module = Module} = Handle, Offs, Sz)
pread(_, _, _) ->
{error, badarg}.
--spec write(File :: io_device() | atom(), Byte :: iodata()) ->
- 'ok' | {'error', posix() | 'terminated'}.
+-spec write(IoDevice, Bytes) -> ok | {error, Reason} when
+ IoDevice :: io_device() | atom(),
+ Bytes :: iodata(),
+ Reason :: posix() | badarg | terminated.
write(File, Bytes) when (is_pid(File) orelse is_atom(File)) ->
case make_binary(Bytes) of
@@ -464,8 +540,11 @@ write(#file_descriptor{module = Module} = Handle, Bytes) ->
write(_, _) ->
{error, badarg}.
--spec pwrite(File :: io_device(), L :: [{location(), iodata()}]) ->
- 'ok' | {'error', {non_neg_integer(), posix()}}.
+-spec pwrite(IoDevice, LocBytes) -> ok | {error, {N, Reason}} when
+ IoDevice :: io_device(),
+ LocBytes :: [{Location :: location(), Bytes :: iodata()}],
+ N :: non_neg_integer(),
+ Reason :: posix() | badarg | terminated.
pwrite(File, L) when is_pid(File), is_list(L) ->
pwrite_int(File, L, 0);
@@ -486,10 +565,11 @@ pwrite_int(File, [{At, Bytes} | T], R) ->
pwrite_int(_, _, _) ->
{error, badarg}.
--spec pwrite(File :: io_device(),
- Location :: location(),
- Bytes :: iodata()) ->
- 'ok' | {'error', posix()}.
+-spec pwrite(IoDevice, Location, Bytes) -> ok | {error, Reason} when
+ IoDevice :: io_device(),
+ Location :: location(),
+ Bytes :: iodata(),
+ Reason :: posix() | badarg | terminated.
pwrite(File, At, Bytes) when is_pid(File) ->
R = file_request(File, {pwrite, At, Bytes}),
@@ -499,7 +579,9 @@ pwrite(#file_descriptor{module = Module} = Handle, Offs, Bytes) ->
pwrite(_, _, _) ->
{error, badarg}.
--spec datasync(File :: io_device()) -> 'ok' | {'error', posix()}.
+-spec datasync(IoDevice) -> ok | {error, Reason} when
+ IoDevice :: io_device(),
+ Reason :: posix() | badarg | terminated.
datasync(File) when is_pid(File) ->
R = file_request(File, datasync),
@@ -509,7 +591,9 @@ datasync(#file_descriptor{module = Module} = Handle) ->
datasync(_) ->
{error, badarg}.
--spec sync(File :: io_device()) -> 'ok' | {'error', posix()}.
+-spec sync(IoDevice) -> ok | {error, Reason} when
+ IoDevice :: io_device(),
+ Reason :: posix() | badarg | terminated.
sync(File) when is_pid(File) ->
R = file_request(File, sync),
@@ -519,8 +603,11 @@ sync(#file_descriptor{module = Module} = Handle) ->
sync(_) ->
{error, badarg}.
--spec position(File :: io_device(), Location :: location()) ->
- {'ok',integer()} | {'error', posix()}.
+-spec position(IoDevice, Location) -> {ok, NewPosition} | {error, Reason} when
+ IoDevice :: io_device(),
+ Location :: location(),
+ NewPosition :: integer(),
+ Reason :: posix() | badarg | terminated.
position(File, At) when is_pid(File) ->
R = file_request(File, {position,At}),
@@ -530,7 +617,9 @@ position(#file_descriptor{module = Module} = Handle, At) ->
position(_, _) ->
{error, badarg}.
--spec truncate(File :: io_device()) -> 'ok' | {'error', posix()}.
+-spec truncate(IoDevice) -> ok | {error, Reason} when
+ IoDevice :: io_device(),
+ Reason :: posix() | badarg | terminated.
truncate(File) when is_pid(File) ->
R = file_request(File, truncate),
@@ -540,17 +629,26 @@ truncate(#file_descriptor{module = Module} = Handle) ->
truncate(_) ->
{error, badarg}.
--spec copy(Source :: io_device() | name() | {name(), [mode()]},
- Destination :: io_device() | name() | {name(), [mode()]}) ->
- {'ok', non_neg_integer()} | {'error', posix()}.
+-spec copy(Source, Destination) -> {ok, BytesCopied} | {error, Reason} when
+ Source :: io_device() | Filename | {Filename, Modes},
+ Destination :: io_device() | Filename | {Filename, Modes},
+ Filename :: name(),
+ Modes :: [mode()],
+ BytesCopied :: non_neg_integer(),
+ Reason :: posix() | badarg | terminated.
copy(Source, Dest) ->
copy_int(Source, Dest, infinity).
--spec copy(Source :: io_device() | name() | {name(), [mode()]},
- Destination :: io_device() | name() | {name(), [mode()]},
- Length :: non_neg_integer() | 'infinity') ->
- {'ok', non_neg_integer()} | {'error', posix()}.
+-spec copy(Source, Destination, ByteCount) ->
+ {ok, BytesCopied} | {error, Reason} when
+ Source :: io_device() | Filename | {Filename, Modes},
+ Destination :: io_device() | Filename | {Filename, Modes},
+ Filename :: name(),
+ Modes :: [mode()],
+ ByteCount :: non_neg_integer() | infinity,
+ BytesCopied :: non_neg_integer(),
+ Reason :: posix() | badarg | terminated.
copy(Source, Dest, Length)
when is_integer(Length), Length >= 0;
@@ -772,8 +870,11 @@ ipread_s32bu_p32bu_2(File,
%%% The following functions, built upon the other interface functions,
%%% provide a higher-lever interface to files.
--spec consult(File :: name()) ->
- {'ok', list()} | {'error', posix() | {integer(), atom(), any()}}.
+-spec consult(Filename) -> {ok, Terms} | {error, Reason} when
+ Filename :: name(),
+ Terms :: [term()],
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
consult(File) ->
case open(File, [read]) of
@@ -785,8 +886,14 @@ consult(File) ->
Error
end.
--spec path_consult(Paths :: [name()], File :: name()) ->
- {'ok', list(), filename()} | {'error', posix() | {integer(), atom(), any()}}.
+-spec path_consult(Path, Filename) -> {ok, Terms, FullName} | {error, Reason} when
+ Path :: [Dir],
+ Dir :: name(),
+ Filename :: name(),
+ Terms :: [term()],
+ FullName :: filename(),
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
path_consult(Path, File) ->
case path_open(Path, File, [read]) of
@@ -803,13 +910,19 @@ path_consult(Path, File) ->
E2
end.
--spec eval(File :: name()) -> 'ok' | {'error', posix()}.
+-spec eval(Filename) -> ok | {error, Reason} when
+ Filename :: name(),
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
eval(File) ->
eval(File, erl_eval:new_bindings()).
--spec eval(File :: name(), Bindings :: bindings()) ->
- 'ok' | {'error', posix()}.
+-spec eval(Filename, Bindings) -> ok | {error, Reason} when
+ Filename :: name(),
+ Bindings :: bindings(),
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
eval(File, Bs) ->
case open(File, [read]) of
@@ -821,14 +934,24 @@ eval(File, Bs) ->
Error
end.
--spec path_eval(Paths :: [name()], File :: name()) ->
- {'ok', filename()} | {'error', posix() | {integer(), atom(), any()}}.
+-spec path_eval(Path, Filename) -> {ok, FullName} | {error, Reason} when
+ Path :: [Dir :: name()],
+ Filename :: name(),
+ FullName :: filename(),
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
path_eval(Path, File) ->
path_eval(Path, File, erl_eval:new_bindings()).
--spec path_eval(Paths :: [name()], File :: name(), Bindings :: bindings()) ->
- {'ok', filename()} | {'error', posix() | {integer(), atom(), any()}}.
+-spec path_eval(Path, Filename, Bindings) ->
+ {ok, FullName} | {error, Reason} when
+ Path :: [Dir :: name()],
+ Filename :: name(),
+ Bindings :: bindings(),
+ FullName :: filename(),
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
path_eval(Path, File, Bs) ->
case path_open(Path, File, [read]) of
@@ -845,14 +968,21 @@ path_eval(Path, File, Bs) ->
E2
end.
--spec script(File :: name()) ->
- {'ok', any()} | {'error', posix() | {integer(), atom(), any()}}.
+-spec script(Filename) -> {ok, Value} | {error, Reason} when
+ Filename :: name(),
+ Value :: term(),
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
script(File) ->
script(File, erl_eval:new_bindings()).
--spec script(File :: name(), Bindings :: bindings()) ->
- {'ok', any()} | {'error', posix() | {integer(), atom(), any()}}.
+-spec script(Filename, Bindings) -> {ok, Value} | {error, Reason} when
+ Filename :: name(),
+ Bindings :: bindings(),
+ Value :: term(),
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
script(File, Bs) ->
case open(File, [read]) of
@@ -864,16 +994,27 @@ script(File, Bs) ->
Error
end.
--spec path_script/2 :: (Paths :: [name()], File :: name()) ->
- {'ok', term(), filename()} | {'error', posix() | {integer(), atom(), _}}.
+-spec path_script(Path, Filename) ->
+ {ok, Value, FullName} | {error, Reason} when
+ Path :: [Dir :: name()],
+ Filename :: name(),
+ Value :: term(),
+ FullName :: filename(),
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
path_script(Path, File) ->
path_script(Path, File, erl_eval:new_bindings()).
--spec path_script(Paths :: [name()],
- File :: name(),
- Bindings :: bindings()) ->
- {'ok', term(), filename()} | {'error', posix() | {integer(), atom(), _}}.
+-spec path_script(Path, Filename, Bindings) ->
+ {ok, Value, FullName} | {error, Reason} when
+ Path :: [Dir :: name()],
+ Filename :: name(),
+ Bindings :: bindings(),
+ Value :: term(),
+ FullName :: filename(),
+ Reason :: posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
path_script(Path, File, Bs) ->
case path_open(Path, File, [read]) of
@@ -898,8 +1039,14 @@ path_script(Path, File, Bs) ->
%% Searches the Paths for file Filename which can be opened with Mode.
%% The path list is ignored if Filename contains an absolute path.
--spec path_open(Paths :: [name()], Name :: name(), Modes :: [mode()]) ->
- {'ok', io_device(), filename()} | {'error', posix()}.
+-spec path_open(Path, Filename, Modes) ->
+ {ok, IoDevice, FullName} | {error, Reason} when
+ Path :: [Dir :: name()],
+ Filename :: name(),
+ Modes :: [mode()],
+ IoDevice :: io_device(),
+ FullName :: filename(),
+ Reason :: posix() | badarg | system_limit.
path_open(PathList, Name, Mode) ->
case file_name(Name) of
@@ -919,47 +1066,57 @@ path_open(PathList, Name, Mode) ->
end
end.
--spec change_mode(Name :: name(), Mode :: integer()) ->
- 'ok' | {'error', posix()}.
+-spec change_mode(Filename, Mode) -> ok | {error, Reason} when
+ Filename :: name(),
+ Mode :: integer(),
+ Reason :: posix() | badarg.
change_mode(Name, Mode)
when is_integer(Mode) ->
write_file_info(Name, #file_info{mode=Mode}).
--spec change_owner(Name :: name(), OwnerId :: integer()) ->
- 'ok' | {'error', posix()}.
+-spec change_owner(Filename, Uid) -> ok | {error, Reason} when
+ Filename :: name(),
+ Uid :: integer(),
+ Reason :: posix() | badarg.
change_owner(Name, OwnerId)
when is_integer(OwnerId) ->
write_file_info(Name, #file_info{uid=OwnerId}).
--spec change_owner(Name :: name(),
- OwnerId :: integer(),
- GroupId :: integer()) ->
- 'ok' | {'error', posix()}.
+-spec change_owner(Filename, Uid, Gid) -> ok | {error, Reason} when
+ Filename :: name(),
+ Uid :: integer(),
+ Gid :: integer(),
+ Reason :: posix() | badarg.
change_owner(Name, OwnerId, GroupId)
when is_integer(OwnerId), is_integer(GroupId) ->
write_file_info(Name, #file_info{uid=OwnerId, gid=GroupId}).
--spec change_group(Name :: name(), GroupId :: integer()) ->
- 'ok' | {'error', posix()}.
+-spec change_group(Filename, Gid) -> ok | {error, Reason} when
+ Filename :: name(),
+ Gid :: integer(),
+ Reason :: posix() | badarg.
change_group(Name, GroupId)
when is_integer(GroupId) ->
write_file_info(Name, #file_info{gid=GroupId}).
--spec change_time(Name :: name(), Time :: date_time()) ->
- 'ok' | {'error', posix()}.
+-spec change_time(Filename, Mtime) -> ok | {error, Reason} when
+ Filename :: name(),
+ Mtime :: date_time(),
+ Reason :: posix() | badarg.
change_time(Name, Time)
when is_tuple(Time) ->
write_file_info(Name, #file_info{mtime=Time}).
--spec change_time(Name :: name(),
- ATime :: date_time(),
- MTime :: date_time()) ->
- 'ok' | {'error', posix()}.
+-spec change_time(Filename, Atime, Mtime) -> ok | {error, Reason} when
+ Filename :: name(),
+ Atime :: date_time(),
+ Mtime :: date_time(),
+ Reason :: posix() | badarg.
change_time(Name, Atime, Mtime)
when is_tuple(Atime), is_tuple(Mtime) ->
diff --git a/lib/kernel/src/gen_sctp.erl b/lib/kernel/src/gen_sctp.erl
index cccfa75005..004f03f231 100644
--- a/lib/kernel/src/gen_sctp.erl
+++ b/lib/kernel/src/gen_sctp.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2007-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2007-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -33,11 +33,57 @@
-export([error_string/1]).
-export([controlling_process/2]).
-
+-opaque assoc_id() :: term().
+-type hostname() :: inet:hostname().
+-type ip_address() :: inet:ip_address().
+-type port_number() :: 0..65535.
+-type posix() :: inet:posix().
+-type sctp_option() ::
+ {mode, list | binary} | list | binary
+ | {active, true | false | once}
+ | {buffer, non_neg_integer()}
+ | {tos, integer()}
+ | {priority, integer()}
+ | {dontroute, boolean()}
+ | {reuseaddr, boolean()}
+ | {linger, {boolean(), non_neg_integer()}}
+ | {sndbuf, non_neg_integer()}
+ | {recbuf, non_neg_integer()}
+ | {sctp_rtoinfo, #sctp_rtoinfo{}}
+ | {sctp_associnfo, #sctp_assocparams{}}
+ | {sctp_initmsg, #sctp_initmsg{}}
+ | {sctp_autoclose, timeout()}
+ | {sctp_nodelay, boolean()}
+ | {sctp_disable_fragments, boolean()}
+ | {sctp_i_want_mapped_v4_addr, boolean()}
+ | {sctp_maxseg, non_neg_integer()}
+ | {sctp_primary_addr, #sctp_prim{}}
+ | {sctp_set_peer_primary_addr, #sctp_setpeerprim{}}
+ | {sctp_adaptation_layer, #sctp_setadaptation{}}
+ | {sctp_peer_addr_params, #sctp_paddrparams{}}
+ | {sctp_default_send_param, #sctp_sndrcvinfo{}}
+ | {sctp_events, #sctp_event_subscribe{}}
+ | {sctp_delayed_ack_time, #sctp_assoc_value{}}
+ | {sctp_status, #sctp_status{}}
+ | {sctp_get_peer_addr_info, #sctp_paddrinfo{}}.
+-opaque sctp_socket() :: port().
+
+-spec open() -> {ok, Socket} | {error, posix()} when
+ Socket :: sctp_socket().
open() ->
open([]).
+-spec open(Port) -> {ok, Socket} | {error, posix()} when
+ Port :: port_number(),
+ Socket :: sctp_socket();
+ (Opts) -> {ok, Socket} | {error, posix()} when
+ Opts :: [Opt],
+ Opt :: {ip,IP} | {ifaddr,IP} | {port,Port} | sctp_option(),
+ IP :: ip_address() | any | loopback,
+ Port :: port_number(),
+ Socket :: sctp_socket().
+
open(Opts) when is_list(Opts) ->
Mod = mod(Opts, undefined),
case Mod:open(Opts) of
@@ -52,11 +98,21 @@ open(Port) when is_integer(Port) ->
open(X) ->
erlang:error(badarg, [X]).
+-spec open(Port, Opts) -> {ok, Socket} | {error, posix()} when
+ Opts :: [Opt],
+ Opt :: {ip,IP} | {ifaddr,IP} | {port,Port} | sctp_option(),
+ IP :: ip_address() | any | loopback,
+ Port :: port_number(),
+ Socket :: sctp_socket().
+
open(Port, Opts) when is_integer(Port), is_list(Opts) ->
open([{port,Port}|Opts]);
open(Port, Opts) ->
erlang:error(badarg, [Port,Opts]).
+-spec close(Socket) -> ok | {error, posix()} when
+ Socket :: sctp_socket().
+
close(S) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok,Mod} ->
@@ -68,6 +124,11 @@ close(S) ->
+-spec listen(Socket, IsServer) -> ok | {error, Reason} when
+ Socket :: sctp_socket(),
+ IsServer :: boolean(),
+ Reason :: term().
+
listen(S, Flag) when is_port(S), is_boolean(Flag) ->
case inet_db:lookup_socket(S) of
{ok,Mod} ->
@@ -77,9 +138,25 @@ listen(S, Flag) when is_port(S), is_boolean(Flag) ->
listen(S, Flag) ->
erlang:error(badarg, [S,Flag]).
+-spec connect(Socket, Addr, Port, Opts) -> {ok, Assoc} | {error, posix()} when
+ Socket :: sctp_socket(),
+ Addr :: ip_address() | hostname(),
+ Port :: port_number(),
+ Opts :: [Opt :: sctp_option()],
+ Assoc :: #sctp_assoc_change{}.
+
connect(S, Addr, Port, Opts) ->
connect(S, Addr, Port, Opts, infinity).
+-spec connect(Socket, Addr, Port, Opts, Timeout) ->
+ {ok, Assoc} | {error, posix()} when
+ Socket :: sctp_socket(),
+ Addr :: ip_address() | hostname(),
+ Port :: port_number(),
+ Opts :: [Opt :: sctp_option()],
+ Timeout :: timeout(),
+ Assoc :: #sctp_assoc_change{}.
+
connect(S, Addr, Port, Opts, Timeout) ->
case do_connect(S, Addr, Port, Opts, Timeout, true) of
badarg ->
@@ -88,9 +165,24 @@ connect(S, Addr, Port, Opts, Timeout) ->
Result
end.
+-spec connect_init(Socket, Addr, Port, Opts) ->
+ ok | {error, posix()} when
+ Socket :: sctp_socket(),
+ Addr :: ip_address() | hostname(),
+ Port :: port_number(),
+ Opts :: [sctp_option()].
+
connect_init(S, Addr, Port, Opts) ->
connect_init(S, Addr, Port, Opts, infinity).
+-spec connect_init(Socket, Addr, Port, Opts, Timeout) ->
+ ok | {error, posix()} when
+ Socket :: sctp_socket(),
+ Addr :: ip_address() | hostname(),
+ Port :: port_number(),
+ Opts :: [sctp_option()],
+ Timeout :: timeout().
+
connect_init(S, Addr, Port, Opts, Timeout) ->
case do_connect(S, Addr, Port, Opts, Timeout, false) of
badarg ->
@@ -130,12 +222,20 @@ do_connect(_S, _Addr, _Port, _Opts, _Timeout, _ConnWait) ->
badarg.
+-spec eof(Socket, Assoc) -> ok | {error, Reason} when
+ Socket :: sctp_socket(),
+ Assoc :: #sctp_assoc_change{},
+ Reason :: term().
eof(S, #sctp_assoc_change{assoc_id=AssocId}) when is_port(S) ->
eof_or_abort(S, AssocId, eof);
eof(S, Assoc) ->
erlang:error(badarg, [S,Assoc]).
+-spec abort(Socket, Assoc) -> ok | {error, posix()} when
+ Socket :: sctp_socket(),
+ Assoc :: #sctp_assoc_change{}.
+
abort(S, #sctp_assoc_change{assoc_id=AssocId}) when is_port(S) ->
eof_or_abort(S, AssocId, abort);
abort(S, Assoc) ->
@@ -151,6 +251,11 @@ eof_or_abort(S, AssocId, Action) ->
end.
+-spec send(Socket, SndRcvInfo, Data) -> ok | {error, Reason} when
+ Socket :: sctp_socket(),
+ SndRcvInfo :: #sctp_sndrcvinfo{},
+ Data :: binary | iolist(),
+ Reason :: term().
%% Full-featured send. Rarely needed.
send(S, #sctp_sndrcvinfo{}=SRI, Data) when is_port(S) ->
@@ -162,6 +267,13 @@ send(S, #sctp_sndrcvinfo{}=SRI, Data) when is_port(S) ->
send(S, SRI, Data) ->
erlang:error(badarg, [S,SRI,Data]).
+-spec send(Socket, Assoc, Stream, Data) -> ok | {error, Reason} when
+ Socket :: sctp_socket(),
+ Assoc :: #sctp_assoc_change{} | assoc_id(),
+ Stream :: integer(),
+ Data :: binary | iolist(),
+ Reason :: term().
+
send(S, #sctp_assoc_change{assoc_id=AssocId}, Stream, Data)
when is_port(S), is_integer(Stream) ->
case inet_db:lookup_socket(S) of
@@ -179,9 +291,36 @@ send(S, AssocId, Stream, Data)
send(S, AssocChange, Stream, Data) ->
erlang:error(badarg, [S,AssocChange,Stream,Data]).
+-spec recv(Socket) -> {ok, {FromIP, FromPort, AncData, Data}}
+ | {error, Reason} when
+ Socket :: sctp_socket(),
+ FromIP :: ip_address(),
+ FromPort :: port_number(),
+ AncData :: [#sctp_sndrcvinfo{}],
+ Data :: binary() | string() | #sctp_sndrcvinfo{}
+ | #sctp_assoc_change{} | #sctp_paddr_change{}
+ | #sctp_adaptation_event{},
+ Reason :: posix() | #sctp_send_failed{} | #sctp_paddr_change{}
+ | #sctp_pdapi_event{} | #sctp_remote_error{}
+ | #sctp_shutdown_event{}.
+
recv(S) ->
recv(S, infinity).
+-spec recv(Socket, Timeout) -> {ok, {FromIP, FromPort, AncData, Data}}
+ | {error, Reason} when
+ Socket :: sctp_socket(),
+ Timeout :: timeout(),
+ FromIP :: ip_address(),
+ FromPort :: port_number(),
+ AncData :: [#sctp_sndrcvinfo{}],
+ Data :: binary() | string() | #sctp_sndrcvinfo{}
+ | #sctp_assoc_change{} | #sctp_paddr_change{}
+ | #sctp_adaptation_event{},
+ Reason :: posix() | #sctp_send_failed{} | #sctp_paddr_change{}
+ | #sctp_pdapi_event{} | #sctp_remote_error{}
+ | #sctp_shutdown_event{}.
+
recv(S, Timeout) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok,Mod} ->
@@ -192,6 +331,8 @@ recv(S, Timeout) ->
erlang:error(badarg, [S,Timeout]).
+-spec error_string(ErrorNumber) -> ok | string() | unknown_error when
+ ErrorNumber :: integer().
error_string(0) ->
ok;
@@ -224,6 +365,9 @@ error_string(X) ->
erlang:error(badarg, [X]).
+-spec controlling_process(Socket, Pid) -> ok when
+ Socket :: sctp_socket(),
+ Pid :: pid().
controlling_process(S, Pid) when is_port(S), is_pid(Pid) ->
inet:udp_controlling_process(S, Pid);
diff --git a/lib/kernel/src/gen_tcp.erl b/lib/kernel/src/gen_tcp.erl
index 16a87d71b6..bee61ca84a 100644
--- a/lib/kernel/src/gen_tcp.erl
+++ b/lib/kernel/src/gen_tcp.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -28,12 +28,35 @@
-include("inet_int.hrl").
+-type hostname() :: inet:hostname().
+-type ip_address() :: inet:ip_address().
+-type port_number() :: 0..65535.
+-type posix() :: inet:posix().
+-type socket() :: port().
+
%%
%% Connect a socket
%%
+
+-spec connect(Address, Port, Options) -> {ok, Socket} | {error, Reason} when
+ Address :: ip_address() | hostname(),
+ Port :: port_number(),
+ Options :: [Opt :: term()],
+ Socket :: socket(),
+ Reason :: posix().
+
connect(Address, Port, Opts) ->
connect(Address,Port,Opts,infinity).
+-spec connect(Address, Port, Options, Timeout) ->
+ {ok, Socket} | {error, Reason} when
+ Address :: ip_address() | hostname(),
+ Port :: port_number(),
+ Options :: [Opt :: term()],
+ Timeout :: timeout(),
+ Socket :: socket(),
+ Reason :: posix().
+
connect(Address, Port, Opts, Time) ->
Timer = inet:start_timer(Time),
Res = (catch connect1(Address,Port,Opts,Timer)),
@@ -72,6 +95,13 @@ try_connect([], _Port, _Opts, _Timer, _Mod, Err) ->
%%
%% Listen on a tcp port
%%
+
+-spec listen(Port, Options) -> {ok, ListenSocket} | {error, Reason} when
+ Port :: port_number(),
+ Options :: [Opt :: term()],
+ ListenSocket :: socket(),
+ Reason :: posix().
+
listen(Port, Opts) ->
Mod = mod(Opts, undefined),
case Mod:getserv(Port) of
@@ -85,6 +115,12 @@ listen(Port, Opts) ->
%%
%% Generic tcp accept
%%
+
+-spec accept(ListenSocket) -> {ok, Socket} | {error, Reason} when
+ ListenSocket :: socket(),
+ Socket :: socket(),
+ Reason :: closed | timeout | posix().
+
accept(S) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
@@ -93,6 +129,12 @@ accept(S) ->
Error
end.
+-spec accept(ListenSocket, Timeout) -> {ok, Socket} | {error, Reason} when
+ ListenSocket :: socket(),
+ Timeout :: timeout(),
+ Socket :: socket(),
+ Reason :: closed | timeout | posix().
+
accept(S, Time) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
@@ -104,6 +146,12 @@ accept(S, Time) when is_port(S) ->
%%
%% Generic tcp shutdown
%%
+
+-spec shutdown(Socket, How) -> ok | {error, Reason} when
+ Socket :: socket(),
+ How :: read | write | read_write,
+ Reason :: posix().
+
shutdown(S, How) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
@@ -115,12 +163,22 @@ shutdown(S, How) when is_port(S) ->
%%
%% Close
%%
+
+-spec close(Socket) -> ok when
+ Socket :: socket().
+
close(S) ->
inet:tcp_close(S).
%%
%% Send
%%
+
+-spec send(Socket, Packet) -> ok | {error, Reason} when
+ Socket :: socket(),
+ Packet :: string() | binary(),
+ Reason :: posix().
+
send(S, Packet) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
@@ -132,6 +190,14 @@ send(S, Packet) when is_port(S) ->
%%
%% Receive data from a socket (passive mode)
%%
+
+-spec recv(Socket, Length) -> {ok, Packet} | {error, Reason} when
+ Socket :: socket(),
+ Length :: non_neg_integer(),
+ Packet :: string() | binary() | HttpPacket,
+ Reason :: closed | posix(),
+ HttpPacket :: term().
+
recv(S, Length) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
@@ -140,6 +206,14 @@ recv(S, Length) when is_port(S) ->
Error
end.
+-spec recv(Socket, Length, Timeout) -> {ok, Packet} | {error, Reason} when
+ Socket :: socket(),
+ Length :: non_neg_integer(),
+ Timeout :: timeout(),
+ Packet :: string() | binary() | HttpPacket,
+ Reason :: closed | posix(),
+ HttpPacket :: term().
+
recv(S, Length, Time) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
@@ -159,6 +233,12 @@ unrecv(S, Data) when is_port(S) ->
%%
%% Set controlling process
%%
+
+-spec controlling_process(Socket, Pid) -> ok | {error, Reason} when
+ Socket :: socket(),
+ Pid :: pid(),
+ Reason :: closed | not_owner | posix().
+
controlling_process(S, NewOwner) ->
case inet_db:lookup_socket(S) of
{ok, _Mod} -> % Just check that this is an open socket
diff --git a/lib/kernel/src/gen_udp.erl b/lib/kernel/src/gen_udp.erl
index 99020c7b6c..7d14615c04 100644
--- a/lib/kernel/src/gen_udp.erl
+++ b/lib/kernel/src/gen_udp.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -25,17 +25,44 @@
-include("inet_int.hrl").
+-type hostname() :: inet:hostname().
+-type ip_address() :: inet:ip_address().
+-type port_number() :: 0..65535.
+-type posix() :: inet:posix().
+-type socket() :: port().
+
+-spec open(Port) -> {ok, Socket} | {error, Reason} when
+ Port :: port_number(),
+ Socket :: socket(),
+ Reason :: posix().
+
open(Port) ->
open(Port, []).
+-spec open(Port, Opts) -> {ok, Socket} | {error, Reason} when
+ Port :: port_number(),
+ Opts :: [Opt :: term()],
+ Socket :: socket(),
+ Reason :: posix().
+
open(Port, Opts) ->
Mod = mod(Opts, undefined),
{ok,UP} = Mod:getserv(Port),
Mod:open(UP, Opts).
+-spec close(Socket) -> ok when
+ Socket :: socket().
+
close(S) ->
inet:udp_close(S).
+-spec send(Socket, Address, Port, Packet) -> ok | {error, Reason} when
+ Socket :: socket(),
+ Address :: ip_address() | hostname(),
+ Port :: port_number(),
+ Packet :: string() | binary(),
+ Reason :: not_owner | posix().
+
send(S, Address, Port, Packet) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
@@ -61,6 +88,15 @@ send(S, Packet) when is_port(S) ->
Error
end.
+-spec recv(Socket, Length) ->
+ {ok, {Address, Port, Packet}} | {error, Reason} when
+ Socket :: socket(),
+ Length :: non_neg_integer(),
+ Address :: ip_address(),
+ Port :: port_number(),
+ Packet :: string() | binary(),
+ Reason :: not_owner | posix().
+
recv(S,Len) when is_port(S), is_integer(Len) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
@@ -69,6 +105,16 @@ recv(S,Len) when is_port(S), is_integer(Len) ->
Error
end.
+-spec recv(Socket, Length, Timeout) ->
+ {ok, {Address, Port, Packet}} | {error, Reason} when
+ Socket :: socket(),
+ Length :: non_neg_integer(),
+ Timeout :: timeout(),
+ Address :: ip_address(),
+ Port :: port_number(),
+ Packet :: string() | binary(),
+ Reason :: not_owner | posix().
+
recv(S,Len,Time) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
@@ -90,6 +136,10 @@ connect(S, Address, Port) when is_port(S) ->
Error
end.
+-spec controlling_process(Socket, Pid) -> ok when
+ Socket :: socket(),
+ Pid :: pid().
+
controlling_process(S, NewOwner) ->
inet:udp_controlling_process(S, NewOwner).
diff --git a/lib/kernel/src/global.erl b/lib/kernel/src/global.erl
index 6343acd000..7d15f8bf83 100644
--- a/lib/kernel/src/global.erl
+++ b/lib/kernel/src/global.erl
@@ -166,7 +166,7 @@ start_link() ->
stop() ->
gen_server:call(global_name_server, stop, infinity).
--spec sync() -> 'ok' | {'error', term()}.
+-spec sync() -> 'ok' | {'error', Reason :: term()}.
sync() ->
case check_sync_nodes() of
{error, _} = Error ->
@@ -175,7 +175,7 @@ sync() ->
gen_server:call(global_name_server, {sync, SyncNodes}, infinity)
end.
--spec sync([node()]) -> 'ok' | {'error', term()}.
+-spec sync([node()]) -> 'ok' | {'error', Reason :: term()}.
sync(Nodes) ->
case check_sync_nodes(Nodes) of
{error, _} = Error ->
@@ -184,7 +184,10 @@ sync(Nodes) ->
gen_server:call(global_name_server, {sync, SyncNodes}, infinity)
end.
--spec send(term(), term()) -> pid().
+-spec send(Name, Msg) -> Pid when
+ Name :: term(),
+ Msg :: term(),
+ Pid :: pid().
send(Name, Msg) ->
case whereis_name(Name) of
Pid when is_pid(Pid) ->
@@ -195,7 +198,8 @@ send(Name, Msg) ->
end.
%% See OTP-3737.
--spec whereis_name(term()) -> pid() | 'undefined'.
+-spec whereis_name(Name) -> pid() | 'undefined' when
+ Name :: term().
whereis_name(Name) ->
where(Name).
@@ -219,13 +223,19 @@ node_disconnected(Node) ->
%% undefined which one of them is used.
%% Method blocks the name registration, but does not affect global locking.
%%-----------------------------------------------------------------
--spec register_name(term(), pid()) -> 'yes' | 'no'.
+-spec register_name(Name, Pid) -> 'yes' | 'no' when
+ Name :: term(),
+ Pid :: pid().
register_name(Name, Pid) when is_pid(Pid) ->
register_name(Name, Pid, fun random_exit_name/3).
--type method() :: fun((term(), pid(), pid()) -> pid() | 'none').
+-type method() :: fun((Name :: term(), Pid :: pid(), Pid2 :: pid()) ->
+ pid() | 'none').
--spec register_name(term(), pid(), method()) -> 'yes' | 'no'.
+-spec register_name(Name, Pid, Resolve) -> 'yes' | 'no' when
+ Name :: term(),
+ Pid :: pid(),
+ Resolve :: method().
register_name(Name, Pid, Method) when is_pid(Pid) ->
Fun = fun(Nodes) ->
case (where(Name) =:= undefined) andalso check_dupname(Name, Pid) of
@@ -257,7 +267,8 @@ check_dupname(Name, Pid) ->
end
end.
--spec unregister_name(term()) -> _.
+-spec unregister_name(Name) -> _ when
+ Name :: term().
unregister_name(Name) ->
case where(Name) of
undefined ->
@@ -273,11 +284,16 @@ unregister_name(Name) ->
gen_server:call(global_name_server, {registrar, Fun}, infinity)
end.
--spec re_register_name(term(), pid()) -> _.
+-spec re_register_name(Name, Pid) -> _ when
+ Name :: term(),
+ Pid :: pid().
re_register_name(Name, Pid) when is_pid(Pid) ->
re_register_name(Name, Pid, fun random_exit_name/3).
--spec re_register_name(term(), pid(), method()) -> _.
+-spec re_register_name(Name, Pid, Resolve) -> _ when
+ Name :: term(),
+ Pid :: pid(),
+ Resolve :: method().
re_register_name(Name, Pid, Method) when is_pid(Pid) ->
Fun = fun(Nodes) ->
gen_server:multi_call(Nodes,
@@ -288,7 +304,8 @@ re_register_name(Name, Pid, Method) when is_pid(Pid) ->
?trace({re_register_name, self(), Name, Pid, Method}),
gen_server:call(global_name_server, {registrar, Fun}, infinity).
--spec registered_names() -> [term()].
+-spec registered_names() -> [Name] when
+ Name :: term().
registered_names() ->
MS = ets:fun2ms(fun({Name,_Pid,_M,_RP,_R}) -> Name end),
ets:select(global_names, MS).
@@ -329,19 +346,25 @@ register_name_external(Name, Pid, Method) when is_pid(Pid) ->
unregister_name_external(Name) ->
unregister_name(Name).
--type id() :: {term(), term()}.
+-type id() :: {ResourceId :: term(), LockRequesterId :: term()}.
--spec set_lock(id()) -> boolean().
+-spec set_lock(Id) -> boolean() when
+ Id :: id().
set_lock(Id) ->
set_lock(Id, [node() | nodes()], infinity, 1).
-type retries() :: non_neg_integer() | 'infinity'.
--spec set_lock(id(), [node()]) -> boolean().
+-spec set_lock(Id, Nodes) -> boolean() when
+ Id :: id(),
+ Nodes :: [node()].
set_lock(Id, Nodes) ->
set_lock(Id, Nodes, infinity, 1).
--spec set_lock(id(), [node()], retries()) -> boolean().
+-spec set_lock(Id, Nodes, Retries) -> boolean() when
+ Id :: id(),
+ Nodes :: [node()],
+ Retries :: retries().
set_lock(Id, Nodes, Retries) when is_integer(Retries), Retries >= 0 ->
set_lock(Id, Nodes, Retries, 1);
set_lock(Id, Nodes, infinity) ->
@@ -363,11 +386,14 @@ set_lock({_ResourceId, _LockRequesterId} = Id, Nodes, Retries, Times) ->
set_lock(Id, Nodes, dec(Retries), Times+1)
end.
--spec del_lock(id()) -> 'true'.
+-spec del_lock(Id) -> 'true' when
+ Id :: id().
del_lock(Id) ->
del_lock(Id, [node() | nodes()]).
--spec del_lock(id(), [node()]) -> 'true'.
+-spec del_lock(Id, Nodes) -> 'true' when
+ Id :: id(),
+ Nodes :: [node()].
del_lock({_ResourceId, _LockRequesterId} = Id, Nodes) ->
?trace({del_lock, {me,self()}, Id, {nodes,Nodes}}),
gen_server:multi_call(Nodes, global_name_server, {del_lock, Id}),
@@ -375,13 +401,25 @@ del_lock({_ResourceId, _LockRequesterId} = Id, Nodes) ->
-type trans_fun() :: function() | {module(), atom()}.
--spec trans(id(), trans_fun()) -> term().
+-spec trans(Id, Fun) -> Res | aborted when
+ Id :: id(),
+ Fun :: trans_fun(),
+ Res :: term().
trans(Id, Fun) -> trans(Id, Fun, [node() | nodes()], infinity).
--spec trans(id(), trans_fun(), [node()]) -> term().
+-spec trans(Id, Fun, Nodes) -> Res | aborted when
+ Id :: id(),
+ Fun :: trans_fun(),
+ Nodes :: [node()],
+ Res :: term().
trans(Id, Fun, Nodes) -> trans(Id, Fun, Nodes, infinity).
--spec trans(id(), trans_fun(), [node()], retries()) -> term().
+-spec trans(Id, Fun, Nodes, Retries) -> Res | aborted when
+ Id :: id(),
+ Fun :: trans_fun(),
+ Nodes :: [node()],
+ Retries :: retries(),
+ Res :: term().
trans(Id, Fun, Nodes, Retries) ->
case set_lock(Id, Nodes, Retries) of
true ->
@@ -1928,7 +1966,10 @@ resolve_it(Method, Name, Pid1, Pid2) ->
minmax(P1,P2) ->
if node(P1) < node(P2) -> {P1, P2}; true -> {P2, P1} end.
--spec random_exit_name(term(), pid(), pid()) -> pid().
+-spec random_exit_name(Name, Pid1, Pid2) -> 'none' when
+ Name :: term(),
+ Pid1 :: pid(),
+ Pid2 :: pid().
random_exit_name(Name, Pid, Pid2) ->
{Min, Max} = minmax(Pid, Pid2),
error_logger:info_msg("global: Name conflict terminating ~w\n",
@@ -1936,12 +1977,19 @@ random_exit_name(Name, Pid, Pid2) ->
exit(Max, kill),
Min.
+-spec random_notify_name(Name, Pid1, Pid2) -> 'none' when
+ Name :: term(),
+ Pid1 :: pid(),
+ Pid2 :: pid().
random_notify_name(Name, Pid, Pid2) ->
{Min, Max} = minmax(Pid, Pid2),
Max ! {global_name_conflict, Name},
Min.
--spec notify_all_name(term(), pid(), pid()) -> 'none'.
+-spec notify_all_name(Name, Pid1, Pid2) -> 'none' when
+ Name :: term(),
+ Pid1 :: pid(),
+ Pid2 :: pid().
notify_all_name(Name, Pid, Pid2) ->
Pid ! {global_name_conflict, Name, Pid2},
Pid2 ! {global_name_conflict, Name, Pid},
diff --git a/lib/kernel/src/global_group.erl b/lib/kernel/src/global_group.erl
index 7e141ac5c7..025a9b8a5b 100644
--- a/lib/kernel/src/global_group.erl
+++ b/lib/kernel/src/global_group.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1998-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1998-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -62,9 +62,10 @@
-type sync_state() :: 'no_conf' | 'synced'.
-type group_name() :: atom().
--type group_tuple() :: {group_name(), [node()]}
- | {group_name(), publish_type(), [node()]}.
-
+-type group_tuple() :: {GroupName :: group_name(), [node()]}
+ | {GroupName :: group_name(),
+ PublishType :: publish_type(),
+ [node()]}.
%%%====================================================================================
%%% The state of the global_group process
@@ -97,11 +98,14 @@
%%% External exported
%%%====================================================================================
--spec global_groups() -> {group_name(), [group_name()]} | 'undefined'.
+-spec global_groups() -> {GroupName, GroupNames} | undefined when
+ GroupName :: group_name(),
+ GroupNames :: [GroupName].
global_groups() ->
request(global_groups).
--spec monitor_nodes(boolean()) -> 'ok'.
+-spec monitor_nodes(Flag) -> 'ok' when
+ Flag :: boolean().
monitor_nodes(Flag) ->
case Flag of
true -> request({monitor_nodes, Flag});
@@ -109,30 +113,41 @@ monitor_nodes(Flag) ->
_ -> {error, not_boolean}
end.
--spec own_nodes() -> [node()].
+-spec own_nodes() -> Nodes when
+ Nodes :: [Node :: node()].
own_nodes() ->
request(own_nodes).
-type name() :: atom().
-type where() :: {'node', node()} | {'group', group_name()}.
--spec registered_names(where()) -> [name()].
+-spec registered_names(Where) -> Names when
+ Where :: where(),
+ Names :: [Name :: name()].
registered_names(Arg) ->
request({registered_names, Arg}).
--spec send(name(), term()) -> pid() | {'badarg', {name(), term()}}.
+-spec send(Name, Msg) -> pid() | {'badarg', {Name, Msg}} when
+ Name :: name(),
+ Msg :: term().
send(Name, Msg) ->
request({send, Name, Msg}).
--spec send(where(), name(), term()) -> pid() | {'badarg', {name(), term()}}.
+-spec send(Where, Name, Msg) -> pid() | {'badarg', {Name, Msg}} when
+ Where :: where(),
+ Name :: name(),
+ Msg :: term().
send(Group, Name, Msg) ->
request({send, Group, Name, Msg}).
--spec whereis_name(name()) -> pid() | 'undefined'.
+-spec whereis_name(Name) -> pid() | 'undefined' when
+ Name :: name().
whereis_name(Name) ->
request({whereis_name, Name}).
--spec whereis_name(where(), name()) -> pid() | 'undefined'.
+-spec whereis_name(Where, Name) -> pid() | 'undefined' when
+ Where :: where(),
+ Name :: name().
whereis_name(Group, Name) ->
request({whereis_name, Group, Name}).
@@ -155,14 +170,14 @@ ng_add_check(Node, OthersNG) ->
ng_add_check(Node, PubType, OthersNG) ->
request({ng_add_check, Node, PubType, OthersNG}).
--type info_item() :: {'state', sync_state()}
- | {'own_group_name', group_name()}
- | {'own_group_nodes', [node()]}
- | {'synched_nodes', [node()]}
- | {'sync_error', [node()]}
- | {'no_contact', [node()]}
- | {'other_groups', [group_tuple()]}
- | {'monitoring', [pid()]}.
+-type info_item() :: {'state', State :: sync_state()}
+ | {'own_group_name', GroupName :: group_name()}
+ | {'own_group_nodes', Nodes :: [node()]}
+ | {'synched_nodes', Nodes :: [node()]}
+ | {'sync_error', Nodes :: [node()]}
+ | {'no_contact', Nodes :: [node()]}
+ | {'other_groups', Groups :: [group_tuple()]}
+ | {'monitoring', Pids :: [pid()]}.
-spec info() -> [info_item()].
info() ->
@@ -1012,6 +1027,7 @@ grp_tuple({Name, normal, Nodes}) ->
%%% The special process which checks that all nodes in the own global group
%%% agrees on the configuration.
%%%====================================================================================
+-spec sync_init(_, _, _, _) -> no_return().
sync_init(Type, Cname, PubType, Nodes) ->
{Up, Down} = sync_check_node(lists:delete(node(), Nodes), [], []),
sync_check_init(Type, Up, Cname, Nodes, Down, PubType).
@@ -1032,9 +1048,11 @@ sync_check_node([Node|Nodes], Up, Down) ->
%%% Check that all nodes are in agreement of the global
%%% group configuration.
%%%-------------------------------------------------------------
+-spec sync_check_init(_, _, _, _, _, _) -> no_return().
sync_check_init(Type, Up, Cname, Nodes, Down, PubType) ->
sync_check_init(Type, Up, Cname, Nodes, 3, [], Down, PubType).
+-spec sync_check_init(_, _, _, _, _, _, _, _) -> no_return().
sync_check_init(_Type, NoContact, _Cname, _Nodes, 0, ErrorNodes, Down, _PubType) ->
case ErrorNodes of
[] ->
diff --git a/lib/kernel/src/global_search.erl b/lib/kernel/src/global_search.erl
index b723e18a1b..0bf53e29b8 100644
--- a/lib/kernel/src/global_search.erl
+++ b/lib/kernel/src/global_search.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1998-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1998-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -69,6 +69,7 @@ start(Flag, Arg) ->
%%%====================================================================================
%%%====================================================================================
+-spec init_send(_) -> no_return().
init_send({any, NodesList, Name, Msg, From}) ->
case whereis_any_loop(NodesList, Name) of
undefined ->
@@ -115,6 +116,7 @@ init_send({node, Node, Name, Msg, From}) ->
%%%====================================================================================
%%%====================================================================================
+-spec init_whereis(_) -> no_return().
init_whereis({any, NodesList, Name, From}) ->
R = whereis_any_loop(NodesList, Name),
gen_server:cast(global_group, {find_name_res, R, self(), From}),
@@ -146,6 +148,7 @@ init_whereis({node, Node, Name, From}) ->
%%%====================================================================================
%%%====================================================================================
%%%====================================================================================
+-spec init_names(_) -> no_return().
init_names({group, Nodes, From}) ->
case names_group_loop(Nodes) of
group_down ->
diff --git a/lib/kernel/src/heart.erl b/lib/kernel/src/heart.erl
index e78acfc7a6..255ae4e51b 100644
--- a/lib/kernel/src/heart.erl
+++ b/lib/kernel/src/heart.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -85,19 +85,21 @@ init(Starter, Parent) ->
Starter ! {start_error, self()}
end.
--spec set_cmd(string()) -> 'ok' | {'error', {'bad_cmd', string()}}.
+-spec set_cmd(Cmd) -> 'ok' | {'error', {'bad_cmd', Cmd}} when
+ Cmd :: string().
set_cmd(Cmd) ->
heart ! {self(), set_cmd, Cmd},
wait().
--spec get_cmd() -> 'ok'.
+-spec get_cmd() -> {ok, Cmd} when
+ Cmd :: string().
get_cmd() ->
heart ! {self(), get_cmd},
wait().
--spec clear_cmd() -> {'ok', string()}.
+-spec clear_cmd() -> ok.
clear_cmd() ->
heart ! {self(), clear_cmd},
diff --git a/lib/kernel/src/inet.erl b/lib/kernel/src/inet.erl
index 327e0f93f1..5649188c38 100644
--- a/lib/kernel/src/inet.erl
+++ b/lib/kernel/src/inet.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -63,7 +63,8 @@
%% timer interface
-export([start_timer/1, timeout/1, timeout/2, stop_timer/1]).
--export_type([ip_address/0, socket/0]).
+-export_type([family_option/0, hostent/0, hostname/0, ip4_address/0,
+ ip6_address/0, ip_address/0, posix/0, socket/0]).
%% imports
-import(lists, [append/1, duplicate/2, filter/2, foldl/3]).
@@ -79,8 +80,16 @@
%%% ---------------------------------
%%% Contract type definitions
+
+-type hostent() :: #hostent{}.
+-type hostname() :: atom() | string().
+-type ip4_address() :: {0..255,0..255,0..255,0..255}.
+-type ip6_address() :: {0..65535,0..65535,0..65535,0..65535,
+ 0..65535,0..65535,0..65535,0..65535}.
+-type ip_address() :: ip4_address() | ip6_address().
+-type ip_port() :: 0..65535.
+-type posix() :: exbadport | exbadseq | file:posix().
-type socket() :: port().
--type posix() :: atom().
-type socket_setopt() ::
{'raw', non_neg_integer(), non_neg_integer(), binary()} |
@@ -106,7 +115,7 @@
{'packet',
0 | 1 | 2 | 4 | 'raw' | 'sunrm' | 'asn1' |
'cdr' | 'fcgi' | 'line' | 'tpkt' | 'http' | 'httph' | 'http_bin' | 'httph_bin' } |
- {'mode', list() | binary()} |
+ {'mode', 'list' | 'binary'} |
{'port', 'port', 'term'} |
{'exit_on_close', boolean()} |
{'low_watermark', non_neg_integer()} |
@@ -195,12 +204,13 @@
%%% ---------------------------------
--spec get_rc() -> [{any(),any()}].
+-spec get_rc() -> [{Par :: any(), Val :: any()}].
get_rc() ->
inet_db:get_rc().
--spec close(Socket :: socket()) -> 'ok'.
+-spec close(Socket) -> 'ok' when
+ Socket :: socket().
close(Socket) ->
prim_inet:close(Socket),
@@ -211,8 +221,10 @@ close(Socket) ->
ok
end.
--spec peername(Socket :: socket()) ->
- {'ok', {ip_address(), non_neg_integer()}} | {'error', posix()}.
+-spec peername(Socket) -> {ok, {Address, Port}} | {error, posix()} when
+ Socket :: socket(),
+ Address :: ip_address(),
+ Port :: non_neg_integer().
peername(Socket) ->
prim_inet:peername(Socket).
@@ -226,8 +238,10 @@ setpeername(Socket, undefined) ->
prim_inet:setpeername(Socket, undefined).
--spec sockname(Socket :: socket()) ->
- {'ok', {ip_address(), non_neg_integer()}} | {'error', posix()}.
+-spec sockname(Socket) -> {ok, {Address, Port}} | {error, posix()} when
+ Socket :: socket(),
+ Address :: ip_address(),
+ Port :: non_neg_integer().
sockname(Socket) ->
prim_inet:sockname(Socket).
@@ -260,8 +274,10 @@ send(Socket, Packet) ->
setopts(Socket, Opts) ->
prim_inet:setopts(Socket, Opts).
--spec getopts(Socket :: socket(), Opts :: [socket_getopt()]) ->
- {'ok', [socket_setopt()]} | {'error', posix()}.
+-spec getopts(Socket, Options) ->
+ {'ok', [socket_setopt()]} | {'error', posix()} when
+ Socket :: socket(),
+ Options :: [socket_getopt()].
getopts(Socket, Opts) ->
prim_inet:getopts(Socket, Opts).
@@ -272,7 +288,19 @@ getopts(Socket, Opts) ->
getifaddrs(Socket) ->
prim_inet:getifaddrs(Socket).
--spec getifaddrs() -> {'ok', [string()]} | {'error', posix()}.
+-spec getifaddrs() -> {ok, Iflist} | {error, posix()} when
+ Iflist :: [{Ifname,[Ifopt]}],
+ Ifname :: string(),
+ Ifopt :: {flag,[Flag]} | {addr,Addr} | {netmask,Netmask}
+ | {broadaddr,Broadaddr} | {dstaddr,Dstaddr}
+ | {hwaddr,Hwaddr},
+ Flag :: up | broadcast | loopback | pointtopoint
+ | running | multicast,
+ Addr :: ip_address(),
+ Netmask :: ip_address(),
+ Broadaddr :: ip_address(),
+ Dstaddr :: ip_address(),
+ Hwaddr :: [byte()].
getifaddrs() ->
withsocket(fun(S) -> prim_inet:getifaddrs(S) end).
@@ -371,7 +399,8 @@ popf(_Socket) ->
% use of the DHCP-protocol
% should never fail
--spec gethostname() -> {'ok', string()}.
+-spec gethostname() -> {'ok', Hostname} when
+ Hostname :: string().
gethostname() ->
case inet_udp:open(0,[]) of
@@ -402,19 +431,23 @@ getstat(Socket) ->
getstat(Socket,What) ->
prim_inet:getstat(Socket, What).
--spec gethostbyname(Name :: string() | atom()) ->
- {'ok', #hostent{}} | {'error', posix()}.
+-spec gethostbyname(Hostname) -> {ok, Hostent} | {error, posix()} when
+ Hostname :: hostname(),
+ Hostent :: hostent().
gethostbyname(Name) ->
gethostbyname_tm(Name, inet, false).
--spec gethostbyname(Name :: string() | atom(), Family :: family_option()) ->
- {'ok', #hostent{}} | {'error', posix()}.
+-spec gethostbyname(Hostname, Family) ->
+ {ok, Hostent} | {error, posix()} when
+ Hostname :: hostname(),
+ Family :: family_option(),
+ Hostent :: hostent().
gethostbyname(Name,Family) ->
gethostbyname_tm(Name, Family, false).
--spec gethostbyname(Name :: string() | atom(),
+-spec gethostbyname(Name :: hostname(),
Family :: family_option(),
Timeout :: non_neg_integer() | 'infinity') ->
{'ok', #hostent{}} | {'error', posix()}.
@@ -439,8 +472,9 @@ gethostbyname_tm(Name,Family,Timer) ->
gethostbyname_tm(Name, Family, Timer, Opts).
--spec gethostbyaddr(Address :: string() | ip_address()) ->
- {'ok', #hostent{}} | {'error', posix()}.
+-spec gethostbyaddr(Address) -> {ok, Hostent} | {error, posix()} when
+ Address :: string() | ip_address(),
+ Hostent :: hostent().
gethostbyaddr(Address) ->
gethostbyaddr_tm(Address, false).
@@ -491,14 +525,15 @@ getfd(Socket) ->
%% Lookup an ip address
%%
--spec getaddr(Host :: ip_address() | string() | atom(),
- Family :: family_option()) ->
- {'ok', ip_address()} | {'error', posix()}.
+-spec getaddr(Host, Family) -> {ok, Address} | {error, posix()} when
+ Host :: ip_address() | hostname(),
+ Family :: family_option(),
+ Address :: ip_address().
getaddr(Address, Family) ->
getaddr(Address, Family, infinity).
--spec getaddr(Host :: ip_address() | string() | atom(),
+-spec getaddr(Host :: ip_address() | hostname(),
Family :: family_option(),
Timeout :: non_neg_integer() | 'infinity') ->
{'ok', ip_address()} | {'error', posix()}.
@@ -515,9 +550,11 @@ getaddr_tm(Address, Family, Timer) ->
Error -> Error
end.
--spec getaddrs(Host :: ip_address() | string() | atom(),
- Family :: family_option()) ->
- {'ok', [ip_address()]} | {'error', posix()}.
+-spec getaddrs(Host, Family) ->
+ {ok, Addresses} | {error, posix()} when
+ Host :: ip_address() | hostname(),
+ Family :: family_option(),
+ Addresses :: [ip_address()].
getaddrs(Address, Family) ->
getaddrs(Address, Family, infinity).
@@ -1237,7 +1274,8 @@ port_list(Name) ->
%% utils
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec format_error(posix()) -> string().
+-spec format_error(Posix) -> string() when
+ Posix :: posix().
format_error(exbadport) -> "invalid port state";
format_error(exbadseq) -> "bad command sequence";
diff --git a/lib/kernel/src/inet_res.erl b/lib/kernel/src/inet_res.erl
index 93563c6011..d5a8a2f134 100644
--- a/lib/kernel/src/inet_res.erl
+++ b/lib/kernel/src/inet_res.erl
@@ -47,18 +47,93 @@
false -> ok
end).
+-type res_option() ::
+ {alt_nameservers, [nameserver()]}
+ | {edns, 0 | false}
+ | {inet6, boolean()}
+ | {nameservers, [nameserver()]}
+ | {recurse, boolean()}
+ | {retry, integer()}
+ | {timeout, integer()}
+ | {udp_payload_size, integer()}
+ | {usevc, boolean()}.
+
+-type nameserver() :: {inet:ip_address(), Port :: 1..65535}.
+
+-type res_error() :: formerr | qfmterror | servfail | nxdomain |
+ notimp | refused | badvers | timeout.
+
+-type dns_name() :: string().
+
+-type rr_type() :: a | aaaa | cname | gid | hinfo | ns | mb | md | mg | mf
+ | minfo | mx | naptr | null | ptr | soa | spf | srv | txt
+ | uid | uinfo | unspec | wks.
+
+-type dns_class() :: in | chaos | hs | any.
+
+-opaque dns_msg() :: term().
+
+-type dns_data() ::
+ dns_name()
+ | inet:ip4_address()
+ | inet:ip6_address()
+ | {MName :: dns_name(),
+ RName :: dns_name(),
+ Serial :: integer(),
+ Refresh :: integer(),
+ Retry :: integer(),
+ Expiry :: integer(),
+ Minimum :: integer()}
+ | {inet:ip4_address(), Proto :: integer(), BitMap :: binary()}
+ | {CpuString :: string(), OsString :: string()}
+ | {RM :: dns_name(), EM :: dns_name()}
+ | {Prio :: integer(), dns_name()}
+ | {Prio :: integer(),Weight :: integer(),Port :: integer(),dns_name()}
+ | {Order :: integer(),Preference :: integer(),Flags :: string(),
+ Services :: string(),Regexp :: string(), dns_name()}
+ | [string()]
+ | binary().
+
%% --------------------------------------------------------------------------
%% resolve:
%%
%% Nameserver query
%%
+-spec resolve(Name, Class, Type) -> {ok, dns_msg()} | Error when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Error :: {error, Reason} | {error,{Reason,dns_msg()}},
+ Reason :: inet:posix() | res_error().
+
resolve(Name, Class, Type) ->
resolve(Name, Class, Type, [], infinity).
+-spec resolve(Name, Class, Type, Opts) ->
+ {ok, dns_msg()} | Error when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Opts :: [Opt],
+ Opt :: res_option() | verbose | atom(),
+ Error :: {error, Reason} | {error,{Reason,dns_msg()}},
+ Reason :: inet:posix() | res_error().
+
resolve(Name, Class, Type, Opts) ->
resolve(Name, Class, Type, Opts, infinity).
+-spec resolve(Name, Class, Type, Opts, Timeout) ->
+ {ok, dns_msg()} | Error when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Opts :: [Opt],
+ Opt :: res_option() | verbose | atom(),
+ Timeout :: timeout(),
+ Error :: {error, Reason} | {error,{Reason,dns_msg()}},
+ Reason :: inet:posix() | res_error().
+
resolve(Name, Class, Type, Opts, Timeout) ->
case nsdname(Name) of
{ok, Nm} ->
@@ -76,12 +151,30 @@ resolve(Name, Class, Type, Opts, Timeout) ->
%% Convenience wrapper to resolve/3,4,5 that filters out all answer data
%% fields of the class and type asked for.
+-spec lookup(Name, Class, Type) -> [dns_data()] when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type().
+
lookup(Name, Class, Type) ->
lookup(Name, Class, Type, []).
+-spec lookup(Name, Class, Type, Opts) -> [dns_data()] when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Opts :: [res_option() | verbose].
+
lookup(Name, Class, Type, Opts) ->
lookup(Name, Class, Type, Opts, infinity).
+-spec lookup(Name, Class, Type, Opts, Timeout) -> [dns_data()] when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Opts :: [res_option() | verbose],
+ Timeout :: timeout().
+
lookup(Name, Class, Type, Opts, Timeout) ->
lookup_filter(resolve(Name, Class, Type, Opts, Timeout),
Class, Type).
@@ -101,17 +194,55 @@ lookup_filter({error,_}, _, _) -> [].
%%
%% To be deprecated
+-spec nslookup(Name, Class, Type) -> {ok, dns_msg()} | {error, Reason} when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Reason :: inet:posix() | res_error().
+
nslookup(Name, Class, Type) ->
do_nslookup(Name, Class, Type, [], infinity).
+-spec nslookup(Name, Class, Type, Timeout) ->
+ {ok, dns_msg()} | {error, Reason} when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Timeout :: timeout(),
+ Reason :: inet:posix() | res_error();
+ (Name, Class, Type, Nameservers) ->
+ {ok, dns_msg()} | {error, Reason} when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Nameservers :: [nameserver()],
+ Reason :: inet:posix() | res_error().
+
nslookup(Name, Class, Type, Timeout) when is_integer(Timeout), Timeout >= 0 ->
do_nslookup(Name, Class, Type, [], Timeout);
nslookup(Name, Class, Type, NSs) -> % For backwards compatibility
nnslookup(Name, Class, Type, NSs). % with OTP R6B only
+-spec nnslookup(Name, Class, Type, Nameservers) ->
+ {ok, dns_msg()} | {error, Reason} when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Nameservers :: [nameserver()],
+ Reason :: inet:posix().
+
nnslookup(Name, Class, Type, NSs) ->
nnslookup(Name, Class, Type, NSs, infinity).
+-spec nnslookup(Name, Class, Type, Nameservers, Timeout) ->
+ {ok, dns_msg()} | {error, Reason} when
+ Name :: dns_name() | inet:ip_address(),
+ Class :: dns_class(),
+ Type :: rr_type(),
+ Timeout :: timeout(),
+ Nameservers :: [nameserver()],
+ Reason :: inet:posix().
+
nnslookup(Name, Class, Type, NSs, Timeout) ->
do_nslookup(Name, Class, Type, [{nameservers,NSs}], Timeout).
@@ -192,8 +323,19 @@ make_options(Opts, [Name|Names]) ->
%%
%% --------------------------------------------------------------------------
+-spec gethostbyaddr(Address) -> {ok, Hostent} | {error, Reason} when
+ Address :: inet:ip_address(),
+ Hostent :: inet:hostent(),
+ Reason :: inet:posix() | res_error().
+
gethostbyaddr(IP) -> gethostbyaddr_tm(IP,false).
+-spec gethostbyaddr(Address, Timeout) -> {ok, Hostent} | {error, Reason} when
+ Address :: inet:ip_address(),
+ Timeout :: timeout(),
+ Hostent :: inet:hostent(),
+ Reason :: inet:posix() | res_error().
+
gethostbyaddr(IP,Timeout) ->
Timer = inet:start_timer(Timeout),
Res = gethostbyaddr_tm(IP,Timer),
@@ -249,6 +391,11 @@ res_gethostbyaddr(Addr, IP, Timer) ->
%% Caches the answer.
%% --------------------------------------------------------------------------
+-spec gethostbyname(Name) -> {ok, Hostent} | {error, Reason} when
+ Name :: dns_name(),
+ Hostent :: inet:hostent(),
+ Reason :: inet:posix() | res_error().
+
gethostbyname(Name) ->
case inet_db:res_option(inet6) of
true ->
@@ -257,9 +404,23 @@ gethostbyname(Name) ->
gethostbyname_tm(Name, inet, false)
end.
+-spec gethostbyname(Name, Family) -> {ok, Hostent} | {error, Reason} when
+ Name :: dns_name(),
+ Hostent :: inet:hostent(),
+ Family :: inet:family_option(),
+ Reason :: inet:posix() | res_error().
+
gethostbyname(Name,Family) ->
gethostbyname_tm(Name,Family,false).
+-spec gethostbyname(Name, Family, Timeout) ->
+ {ok, Hostent} | {error, Reason} when
+ Name :: dns_name(),
+ Hostent :: inet:hostent(),
+ Timeout :: timeout(),
+ Family :: inet:family_option(),
+ Reason :: inet:posix() | res_error().
+
gethostbyname(Name,Family,Timeout) ->
Timer = inet:start_timer(Timeout),
Res = gethostbyname_tm(Name,Family,Timer),
@@ -298,14 +459,27 @@ gethostbyname_tm(_Name, _Family, _Timer) ->
%%
%% getbyname(domain_name(), Type) => {ok, hostent()} | {error, Reason}
%%
-%% where domain_name() is domain string or atom and Type is ?S_A, ?S_MX ...
+%% where domain_name() is domain string and Type is ?S_A, ?S_MX ...
%%
%% Caches the answer.
%% --------------------------------------------------------------------------
+-spec getbyname(Name, Type) -> {ok, Hostent} | {error, Reason} when
+ Name :: dns_name(),
+ Type :: rr_type(),
+ Hostent :: inet:hostent(),
+ Reason :: inet:posix() | res_error().
+
getbyname(Name, Type) ->
getbyname_tm(Name,Type,false).
+-spec getbyname(Name, Type, Timeout) -> {ok, Hostent} | {error, Reason} when
+ Name :: dns_name(),
+ Type :: rr_type(),
+ Timeout :: timeout(),
+ Hostent :: inet:hostent(),
+ Reason :: inet:posix() | res_error().
+
getbyname(Name, Type, Timeout) ->
Timer = inet:start_timer(Timeout),
Res = getbyname_tm(Name, Type, Timer),
diff --git a/lib/kernel/src/inet_udp.erl b/lib/kernel/src/inet_udp.erl
index 9a4089ab19..60bd96f332 100644
--- a/lib/kernel/src/inet_udp.erl
+++ b/lib/kernel/src/inet_udp.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -39,8 +39,10 @@ getserv(Name) when is_atom(Name) -> inet:getservbyname(Name,udp).
getaddr(Address) -> inet:getaddr(Address, inet).
getaddr(Address,Timer) -> inet:getaddr_tm(Address, inet, Timer).
+-spec open(_) -> {ok, inet:socket()} | {error, atom()}.
open(Port) -> open(Port, []).
+-spec open(_, _) -> {ok, inet:socket()} | {error, atom()}.
open(Port, Opts) ->
case inet:udp_options(
[{port,Port}, {recbuf, ?RECBUF} | Opts],
@@ -69,6 +71,8 @@ recv(S,Len) ->
recv(S,Len,Time) ->
prim_inet:recvfrom(S, Len, Time).
+-spec close(inet:socket()) -> ok.
+
close(S) ->
inet:udp_close(S).
diff --git a/lib/kernel/src/net_adm.erl b/lib/kernel/src/net_adm.erl
index 737b1ecee9..9b2dac9544 100644
--- a/lib/kernel/src/net_adm.erl
+++ b/lib/kernel/src/net_adm.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -35,7 +35,11 @@
%% Try to read .hosts.erlang file in
%% 1. cwd , 2. $HOME 3. init:root_dir()
--spec host_file() -> [atom()] | {'error',atom() | {integer(),atom(),_}}.
+-spec host_file() -> Hosts | {error, Reason} when
+ Hosts :: [Host :: atom()],
+ %% Copied from file:path_consult/2:
+ Reason :: file:posix() | badarg | terminated | system_limit
+ | {Line :: integer(), Mod :: module(), Term :: term()}.
host_file() ->
Home = case init:get_argument(home) of
@@ -50,7 +54,8 @@ host_file() ->
%% Check whether a node is up or down
%% side effect: set up a connection to Node if there not yet is one.
--spec ping(atom()) -> 'pang' | 'pong'.
+-spec ping(Node) -> pong | pang when
+ Node :: atom().
ping(Node) when is_atom(Node) ->
case catch gen:call({net_kernel, Node},
@@ -63,7 +68,8 @@ ping(Node) when is_atom(Node) ->
pang
end.
--spec localhost() -> string().
+-spec localhost() -> Name when
+ Name :: string().
localhost() ->
{ok, Host} = inet:gethostname(),
@@ -73,12 +79,20 @@ localhost() ->
end.
--spec names() -> {'ok', [{string(), integer()}]} | {'error', _}.
+-spec names() -> {ok, [{Name, Port}]} | {error, Reason} when
+ Name :: string(),
+ Port :: non_neg_integer(),
+ Reason :: address | file:posix().
names() ->
names(localhost()).
--spec names(atom() | string()) -> {'ok', [{string(), integer()}]} | {'error', _}.
+
+-spec names(Host) -> {ok, [{Name, Port}]} | {error, Reason} when
+ Host :: atom() | string(),
+ Name :: string(),
+ Port :: non_neg_integer(),
+ Reason :: address | file:posix().
names(Hostname) ->
case inet:gethostbyname(Hostname) of
@@ -88,8 +102,9 @@ names(Hostname) ->
Else
end.
--spec dns_hostname(atom() | string()) ->
- {'ok', string()} | {'error', atom() | string()}.
+-spec dns_hostname(Host) -> {ok, Name} | {error, Host} when
+ Host :: atom() | string(),
+ Name :: string().
dns_hostname(Hostname) ->
case inet:gethostbyname(Hostname) of
@@ -164,7 +179,8 @@ collect_new(Sofar, Nodelist) ->
world() ->
world(silent).
--spec world(verbosity()) -> [node()].
+-spec world(Arg) -> [node()] when
+ Arg :: verbosity().
world(Verbose) ->
case net_adm:host_file() of
@@ -172,12 +188,15 @@ world(Verbose) ->
Hosts -> expand_hosts(Hosts, Verbose)
end.
--spec world_list([atom()]) -> [node()].
+-spec world_list(Hosts) -> [node()] when
+ Hosts :: [atom()].
world_list(Hosts) when is_list(Hosts) ->
expand_hosts(Hosts, silent).
--spec world_list([atom()], verbosity()) -> [node()].
+-spec world_list(Hosts, Arg) -> [node()] when
+ Hosts :: [atom()],
+ Arg :: verbosity().
world_list(Hosts, Verbose) when is_list(Hosts) ->
expand_hosts(Hosts, Verbose).
diff --git a/lib/kernel/src/net_kernel.erl b/lib/kernel/src/net_kernel.erl
index 5228d4fe01..9e3d730cee 100644
--- a/lib/kernel/src/net_kernel.erl
+++ b/lib/kernel/src/net_kernel.erl
@@ -145,8 +145,15 @@
%% Interface functions
kernel_apply(M,F,A) -> request({apply,M,F,A}).
+
+-spec allow(Nodes) -> ok | error when
+ Nodes :: [node()].
allow(Nodes) -> request({allow, Nodes}).
+
longnames() -> request(longnames).
+
+-spec stop() -> ok | {error, Reason} when
+ Reason :: not_allowed | not_found.
stop() -> erl_distribution:stop().
node_info(Node) -> get_node_info(Node).
@@ -158,10 +165,28 @@ i(Node) -> print_info(Node).
verbose(Level) when is_integer(Level) ->
request({verbose, Level}).
+-spec set_net_ticktime(NetTicktime, TransitionPeriod) -> Res when
+ NetTicktime :: pos_integer(),
+ TransitionPeriod :: non_neg_integer(),
+ Res :: unchanged
+ | change_initiated
+ | {ongoing_change_to, NewNetTicktime},
+ NewNetTicktime :: pos_integer().
set_net_ticktime(T, TP) when is_integer(T), T > 0, is_integer(TP), TP >= 0 ->
ticktime_res(request({new_ticktime, T*250, TP*1000})).
+
+-spec set_net_ticktime(NetTicktime) -> Res when
+ NetTicktime :: pos_integer(),
+ Res :: unchanged
+ | change_initiated
+ | {ongoing_change_to, NewNetTicktime},
+ NewNetTicktime :: pos_integer().
set_net_ticktime(T) when is_integer(T) ->
set_net_ticktime(T, ?DEFAULT_TRANSITION_PERIOD).
+
+-spec get_net_ticktime() -> Res when
+ Res :: NetTicktime | {ongoing_change_to, NetTicktime} | ignored,
+ NetTicktime :: pos_integer().
get_net_ticktime() ->
ticktime_res(request(ticktime)).
@@ -171,6 +196,9 @@ get_net_ticktime() ->
%% flags (we may want to move it elsewhere later). In order to easily
%% be backward compatible, errors are created here when process_flag()
%% fails.
+-spec monitor_nodes(Flag) -> ok | Error when
+ Flag :: boolean(),
+ Error :: error | {error, term()}.
monitor_nodes(Flag) ->
case catch process_flag(monitor_nodes, Flag) of
true -> ok;
@@ -178,6 +206,13 @@ monitor_nodes(Flag) ->
_ -> mk_monitor_nodes_error(Flag, [])
end.
+-spec monitor_nodes(Flag, Options) -> ok | Error when
+ Flag :: boolean(),
+ Options :: [Option],
+ Option :: {node_type, NodeType}
+ | nodedown_reason,
+ NodeType :: visible | hidden | all,
+ Error :: error | {error, term()}.
monitor_nodes(Flag, Opts) ->
case catch process_flag({monitor_nodes, Opts}, Flag) of
true -> ok;
@@ -209,6 +244,8 @@ publish_on_node(Node) when is_atom(Node) ->
update_publish_nodes(Ns) ->
request({update_publish_nodes, Ns}).
+-spec connect_node(Node) -> boolean() | ignored when
+ Node :: node().
%% explicit connects
connect_node(Node) when is_atom(Node) ->
request({connect, normal, Node}).
diff --git a/lib/kernel/src/os.erl b/lib/kernel/src/os.erl
index d1feae771d..f6769df585 100644
--- a/lib/kernel/src/os.erl
+++ b/lib/kernel/src/os.erl
@@ -24,7 +24,10 @@
-include("file.hrl").
--spec type() -> 'vxworks' | {'unix',atom()} | {'win32',atom()} | {'ose',atom()}.
+-spec type() -> vxworks | {Osfamily, Osname} when
+ Osfamily :: unix | win32,
+ Osname :: atom().
+
type() ->
case erlang:system_info(os_type) of
{vxworks, _} ->
@@ -32,18 +35,27 @@ type() ->
Else -> Else
end.
--spec version() -> string() | {non_neg_integer(),non_neg_integer(),non_neg_integer()}.
+-spec version() -> VersionString | {Major, Minor, Release} when
+ VersionString :: string(),
+ Major :: non_neg_integer(),
+ Minor :: non_neg_integer(),
+ Release :: non_neg_integer().
version() ->
erlang:system_info(os_version).
--spec find_executable(string()) -> string() | 'false'.
+-spec find_executable(Name) -> Filename | 'false' when
+ Name :: string(),
+ Filename :: string().
find_executable(Name) ->
case os:getenv("PATH") of
false -> find_executable(Name, []);
Path -> find_executable(Name, Path)
end.
--spec find_executable(string(), string()) -> string() | 'false'.
+-spec find_executable(Name, Path) -> Filename | 'false' when
+ Name :: string(),
+ Path :: string(),
+ Filename :: string().
find_executable(Name, Path) ->
Extensions = extensions(),
case filename:pathtype(Name) of
@@ -147,7 +159,8 @@ extensions() ->
end.
%% Executes the given command in the default shell for the operating system.
--spec cmd(atom() | string() | [string()]) -> string().
+-spec cmd(Command) -> string() when
+ Command :: atom() | io_lib:chars().
cmd(Cmd) ->
validate(Cmd),
case type() of
diff --git a/lib/kernel/src/pg2.erl b/lib/kernel/src/pg2.erl
index 956a900adc..0d5838716e 100644
--- a/lib/kernel/src/pg2.erl
+++ b/lib/kernel/src/pg2.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -30,17 +30,19 @@
%%% Exported functions
%%%
--spec start_link() -> {'ok', pid()} | {'error', term()}.
+-spec start_link() -> {'ok', pid()} | {'error', any()}.
start_link() ->
gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
--spec start() -> {'ok', pid()} | {'error', term()}.
+-spec start() -> {'ok', pid()} | {'error', any()}.
start() ->
ensure_started().
--spec create(term()) -> 'ok'.
+-type name() :: any().
+
+-spec create(Name :: name()) -> 'ok'.
create(Name) ->
ensure_started(),
@@ -55,9 +57,7 @@ create(Name) ->
ok
end.
--type name() :: term().
-
--spec delete(name()) -> 'ok'.
+-spec delete(Name :: name()) -> 'ok'.
delete(Name) ->
ensure_started(),
@@ -67,7 +67,8 @@ delete(Name) ->
end),
ok.
--spec join(name(), pid()) -> 'ok' | {'error', {'no_such_group', term()}}.
+-spec join(Name, Pid :: pid()) -> 'ok' | {'error', {'no_such_group', Name}}
+ when Name :: name().
join(Name, Pid) when is_pid(Pid) ->
ensure_started(),
@@ -83,7 +84,8 @@ join(Name, Pid) when is_pid(Pid) ->
ok
end.
--spec leave(name(), pid()) -> 'ok' | {'error', {'no_such_group', name()}}.
+-spec leave(Name, Pid :: pid()) -> 'ok' | {'error', {'no_such_group', Name}}
+ when Name :: name().
leave(Name, Pid) when is_pid(Pid) ->
ensure_started(),
@@ -99,10 +101,9 @@ leave(Name, Pid) when is_pid(Pid) ->
ok
end.
--type get_members_ret() :: [pid()] | {'error', {'no_such_group', name()}}.
+-spec get_members(Name) -> [pid()] | {'error', {'no_such_group', Name}}
+ when Name :: name().
--spec get_members(name()) -> get_members_ret().
-
get_members(Name) ->
ensure_started(),
case ets:member(pg2_table, {group, Name}) of
@@ -112,7 +113,8 @@ get_members(Name) ->
{error, {no_such_group, Name}}
end.
--spec get_local_members(name()) -> get_members_ret().
+-spec get_local_members(Name) -> [pid()] | {'error', {'no_such_group', Name}}
+ when Name :: name().
get_local_members(Name) ->
ensure_started(),
@@ -123,15 +125,15 @@ get_local_members(Name) ->
{error, {no_such_group, Name}}
end.
--spec which_groups() -> [name()].
+-spec which_groups() -> [Name :: name()].
which_groups() ->
ensure_started(),
all_groups().
--type gcp_error_reason() :: {'no_process', term()} | {'no_such_group', term()}.
-
--spec get_closest_pid(term()) -> pid() | {'error', gcp_error_reason()}.
+-spec get_closest_pid(Name) -> pid() | {'error', Reason} when
+ Name :: name(),
+ Reason :: {'no_process', Name} | {'no_such_group', Name}.
get_closest_pid(Name) ->
case get_local_members(Name) of
@@ -157,7 +159,9 @@ get_closest_pid(Name) ->
-record(state, {}).
--spec init([]) -> {'ok', #state{}}.
+-opaque state() :: #state{}.
+
+-spec init(Arg :: []) -> {'ok', state()}.
init([]) ->
Ns = nodes(),
@@ -169,13 +173,13 @@ init([]) ->
pg2_table = ets:new(pg2_table, [ordered_set, protected, named_table]),
{ok, #state{}}.
--type call() :: {'create', name()}
- | {'delete', name()}
- | {'join', name(), pid()}
- | {'leave', name(), pid()}.
-
--spec handle_call(call(), _, #state{}) ->
- {'reply', 'ok', #state{}}.
+-spec handle_call(Call :: {'create', Name}
+ | {'delete', Name}
+ | {'join', Name, Pid :: pid()}
+ | {'leave', Name, Pid :: pid()},
+ From :: {pid(),Tag :: any()},
+ State :: state()) -> {'reply', 'ok', state()}
+ when Name :: name().
handle_call({create, Name}, _From, S) ->
assure_group(Name),
@@ -195,11 +199,10 @@ handle_call(Request, From, S) ->
[Request, From]),
{noreply, S}.
--type all_members() :: [[name(),...]].
--type cast() :: {'exchange', node(), all_members()}
- | {'del_member', name(), pid()}.
-
--spec handle_cast(cast(), #state{}) -> {'noreply', #state{}}.
+-spec handle_cast(Cast :: {'exchange', node(), Names :: [[Name,...]]}
+ | {'del_member', Name, Pid :: pid()},
+ State :: state()) -> {'noreply', state()}
+ when Name :: name().
handle_cast({exchange, _Node, List}, S) ->
store(List),
@@ -208,7 +211,8 @@ handle_cast(_, S) ->
%% Ignore {del_member, Name, Pid}.
{noreply, S}.
--spec handle_info(tuple(), #state{}) -> {'noreply', #state{}}.
+-spec handle_info(Tuple :: tuple(), State :: state()) ->
+ {'noreply', state()}.
handle_info({'DOWN', MonitorRef, process, _Pid, _Info}, S) ->
member_died(MonitorRef),
@@ -222,7 +226,7 @@ handle_info({new_pg2, Node}, S) ->
handle_info(_, S) ->
{noreply, S}.
--spec terminate(term(), #state{}) -> 'ok'.
+-spec terminate(Reason :: any(), State :: state()) -> 'ok'.
terminate(_Reason, _S) ->
true = ets:delete(pg2_table),
diff --git a/lib/kernel/src/rpc.erl b/lib/kernel/src/rpc.erl
index e09acb5024..be35f99ed2 100644
--- a/lib/kernel/src/rpc.erl
+++ b/lib/kernel/src/rpc.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -263,14 +263,28 @@ proxy_user_flush() ->
%% THE rpc client interface
--spec call(node(), atom(), atom(), [term()]) -> term().
+-spec call(Node, Module, Function, Args) -> Res | {badrpc, Reason} when
+ Node :: node(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Res :: term(),
+ Reason :: term().
call(N,M,F,A) when node() =:= N -> %% Optimize local call
local_call(M, F, A);
call(N,M,F,A) ->
do_call(N, {call,M,F,A,group_leader()}, infinity).
--spec call(node(), atom(), atom(), [term()], timeout()) -> term().
+-spec call(Node, Module, Function, Args, Timeout) ->
+ Res | {badrpc, Reason} when
+ Node :: node(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Res :: term(),
+ Reason :: term(),
+ Timeout :: timeout().
call(N,M,F,A,_Timeout) when node() =:= N -> %% Optimize local call
local_call(M,F,A);
@@ -279,14 +293,28 @@ call(N,M,F,A,infinity) ->
call(N,M,F,A,Timeout) when is_integer(Timeout), Timeout >= 0 ->
do_call(N, {call,M,F,A,group_leader()}, Timeout).
--spec block_call(node(), atom(), atom(), [term()]) -> term().
+-spec block_call(Node, Module, Function, Args) -> Res | {badrpc, Reason} when
+ Node :: node(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Res :: term(),
+ Reason :: term().
block_call(N,M,F,A) when node() =:= N -> %% Optimize local call
local_call(M,F,A);
block_call(N,M,F,A) ->
do_call(N, {block_call,M,F,A,group_leader()}, infinity).
--spec block_call(node(), atom(), atom(), [term()], timeout()) -> term().
+-spec block_call(Node, Module, Function, Args, Timeout) ->
+ Res | {badrpc, Reason} when
+ Node :: node(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Res :: term(),
+ Reason :: term(),
+ Timeout :: timeout().
block_call(N,M,F,A,_Timeout) when node() =:= N -> %% Optimize local call
local_call(M, F, A);
@@ -339,7 +367,13 @@ rpc_check(X) -> X.
%% The entire call is packed into an atomic transaction which
%% either succeeds or fails, i.e. never hangs (unless the server itself hangs).
--spec server_call(node(), atom(), term(), term()) -> term() | {'error', 'nodedown'}.
+-spec server_call(Node, Name, ReplyWrapper, Msg) -> Reply | {error, Reason} when
+ Node :: node(),
+ Name :: atom(),
+ ReplyWrapper :: term(),
+ Msg :: term(),
+ Reply :: term(),
+ Reason :: nodedown.
server_call(Node, Name, ReplyWrapper, Msg)
when is_atom(Node), is_atom(Name) ->
@@ -362,7 +396,11 @@ server_call(Node, Name, ReplyWrapper, Msg)
end
end.
--spec cast(node(), atom(), atom(), [term()]) -> 'true'.
+-spec cast(Node, Module, Function, Args) -> true when
+ Node :: node(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()].
cast(Node, Mod, Fun, Args) when Node =:= node() ->
catch spawn(Mod, Fun, Args),
@@ -373,12 +411,17 @@ cast(Node, Mod, Fun, Args) ->
%% Asynchronous broadcast, returns nothing, it's just send'n prey
--spec abcast(atom(), term()) -> 'abcast'.
+-spec abcast(Name, Msg) -> abcast when
+ Name :: atom(),
+ Msg :: term().
abcast(Name, Mess) ->
abcast([node() | nodes()], Name, Mess).
--spec abcast([node()], atom(), term()) -> 'abcast'.
+-spec abcast(Nodes, Name, Msg) -> abcast when
+ Nodes :: [node()],
+ Name :: atom(),
+ Msg :: term().
abcast([Node|Tail], Name, Mess) ->
Dest = {Name,Node},
@@ -396,23 +439,39 @@ abcast([], _,_) -> abcast.
%% message when we return from the call, we can't know that they have
%% processed the message though.
--spec sbcast(atom(), term()) -> {[node()], [node()]}.
+-spec sbcast(Name, Msg) -> {GoodNodes, BadNodes} when
+ Name :: atom(),
+ Msg :: term(),
+ GoodNodes :: [node()],
+ BadNodes :: [node()].
sbcast(Name, Mess) ->
sbcast([node() | nodes()], Name, Mess).
--spec sbcast([node()], atom(), term()) -> {[node()], [node()]}.
+-spec sbcast(Nodes, Name, Msg) -> {GoodNodes, BadNodes} when
+ Name :: atom(),
+ Msg :: term(),
+ Nodes :: [node()],
+ GoodNodes :: [node()],
+ BadNodes :: [node()].
sbcast(Nodes, Name, Mess) ->
Monitors = send_nodes(Nodes, ?NAME, {sbcast, Name, Mess}, []),
rec_nodes(?NAME, Monitors).
--spec eval_everywhere(atom(), atom(), [term()]) -> 'abcast'.
+-spec eval_everywhere(Module, Function, Args) -> abcast when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()].
eval_everywhere(Mod, Fun, Args) ->
eval_everywhere([node() | nodes()] , Mod, Fun, Args).
--spec eval_everywhere([node()], atom(), atom(), [term()]) -> 'abcast'.
+-spec eval_everywhere(Nodes, Module, Function, Args) -> abcast when
+ Nodes :: [node()],
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()].
eval_everywhere(Nodes, Mod, Fun, Args) ->
gen_server:abcast(Nodes, ?NAME, {cast,Mod,Fun,Args,group_leader()}).
@@ -453,20 +512,45 @@ unmonitor(Ref) when is_reference(Ref) ->
%% Call apply(M,F,A) on all nodes in parallel
--spec multicall(atom(), atom(), [term()]) -> {[_], [node()]}.
+-spec multicall(Module, Function, Args) -> {ResL, BadNodes} when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ ResL :: [term()],
+ BadNodes :: [node()].
multicall(M, F, A) ->
multicall(M, F, A, infinity).
--spec multicall([node()], atom(), atom(), [term()]) -> {[_], [node()]}
- ; (atom(), atom(), [term()], timeout()) -> {[_], [node()]}.
+-spec multicall(Nodes, Module, Function, Args) -> {ResL, BadNodes} when
+ Nodes :: [node()],
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ ResL :: [term()],
+ BadNodes :: [node()];
+ (Module, Function, Args, Timeout) -> {ResL, BadNodes} when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Timeout :: timeout(),
+ ResL :: [term()],
+ BadNodes :: [node()].
multicall(Nodes, M, F, A) when is_list(Nodes) ->
multicall(Nodes, M, F, A, infinity);
multicall(M, F, A, Timeout) ->
multicall([node() | nodes()], M, F, A, Timeout).
--spec multicall([node()], atom(), atom(), [term()], timeout()) -> {[_], [node()]}.
+-spec multicall(Nodes, Module, Function, Args, Timeout) ->
+ {ResL, BadNodes} when
+ Nodes :: [node()],
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Timeout :: timeout(),
+ ResL :: [term()],
+ BadNodes :: [node()].
multicall(Nodes, M, F, A, infinity)
when is_list(Nodes), is_atom(M), is_atom(F), is_list(A) ->
@@ -495,12 +579,21 @@ do_multicall(Nodes, M, F, A, Timeout) ->
%%
%% There is no apparent order among the replies.
--spec multi_server_call(atom(), term()) -> {[_], [node()]}.
+-spec multi_server_call(Name, Msg) -> {Replies, BadNodes} when
+ Name :: atom(),
+ Msg :: term(),
+ Replies :: [Reply :: term()],
+ BadNodes :: [node()].
multi_server_call(Name, Msg) ->
multi_server_call([node() | nodes()], Name, Msg).
--spec multi_server_call([node()], atom(), term()) -> {[_], [node()]}.
+-spec multi_server_call(Nodes, Name, Msg) -> {Replies, BadNodes} when
+ Nodes :: [node()],
+ Name :: atom(),
+ Msg :: term(),
+ Replies :: [Reply :: term()],
+ BadNodes :: [node()].
multi_server_call(Nodes, Name, Msg)
when is_list(Nodes), is_atom(Name) ->
@@ -509,9 +602,22 @@ multi_server_call(Nodes, Name, Msg)
%% Deprecated functions. Were only needed when communicating with R6 nodes.
+-spec safe_multi_server_call(Name, Msg) -> {Replies, BadNodes} when
+ Name :: atom(),
+ Msg :: term(),
+ Replies :: [Reply :: term()],
+ BadNodes :: [node()].
+
safe_multi_server_call(Name, Msg) ->
multi_server_call(Name, Msg).
+-spec safe_multi_server_call(Nodes, Name, Msg) -> {Replies, BadNodes} when
+ Nodes :: [node()],
+ Name :: atom(),
+ Msg :: term(),
+ Replies :: [Reply :: term()],
+ BadNodes :: [node()].
+
safe_multi_server_call(Nodes, Name, Msg) ->
multi_server_call(Nodes, Name, Msg).
@@ -539,7 +645,14 @@ rec_nodes(Name, [{N,R} | Tail], Badnodes, Replies) ->
%% rpc's towards the same node. I.e. it returns immediately and
%% it returns a Key that can be used in a subsequent yield(Key).
--spec async_call(node(), atom(), atom(), [term()]) -> pid().
+-opaque key() :: pid().
+
+-spec async_call(Node, Module, Function, Args) -> Key when
+ Node :: node(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Key :: key().
async_call(Node, Mod, Fun, Args) ->
ReplyTo = self(),
@@ -549,20 +662,27 @@ async_call(Node, Mod, Fun, Args) ->
ReplyTo ! {self(), {promise_reply, R}} %% self() is key
end).
--spec yield(pid()) -> term().
+-spec yield(Key) -> {value, Val} | timeout when
+ Key :: key(),
+ Val :: (Res :: term()) | {badrpc, Reason :: term()}.
yield(Key) when is_pid(Key) ->
{value,R} = do_yield(Key, infinity),
R.
--spec nb_yield(pid(), timeout()) -> {'value', _} | 'timeout'.
+-spec nb_yield(Key, Timeout) -> {value, Val} | timeout when
+ Key :: key(),
+ Timeout :: timeout(),
+ Val :: (Res :: term()) | {badrpc, Reason :: term()}.
nb_yield(Key, infinity=Inf) when is_pid(Key) ->
do_yield(Key, Inf);
nb_yield(Key, Timeout) when is_pid(Key), is_integer(Timeout), Timeout >= 0 ->
do_yield(Key, Timeout).
--spec nb_yield(pid()) -> {'value', _} | 'timeout'.
+-spec nb_yield(Key) -> {value, Val} | timeout when
+ Key :: key(),
+ Val :: (Res :: term()) | {badrpc, Reason :: term()}.
nb_yield(Key) when is_pid(Key) ->
do_yield(Key, 0).
@@ -582,7 +702,12 @@ do_yield(Key, Timeout) ->
%% ArgL === [{M,F,Args},........]
%% Returns a lists of the evaluations in the same order as
%% given to ArgL
--spec parallel_eval([{atom(), atom(), [_]}]) -> [_].
+-spec parallel_eval(FuncCalls) -> ResL when
+ FuncCalls :: [{Module, Function, Args}],
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ ResL :: [term()].
parallel_eval(ArgL) ->
Nodes = [node() | nodes()],
@@ -599,7 +724,13 @@ map_nodes([{M,F,A}|Tail],[Node|MoreNodes], Original) ->
%% Parallel version of lists:map/3 with exactly the same
%% arguments and return value as lists:map/3,
%% except that it calls exit/1 if a network error occurs.
--spec pmap({atom(),atom()}, [term()], [term()]) -> [term()].
+-spec pmap(FuncSpec, ExtraArgs, List1) -> List2 when
+ FuncSpec :: {Module,Function},
+ Module :: module(),
+ Function :: atom(),
+ ExtraArgs :: [term()],
+ List1 :: [Elem :: term()],
+ List2 :: [term()].
pmap({M,F}, As, List) ->
check(parallel_eval(build_args(M,F,As, List, [])), []).
@@ -616,15 +747,20 @@ check([], Ack) -> Ack.
%% location transparent version of process_info
--spec pinfo(pid()) -> [{atom(), _}] | 'undefined'.
+-spec pinfo(Pid) -> [{Item, Info}] | undefined when
+ Pid :: pid(),
+ Item :: atom(),
+ Info :: term().
pinfo(Pid) when node(Pid) =:= node() ->
process_info(Pid);
pinfo(Pid) ->
call(node(Pid), erlang, process_info, [Pid]).
--spec pinfo(pid(), Item) -> {Item, _} | 'undefined' | []
- when is_subtype(Item, atom()).
+-spec pinfo(Pid, Item) -> {Item, Info} | undefined | [] when
+ Pid :: pid(),
+ Item :: atom(),
+ Info :: term().
pinfo(Pid, Item) when node(Pid) =:= node() ->
process_info(Pid, Item);
diff --git a/lib/kernel/src/seq_trace.erl b/lib/kernel/src/seq_trace.erl
index 78c3040f21..ea5da2de1c 100644
--- a/lib/kernel/src/seq_trace.erl
+++ b/lib/kernel/src/seq_trace.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1998-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1998-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -38,15 +38,17 @@
-type flag() :: 'send' | 'receive' | 'print' | 'timestamp'.
-type component() :: 'label' | 'serial' | flag().
--type value() :: non_neg_integer()
- | {non_neg_integer(), non_neg_integer()}
- | boolean().
--type token_pair() :: {component(), value()}.
+-type value() :: (Integer :: non_neg_integer())
+ | {Previous :: non_neg_integer(),
+ Current :: non_neg_integer()}
+ | (Bool :: boolean()).
%%---------------------------------------------------------------------------
--type token() :: [] | {integer(), boolean(), _, _, _}.
--spec set_token(token()) -> token() | 'ok'.
+-opaque token() :: {integer(), boolean(), _, _, _}.
+-spec set_token(Token) -> PreviousToken | 'ok' when
+ Token :: [] | token(),
+ PreviousToken :: [] | token().
set_token([]) ->
erlang:seq_trace(sequential_trace_token,[]);
@@ -58,28 +60,35 @@ set_token({Flags,Label,Serial,_From,Lastcnt}) ->
%% expects that, the BIF can however "unofficially" handle atoms as well, and
%% atoms can be used if only Erlang nodes are involved
--spec set_token(component(), value()) -> token_pair().
+-spec set_token(Component, Val) -> {Component, OldVal} when
+ Component :: component(),
+ Val :: value(),
+ OldVal :: value().
set_token(Type, Val) ->
erlang:seq_trace(Type, Val).
--spec get_token() -> term().
+-spec get_token() -> [] | token().
get_token() ->
element(2,process_info(self(),sequential_trace_token)).
--spec get_token(component()) -> token_pair().
-
+-spec get_token(Component) -> {Component, Val} when
+ Component :: component(),
+ Val :: value().
get_token(Type) ->
erlang:seq_trace_info(Type).
--spec print(term()) -> 'ok'.
+-spec print(TraceInfo) -> 'ok' when
+ TraceInfo :: term().
print(Term) ->
erlang:seq_trace_print(Term),
ok.
--spec print(integer(), term()) -> 'ok'.
+-spec print(Label, TraceInfo) -> 'ok' when
+ Label :: integer(),
+ TraceInfo :: term().
print(Label, Term) when is_atom(Label) ->
erlang:error(badarg, [Label, Term]);
@@ -94,14 +103,17 @@ reset_trace() ->
%% reset_trace(Pid) -> % this might be a useful function too
--type tracer() :: pid() | port() | 'false'.
+-type tracer() :: (Pid :: pid()) | port() | 'false'.
--spec set_system_tracer(tracer()) -> tracer().
+-spec set_system_tracer(Tracer) -> OldTracer when
+ Tracer :: tracer(),
+ OldTracer :: tracer().
set_system_tracer(Pid) ->
erlang:system_flag(sequential_tracer, Pid).
--spec get_system_tracer() -> tracer().
+-spec get_system_tracer() -> Tracer when
+ Tracer :: tracer().
get_system_tracer() ->
element(2, erlang:system_info(sequential_tracer)).
diff --git a/lib/kernel/src/wrap_log_reader.erl b/lib/kernel/src/wrap_log_reader.erl
index fabaa07752..c41e0091e4 100644
--- a/lib/kernel/src/wrap_log_reader.erl
+++ b/lib/kernel/src/wrap_log_reader.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1998-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1998-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -41,6 +41,8 @@
first_no :: non_neg_integer() | 'one' % first read file number
}).
+-opaque continuation() :: #wrap_reader{}.
+
%%
%% Exported functions
%%
@@ -50,9 +52,11 @@
%% is not yet reached, we are on the first 'round' of filling the wrap
%% files.
--type open_ret() :: {'ok', #wrap_reader{}} | {'error', tuple()}.
+-type open_ret() :: {'ok', Continuation :: continuation()}
+ | {'error', Reason :: tuple()}.
--spec open(atom() | string()) -> open_ret().
+-spec open(Filename) -> open_ret() when
+ Filename :: string() | atom().
open(File) when is_atom(File) ->
open(atom_to_list(File));
@@ -77,7 +81,9 @@ open(File) when is_list(File) ->
Error
end.
--spec open(atom() | string(), integer()) -> open_ret().
+-spec open(Filename, N) -> open_ret() when
+ Filename :: string() | atom(),
+ N :: integer().
open(File, FileNo) when is_atom(File), is_integer(FileNo) ->
open(atom_to_list(File), FileNo);
@@ -100,22 +106,29 @@ open(File, FileNo) when is_list(File), is_integer(FileNo) ->
Error
end.
--spec close(#wrap_reader{}) -> 'ok' | {'error', atom()}.
+-spec close(Continuation) -> 'ok' | {'error', Reason} when
+ Continuation :: continuation(),
+ Reason :: file:posix().
close(#wrap_reader{fd = FD}) ->
file:close(FD).
--type chunk_ret() :: {#wrap_reader{}, [term()]}
- | {#wrap_reader{}, [term()], non_neg_integer()}
- | {#wrap_reader{}, 'eof'}
- | {'error', term()}.
+-type chunk_ret() :: {Continuation2, Terms :: [term()]}
+ | {Continuation2,
+ Terms :: [term()],
+ Badbytes :: non_neg_integer()}
+ | {Continuation2, 'eof'}
+ | {'error', Reason :: term()}.
--spec chunk(#wrap_reader{}) -> chunk_ret().
+-spec chunk(Continuation) -> chunk_ret() when
+ Continuation :: continuation().
chunk(WR = #wrap_reader{}) ->
chunk(WR, ?MAX_CHUNK_SIZE, 0).
--spec chunk(#wrap_reader{}, 'infinity' | pos_integer()) -> chunk_ret().
+-spec chunk(Continuation, N) -> chunk_ret() when
+ Continuation :: continuation(),
+ N :: infinity | pos_integer().
chunk(WR = #wrap_reader{}, infinity) ->
chunk(WR, ?MAX_CHUNK_SIZE, 0);
diff --git a/lib/mnesia/doc/src/notes.xml b/lib/mnesia/doc/src/notes.xml
index 19574a1434..f1c362261a 100644
--- a/lib/mnesia/doc/src/notes.xml
+++ b/lib/mnesia/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/mnesia/src/mnesia_dumper.erl b/lib/mnesia/src/mnesia_dumper.erl
index 9a0a2c4dcc..92fd9dfade 100644
--- a/lib/mnesia/src/mnesia_dumper.erl
+++ b/lib/mnesia/src/mnesia_dumper.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -871,7 +871,11 @@ insert_op(Tid, _, {op, add_index, Pos, TabDef}, InPlace, InitBy) ->
startup ->
ignore;
_ ->
- mnesia_index:init_indecies(Tab, Storage, [Pos])
+ case val({Tab,where_to_read}) of
+ nowhere -> ignore;
+ _ ->
+ mnesia_index:init_indecies(Tab, Storage, [Pos])
+ end
end;
insert_op(Tid, _, {op, del_index, Pos, TabDef}, InPlace, InitBy) ->
diff --git a/lib/mnesia/src/mnesia_schema.erl b/lib/mnesia/src/mnesia_schema.erl
index 360da8a17d..fef72ad39c 100644
--- a/lib/mnesia/src/mnesia_schema.erl
+++ b/lib/mnesia/src/mnesia_schema.erl
@@ -1785,7 +1785,10 @@ prepare_op(_Tid, {op, announce_im_running, Node, SchemaDef, Running, RemoteRunni
Node == node() -> %% Announce has already run on local node
ignore; %% from do_merge_schema
true ->
- NewNodes = mnesia_lib:uniq(Running++RemoteRunning) -- val({current,db_nodes}),
+ %% If a node has restarted it may still linger in db_nodes,
+ %% but have been removed from recover_nodes
+ Current = mnesia_lib:intersect(val({current,db_nodes}), [node()|val(recover_nodes)]),
+ NewNodes = mnesia_lib:uniq(Running++RemoteRunning) -- Current,
mnesia_lib:set(prepare_op, {announce_im_running,NewNodes}),
announce_im_running(NewNodes, SchemaCs)
end,
diff --git a/lib/mnesia/test/.gitignore b/lib/mnesia/test/.gitignore
new file mode 100644
index 0000000000..1e9a9933ed
--- /dev/null
+++ b/lib/mnesia/test/.gitignore
@@ -0,0 +1,9 @@
+
+
+# Test generates
+MnesiaCore*
+Mnesia.*
+
+tempfile*
+mnesia_test_case_info
+test_log* \ No newline at end of file
diff --git a/lib/mnesia/test/mnesia_durability_test.erl b/lib/mnesia/test/mnesia_durability_test.erl
index 55205d1222..2fee72f066 100644
--- a/lib/mnesia/test/mnesia_durability_test.erl
+++ b/lib/mnesia/test/mnesia_durability_test.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -119,8 +119,8 @@ load_latest_data(Config) when is_list(Config) ->
?match([], mnesia_test_lib:kill_mnesia([N2])),
?match(ok, mnesia:dirty_write(Rec1)),
- ?match([], mnesia_test_lib:kill_mnesia([N1])),
?match([], mnesia_test_lib:kill_mnesia([N3])),
+ ?match([], mnesia_test_lib:kill_mnesia([N1])),
?match([], mnesia_test_lib:start_mnesia([N2], [])),
%% Should wait for N1
diff --git a/lib/mnesia/test/mnesia_qlc_test.erl b/lib/mnesia/test/mnesia_qlc_test.erl
index 141de71d01..5f46840ae9 100644
--- a/lib/mnesia/test/mnesia_qlc_test.erl
+++ b/lib/mnesia/test/mnesia_qlc_test.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2004-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -70,6 +70,7 @@ init_testcases(Type,Config) ->
end,
All = fun() -> [Write(Id) || Id <- lists:seq(1,10)], ok end,
?match({atomic, ok}, mnesia:sync_transaction(All)),
+ ?match({atomic, [{b, {b,100-1}, 1}]}, mnesia:transaction(fun() -> mnesia:read({b, {b, 99}}) end)),
Nodes.
%% Test cases
diff --git a/lib/mnesia/test/mnesia_test_lib.erl b/lib/mnesia/test/mnesia_test_lib.erl
index 182c240084..9da45975d5 100644
--- a/lib/mnesia/test/mnesia_test_lib.erl
+++ b/lib/mnesia/test/mnesia_test_lib.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -413,32 +413,28 @@ test_driver([T|TestCases], Config) ->
[L1|L2];
test_driver({Module, TestCases}, Config) when is_list(TestCases)->
test_driver(default_module(Module, TestCases), Config);
-test_driver({_, {Module, TestCase}}, Config) ->
- test_driver({Module, TestCase}, Config);
+test_driver({Module, all}, Config) ->
+ get_suite(Module, all, Config);
+test_driver({Module, G={group, _}}, Config) ->
+ get_suite(Module, G, Config);
+test_driver({_, {group, Module, Group}}, Config) ->
+ get_suite(Module, {group, Group}, Config);
+
test_driver({Module, TestCase}, Config) ->
Sec = timer:seconds(1) * 1000,
- case get_suite(Module, TestCase) of
- [] when Config == suite ->
+ case Config of
+ suite ->
{Module, TestCase, 'IMPL'};
- [] ->
+ _ ->
log("Eval test case: ~w~n", [{Module, TestCase}]),
- {T, Res} =
- timer:tc(?MODULE, eval_test_case, [Module, TestCase, Config]),
- log("Tested ~w in ~w sec~n", [TestCase, T div Sec]),
- {T div Sec, Res};
- Suite when is_list(Suite), Config == suite ->
- Res = test_driver(default_module(Module, Suite), Config),
- {{Module, TestCase}, Res};
- Suite when is_list(Suite) ->
- log("Expand test case ~w~n", [{Module, TestCase}]),
- Def = default_module(Module, Suite),
- {T, Res} = timer:tc(?MODULE, test_driver, [Def, Config]),
- {T div Sec, {{Module, TestCase}, Res}};
- 'NYI' when Config == suite ->
- {Module, TestCase, 'NYI'};
- 'NYI' ->
- log("<WARNING> Test case ~w NYI~n", [{Module, TestCase}]),
- {0, {skip, {Module, TestCase}, "NYI"}}
+ try timer:tc(?MODULE, eval_test_case, [Module, TestCase, Config]) of
+ {T, Res} ->
+ log("Tested ~w in ~w sec~n", [TestCase, T div Sec]),
+ {T div Sec, Res}
+ catch error:function_clause ->
+ log("<WARNING> Test case ~w NYI~n", [{Module, TestCase}]),
+ {0, {skip, {Module, TestCase}, "NYI"}}
+ end
end;
test_driver(TestCase, Config) ->
DefaultModule = mnesia_SUITE,
@@ -449,18 +445,50 @@ test_driver(TestCase, Config) ->
default_module(DefaultModule, TestCases) when is_list(TestCases) ->
Fun = fun(T) ->
case T of
+ {group, _} -> {true, {DefaultModule, T}};
{_, _} -> true;
T -> {true, {DefaultModule, T}}
end
end,
lists:zf(Fun, TestCases).
+get_suite(Module, TestCase, Config) ->
+ case get_suite(Module, TestCase) of
+ Suite when is_list(Suite), Config == suite ->
+ Res = test_driver(default_module(Module, Suite), Config),
+ {{Module, TestCase}, Res};
+ Suite when is_list(Suite) ->
+ log("Expand test case ~w~n", [{Module, TestCase}]),
+ Def = default_module(Module, Suite),
+ {T, Res} = timer:tc(?MODULE, test_driver, [Def, Config]),
+ Sec = timer:seconds(1) * 1000,
+ {T div Sec, {{Module, TestCase}, Res}};
+ 'NYI' when Config == suite ->
+ {Module, TestCase, 'NYI'};
+ 'NYI' ->
+ log("<WARNING> Test case ~w NYI~n", [{Module, TestCase}]),
+ {0, {skip, {Module, TestCase}, "NYI"}}
+ end.
+
%% Returns a list (possibly empty) or the atom 'NYI'
-get_suite(Mod, Fun) ->
- case catch (apply(Mod, Fun, [suite])) of
+get_suite(Mod, {group, Suite}) ->
+ try
+ Groups = Mod:groups(),
+ {_, _, TCList} = lists:keyfind(Suite, 1, Groups),
+ TCList
+ catch
+ _:Reason ->
+ io:format("Not implemented ~p ~p (~p ~p)~n",
+ [Mod,Suite,Reason, erlang:get_stacktrace()]),
+ 'NYI'
+ end;
+get_suite(Mod, all) ->
+ case catch (apply(Mod, all, [])) of
{'EXIT', _} -> 'NYI';
List when is_list(List) -> List
- end.
+ end;
+get_suite(_Mod, _Fun) ->
+ [].
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -503,9 +531,13 @@ wait_for_evaluator(Pid, Mod, Fun, Config) ->
test_case_evaluator(Mod, Fun, [Config]) ->
NewConfig = Mod:init_per_testcase(Fun, Config),
- R = apply(Mod, Fun, [NewConfig]),
- Mod:end_per_testcase(Fun, NewConfig),
- exit({test_case_ok, R}).
+ try
+ R = apply(Mod, Fun, [NewConfig]),
+ Mod:end_per_testcase(Fun, NewConfig),
+ exit({test_case_ok, R})
+ catch error:function_clause ->
+ exit({skipped, 'NYI'})
+ end.
activity_evaluator(Coordinator) ->
activity_evaluator_loop(Coordinator),
diff --git a/lib/mnesia/test/mnesia_trans_access_test.erl b/lib/mnesia/test/mnesia_trans_access_test.erl
index 55ba4dd761..ca3f0fbf49 100644
--- a/lib/mnesia/test/mnesia_trans_access_test.erl
+++ b/lib/mnesia/test/mnesia_trans_access_test.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -1102,9 +1102,9 @@ create_live_table_index_disc_only(Config) when is_list(Config) ->
create_live_table_index(Config, disc_only_copies).
create_live_table_index(Config, Storage) ->
- [Node1] = Nodes = ?acquire_nodes(1, Config),
+ [N1,N2,N3] = Nodes = ?acquire_nodes(3, Config),
Tab = create_live_table_index,
- Schema = [{name, Tab}, {attributes, [k, v]}, {Storage, [Node1]}],
+ Schema = [{name, Tab}, {attributes, [k, v]}, {Storage, Nodes}],
?match({atomic, ok}, mnesia:create_table(Schema)),
ValPos = 3,
mnesia:dirty_write({Tab, 1, 2}),
@@ -1115,9 +1115,35 @@ create_live_table_index(Config, Storage) ->
end,
?match({atomic, ok}, mnesia:transaction(Fun)),
?match({atomic, ok}, mnesia:add_table_index(Tab, ValPos)),
+ IRead = fun() -> lists:sort(mnesia:index_read(Tab, 2, ValPos)) end,
+ ?match({atomic, [{Tab, 1, 2},{Tab, 2, 2}]}, mnesia:transaction(IRead)),
+ ?match({atomic, ok}, mnesia:del_table_index(Tab, ValPos)),
+
+ %% Bug when adding index when table is still unloaded
+ %% By setting load order we hopefully will trigger the bug
+ mnesia:change_table_copy_type(Tab, N2, ram_copies),
+ mnesia:change_table_copy_type(Tab, N3, ram_copies),
+ ?match({atomic,ok}, mnesia:change_table_copy_type(schema, N2, ram_copies)),
+ ?match({atomic,ok}, mnesia:change_table_copy_type(schema, N3, ram_copies)),
+
+ Create = fun(N) ->
+ TabN = list_to_atom("tab_" ++ integer_to_list(N)),
+ Def = [{ram_copies, Nodes}, {load_order, N}],
+ mnesia:create_table(TabN, Def)
+ end,
+
+ ?match([{atomic,ok}|_], [Create(N) || N <- lists:seq(1,50)]),
+
+ ?match([], mnesia_test_lib:stop_mnesia([N2,N3])),
+ ?match(ok, rpc:call(N2, mnesia, start, [[{extra_db_nodes,[N1]}]])),
+ ?match(ok, rpc:call(N3, mnesia, start, [[{extra_db_nodes,[N1]}]])),
+
+ ?match({atomic, ok}, mnesia:add_table_index(Tab, ValPos)),
+
+ ?match({atomic, [{Tab, 1, 2},{Tab, 2, 2}]}, mnesia:transaction(IRead)),
?match({atomic, [{Tab, 1, 2},{Tab, 2, 2}]},
- mnesia:transaction(fun() -> lists:sort(mnesia:index_read(Tab, 2, ValPos))
- end)),
+ rpc:call(N2, mnesia, transaction, [IRead])),
+
?verify_mnesia(Nodes, []).
%% Drop table index
diff --git a/lib/mnesia/test/mt.erl b/lib/mnesia/test/mt.erl
index f69c4a11fd..322bd52130 100644
--- a/lib/mnesia/test/mt.erl
+++ b/lib/mnesia/test/mt.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -76,17 +76,24 @@ resolve(Suite0) when is_atom(Suite0) ->
Suite when is_atom(Suite) ->
{Suite, all};
{Suite, Case} ->
- {Suite, Case}
+ {Suite, is_group(Suite,Case)}
end;
resolve({Suite0, Case}) when is_atom(Suite0), is_atom(Case) ->
case alias(Suite0) of
Suite when is_atom(Suite) ->
- {Suite, Case};
+ {Suite, is_group(Suite,Case)};
{Suite, Case2} ->
- {Suite, Case2}
+ {Suite, is_group(Suite,Case2)}
end;
resolve(List) when is_list(List) ->
[resolve(Case) || Case <- List].
+
+is_group(Mod, Case) ->
+ try {_,_,_} = lists:keyfind(Case, 1, Mod:groups()),
+ {group, Case}
+ catch _:{badmatch,_} ->
+ Case
+ end.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Run one or more test cases
diff --git a/lib/observer/doc/src/notes.xml b/lib/observer/doc/src/notes.xml
index b3b9937f1c..73eb992323 100644
--- a/lib/observer/doc/src/notes.xml
+++ b/lib/observer/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/odbc/doc/src/notes.xml b/lib/odbc/doc/src/notes.xml
index b88c7cf1cd..e15e7dea7d 100644
--- a/lib/odbc/doc/src/notes.xml
+++ b/lib/odbc/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/public_key/doc/src/notes.xml b/lib/public_key/doc/src/notes.xml
index 14b43041ce..30326da114 100644
--- a/lib/public_key/doc/src/notes.xml
+++ b/lib/public_key/doc/src/notes.xml
@@ -5,7 +5,7 @@
<header>
<copyright>
<year>2008</year>
- <year>2010</year>
+ <year>2011</year>
<holder>Ericsson AB, All Rights Reserved</holder>
</copyright>
<legalnotice>
diff --git a/lib/reltool/src/reltool_server.erl b/lib/reltool/src/reltool_server.erl
index 9743289ca6..692baea0a4 100644
--- a/lib/reltool/src/reltool_server.erl
+++ b/lib/reltool/src/reltool_server.erl
@@ -465,16 +465,16 @@ analyse(#state{common = C,
[MissingApp2 | Apps2]
end,
app_propagate_is_used_by(C, Apps3),
- Apps4 = read_apps(C, Sys, Apps3, []),
+ {Apps4,Status4} = app_recap_dependencies(C, Sys, Apps3, [], Status3),
%% io:format("Missing app: ~p\n",
%% [lists:keysearch(?MISSING_APP_NAME, #app.name, Apps4)]),
Sys2 = Sys#sys{apps = Apps4},
- case verify_config(RelApps2, Sys2, Status3) of
- {ok, _Warnings} = Status4 ->
- {S#state{sys = Sys2}, Status4};
- {error, _} = Status4 ->
- {S, Status4}
+ case verify_config(RelApps2, Sys2, Status4) of
+ {ok, _Warnings} = Status5 ->
+ {S#state{sys = Sys2}, Status5};
+ {error, _} = Status5 ->
+ {S, Status5}
end.
apps_in_rels(Rels, Apps, Status) ->
@@ -548,21 +548,24 @@ app_init_is_included(C,
{derived, [_ | _]} -> % App is included in at least one rel
{true, undefined, true, Status}
end,
- A2 = A#app{is_pre_included = IsPreIncl,
+ {Mods2,Status3} = lists:mapfoldl(fun(Mod,Acc) ->
+ mod_init_is_included(C,
+ Mod,
+ ModCond,
+ AppCond,
+ Default,
+ Acc)
+ end,
+ Status2,
+ Mods),
+ A2 = A#app{mods = Mods2,
+ is_pre_included = IsPreIncl,
is_included = IsIncl,
rels = Rels},
ets:insert(C#common.app_tab, A2),
- lists:foreach(fun(Mod) ->
- mod_init_is_included(C,
- Mod,
- ModCond,
- AppCond,
- Default)
- end,
- Mods),
- {A2, Status2}.
-
-mod_init_is_included(C, M, ModCond, AppCond, Default) ->
+ {A2, Status3}.
+
+mod_init_is_included(C, M, ModCond, AppCond, Default, Status) ->
%% print(M#mod.name, hipe, "incl_cond -> ~p\n", [AppCond]),
IsIncl =
case AppCond of
@@ -595,9 +598,52 @@ mod_init_is_included(C, M, ModCond, AppCond, Default) ->
Default
end
end,
+
M2 = M#mod{is_pre_included = IsIncl, is_included = IsIncl},
+
+ Status2 =
+ case ets:lookup(C#common.mod_tab,M#mod.name) of
+ [Existing] ->
+ case {Existing#mod.is_included,IsIncl} of
+ {false,_} ->
+ Warning =
+ lists:concat(
+ ["Module ",M#mod.name,
+ " exists in applications ", Existing#mod.app_name,
+ " and ", M#mod.app_name,
+ ". Using module from application ",
+ M#mod.app_name, "."]),
+ ets:insert(C#common.mod_tab, M2),
+ reltool_utils:add_warning(Status,Warning);
+ {_,false} ->
+ Warning =
+ lists:concat(
+ ["Module ",M#mod.name,
+ " exists in applications ", Existing#mod.app_name,
+ " and ", M#mod.app_name,
+ ". Using module from application ",
+ Existing#mod.app_name, "."]),
+
+ %% Don't insert in mod_tab - using Existing
+ reltool_utils:add_warning(Status,Warning);
+ {_,_} ->
+ Error =
+ lists:concat(
+ ["Module ",M#mod.name,
+ " potentially included by ",
+ "two different applications: ",
+ Existing#mod.app_name, " and ",
+ M#mod.app_name, "."]),
+ %% Don't insert in mod_tab - using Existing
+ reltool_utils:return_first_error(Status,Error)
+ end;
+ [] ->
+ ets:insert(C#common.mod_tab, M2),
+ Status
+ end,
+
%% print(M#mod.name, hipe, "~p -> ~p\n", [M2, IsIncl]),
- ets:insert(C#common.mod_tab, M2).
+ {M2,Status2}.
false_to_undefined(Bool) ->
case Bool of
@@ -612,21 +658,27 @@ app_propagate_is_included(_C, _Sys, [], Acc) ->
Acc.
mod_propagate_is_included(C, Sys, A, [#mod{name = ModName} | Mods], Acc) ->
- [M2] = ets:lookup(C#common.mod_tab, ModName),
- %% print(ModName, file, "Maybe Prop ~p -> ~p\n",
- %% [M2, M2#mod.is_included]),
- %% print(ModName, filename, "Maybe Prop ~p -> ~p\n",
- %% [M2, M2#mod.is_included]),
Acc2 =
- case M2#mod.is_included of
- true ->
- %% Propagate include mark
- mod_mark_is_included(C, Sys, ModName, M2#mod.uses_mods, Acc);
- false ->
- Acc;
- undefined ->
- Acc
- end,
+ case ets:lookup(C#common.mod_tab, ModName) of
+ [M2] when M2#mod.app_name=:=A#app.name ->
+ %% print(ModName, file, "Maybe Prop ~p -> ~p\n",
+ %% [M2, M2#mod.is_included]),
+ %% print(ModName, filename, "Maybe Prop ~p -> ~p\n",
+ %% [M2, M2#mod.is_included]),
+ case M2#mod.is_included of
+ true ->
+ %% Propagate include mark
+ mod_mark_is_included(C,Sys,ModName,M2#mod.uses_mods,Acc);
+ false ->
+ Acc;
+ undefined ->
+ Acc
+ end;
+ [_] ->
+ %% This module is currently used from a different application
+ %% Ignore
+ Acc
+ end,
mod_propagate_is_included(C, Sys, A, Mods, Acc2);
mod_propagate_is_included(_C, _Sys, _A, [], Acc) ->
Acc.
@@ -740,9 +792,10 @@ mod_propagate_is_used_by(C, [#mod{name = ModName} | Mods]) ->
mod_propagate_is_used_by(_C, []) ->
ok.
-read_apps(C, Sys, [#app{mods = Mods, is_included = IsIncl} = A | Apps], Acc) ->
- {Mods2, IsIncl2} = read_apps(C, Sys, A, Mods, [], IsIncl),
- Status =
+app_recap_dependencies(C, Sys, [#app{mods = Mods, is_included = IsIncl} = A | Apps], Acc, Status) ->
+ {Mods2, IsIncl2, Status2} =
+ mod_recap_dependencies(C, Sys, A, Mods, [], IsIncl, Status),
+ AppStatus =
case lists:keymember(missing, #mod.status, Mods2) of
true -> missing;
false -> ok
@@ -759,34 +812,52 @@ read_apps(C, Sys, [#app{mods = Mods, is_included = IsIncl} = A | Apps], Acc) ->
UsedByApps2 = lists:usort(UsedByApps),
A2 = A#app{mods = Mods2,
- status = Status,
+ status = AppStatus,
uses_mods = UsesMods2,
used_by_mods = UsedByMods2,
uses_apps = UsesApps2,
used_by_apps = UsedByApps2,
is_included = IsIncl2},
- read_apps(C, Sys, Apps, [A2 | Acc]);
-read_apps(_C, _Sys, [], Acc) ->
- lists:reverse(Acc).
-
-read_apps(C, Sys, A, [#mod{name = ModName} | Mods], Acc, IsIncl) ->
- [M2] = ets:lookup(C#common.mod_tab, ModName),
- Status = do_get_status(M2),
- %% print(M2#mod.name, hipe, "status -> ~p\n", [Status]),
- {IsIncl2, M3} =
- case M2#mod.is_included of
- true ->
- UsedByMods =
- [N || {_, N} <- ets:lookup(C#common.mod_used_by_tab,
- ModName)],
- {true, M2#mod{status = Status, used_by_mods = UsedByMods}};
- _ ->
- {IsIncl, M2#mod{status = Status, used_by_mods = []}}
- end,
- ets:insert(C#common.mod_tab, M3),
- read_apps(C, Sys, A, Mods, [M3 | Acc], IsIncl2);
-read_apps(_C, _Sys, _A, [], Acc, IsIncl) ->
- {lists:reverse(Acc), IsIncl}.
+ ets:insert(C#common.app_tab,A2),
+ app_recap_dependencies(C, Sys, Apps, [A2 | Acc], Status2);
+app_recap_dependencies(_C, _Sys, [], Acc, Status) ->
+ {lists:reverse(Acc), Status}.
+
+mod_recap_dependencies(C, Sys, A, [#mod{name = ModName}=M1 | Mods], Acc, IsIncl, Status) ->
+ case ets:lookup(C#common.mod_tab, ModName) of
+ [M2] when M2#mod.app_name=:=A#app.name ->
+ ModStatus = do_get_status(M2),
+ %% print(M2#mod.name, hipe, "status -> ~p\n", [ModStatus]),
+ {IsIncl2, M3} =
+ case M2#mod.is_included of
+ true ->
+ UsedByMods =
+ [N || {_, N} <- ets:lookup(C#common.mod_used_by_tab,
+ ModName)],
+ {true, M2#mod{status = ModStatus, used_by_mods = UsedByMods}};
+ _ ->
+ {IsIncl, M2#mod{status = ModStatus, used_by_mods = []}}
+ end,
+ ets:insert(C#common.mod_tab, M3),
+ mod_recap_dependencies(C, Sys, A, Mods, [M3 | Acc], IsIncl2, Status);
+ [_] when A#app.is_included==false; M1#mod.incl_cond==exclude ->
+ %% App is explicitely excluded so it is ok that the module
+ %% record does not exist for this module in this
+ %% application.
+ mod_recap_dependencies(C, Sys, A, Mods, [M1 | Acc], IsIncl, Status);
+ [M2] ->
+ %% A module is potensially included by multiple
+ %% applications. This is not allowed!
+ Error =
+ lists:concat(
+ ["Module ",ModName,
+ " potentially included by two different applications: ",
+ A#app.name, " and ", M2#mod.app_name, "."]),
+ Status2 = reltool_utils:return_first_error(Status,Error),
+ mod_recap_dependencies(C, Sys, A, Mods, [M1 | Acc], IsIncl, Status2)
+ end;
+mod_recap_dependencies(_C, _Sys, _A, [], Acc, IsIncl, Status) ->
+ {lists:reverse(Acc), IsIncl, Status}.
do_get_status(M) ->
if
diff --git a/lib/reltool/src/reltool_sys_win.erl b/lib/reltool/src/reltool_sys_win.erl
index dbb8e32aa2..76c064f1e7 100644
--- a/lib/reltool/src/reltool_sys_win.erl
+++ b/lib/reltool/src/reltool_sys_win.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2009-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -1092,17 +1092,23 @@ move_app(S, {_ItemNo, AppBase}, Action) ->
OldApp#app{incl_cond = AppCond}.
do_set_app(#state{server_pid = ServerPid, app_wins = AppWins} = S, NewApp) ->
- {ok, AnalysedApp, Warnings} = reltool_server:set_app(ServerPid, NewApp),
+ Result = reltool_server:set_app(ServerPid, NewApp),
[ok = reltool_app_win:refresh(AW#app_win.pid) || AW <- AppWins],
S2 = redraw_apps(S),
- case Warnings of
- [] ->
- ignore;
- _ ->
- Msg = lists:flatten([[W, $\n] || W <- Warnings]),
- display_message(Msg, ?wxICON_WARNING)
- end,
- {ok, AnalysedApp, S2}.
+ ReturnApp =
+ case Result of
+ {ok, AnalysedApp, []} ->
+ AnalysedApp;
+ {ok, AnalysedApp, Warnings} ->
+ Msg = lists:flatten([[W, $\n] || W <- Warnings]),
+ display_message(Msg, ?wxICON_WARNING),
+ AnalysedApp;
+ {error, Reason} ->
+ display_message(Reason, ?wxICON_ERROR),
+ {ok,OldApp} = reltool_server:get_app(ServerPid, NewApp#app.name),
+ OldApp
+ end,
+ {ok, ReturnApp, S2}.
redraw_apps(#state{server_pid = ServerPid,
source = SourceCtrl,
diff --git a/lib/reltool/test/Makefile b/lib/reltool/test/Makefile
index 62fe05238b..767454b66a 100644
--- a/lib/reltool/test/Makefile
+++ b/lib/reltool/test/Makefile
@@ -76,8 +76,8 @@ release_tests_spec: opt
$(INSTALL_DATA) reltool.spec reltool.cover $(ERL_FILES) $(HRL_FILES) $(RELSYSDIR)
$(INSTALL_SCRIPT) rtt $(INSTALL_PROGS) $(RELSYSDIR)
$(INSTALL_DATA) $(INSTALL_PROGS) $(RELSYSDIR)
-# chmod -R u+w $(RELSYSDIR)
-# @tar cf - *_SUITE_data | (cd $(RELSYSDIR); tar xf -)
+ chmod -R u+w $(RELSYSDIR)
+ @tar cf - *_SUITE_data | (cd $(RELSYSDIR); tar xf -)
release_docs_spec:
diff --git a/lib/reltool/test/reltool_server_SUITE.erl b/lib/reltool/test/reltool_server_SUITE.erl
index b77560db94..9ed79e8c95 100644
--- a/lib/reltool/test/reltool_server_SUITE.erl
+++ b/lib/reltool/test/reltool_server_SUITE.erl
@@ -25,6 +25,7 @@
-compile(export_all).
-include("reltool_test_lib.hrl").
+-include_lib("common_test/include/ct.hrl").
-define(NODE_NAME, '__RELTOOL__TEMPORARY_TEST__NODE__').
-define(WORK_DIR, "reltool_work_dir").
@@ -53,7 +54,7 @@ all() ->
[start_server, set_config, create_release,
create_script, create_target, create_embedded,
create_standalone, create_old_target,
- otp_9135].
+ otp_9135, otp_9229_exclude_app, otp_9229_exclude_mod].
groups() ->
[].
@@ -361,6 +362,114 @@ create_old_target(_Config) ->
ok.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% OTP-9229 - handle duplicated module names, i.e. same module name
+%% exists in two applications.
+
+%% Include on app, exclude the other
+otp_9229_exclude_app(Config) ->
+ DataDir = ?config(data_dir,Config),
+ LibDir = filename:join(DataDir,"otp_9229"),
+
+ %% Configure the server
+ ExclApp =
+ {sys,
+ [
+ {root_dir, code:root_dir()},
+ {lib_dirs, [LibDir]},
+ {incl_cond,exclude},
+ {app,x,[{incl_cond,include}]},
+ {app,y,[{incl_cond,exclude}]},
+ {app,kernel,[{incl_cond,include}]},
+ {app,stdlib,[{incl_cond,include}]},
+ {app,sasl,[{incl_cond,include}]}
+ ]},
+
+ %% Generate target file
+ TargetDir = filename:join([?WORK_DIR, "target_dupl_mod_excl_app"]),
+ ?m(ok, reltool_utils:recursive_delete(TargetDir)),
+ ?m(ok, file:make_dir(TargetDir)),
+ ?log("SPEC: ~p\n", [reltool:get_target_spec([{config, ExclApp}])]),
+ {ok,["Module mylib exists in applications x and y. Using module from application x."]} = reltool:get_status([{config, ExclApp}]),
+ ?m(ok, reltool:create_target([{config, ExclApp}], TargetDir)),
+
+ Erl = filename:join([TargetDir, "bin", "erl"]),
+ {ok, Node} = ?msym({ok, _}, start_node(?NODE_NAME, Erl)),
+
+ AbsTargetDir = filename:absname(TargetDir),
+ XArchive = "x-1.0.ez",
+ AbsXArchive = filename:join([AbsTargetDir,lib,XArchive]),
+ XEbin = ["ebin","x-1.0",XArchive],
+ YArchive = "y-1.0.ez",
+ AbsYArchive = filename:join([AbsTargetDir,lib,YArchive]),
+
+ ?m(true, filelib:is_file(AbsXArchive)),
+ ?m(XEbin, mod_path(Node,x)),
+ ?m(XEbin, mod_path(Node,mylib)),
+ ?m(false, filelib:is_file(AbsYArchive)),
+ ?m(non_existing, mod_path(Node,y)),
+
+ ?msym(ok, stop_node(Node)),
+
+ ok.
+
+%% Include both apps, but exclude common module from one app
+otp_9229_exclude_mod(Config) ->
+ DataDir = ?config(data_dir,Config),
+ LibDir = filename:join(DataDir,"otp_9229"),
+
+ %% Configure the server
+ ExclMod =
+ {sys,
+ [
+ {root_dir, code:root_dir()},
+ {lib_dirs, [LibDir]},
+ {incl_cond,exclude},
+ {app,x,[{incl_cond,include}]},
+ {app,y,[{incl_cond,include},{mod, mylib,[{incl_cond,exclude}]}]},
+ {app,kernel,[{incl_cond,include}]},
+ {app,stdlib,[{incl_cond,include}]},
+ {app,sasl,[{incl_cond,include}]}
+ ]},
+
+ %% Generate target file
+ TargetDir = filename:join([?WORK_DIR, "target_dupl_mod_excl_mod"]),
+ ?m(ok, reltool_utils:recursive_delete(TargetDir)),
+ ?m(ok, file:make_dir(TargetDir)),
+ ?log("SPEC: ~p\n", [reltool:get_target_spec([{config, ExclMod}])]),
+ {ok,["Module mylib exists in applications x and y. Using module from application x."]} = reltool:get_status([{config, ExclMod}]),
+ ?m(ok, reltool:create_target([{config, ExclMod}], TargetDir)),
+
+ Erl = filename:join([TargetDir, "bin", "erl"]),
+ {ok, Node} = ?msym({ok, _}, start_node(?NODE_NAME, Erl)),
+
+ AbsTargetDir = filename:absname(TargetDir),
+ XArchive = "x-1.0.ez",
+ AbsXArchive = filename:join([AbsTargetDir,lib,XArchive]),
+ XEbin = ["ebin","x-1.0",XArchive],
+ YArchive = "y-1.0.ez",
+ AbsYArchive = filename:join([AbsTargetDir,lib,YArchive]),
+ YEbin = ["ebin","y-1.0",YArchive],
+
+ ?m(true, filelib:is_file(AbsXArchive)),
+ ?m(XEbin, mod_path(Node,x)),
+ ?m(XEbin, mod_path(Node,mylib)),
+ ?m(true, filelib:is_file(AbsYArchive)),
+ ?m(YEbin, mod_path(Node,y)),
+
+ %% Remove path to XEbin and check that mylib is not located in YEbin
+ Mylib = rpc:call(Node,code,which,[mylib]),
+ rpc:call(Node,code,del_path,[filename:dirname(Mylib)]),
+ ?m(non_existing, mod_path(Node,mylib)),
+
+ ?msym(ok, stop_node(Node)),
+
+ ok.
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Library functions
erl_libs() ->
@@ -407,6 +516,20 @@ os_cmd(Cmd) when is_list(Cmd) ->
end
end.
+%% Returns the location (directory) of the given module. Split,
+%% reverted and relative to the lib dir.
+mod_path(Node,Mod) ->
+ case rpc:call(Node,code,which,[Mod]) of
+ Path when is_list(Path) ->
+ lists:takewhile(
+ fun("lib") -> false;
+ (_) -> true
+ end,
+ lists:reverse(filename:split(filename:dirname(Path))));
+ Other ->
+ Other
+ end.
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Node handling
diff --git a/lib/reltool/test/reltool_server_SUITE_data/Makefile.src b/lib/reltool/test/reltool_server_SUITE_data/Makefile.src
new file mode 100644
index 0000000000..049e8dd6cc
--- /dev/null
+++ b/lib/reltool/test/reltool_server_SUITE_data/Makefile.src
@@ -0,0 +1,19 @@
+EFLAGS=+debug_info
+
+OTP9229= \
+ otp_9229/x-1.0/ebin/x.@EMULATOR@ \
+ otp_9229/x-1.0/ebin/mylib.@EMULATOR@ \
+ otp_9229/y-1.0/ebin/y.@EMULATOR@ \
+ otp_9229/y-1.0/ebin/mylib.@EMULATOR@
+
+
+all: $(OTP9229)
+
+otp_9229/x-1.0/ebin/x.@EMULATOR@: otp_9229/x-1.0/src/x.erl
+ erlc $(EFLAGS) -ootp_9229/x-1.0/ebin otp_9229/x-1.0/src/x.erl
+otp_9229/x-1.0/ebin/mylib.@EMULATOR@: otp_9229/x-1.0/src/mylib.erl
+ erlc $(EFLAGS) -ootp_9229/x-1.0/ebin otp_9229/x-1.0/src/mylib.erl
+otp_9229/y-1.0/ebin/y.@EMULATOR@: otp_9229/y-1.0/src/y.erl
+ erlc $(EFLAGS) -ootp_9229/y-1.0/ebin otp_9229/y-1.0/src/y.erl
+otp_9229/y-1.0/ebin/mylib.@EMULATOR@: otp_9229/y-1.0/src/mylib.erl
+ erlc $(EFLAGS) -ootp_9229/y-1.0/ebin otp_9229/y-1.0/src/mylib.erl
diff --git a/lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/ebin/x.app b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/ebin/x.app
new file mode 100644
index 0000000000..e597704b19
--- /dev/null
+++ b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/ebin/x.app
@@ -0,0 +1,7 @@
+%% -*- erlang -*-
+{application, x,
+ [{description, "X CXC 138 11"},
+ {vsn, "1.0"},
+ {modules, [x, mylib]},
+ {registered, []},
+ {applications, [kernel, stdlib]}]}.
diff --git a/lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/src/mylib.erl b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/src/mylib.erl
new file mode 100644
index 0000000000..c8603d1a8e
--- /dev/null
+++ b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/src/mylib.erl
@@ -0,0 +1,4 @@
+-module(mylib).
+-export([foo/0]).
+
+foo() -> erlang:time().
diff --git a/lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/src/x.erl b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/src/x.erl
new file mode 100644
index 0000000000..17ff84f08f
--- /dev/null
+++ b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/x-1.0/src/x.erl
@@ -0,0 +1,4 @@
+-module(x).
+-export([x/0]).
+
+x() ->mylib:foo().
diff --git a/lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/ebin/y.app b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/ebin/y.app
new file mode 100644
index 0000000000..5b327862e3
--- /dev/null
+++ b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/ebin/y.app
@@ -0,0 +1,7 @@
+%% -*- erlang -*-
+{application, y,
+ [{description, "Y CXC 138 11"},
+ {vsn, "1.0"},
+ {modules, [y, mylib]},
+ {registered, []},
+ {applications, [kernel, stdlib]}]}.
diff --git a/lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/src/mylib.erl b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/src/mylib.erl
new file mode 100644
index 0000000000..c8603d1a8e
--- /dev/null
+++ b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/src/mylib.erl
@@ -0,0 +1,4 @@
+-module(mylib).
+-export([foo/0]).
+
+foo() -> erlang:time().
diff --git a/lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/src/y.erl b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/src/y.erl
new file mode 100644
index 0000000000..342e7da7d5
--- /dev/null
+++ b/lib/reltool/test/reltool_server_SUITE_data/otp_9229/y-1.0/src/y.erl
@@ -0,0 +1,4 @@
+-module(y).
+-export([y/0]).
+
+y() ->mylib:foo().
diff --git a/lib/runtime_tools/doc/src/notes.xml b/lib/runtime_tools/doc/src/notes.xml
index b27a3a0996..599be62241 100644
--- a/lib/runtime_tools/doc/src/notes.xml
+++ b/lib/runtime_tools/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/sasl/Makefile b/lib/sasl/Makefile
index 2affcf1e40..4073e5af85 100644
--- a/lib/sasl/Makefile
+++ b/lib/sasl/Makefile
@@ -1,7 +1,7 @@
#
# %CopyrightBegin%
#
-# Copyright Ericsson AB 1996-2009. All Rights Reserved.
+# Copyright Ericsson AB 1996-2010. All Rights Reserved.
#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
@@ -23,7 +23,7 @@ include $(ERL_TOP)/make/$(TARGET)/otp.mk
# Macros
#
-SUB_DIRECTORIES = src doc/src
+SUB_DIRECTORIES = src doc/src examples/src
include vsn.mk
VSN = $(SASL_VSN)
diff --git a/lib/sasl/doc/src/notes.xml b/lib/sasl/doc/src/notes.xml
index 7941e371a0..73c4825458 100644
--- a/lib/sasl/doc/src/notes.xml
+++ b/lib/sasl/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/sasl/doc/src/sasl_app.xml b/lib/sasl/doc/src/sasl_app.xml
index a7fecfc440..446baccb08 100644
--- a/lib/sasl/doc/src/sasl_app.xml
+++ b/lib/sasl/doc/src/sasl_app.xml
@@ -4,7 +4,7 @@
<appref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -67,6 +67,11 @@
<p>This error logger writes <em>all</em> events sent to
the error logger to disk. It installs the <c>log_mf_h</c>
event handler in the <c>error_logger</c> process.</p>
+ <p>To activate this event handler, the following three sasl
+ configuration parameters must be set:
+ <c>error_logger_mf_dir</c>, <c>error_logger_mf_maxbytes</c>
+ and <c>error_logger_mf_maxfiles</c>. See below for more
+ information about the configuration parameters.</p>
</item>
</taglist>
</section>
diff --git a/lib/sasl/examples/ebin/.gitignore b/lib/sasl/examples/ebin/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/lib/sasl/examples/ebin/.gitignore
diff --git a/lib/sasl/examples/src/Makefile b/lib/sasl/examples/src/Makefile
new file mode 100644
index 0000000000..4a4e04a536
--- /dev/null
+++ b/lib/sasl/examples/src/Makefile
@@ -0,0 +1,78 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# 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.
+#
+# %CopyrightEnd%
+#
+
+#
+
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN=$(SASL_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/sasl-$(VSN)
+
+# ----------------------------------------------------
+# Common Macros
+# ----------------------------------------------------
+EXTRA_ERLC_FLAGS = +warn_unused_vars
+ERL_COMPILE_FLAGS += $(EXTRA_ERLC_FLAGS)
+
+
+MODULES = target_system
+
+ERL_FILES= $(MODULES:%=%.erl)
+
+TARGET_FILES= $(MODULES:%=$(EBIN)/%.$(EMULATOR))
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+
+debug opt: $(TARGET_FILES)
+
+clean:
+ rm -fr $(TARGET_FILES) *~ *.beam
+
+docs:
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/examples/src
+ $(INSTALL_DIR) $(RELSYSDIR)/examples/ebin
+ (cd ..; tar cf - src ebin | (cd $(RELSYSDIR)/examples; tar xf -))
+ chmod -f -R ug+w $(RELSYSDIR)/examples
+
+release_docs_spec:
+
+
+
+
+
+
+
diff --git a/lib/sasl/examples/src/target_system.erl b/lib/sasl/examples/src/target_system.erl
new file mode 100644
index 0000000000..0e1e0b2324
--- /dev/null
+++ b/lib/sasl/examples/src/target_system.erl
@@ -0,0 +1,259 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+-module(target_system).
+-export([create/1, create/2, install/2]).
+
+%% Note: RelFileName below is the *stem* without trailing .rel,
+%% .script etc.
+%%
+
+%% create(RelFileName)
+%%
+create(RelFileName) ->
+ create(RelFileName,[]).
+
+create(RelFileName,SystoolsOpts) ->
+ RelFile = RelFileName ++ ".rel",
+ Dir = filename:dirname(RelFileName),
+ PlainRelFileName = filename:join(Dir,"plain"),
+ PlainRelFile = PlainRelFileName ++ ".rel",
+ io:fwrite("Reading file: ~p ...~n", [RelFile]),
+ {ok, [RelSpec]} = file:consult(RelFile),
+ io:fwrite("Creating file: ~p from ~p ...~n",
+ [PlainRelFile, RelFile]),
+ {release,
+ {RelName, RelVsn},
+ {erts, ErtsVsn},
+ AppVsns} = RelSpec,
+ PlainRelSpec = {release,
+ {RelName, RelVsn},
+ {erts, ErtsVsn},
+ lists:filter(fun({kernel, _}) ->
+ true;
+ ({stdlib, _}) ->
+ true;
+ (_) ->
+ false
+ end, AppVsns)
+ },
+ {ok, Fd} = file:open(PlainRelFile, [write]),
+ io:fwrite(Fd, "~p.~n", [PlainRelSpec]),
+ file:close(Fd),
+
+ io:fwrite("Making \"~s.script\" and \"~s.boot\" files ...~n",
+ [PlainRelFileName,PlainRelFileName]),
+ make_script(PlainRelFileName,SystoolsOpts),
+
+ io:fwrite("Making \"~s.script\" and \"~s.boot\" files ...~n",
+ [RelFileName, RelFileName]),
+ make_script(RelFileName,SystoolsOpts),
+
+ TarFileName = filename:join(Dir,RelFileName ++ ".tar.gz"),
+ io:fwrite("Creating tar file ~p ...~n", [TarFileName]),
+ make_tar(RelFileName,SystoolsOpts),
+
+ TmpDir = filename:join(Dir,"tmp"),
+ io:fwrite("Creating directory ~p ...~n",[TmpDir]),
+ file:make_dir(TmpDir),
+
+ io:fwrite("Extracting ~p into directory ~p ...~n", [TarFileName,TmpDir]),
+ extract_tar(TarFileName, TmpDir),
+
+ TmpBinDir = filename:join([TmpDir, "bin"]),
+ ErtsBinDir = filename:join([TmpDir, "erts-" ++ ErtsVsn, "bin"]),
+ io:fwrite("Deleting \"erl\" and \"start\" in directory ~p ...~n",
+ [ErtsBinDir]),
+ file:delete(filename:join([ErtsBinDir, "erl"])),
+ file:delete(filename:join([ErtsBinDir, "start"])),
+
+ io:fwrite("Creating temporary directory ~p ...~n", [TmpBinDir]),
+ file:make_dir(TmpBinDir),
+
+ io:fwrite("Copying file \"~s.boot\" to ~p ...~n",
+ [PlainRelFileName, filename:join([TmpBinDir, "start.boot"])]),
+ copy_file(PlainRelFileName++".boot",filename:join([TmpBinDir, "start.boot"])),
+
+ io:fwrite("Copying files \"epmd\", \"run_erl\" and \"to_erl\" from \n"
+ "~p to ~p ...~n",
+ [ErtsBinDir, TmpBinDir]),
+ copy_file(filename:join([ErtsBinDir, "epmd"]),
+ filename:join([TmpBinDir, "epmd"]), [preserve]),
+ copy_file(filename:join([ErtsBinDir, "run_erl"]),
+ filename:join([TmpBinDir, "run_erl"]), [preserve]),
+ copy_file(filename:join([ErtsBinDir, "to_erl"]),
+ filename:join([TmpBinDir, "to_erl"]), [preserve]),
+
+ StartErlDataFile = filename:join([TmpDir, "releases", "start_erl.data"]),
+ io:fwrite("Creating ~p ...~n", [StartErlDataFile]),
+ StartErlData = io_lib:fwrite("~s ~s~n", [ErtsVsn, RelVsn]),
+ write_file(StartErlDataFile, StartErlData),
+
+ io:fwrite("Recreating tar file ~p from contents in directory ~p ...~n",
+ [TarFileName,TmpDir]),
+ {ok, Tar} = erl_tar:open(TarFileName, [write, compressed]),
+ %% {ok, Cwd} = file:get_cwd(),
+ %% file:set_cwd("tmp"),
+ ErtsDir = "erts-"++ErtsVsn,
+ erl_tar:add(Tar, filename:join(TmpDir,"bin"), "bin", []),
+ erl_tar:add(Tar, filename:join(TmpDir,ErtsDir), ErtsDir, []),
+ erl_tar:add(Tar, filename:join(TmpDir,"releases"), "releases", []),
+ erl_tar:add(Tar, filename:join(TmpDir,"lib"), "lib", []),
+ erl_tar:close(Tar),
+ %% file:set_cwd(Cwd),
+ io:fwrite("Removing directory ~p ...~n",[TmpDir]),
+ remove_dir_tree(TmpDir),
+ ok.
+
+
+install(RelFileName, RootDir) ->
+ TarFile = RelFileName ++ ".tar.gz",
+ io:fwrite("Extracting ~p ...~n", [TarFile]),
+ extract_tar(TarFile, RootDir),
+ StartErlDataFile = filename:join([RootDir, "releases", "start_erl.data"]),
+ {ok, StartErlData} = read_txt_file(StartErlDataFile),
+ [ErlVsn, _RelVsn| _] = string:tokens(StartErlData, " \n"),
+ ErtsBinDir = filename:join([RootDir, "erts-" ++ ErlVsn, "bin"]),
+ BinDir = filename:join([RootDir, "bin"]),
+ io:fwrite("Substituting in erl.src, start.src and start_erl.src to\n"
+ "form erl, start and start_erl ...\n"),
+ subst_src_scripts(["erl", "start", "start_erl"], ErtsBinDir, BinDir,
+ [{"FINAL_ROOTDIR", RootDir}, {"EMU", "beam"}],
+ [preserve]),
+ io:fwrite("Creating the RELEASES file ...\n"),
+ create_RELEASES(RootDir,
+ filename:join([RootDir, "releases", RelFileName])).
+
+%% LOCALS
+
+%% make_script(RelFileName,Opts)
+%%
+make_script(RelFileName,Opts) ->
+ systools:make_script(RelFileName, [no_module_tests,
+ {outdir,filename:dirname(RelFileName)}
+ |Opts]).
+
+%% make_tar(RelFileName,Opts)
+%%
+make_tar(RelFileName,Opts) ->
+ RootDir = code:root_dir(),
+ systools:make_tar(RelFileName, [{erts, RootDir},
+ {outdir,filename:dirname(RelFileName)}
+ |Opts]).
+
+%% extract_tar(TarFile, DestDir)
+%%
+extract_tar(TarFile, DestDir) ->
+ erl_tar:extract(TarFile, [{cwd, DestDir}, compressed]).
+
+create_RELEASES(DestDir, RelFileName) ->
+ release_handler:create_RELEASES(DestDir, RelFileName ++ ".rel").
+
+subst_src_scripts(Scripts, SrcDir, DestDir, Vars, Opts) ->
+ lists:foreach(fun(Script) ->
+ subst_src_script(Script, SrcDir, DestDir,
+ Vars, Opts)
+ end, Scripts).
+
+subst_src_script(Script, SrcDir, DestDir, Vars, Opts) ->
+ subst_file(filename:join([SrcDir, Script ++ ".src"]),
+ filename:join([DestDir, Script]),
+ Vars, Opts).
+
+subst_file(Src, Dest, Vars, Opts) ->
+ {ok, Conts} = read_txt_file(Src),
+ NConts = subst(Conts, Vars),
+ write_file(Dest, NConts),
+ case lists:member(preserve, Opts) of
+ true ->
+ {ok, FileInfo} = file:read_file_info(Src),
+ file:write_file_info(Dest, FileInfo);
+ false ->
+ ok
+ end.
+
+%% subst(Str, Vars)
+%% Vars = [{Var, Val}]
+%% Var = Val = string()
+%% Substitute all occurrences of %Var% for Val in Str, using the list
+%% of variables in Vars.
+%%
+subst(Str, Vars) ->
+ subst(Str, Vars, []).
+
+subst([$%, C| Rest], Vars, Result) when $A =< C, C =< $Z ->
+ subst_var([C| Rest], Vars, Result, []);
+subst([$%, C| Rest], Vars, Result) when $a =< C, C =< $z ->
+ subst_var([C| Rest], Vars, Result, []);
+subst([$%, C| Rest], Vars, Result) when C == $_ ->
+ subst_var([C| Rest], Vars, Result, []);
+subst([C| Rest], Vars, Result) ->
+ subst(Rest, Vars, [C| Result]);
+subst([], _Vars, Result) ->
+ lists:reverse(Result).
+
+subst_var([$%| Rest], Vars, Result, VarAcc) ->
+ Key = lists:reverse(VarAcc),
+ case lists:keysearch(Key, 1, Vars) of
+ {value, {Key, Value}} ->
+ subst(Rest, Vars, lists:reverse(Value, Result));
+ false ->
+ subst(Rest, Vars, [$%| VarAcc ++ [$%| Result]])
+ end;
+subst_var([C| Rest], Vars, Result, VarAcc) ->
+ subst_var(Rest, Vars, Result, [C| VarAcc]);
+subst_var([], Vars, Result, VarAcc) ->
+ subst([], Vars, [VarAcc ++ [$%| Result]]).
+
+copy_file(Src, Dest) ->
+ copy_file(Src, Dest, []).
+
+copy_file(Src, Dest, Opts) ->
+ {ok,_} = file:copy(Src, Dest),
+ case lists:member(preserve, Opts) of
+ true ->
+ {ok, FileInfo} = file:read_file_info(Src),
+ file:write_file_info(Dest, FileInfo);
+ false ->
+ ok
+ end.
+
+write_file(FName, Conts) ->
+ {ok, Fd} = file:open(FName, [write]),
+ file:write(Fd, Conts),
+ file:close(Fd).
+
+read_txt_file(File) ->
+ {ok, Bin} = file:read_file(File),
+ {ok, binary_to_list(Bin)}.
+
+remove_dir_tree(Dir) ->
+ remove_all_files(".", [Dir]).
+
+remove_all_files(Dir, Files) ->
+ lists:foreach(fun(File) ->
+ FilePath = filename:join([Dir, File]),
+ case filelib:is_dir(FilePath) of
+ true ->
+ {ok, DirFiles} = file:list_dir(FilePath),
+ remove_all_files(FilePath, DirFiles),
+ file:del_dir(FilePath);
+ _ ->
+ file:delete(FilePath)
+ end
+ end, Files).
diff --git a/lib/sasl/src/rb.erl b/lib/sasl/src/rb.erl
index 13753565d8..8004ef2c5a 100644
--- a/lib/sasl/src/rb.erl
+++ b/lib/sasl/src/rb.erl
@@ -53,8 +53,7 @@ start_link(Options) ->
gen_server:start_link({local, rb_server}, rb, Options, []).
stop() ->
- call(stop),
- supervisor:delete_child(sasl_sup, rb_server).
+ supervisor:terminate_child(sasl_sup, rb_server).
rescan() -> rescan([]).
rescan(Options) ->
@@ -205,8 +204,6 @@ handle_call({rescan, Options}, _From, State) ->
NewState = State#state{data = Data, max = Max, type = Type,
device = Device, abort = Abort, log = Log1},
{reply, ok, NewState};
-handle_call(stop, _From, State) ->
- {stop, normal, stopped, State};
handle_call(_, _From, #state{data = undefined}) ->
{reply, {error, no_data}, #state{}};
handle_call({list, Type}, _From, State) ->
@@ -312,11 +309,14 @@ scan_files(RptDir, Max, Type) ->
{ok, Fd} ->
case catch file:read(Fd, 1) of
{ok, [LastWritten]} ->
+ file:close(Fd),
Files = make_file_list(RptDir, LastWritten),
scan_files(RptDir, Files, Max, Type);
- _ -> exit("cannot read the index file")
+ _X ->
+ file:close(Fd),
+ exit("cannot read the index file")
end;
- _ -> exit("cannot read the index file")
+ _X -> exit("cannot read the index file")
end.
make_file_list(Dir, FirstFileNo) ->
@@ -789,7 +789,7 @@ filter_report([{Key, RegExp, re}|T], Msg) ->
filter_report([{Key, RegExp, re, no}|T], Msg) ->
case proplists:get_value(Key, Msg) of
undefined ->
- false;
+ true;
Value ->
Subject = lists:flatten(io_lib:format("~p",[Value])),
case run_re(Subject, RegExp) of
diff --git a/lib/sasl/src/sasl.erl b/lib/sasl/src/sasl.erl
index d1babaffff..aed5f0da1f 100644
--- a/lib/sasl/src/sasl.erl
+++ b/lib/sasl/src/sasl.erl
@@ -81,27 +81,38 @@ get_mf() ->
Dir = get_mf_dir(),
MaxB = get_mf_maxb(),
MaxF = get_mf_maxf(),
- {Dir, MaxB, MaxF}.
+ case {Dir, MaxB, MaxF} of
+ {undefined,undefined,undefined} = R ->
+ R;
+ {undefined,_,_} ->
+ exit({missing_config, {sasl, error_logger_mf_dir}});
+ {_,undefined,_} ->
+ exit({missing_config, {sasl, error_logger_mf_maxbytes}});
+ {_,_,undefined} ->
+ exit({missing_config, {sasl, error_logger_mf_maxfiles}});
+ R ->
+ R
+ end.
get_mf_dir() ->
case application:get_env(sasl, error_logger_mf_dir) of
- {ok, false} -> throw(undefined);
+ {ok, false} -> undefined;
{ok, Dir} when is_list(Dir) -> Dir;
- undefined -> throw(undefined);
+ undefined -> undefined;
{ok, Bad} -> exit({bad_config, {sasl, {error_logger_mf_dir, Bad}}})
end.
get_mf_maxb() ->
case application:get_env(sasl, error_logger_mf_maxbytes) of
{ok, MaxB} when is_integer(MaxB) -> MaxB;
- undefined -> throw(undefined);
+ undefined -> undefined;
{ok, Bad} -> exit({bad_config, {sasl, {error_logger_mf_maxbytes, Bad}}})
end.
get_mf_maxf() ->
case application:get_env(sasl, error_logger_mf_maxfiles) of
{ok, MaxF} when is_integer(MaxF), MaxF > 0, MaxF < 256 -> MaxF;
- undefined -> throw(undefined);
+ undefined -> undefined;
{ok, Bad} -> exit({bad_config, {sasl, {error_logger_mf_maxfiles, Bad}}})
end.
diff --git a/lib/sasl/test/.gitignore b/lib/sasl/test/.gitignore
new file mode 100644
index 0000000000..76e706b874
--- /dev/null
+++ b/lib/sasl/test/.gitignore
@@ -0,0 +1,5 @@
+#
+# Don't ignore *.beam files in any sub-directory.
+#
+
+!*.beam
diff --git a/lib/sasl/test/Makefile b/lib/sasl/test/Makefile
new file mode 100644
index 0000000000..ad08c8136b
--- /dev/null
+++ b/lib/sasl/test/Makefile
@@ -0,0 +1,91 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2011. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# 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.
+#
+# %CopyrightEnd%
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+MODULES= \
+ sasl_SUITE \
+ alarm_handler_SUITE \
+ installer \
+ release_handler_SUITE \
+ systools_SUITE \
+ systools_rc_SUITE \
+ overload_SUITE \
+ rb_SUITE
+
+ERL_FILES= $(MODULES:%=%.erl)
+
+TARGET_FILES= $(MODULES:%=$(EBIN)/%.$(EMULATOR))
+INSTALL_PROGS= $(TARGET_FILES)
+
+EMAKEFILE=Emakefile
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/sasl_test
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+ERL_MAKE_FLAGS +=
+ERL_COMPILE_FLAGS += -I$(ERL_TOP)/lib/test_server/include \
+ -I$(ERL_TOP)/lib/sasl/src
+
+EBIN = .
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+
+make_emakefile:
+ $(ERL_TOP)/make/make_emakefile $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make'\
+ > $(EMAKEFILE)
+ $(ERL_TOP)/make/make_emakefile $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES)\
+ >> $(EMAKEFILE)
+
+tests debug opt: make_emakefile
+ erl $(ERL_MAKE_FLAGS) -make
+
+clean:
+ rm -f $(EMAKEFILE)
+ rm -f $(TARGET_FILES)
+ rm -f core
+
+docs:
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+release_spec: opt
+
+release_tests_spec: make_emakefile
+ $(INSTALL_DIR) $(RELSYSDIR)
+ $(INSTALL_DATA) $(ERL_FILES) $(RELSYSDIR)
+ $(INSTALL_DATA) sasl.spec sasl.cover $(EMAKEFILE) $(RELSYSDIR)
+ chmod -f -R u+w $(RELSYSDIR)
+ @tar cfh - *_SUITE_data | (cd $(RELSYSDIR); tar xf -)
+
+release_docs_spec:
diff --git a/lib/sasl/test/alarm_handler_SUITE.erl b/lib/sasl/test/alarm_handler_SUITE.erl
new file mode 100644
index 0000000000..a98e8c9c67
--- /dev/null
+++ b/lib/sasl/test/alarm_handler_SUITE.erl
@@ -0,0 +1,179 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+-module(alarm_handler_SUITE).
+
+-include_lib("test_server/include/test_server.hrl").
+
+%%-----------------------------------------------------------------
+%% We will add an own alarm handler in order to verify that the
+%% alarm_handler deliver the expected events.
+%%-----------------------------------------------------------------
+
+-export([init_per_suite/1, end_per_suite/1, all/0,groups/0,
+ init_per_group/2,end_per_group/2,
+ set_alarm/1, clear_alarm/1, swap/1]).
+
+-export([init/1, handle_event/2, handle_call/2, handle_info/2,
+ terminate/2]).
+
+
+init_per_suite(Config) ->
+ application:start(sasl),
+ Config.
+
+end_per_suite(_Config) ->
+ ok.
+
+all() ->
+ [set_alarm, clear_alarm, swap].
+
+groups() ->
+ [].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+
+%%-----------------------------------------------------------------
+
+set_alarm(suite) -> [];
+set_alarm(Config) when is_list(Config) ->
+ ?line gen_event:add_handler(alarm_handler, ?MODULE, self()),
+ Alarm1 = {alarm1, "this is the alarm"},
+ Alarm2 = {"alarm2", this_is_the_alarm},
+ Alarm3 = {{alarm3}, {this_is,"the_alarm"}},
+ ?line ok = alarm_handler:set_alarm(Alarm1),
+ reported(set_alarm, Alarm1),
+ ?line ok = alarm_handler:set_alarm(Alarm2),
+ reported(set_alarm, Alarm2),
+ ?line ok = alarm_handler:set_alarm(Alarm3),
+ reported(set_alarm, Alarm3),
+
+ ?line [Alarm3,Alarm2,Alarm1] = alarm_handler:get_alarms(),
+ alarm_handler:clear_alarm(alarm1),
+ alarm_handler:clear_alarm("alarm2"),
+ alarm_handler:clear_alarm({alarm3}),
+ ?line [] = alarm_handler:get_alarms(),
+
+ test_server:messages_get(),
+ ?line my_yes = gen_event:delete_handler(alarm_handler, ?MODULE, []),
+ ok.
+
+%%-----------------------------------------------------------------
+
+clear_alarm(suite) -> [];
+clear_alarm(Config) when is_list(Config) ->
+ ?line gen_event:add_handler(alarm_handler, ?MODULE, self()),
+ Alarm1 = {alarm1, "this is the alarm"},
+ Alarm2 = {"alarm2", this_is_the_alarm},
+ Alarm3 = {{alarm3}, {this_is,"the_alarm"}},
+ alarm_handler:set_alarm(Alarm1),
+ alarm_handler:set_alarm(Alarm2),
+ alarm_handler:set_alarm(Alarm3),
+ test_server:messages_get(),
+
+ ?line ok = alarm_handler:clear_alarm(alarm1),
+ reported(clear_alarm, alarm1),
+ ?line ok = alarm_handler:clear_alarm("alarm2"),
+ reported(clear_alarm, "alarm2"),
+ ?line ok = alarm_handler:clear_alarm({alarm3}),
+ reported(clear_alarm, {alarm3}),
+ ?line [] = alarm_handler:get_alarms(),
+
+ ?line my_yes = gen_event:delete_handler(alarm_handler, ?MODULE, []),
+ ok.
+
+%%-----------------------------------------------------------------
+
+swap(suite) -> [];
+swap(Config) when is_list(Config) ->
+ ?line Alarm1 = {alarm1, "this is the alarm"},
+ ?line Alarm2 = {"alarm2", this_is_the_alarm},
+ ?line Alarm3 = {{alarm3}, {this_is,"the_alarm"}},
+ ?line alarm_handler:set_alarm(Alarm1),
+ ?line alarm_handler:set_alarm(Alarm2),
+ ?line alarm_handler:set_alarm(Alarm3),
+
+ ?line foo,
+ case gen_event:which_handlers(alarm_handler) of
+ [alarm_handler] ->
+ ?line ok = gen_event:swap_handler(alarm_handler,
+ {alarm_handler, swap},
+ {?MODULE, self()}),
+ ?line [?MODULE] = gen_event:which_handlers(alarm_handler),
+ Alarms = [Alarm3, Alarm2, Alarm1],
+ reported(swap_alarms, Alarms),
+
+ %% get_alarms is only valid with the default handler installed.
+ ?line {error, _} = alarm_handler:get_alarms(),
+
+ ?line my_yes = gen_event:delete_handler(alarm_handler,
+ ?MODULE, []),
+ ?line gen_event:add_handler(alarm_handler, alarm_handler, []),
+ ok;
+ _ ->
+ alarm_handler:clear_alarm(alarm1),
+ alarm_handler:clear_alarm("alarm2"),
+ alarm_handler:clear_alarm({alarm3}),
+ ok
+ end.
+
+%%-----------------------------------------------------------------
+%% Check that the alarm has been received.
+%%-----------------------------------------------------------------
+reported(Tag, Data) ->
+ receive
+ {Tag, Data} ->
+ test_server:messages_get(),
+ ok
+ after 1000 ->
+ test_server:fail(no_alarm_received)
+ end.
+
+%%-----------------------------------------------------------------
+%% The error_logger handler (gen_event behaviour).
+%% Sends a notification to the Tester process about the events
+%% generated by the Tester process.
+%%-----------------------------------------------------------------
+init(Tester) when is_pid(Tester) ->
+ {ok, Tester};
+init({Tester, {alarm_handler,Alarms}}) -> % Swap from default handler.
+ Tester ! {swap_alarms, Alarms},
+ {ok, Tester}.
+
+handle_event({set_alarm, Alarm}, Tester) ->
+ Tester ! {set_alarm, Alarm},
+ {ok, Tester};
+handle_event({clear_alarm, AlarmId}, Tester) ->
+ Tester ! {clear_alarm, AlarmId},
+ {ok, Tester};
+handle_event(_Event, Tester) ->
+ {ok, Tester}.
+
+handle_info(_, Tester) ->
+ {ok, Tester}.
+
+handle_call(_Query, Tester) -> {ok, {error, bad_query}, Tester}.
+
+terminate(_Reason, _Tester) ->
+ my_yes.
diff --git a/lib/sasl/test/installer.erl b/lib/sasl/test/installer.erl
new file mode 100644
index 0000000000..a114c4b5c9
--- /dev/null
+++ b/lib/sasl/test/installer.erl
@@ -0,0 +1,778 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+
+-module(installer).
+
+%%-compile(export_all).
+-export([install_1/2]).
+-export([install_2/1]).
+-export([install_3/2]).
+-export([install_3a/1]).
+-export([install_4/1]).
+-export([install_5/1]).
+-export([install_5a/1]).
+-export([install_6/1]).
+-export([install_7/1]).
+-export([install_8/1]).
+-export([install_9/1]).
+-export([install_10/1]).
+-export([install_11/1]).
+-export([client1_1/4]).
+-export([client2/3]).
+-export([stop/1]).
+-export([unpack_p1h/2]).
+-export([permanent_p1h/1]).
+-export([reg_proc/1]).
+-export([registered_loop/1]).
+
+-define(print(List), {rh_print, TestNode} ! {print, {?MODULE, ?LINE}, List}).
+-define(print_line(Line,List), {rh_print, TestNode} ! {print, {?MODULE, Line}, List}).
+-define(fail(Term), exit({?MODULE, ?LINE, Term})).
+-define(fail_line(Line,Term), exit({?MODULE, Line, Term})).
+
+-define(check_release(Vsn,Status,Apps),
+ check_release(TestNode,node(),Vsn,Status,Apps,?LINE)).
+-define(check_release_client(Node,Vsn,Status,Apps),
+ check_release(TestNode,Node,Vsn,Status,Apps,?LINE)).
+
+-define(check_running_app(App,Vsn),
+ check_running_app(TestNode,node(),App,Vsn,?LINE)).
+-define(check_running_app_client(Node,App,Vsn),
+ check_running_app(TestNode,Node,App,Vsn,?LINE)).
+
+
+install_1(TestNode,PrivDir) ->
+ ?print([TestNode]),
+ ?print(["install_1 start"]),
+
+ % Unpack and install P1H
+ {ok, "P1H"} = unpack_release(PrivDir,"rel1"),
+ ?print(["unpack_release P1H ok"]),
+ ?check_release("P1H",unpacked,["a-1.0"]),
+ {ok,"P1G",[new_appl]} = release_handler:install_release("P1H"),
+ ?print(["install_release P1H ok"]),
+ ?check_release("P1H",current,["a-1.0"]),
+ ?check_running_app(a,"1.0"),
+ X = a:a(),
+ ?print(["X", X]),
+ {key2, val2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+ ?print(["install_1 end OK"]),
+ ok.
+ % release_handler_SUITE will reboot this node now!
+
+install_2(TestNode) ->
+ ?print(["install_2 start"]),
+
+ % Check that P1H is still unpacked, install it and make_permanent
+ ?check_release("P1H",unpacked,["a-1.0"]),
+ ?print(["install_2 P1H unpacked"]),
+ {ok,"P1G",[new_appl]} = release_handler:install_release("P1H"),
+ ?print(["install_2 install_release ok"]),
+ ?check_release("P1H",current,["a-1.0"]),
+ ?check_running_app(a,"1.0"),
+ ok = release_handler:make_permanent("P1H").
+ % release_handler_SUITE will reboot this node now!
+
+install_3(TestNode,PrivDir) ->
+ ?print(["install_3 start"]),
+
+ % Check that P1H is permanent
+ ?check_release("P1H",permanent,["a-1.0"]),
+ X = a:a(),
+ {key2, val2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+
+ % Unpack and install P1I
+ {ok, "P1I"} = unpack_release(PrivDir,"rel2"),
+ ?print(["install_3 unpack_release P1I ok"]),
+ ?check_release("P1I",unpacked,["a-1.1"]),
+ {ok,"P1H",[{extra, gott}]} = release_handler:check_install_release("P1I"),
+ {error,_} = release_handler:check_install_release("P1J"),
+ {ok,"P1H",[{extra, gott}]} = release_handler:install_release("P1I"),
+ ?print(["install_3 install_release P1I ok"]),
+ ?check_release("P1I",current,["a-1.1"]),
+ ?check_running_app(a,"1.1"),
+ X2 = a:a(),
+ {key2, newval2} = lists:keyfind(key2, 1, X2),
+ {key1, val1} = lists:keyfind(key1, 1, X2),
+ {ok, bval} = a:b(),
+
+ % Unpack and install P2A
+ {ok, "P2A"} = unpack_release(PrivDir,"rel3"),
+ ?print(["install_3 unpack_release P2A ok"]),
+ ?check_release("P2A",unpacked,["a-1.1"]),
+ {ok, "P1I", [new_emu]} = release_handler:check_install_release("P2A"),
+ ok = release_handler:make_permanent("P1I"),
+ ?print(["install_3 make_permanent P1I ok"]),
+ ?check_release("P1I",permanent,["a-1.1"]),
+ ok.
+
+install_3a(TestNode) ->
+ {ok, "P1I", [new_emu]} = release_handler:install_release("P2A"),
+ %% Node is rebooted by the release_handler:install_release
+ %% (init:reboot) because P2A includes a new erts vsn and the relup
+ %% file contains a 'restart_new_emulator' instruction.
+ ?print(["install_3 P2A installed"]),
+ ok.
+
+
+
+install_4(TestNode) ->
+ ?print(["install_4 start"]),
+
+ % Check that P2A is in use.
+ ?check_release("P2A",current,["a-1.1"]),
+ ?check_running_app(a,"1.1"),
+ X = a:a(),
+ {key2, newval2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+ {ok, bval} = a:b(),
+ ok.
+ % release_handler_SUITE will reboot this node now!
+
+install_5(TestNode) ->
+ ?print(["install_5 start"]),
+
+ % Check that P1I is used
+ {ok, "P1I", [new_emu]} = release_handler:check_install_release("P2A"),
+ ok.
+
+install_5a(TestNode) ->
+ % Install P2A again
+ {ok, "P1I", [new_emu]} = release_handler:install_release("P2A"),
+ %% Node is rebooted by the release_handler:install_release
+ %% (init:reboot) because P2A includes a new erts vsn and the relup
+ %% file contains a 'restart_new_emulator' instruction.
+ ?print(["install_5 P2A installed"]),
+ ok.
+
+install_6(TestNode) ->
+ ?print(["install_6 start"]),
+
+ % Check that P2A is used
+ ?check_release("P2A",current,["a-1.1"]),
+ ?check_running_app(a,"1.1"),
+ X = a:a(),
+ {key2, newval2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+ {ok, bval} = a:b(),
+ ok = release_handler:make_permanent("P2A").
+ % release_handler_SUITE will reboot this node now!
+
+
+install_7(TestNode) ->
+ ?print(["install_7 start"]),
+
+ % Check that P2A is used
+ ?check_release("P2A",permanent,["a-1.1"]),
+
+ % Install old P1H
+ ok = release_handler:reboot_old_release("P1H"),
+ ok.
+
+install_8(TestNode) ->
+ ?print(["install_8 start"]),
+
+ % Check that P1H is permanent
+ ?check_release("P1H",permanent,["a-1.0"]),
+ X = a:a(),
+ {key2, val2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+
+ %% Remove P1I and P2A and check that a-1.1 and erts-<latest> are removed
+ ok = release_handler:remove_release("P2A"),
+ ok = release_handler:remove_release("P1I"),
+ {ok, Libs} = file:list_dir(code:lib_dir()),
+ {_,_,StdlibVsn} = lists:keyfind(stdlib,1,application:which_applications()),
+ true = lists:member("stdlib-"++StdlibVsn, Libs),
+ true = lists:member("a-1.0", Libs),
+ false = lists:member("a-1.1", Libs),
+ {ok, Dirs} = file:list_dir(code:root_dir()),
+ ["erts-4.4"] = lists:filter(fun(Dir) -> lists:prefix("erts-",Dir) end, Dirs),
+ ok.
+ % release_handler_SUITE will reboot this node now!
+
+install_9(TestNode) ->
+ ?print(["install_9 start"]),
+
+ % Check that P1H is permanent
+ ?check_release("P1H",permanent,["a-1.0"]),
+ X = a:a(),
+ {key2, val2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+
+ % Install old P1G
+ ok = release_handler:reboot_old_release("P1G"),
+ ok.
+
+install_10(TestNode) ->
+ ?print(["install_10 start"]),
+
+ % Check that P1G is permanent
+ ?check_release("P1G",permanent,[]),
+ ?check_release("P1H",old,["a-1.0"]),
+
+ %% Remove P1H and check that both versions of application a is removed
+ ok = release_handler:remove_release("P1H"),
+ {ok, Libs} = file:list_dir(code:lib_dir()),
+ {_,_,StdlibVsn} = lists:keyfind(stdlib,1,application:which_applications()),
+ true = lists:member("stdlib-"++StdlibVsn, Libs),
+ false = lists:member("a-1.0", Libs),
+ false = lists:member("a-1.1", Libs),
+ ok.
+ % release_handler_SUITE will reboot this node now!
+
+install_11(TestNode) ->
+ ?print(["install_11 start"]),
+
+ % Check that P1G is permanent
+ ?check_release("P1G",permanent,[]),
+ ok.
+
+
+
+%%-----------------------------------------------------------------
+%% This test starts a client node which uses this node as master
+%% for the release_handler.
+%% The client node runs all tests as in installer/1 test case.
+%% Thus, the client node will be rebooted several times.
+%% The to_erl /tmp/NODENAME@HOSTNAME/ command can be used to connect
+%% to the client node.
+%% run_erl logs for the client can be found in the directory:
+%% code:root_dir() ++ "/clients/type1/NODENAME@HOSTNAME/log
+%%-----------------------------------------------------------------
+
+
+client1_1(TestNode,PrivDir,MasterDir,ClientSname) ->
+ TestHost = test_host(),
+ ?print(["client1_1 start"]),
+
+ {ok,IP} = inet:getaddr(TestHost,inet),
+ erl_boot_server:start([IP]),
+
+ ok = net_kernel:monitor_nodes(true),
+ Node = start_client(TestNode,ClientSname),
+ trace_disallowed_calls(Node),
+
+ %% Check env var for SASL on client node
+ SaslEnv = rpc:call(Node, application, get_all_env, [sasl]),
+ {_,CliDir} = lists:keyfind(client_directory,1,SaslEnv),
+ {_,[Master]} = lists:keyfind(masters,1,SaslEnv),
+ {_,StartCli} = lists:keyfind(start_prg,1,SaslEnv),
+ Root = code:root_dir(),
+ true = (CliDir =:= filename:join([Root,"clients","type1",Node])),
+ true = (StartCli =:= filename:join([CliDir,"bin","start"])),
+ true = (Master =:= node()),
+
+ %% Unpack P1H on master
+ {ok, "P1H"} = unpack_release(PrivDir,"rel1"),
+
+ %% Unpack and install P1H on client
+ P1HDir = filename:join([Root, "releases", "P1H"]),
+
+ %% The AppDirs argument (last arg to set_unpacked) below is really
+ %% not necessary, it could just be [] since the path is the same
+ %% as default. But it is given here in order to force hitting the
+ %% release_handler:check_path function so it can be checked that
+ %% it does not use file:read_file_info on the client node, see
+ %% trace_disallowed_calls/1 and check_disallowed_calls/0 below.
+ %% (OTP-9142)
+ {ok, "P1H"} = rpc:call(Node, release_handler, set_unpacked,
+ [filename:join(P1HDir, "rel1.rel"),
+ [{a,"1.0",filename:join(MasterDir,lib)}]]),
+
+ ?check_release_client(Node,"P1H",unpacked,["a-1.0"]),
+
+ ok = rpc:call(Node, release_handler, install_file,
+ ["P1H", filename:join(P1HDir, "start.boot")]),
+ ok = rpc:call(Node, release_handler, install_file,
+ ["P1H", filename:join(P1HDir, "sys.config")]),
+ ok = rpc:call(Node, release_handler, install_file,
+ ["P1H", filename:join(P1HDir, "relup")]),
+ ?print([{release_handler_state, Node},
+ rpc:call(Node, sys, get_status, [release_handler])]),
+
+ {ok,"P1G",[new_appl]} =
+ rpc:call(Node, release_handler, check_install_release, ["P1H"]),
+
+ {ok,"P1G",[new_appl]} =
+ rpc:call(Node, release_handler, install_release, ["P1H"]),
+
+ Apps = rpc:call(Node, application, which_applications, []),
+ {a,"A CXC 138 11","1.0"} = lists:keyfind(a, 1, Apps),
+ X = rpc:call(Node, a, a, []),
+ {key2, val2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+
+ check_disallowed_calls(),
+ reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_2(TestNode,PrivDir,Node).
+
+client1_2(TestNode,PrivDir,Node) ->
+ ?print(["client1_2 start"]),
+
+ %% Check that P1H is still unpacked, install it and make_permanent
+ ?check_release_client(Node,"P1H",unpacked,["a-1.0"]),
+
+ {ok,"P1G",[new_appl]} =
+ rpc:call(Node, release_handler, install_release, ["P1H"]),
+ ?check_release_client(Node,"P1H",current,["a-1.0"]),
+ ?check_running_app_client(Node,a,"1.0"),
+
+ ok = rpc:call(Node, release_handler, make_permanent, ["P1H"]),
+
+ check_disallowed_calls(),
+ reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_3(TestNode,PrivDir,Node).
+
+client1_3(TestNode,PrivDir,Node) ->
+ ?print(["client1_3 start"]),
+
+ %% Check that P1H is permanent
+ ?check_release_client(Node,"P1H",permanent,["a-1.0"]),
+ X = rpc:call(Node, a, a, []),
+ {key2, val2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+
+ %% Unpack P1I on master
+ {ok, "P1I"} = unpack_release(PrivDir,"rel2"),
+
+ MasterRoot = code:root_dir(),
+
+ %% Unpack and install P1I on client
+ P1IDir = filename:join([MasterRoot, "releases", "P1I"]),
+ {ok, "P1I"} = rpc:call(Node, release_handler, set_unpacked,
+ [filename:join(P1IDir, "rel2.rel"),[]]),
+
+ ?check_release_client(Node,"P1I",unpacked,["a-1.1"]),
+
+ ok = rpc:call(Node, release_handler, install_file,
+ ["P1I", filename:join(P1IDir, "start.boot")]),
+ ok = rpc:call(Node, release_handler, install_file,
+ ["P1I", filename:join(P1IDir, "sys.config")]),
+ ok = rpc:call(Node, release_handler, install_file,
+ ["P1I", filename:join(P1IDir, "relup")]),
+
+ {ok,"P1H",[{extra, gott}]} =
+ rpc:call(Node, release_handler, check_install_release, ["P1I"]),
+ {error,_} = rpc:call(Node, release_handler, check_install_release, ["P1J"]),
+ {ok,"P1H",[{extra, gott}]} =
+ rpc:call(Node, release_handler, install_release, ["P1I"]),
+
+ ?check_running_app_client(Node,a,"1.1"),
+ X2 = rpc:call(Node, a, a, []),
+ {key2, newval2} = lists:keyfind(key2, 1, X2),
+ {key1, val1} = lists:keyfind(key1, 1, X2),
+ {ok, bval} = rpc:call(Node, a, b, []),
+
+ %% Unpack P2A on master
+ {ok, "P2A"} = unpack_release(PrivDir,"rel3"),
+
+ %% Unpack and install P2A on client
+ P2ADir = filename:join([MasterRoot, "releases", "P2A"]),
+ {ok, "P2A"} =
+ rpc:call(Node, release_handler, set_unpacked,
+ [filename:join(P2ADir, "rel3.rel"),[]]),
+
+ ok = rpc:call(Node, release_handler, install_file,
+ ["P2A", filename:join(P2ADir, "start.boot")]),
+ ok = rpc:call(Node, release_handler, install_file,
+ ["P2A", filename:join(P2ADir, "sys.config")]),
+ ok = rpc:call(Node, release_handler, install_file,
+ ["P2A", filename:join(P2ADir, "relup")]),
+
+ {ok, "P1I", [new_emu]} =
+ rpc:call(Node, release_handler, check_install_release, ["P2A"]),
+ ok = rpc:call(Node, release_handler, make_permanent, ["P1I"]),
+ ?check_release_client(Node,"P1I",permanent,["a-1.1"]),
+
+ %% since the install_release below reboot the node...
+ check_disallowed_calls(),
+ cover_client(TestNode,Node,stop_cover),
+
+ {ok, "P1I", [new_emu]} =
+ rpc:call(Node, release_handler, install_release, ["P2A"]),
+ %% Reboots the client !
+
+ check_reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_4(TestNode,Node).
+
+client1_4(TestNode,Node) ->
+ ?print(["client1_4 start"]),
+
+ %% Check that P2A is in use.
+ ?check_release_client(Node,"P2A",current,["a-1.1"]),
+ ?check_running_app_client(Node,a,"1.1"),
+ X = rpc:call(Node, a, a, []),
+ {key2, newval2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+ {ok, bval} = rpc:call(Node, a, b, []),
+
+ %% Reboot from P1I
+ check_disallowed_calls(),
+ reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_5(TestNode,Node).
+
+client1_5(TestNode,Node) ->
+ ?print(["client1_5 start"]),
+
+ %% Check that P1I is used
+ {ok, "P1I", [new_emu]} =
+ rpc:call(Node, release_handler, check_install_release, ["P2A"]),
+
+ %% since the install_release below will reboot the node...
+ check_disallowed_calls(),
+ cover_client(TestNode,Node,stop_cover),
+
+ %% Install P2A again
+ {ok, "P1I", [new_emu]} =
+ rpc:call(Node, release_handler, install_release, ["P2A"]),
+
+ %% We are rebooted again.
+ check_reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_6(TestNode,Node).
+
+client1_6(TestNode,Node) ->
+ ?print(["client1_6 start"]),
+
+ %% Check that P2A is used
+ ?check_release_client(Node,"P2A",current,["a-1.1"]),
+ ?check_running_app_client(Node,a,"1.1"),
+ X = rpc:call(Node, a, a, []),
+ {key2, newval2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+ {ok, bval} = rpc:call(Node, a, b, []),
+
+ %% Make P2A permanent
+ ok = rpc:call(Node, release_handler, make_permanent, ["P2A"]),
+
+ %% Reboot from P2A
+ check_disallowed_calls(),
+ reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_7(TestNode,Node).
+
+client1_7(TestNode,Node) ->
+ ?print(["client1_7 start"]),
+
+ %% Check that P2A is used
+ ?check_release_client(Node,"P2A",permanent,["a-1.1"]),
+
+ %% since the reboot_old_release below will reboot the node
+ check_disallowed_calls(),
+ cover_client(TestNode,Node,stop_cover),
+
+ %% Install old P1H
+ rpc:call(Node, release_handler, reboot_old_release, ["P1H"]),
+ %% We are rebooted.
+ check_reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_8(TestNode,Node).
+
+client1_8(TestNode,Node) ->
+ ?print(["client1_8 start"]),
+
+ %% Check that P1H is permanent
+ ?check_release_client(Node,"P1H",permanent,["a-1.0"]),
+ X = rpc:call(Node, a, a, []),
+ {key2, val2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+
+ %% Remove P1I and P2I from client
+ ok = rpc:call(Node, release_handler, set_removed, ["P2A"]),
+ ok = rpc:call(Node, release_handler, set_removed, ["P1I"]),
+
+ check_disallowed_calls(),
+ reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_9(TestNode,Node).
+
+client1_9(TestNode,Node) ->
+ ?print(["client1_9 start"]),
+
+ %% Check that P2A and P1I does not exists and that PiH is permanent.
+ Rels = rpc:call(Node, release_handler, which_releases, []),
+ false = lists:keysearch("P2A", 2, Rels),
+ false = lists:keysearch("P1I", 2, Rels),
+ ?check_release_client(Node,"P1H",permanent,["a-1.0"]),
+ X = rpc:call(Node, a, a, []),
+ {key2, val2} = lists:keyfind(key2, 1, X),
+ {key1, val1} = lists:keyfind(key1, 1, X),
+
+ %% since the reboot_old_release below will reboot the node
+ check_disallowed_calls(),
+ cover_client(TestNode,Node,stop_cover),
+
+ %% Install old P1G
+ rpc:call(Node, release_handler, reboot_old_release, ["P1G"]),
+ %% We are rebooted.
+ check_reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_10(TestNode,Node).
+
+client1_10(TestNode,Node) ->
+ ?print(["client1_10 start"]),
+
+ %% Check that P1G is permanent
+ ?check_release_client(Node,"P1G",permanent,[]),
+ ?check_release_client(Node,"P1H",old,["a-1.0"]),
+ {error,client_node} = rpc:call(Node,release_handler,remove_release,["P1H"]),
+ ok = rpc:call(Node, release_handler, set_removed, ["P1H"]),
+
+ check_disallowed_calls(),
+ reboot(TestNode,Node),
+ trace_disallowed_calls(Node),
+
+ client1_11(TestNode,Node).
+
+client1_11(TestNode,Node) ->
+ ?print(["client1_11 start"]),
+
+ %% Check that P1G is permanent
+ ?check_release_client(Node,"P1G",permanent,[]),
+
+ check_disallowed_calls(),
+ stop_client(TestNode,Node), %% TEST IS OK !!
+ net_kernel:monitor_nodes(false),
+
+ ok = release_handler:remove_release("P2A"),
+ ok = release_handler:remove_release("P1I"),
+ ok = release_handler:remove_release("P1H"),
+ ok.
+
+%% Start tracing of the file module on the client node. This module
+%% shall never be called, since
+%% 1) the node is a client from the release_handler's point of view,
+%% so all file access should be done via rpc calls to the master
+%% 2) it is started with erl_prim_loader loader set to 'inet' so all
+%% code loading should be done via the inet to the master
+%% (OTP-9142)
+%% This function is called each time the client node is started and to
+%% check if a call has been made, call check_disallowed_node/0
+trace_disallowed_calls(Node) ->
+ MasterProc = self(),
+ rpc:call(Node,dbg,tracer,[process,{fun(T,_) -> MasterProc ! T end,[]}]),
+ rpc:call(Node,dbg,p,[all,call]),
+ rpc:call(Node,dbg,tp,[file,[]]).
+
+check_disallowed_calls() ->
+ receive
+ Trace when element(1,Trace)==trace ->
+ exit({disallowed_function_call,Trace})
+ after 0 ->
+ ok
+ end.
+
+start_client(TestNode,Client) ->
+ {Start, Node} = do_start_client(Client,test_host()),
+ Cmd = lists:concat(["env NODENAME=",Client," ",
+ filename:join(code:root_dir(), Start)]),
+ ?print([{start_client,Client},Cmd]),
+ Res = os:cmd(Cmd),
+ ?print([{start_client,result},Res]),
+ receive
+ {nodeup, Node} ->
+ wait_started(TestNode,Node)
+ after 30000 ->
+ ?print([{start_client,failed,Node},net_adm:ping(Node)]),
+ ?fail({"can not start", Node})
+ end.
+
+do_start_client(Client, Host) ->
+ Node = list_to_atom(lists:concat([Client,"@",Host])),
+ Start = filename:join(["clients", "type1", Node, "bin", "start"]),
+ {Start, Node}.
+
+reboot(TestNode,Node) ->
+ cover_client(TestNode,Node,stop_cover),
+ rpc:call(Node, init, reboot, []),
+ check_reboot(TestNode,Node).
+
+%% This way of checking that the node is rebooted will only work if
+%% the nodes are automatically re-connected after the reboot. This
+%% happens for master/client (when sasl is started on the client).
+check_reboot(TestNode,Node) ->
+ receive
+ {nodedown, Node} ->
+ receive
+ {nodeup, Node} -> wait_started(TestNode,Node)
+ after 30000 ->
+ ?fail({Node, "not rebooted",net_adm:ping(Node)})
+ end
+ after 30000 ->
+ ?fail({Node, "not closing down",net_adm:ping(Node)})
+ end.
+
+stop_client(TestNode,Node) ->
+ cover_client(TestNode,Node,stop_cover),
+ rpc:call(Node, init, stop, []),
+ receive
+ {nodedown, Node} -> ok
+ after 30000 ->
+ ?fail({Node, "not stopping"})
+ end.
+
+wait_started(TestNode,Node) ->
+ case rpc:call(Node, init, get_status, []) of
+ {started, _} ->
+ cover_client(TestNode,Node,start_cover),
+ Node;
+ _ ->
+ timer:sleep(1000),
+ wait_started(TestNode,Node)
+ end.
+
+cover_client(TestNode,Node,Func) ->
+ R = rpc:call(TestNode,release_handler_SUITE,Func,[Node]),
+ ?print([{Func,Node,R}]).
+
+
+%%-----------------------------------------------------------------
+%% This test starts a client node which uses this node as master
+%% for the release_handler.
+%% The client node has the name cli2@HOSTNAME.
+%% The client node is not allowed to do ANY release updates
+%% as it also have another (non-existing) master node.
+%%
+%% The to_erl /tmp/cli2@HOSTNAME/ command can be used to connect
+%% to the client node.
+%% run_erl logs for the client can be found in the directory:
+%% code:root_dir() ++ "/clients/type1/cli2@HOSTNAME/log
+%%-----------------------------------------------------------------
+client2(TestNode,PrivDir,ClientSname) ->
+ TestHost = test_host(),
+ ?print(["client2 start"]),
+
+ %% Clean up if previous test case failed
+ release_handler:remove_release("P1H"),
+
+ ok = net_kernel:monitor_nodes(true),
+ Node = start_client(TestNode,ClientSname),
+
+ %% Check env var for SASL on client node
+ ?print([{sasl_env, Node}, rpc:call(Node, application, get_all_env, [sasl])]),
+ SaslEnv = rpc:call(Node, application, get_all_env, [sasl]),
+ {_,CliDir} = lists:keyfind(client_directory,1,SaslEnv),
+ {_,[Master,Master2]} = lists:keyfind(masters,1,SaslEnv),
+ {_,StartCli} = lists:keyfind(start_prg,1,SaslEnv),
+ Root = code:root_dir(),
+ true = (CliDir =:= filename:join([Root,"clients","type1",Node])),
+ true = (StartCli =:= filename:join([CliDir,"bin","start"])),
+ true = (Master =:= node()),
+ true = (Master2 =:= list_to_atom("master2@"++TestHost)),
+
+ {ok, "P1H"} = unpack_release(PrivDir,"rel1"),
+
+ {error,{bad_masters,[Master2]}} =
+ rpc:call(Node, release_handler, set_unpacked,
+ [filename:join([Root, "releases", "P1H", "rel1.rel"]),[]]),
+
+ {error,{no_such_release,"P1H"}} =
+ rpc:call(Node, release_handler, check_install_release, ["P1H"]),
+
+ stop_client(TestNode,Node), %% TEST IS OK !!
+ net_kernel:monitor_nodes(false),
+
+ release_handler:remove_release("P1H"),
+ ok.
+
+
+stop(Now) ->
+ %% The timestamp is only used for debugging. It is printed by
+ %% release_handler_SUITE also.
+ R = init:stop(),
+ erlang:display({init_stop,Now,R}),
+ R.
+
+unpack_p1h(TestNode,PrivDir) ->
+ {ok, "P1H"} = unpack_release(PrivDir,"rel1"),
+ ?check_release("P1H",unpacked,["a-1.0"]),
+ ok.
+
+permanent_p1h(TestNode) ->
+ ?check_release("P1H",unpacked,["a-1.0"]),
+ {ok,"P1G",[new_appl]} = release_handler:install_release("P1H"),
+ ?check_release("P1H",current,["a-1.0"]),
+ ok = release_handler:make_permanent("P1H"),
+ ?check_release("P1H",permanent,["a-1.0"]),
+ ok.
+
+
+reg_proc(Name) ->
+ catch unregister(Name),
+ Pid = spawn_link(?MODULE, registered_loop, [Name]),
+ global:register_name(Name, Pid),
+ ok.
+
+registered_loop(_Name) ->
+ receive
+ kill ->
+ exit(killed)
+ end.
+
+check_release(TestNode,Node,Vsn,Status,Apps,Line) ->
+ case rpc:call(Node,release_handler,which_releases,[]) of
+ {badrpc,_}=Error ->
+ ?fail_line(Line,{check_release,Node,Vsn,Status,Error});
+ Rels ->
+ ?print_line(Line,["check_release:", Rels]),
+ {"SASL-test", Vsn, Libs, Status} = lists:keyfind(Vsn, 2, Rels),
+ true = lists:all(fun(App) -> lists:member(App,Libs) end,Apps),
+ ok
+ end.
+
+check_running_app(TestNode,Node,App,Vsn,Line) ->
+ case rpc:call(Node,application,which_applications,[]) of
+ {badrpc,_}=Error ->
+ ?fail_line(Line,{check_running_app,Node,App,Vsn,Error});
+ Apps ->
+ ?print_line(Line,["check_running_app:", Apps]),
+ {App, _, Vsn} = lists:keyfind(a, 1, Apps),
+ ok
+ end.
+
+test_host() ->
+ {ok,Host} = inet:gethostname(),
+ Host.
+
+unpack_release(PrivDir,Rel) ->
+ copy(filename:join([PrivDir,Rel,Rel++".tar.gz"]),
+ filename:join(code:root_dir(),releases)),
+ release_handler:unpack_release(Rel).
+
+copy(Src, DestDir) ->
+ Dest = filename:join(DestDir, filename:basename(Src)),
+ {ok,_} = file:copy(Src, Dest),
+ ok.
+
diff --git a/lib/sasl/test/overload_SUITE.erl b/lib/sasl/test/overload_SUITE.erl
new file mode 100644
index 0000000000..92b1aaed6e
--- /dev/null
+++ b/lib/sasl/test/overload_SUITE.erl
@@ -0,0 +1,175 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+
+-module(overload_SUITE).
+-include("test_server.hrl").
+
+-compile(export_all).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+all() -> [info, set_config_data, set_env_vars, request, timeout].
+all(suite) -> all().
+
+init_per_testcase(_Case,Config) ->
+ restart_sasl(),
+ Config.
+
+end_per_testcase(Case,Config) ->
+ try apply(?MODULE,Case,[cleanup,Config])
+ catch error:undef -> ok
+ end,
+ ok.
+
+%%%-----------------------------------------------------------------
+info(suite) -> [];
+info(_Config) ->
+ ?line Info = overload:get_overload_info(),
+ ?line [{total_intensity,0.0},
+ {accept_intensity,0.0},
+ {max_intensity,0.8},
+ {weight,0.1},
+ {total_requests,0},
+ {accepted_requests,0}] = Info.
+
+%%%-----------------------------------------------------------------
+set_config_data(suite) -> [];
+set_config_data(_Config) ->
+ ?line InfoDefault = overload:get_overload_info(),
+ ?line ok = check_info(0.8,0.1,InfoDefault),
+ ?line ok = overload:set_config_data(0.5,0.4),
+ ?line Info1 = overload:get_overload_info(),
+ ?line ok = check_info(0.5,0.4,Info1),
+ ok.
+
+%%%-----------------------------------------------------------------
+set_env_vars(suite) -> [];
+set_env_vars(_Config) ->
+ ?line InfoDefault = overload:get_overload_info(),
+ ?line ok = check_info(0.8,0.1,InfoDefault),
+ ?line ok = application:set_env(sasl,overload_max_intensity,0.5),
+ ?line ok = application:set_env(sasl,overload_weight,0.4),
+ ?line ok = application:stop(sasl),
+ ?line ok = application:start(sasl),
+ ?line Info1 = overload:get_overload_info(),
+ ?line ok = check_info(0.5,0.4,Info1),
+ ok.
+set_env_vars(cleanup,_Config) ->
+ application:unset_env(sasl,overload_max_intensity),
+ application:unset_env(sasl,overload_weight),
+ ok.
+
+%%%-----------------------------------------------------------------
+request(suite) -> [];
+request(_Config) ->
+ %% Find number of request that can be done with default settings
+ %% and no delay
+ ?line overload:set_config_data(0.8, 0.1),
+ ?line NDefault = do_many_requests(0),
+ ?line restart_sasl(),
+ ?line ?t:format("NDefault: ~p",[NDefault]),
+
+ %% Check that the number of requests increases when max_intensity
+ %% increases
+ ?line overload:set_config_data(2, 0.1),
+ ?line NLargeMI = do_many_requests(0),
+ ?line restart_sasl(),
+ ?line ?t:format("NLargeMI: ~p",[NLargeMI]),
+ ?line true = NLargeMI > NDefault,
+
+ %% Check that the number of requests decreases when weight
+ %% increases
+ ?line overload:set_config_data(0.8, 1),
+ ?line NLargeWeight = do_many_requests(0),
+ ?line restart_sasl(),
+ ?line ?t:format("NLargeWeight: ~p",[NLargeWeight]),
+ ?line true = NLargeWeight < NDefault,
+
+ %% Check that number of requests increases when delay between
+ %% requests increases.
+ %% (Keeping same config and comparing to large weight in order to
+ %% minimize the time needed for this case.)
+ ?line overload:set_config_data(0.8, 1),
+ ?line NLargeTime = do_many_requests(500),
+ ?line restart_sasl(),
+ ?line ?t:format("NLargeTime: ~p",[NLargeTime]),
+ ?line true = NLargeTime > NLargeWeight,
+ ok.
+
+%%%-----------------------------------------------------------------
+timeout(suite) -> [];
+timeout(_Config) ->
+ ?line overload:set_config_data(0.8, 1),
+ ?line _N = do_many_requests(0),
+
+ %% Check that the overload alarm is raised
+ ?line [{overload,_}] = alarm_handler:get_alarms(),
+
+ %% Fake a clear timeout in overload.erl and check that, since it
+ %% came very soon after the overload situation, the alarm is not
+ %% cleared
+ ?line overload ! timeout,
+ ?line timer:sleep(1000),
+ ?line [{overload,_}] = alarm_handler:get_alarms(),
+
+ %% A bit later, try again and check that this time the alarm is
+ %% cleared
+ ?line overload ! timeout,
+ ?line timer:sleep(1000),
+ ?line [] = alarm_handler:get_alarms(),
+
+ ok.
+
+
+%%%-----------------------------------------------------------------
+%%% INTERNAL FUNCTIONS
+
+%%%-----------------------------------------------------------------
+%%% Call overload:request/0 up to 30 times with the given time delay
+%%% between. Stop when 'reject' is returned.
+do_many_requests(T) ->
+ 30 - do_requests(30,T).
+
+do_requests(0,_) ->
+ ?t:fail(never_rejected);
+do_requests(N,T) ->
+ case overload:request() of
+ accept ->
+ timer:sleep(T),
+ do_requests(N-1,T);
+ reject ->
+ N
+ end.
+
+%%%-----------------------------------------------------------------
+%%% Restart the sasl application
+restart_sasl() ->
+ application:stop(sasl),
+ application:start(sasl),
+ ok.
+
+%%%-----------------------------------------------------------------
+%%% Check that max_intensity and weight is set as expected
+check_info(MI,W,Info) ->
+ case {lists:keyfind(max_intensity,1,Info), lists:keyfind(weight,1,Info)} of
+ {{_,MI},{_,W}} -> ok;
+ _ -> ?t:fail({unexpected_info,MI,W,Info})
+ end.
+
+
diff --git a/lib/sasl/test/rb_SUITE.erl b/lib/sasl/test/rb_SUITE.erl
new file mode 100644
index 0000000000..b53c382609
--- /dev/null
+++ b/lib/sasl/test/rb_SUITE.erl
@@ -0,0 +1,606 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+
+-module(rb_SUITE).
+-include("test_server.hrl").
+
+-compile(export_all).
+
+-define(SUP,rb_SUITE_sup).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+all() ->
+ no_group_cases() ++ [{group,running_error_logger}].
+
+no_group_cases() ->
+ [help,
+ start_error_stop].
+
+groups() ->
+ [{running_error_logger,[shuffle],[show,
+ list,
+ rescan,
+ start_stop_log,
+ grep,
+ filter_filter,
+ filter_date,
+ filter_filter_and_date,
+ filter_re_no
+ ]}].
+
+
+all(suite) ->
+ no_group_cases() ++
+ [{conf,
+ install_mf_h,
+ element(3,lists:keyfind(running_error_logger,1,groups())),
+ remove_mf_h}
+ ].
+
+
+init_per_suite(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line RbDir = filename:join(PrivDir,rb),
+ ?line ok = file:make_dir(RbDir),
+ NewConfig = [{rb_dir,RbDir}|Config],
+ reset_sasl(NewConfig),
+ NewConfig.
+
+end_per_suite(_Config) ->
+ ok.
+
+init_per_group(running_error_logger,Config) ->
+ install_mf_h(Config).
+
+end_per_group(running_error_logger,Config) ->
+ remove_mf_h(Config).
+
+init_per_testcase(_Case,Config) ->
+ case whereis(?SUP) of
+ undefined -> ok;
+ Pid -> kill(Pid)
+ end,
+ empty_error_logs(Config),
+ Config.
+
+kill(Pid) ->
+ Ref = erlang:monitor(process,Pid),
+ exit(Pid,kill),
+ receive {'DOWN', Ref, process, Pid, _Info} -> ok end.
+
+end_per_testcase(Case,Config) ->
+ try apply(?MODULE,Case,[cleanup,Config])
+ catch error:undef -> ok
+ end,
+ ok.
+
+
+%%%-----------------------------------------------------------------
+
+help() -> help(suite).
+help(suite) -> [];
+help(_Config) ->
+ ?line Help = capture(fun() -> rb:h() end),
+ ?line "Report Browser Tool - usage" = hd(Help),
+ ?line "rb:stop - stop the rb_server" = lists:last(Help),
+ ok.
+
+
+start_error_stop() -> start_error_stop(suite).
+start_error_stop(suite) -> [];
+start_error_stop(Config) ->
+ ?line RbDir = ?config(rb_dir,Config),
+
+ ?line {error,{"cannot locate report directory",_}} = rb:start(),
+
+
+ ?line ok = application:set_env(sasl,error_logger_mf_dir,"invaliddir"),
+ ?line ok = application:set_env(sasl,error_logger_mf_maxbytes,1000),
+ ?line ok = application:set_env(sasl,error_logger_mf_maxfiles,2),
+ ?line restart_sasl(),
+ ?line {error,{"cannot read the index file",_}} = rb:start(),
+ ?line ok = application:set_env(sasl,error_logger_mf_dir,RbDir),
+ ?line restart_sasl(),
+ ?line {ok,_} = rb:start(),
+
+ ?line ok = rb:stop(),
+ ok.
+
+
+%% start_opts(suite) -> [];
+%% start_opts(Config) ->
+%% PrivDir = ?config(priv_dir,Config),
+%% RbDir = filename:join(PrivDir,rb_opts),
+%% ok = file:make_dir(RbDir),
+
+
+install_mf_h(Config) ->
+ ?line RbDir = ?config(rb_dir,Config),
+ ?line ok = application:set_env(sasl,error_logger_mf_dir,RbDir),
+ ?line ok = application:set_env(sasl,error_logger_mf_maxbytes,5000),
+ ?line ok = application:set_env(sasl,error_logger_mf_maxfiles,2),
+ ?line restart_sasl(),
+ Config.
+
+remove_mf_h(_Config) ->
+ ok.
+
+
+
+show() -> show(suite).
+show(suite) -> [];
+show(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line OutFile = filename:join(PrivDir,"rb_SUITE_log.txt"),
+
+ %% Insert some reports in the error log and start rb
+ init_error_logs(),
+ ?line ok = start_rb(OutFile),
+
+ %% Show all reports
+ ?line All = check_report(fun() -> rb:show() end,OutFile),
+
+ %% Show by number
+ ?line [{_,First}] = check_report(fun() -> rb:show(1) end,OutFile),
+ ?line {1,First} = lists:keyfind(1,1,All),
+
+ %% Show by type
+ ?line [{_,CR}] = check_report(fun() -> rb:show(crash_report) end,OutFile),
+ ?line true = contains(CR,"rb_test_crash"),
+ ?line [{_,EC},{_,EM}] = check_report(fun() -> rb:show(error) end,OutFile),
+ ?line true = contains(EC,"rb_test_crash"),
+ ?line true = contains(EM,"rb_test_error_msg"),
+ ?line [{_,ER}] = check_report(fun() -> rb:show(error_report) end,OutFile),
+ ?line true = contains(ER,"rb_test_error"),
+ ?line [{_,IR}] = check_report(fun() -> rb:show(info_report) end,OutFile),
+ ?line true = contains(IR,"rb_test_info"),
+ ?line [{_,IM}] = check_report(fun() -> rb:show(info_msg) end,OutFile),
+ ?line true = contains(IM,"rb_test_info_msg"),
+ ?line [_|_] = check_report(fun() -> rb:show(progress) end,OutFile),
+ ?line [{_,SR}] = check_report(fun() -> rb:show(supervisor_report) end,
+ OutFile),
+ ?line true = contains(SR,"child_terminated"),
+ ?line true = contains(SR,"{rb_SUITE,rb_test_crash}"),
+
+ ok.
+
+list() -> list(suite).
+list(suite) -> [];
+list(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line OutFile = filename:join(PrivDir,"rb_SUITE_log.txt"),
+
+ %% Insert some reports in the error log and start rb
+ init_error_logs(),
+ ?line ok = start_rb(OutFile),
+
+ ?line All = capture(fun() -> rb:list() end),
+ ?line [{crash_report,[_]=CR},
+ {error,[_,_]=EM},
+ {error_report,[_]=ER},
+ {info_msg,[_]=IM},
+ {info_report,[_]=IR},
+ {progress,[_|_]=P},
+ {supervisor_report,[_]=SR}] = sort_list(All),
+
+ ?line [{crash_report,CR}] =
+ sort_list(capture(fun() -> rb:list(crash_report) end)),
+ ?line [{error,EM}] =
+ sort_list(capture(fun() -> rb:list(error) end)),
+ ?line [{error_report,ER}] =
+ sort_list(capture(fun() -> rb:list(error_report) end)),
+ ?line [{info_msg,IM}] =
+ sort_list(capture(fun() -> rb:list(info_msg) end)),
+ ?line [{info_report,IR}] =
+ sort_list(capture(fun() -> rb:list(info_report) end)),
+ ?line [{progress,P}] =
+ sort_list(capture(fun() -> rb:list(progress) end)),
+ ?line [{supervisor_report,SR}] =
+ sort_list(capture(fun() -> rb:list(supervisor_report) end)),
+
+ ok.
+
+
+grep() -> grep(suite).
+grep(suite) -> [];
+grep(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line OutFile = filename:join(PrivDir,"rb_SUITE_log.txt"),
+
+ %% Insert some reports in the error log and start rb
+ init_error_logs(),
+ ?line ok = start_rb(OutFile),
+
+ ?line [{_,S},
+ {_,CR},
+ {_,EC},
+ {_,IM},
+ {_,IR},
+ {_,EM},
+ {_,ER}]= check_report(fun() -> rb:grep("rb_test_") end,OutFile),
+ ?line true = contains(S, "rb_test_crash"),
+ ?line true = contains(CR, "rb_test_crash"),
+ ?line true = contains(EC, "rb_test_crash"),
+ ?line true = contains(IM, "rb_test_info_msg"),
+ ?line true = contains(IR, "rb_test_info"),
+ ?line true = contains(EM, "rb_test_error_msg"),
+ ?line true = contains(ER, "rb_test_error"),
+ ok.
+
+
+filter_filter() -> filter_filter(suite).
+filter_filter(suite) -> [];
+filter_filter(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line OutFile = filename:join(PrivDir,"rb_SUITE_log.txt"),
+
+ %% Insert some reports in the error log and start rb
+ init_error_logs(),
+ ?line ok = start_rb(OutFile),
+
+ ?line All = check_report(fun() -> rb:show() end,OutFile),
+
+ ?line ER = [_] = rb_filter([{rb_SUITE,rb_test_error}],OutFile),
+ ?line [] = rb_filter([{rb_SUITE,rb_test}],OutFile),
+ ?line _E = [_,_] = rb_filter([{rb_SUITE,"rb_test",re}],OutFile),
+ ?line AllButER = rb_filter([{rb_SUITE,rb_test_error,no}],OutFile),
+
+ {_,AllRep} = lists:unzip(All),
+ {_,ERRep} = lists:unzip(ER),
+ {_,AllButERRep} = lists:unzip(AllButER),
+ ?line AllButERRep = AllRep -- ERRep,
+
+ ok.
+
+filter_date() -> filter_date(suite).
+filter_date(suite) -> [];
+filter_date(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line OutFile = filename:join(PrivDir,"rb_SUITE_log.txt"),
+
+
+ %% Insert some reports in the error log and start rb
+ init_error_logs(),
+ Between1 = calendar:local_time(),
+ timer:sleep(1000),
+ Between2 = calendar:local_time(),
+ ?line ok = start_rb(OutFile),
+
+ ?line All = check_report(fun() -> rb:show() end,OutFile),
+
+ Before = calendar:gregorian_seconds_to_datetime(
+ calendar:datetime_to_gregorian_seconds(calendar:local_time()) - 10),
+ After = calendar:gregorian_seconds_to_datetime(
+ calendar:datetime_to_gregorian_seconds(calendar:local_time()) + 1),
+
+ ?line All = rb_filter([],{Before,from},OutFile),
+ ?line All = rb_filter([],{After,to},OutFile),
+ ?line [] = rb_filter([],{Before,to},OutFile),
+ ?line [] = rb_filter([],{After,from},OutFile),
+ ?line All = rb_filter([],{Before,After},OutFile),
+
+ %%?t:format("~p~n",[All]),
+ ?line AllButLast = [{N-1,R} || {N,R} <- tl(All)],
+ ?line AllButLast = rb_filter([],{Before,Between1},OutFile),
+
+ ?line Last = hd(All),
+ ?line [Last] = rb_filter([],{Between2,After},OutFile),
+
+ ok.
+
+filter_filter_and_date() -> filter_filter_and_date(suite).
+filter_filter_and_date(suite) -> [];
+filter_filter_and_date(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line OutFile = filename:join(PrivDir,"rb_SUITE_log.txt"),
+
+
+ %% Insert some reports in the error log and start rb
+ init_error_logs(),
+ Between1 = calendar:local_time(),
+ timer:sleep(1000),
+ Between2 = calendar:local_time(),
+ ?line error_logger:error_report([{rb_SUITE,rb_test_filter}]),
+ ?line ok = start_rb(OutFile),
+
+ Before = calendar:gregorian_seconds_to_datetime(
+ calendar:datetime_to_gregorian_seconds(calendar:local_time()) - 10),
+ After = calendar:gregorian_seconds_to_datetime(
+ calendar:datetime_to_gregorian_seconds(calendar:local_time()) + 1),
+
+ ?line All = check_report(fun() -> rb:show() end,OutFile),
+ ?line Last = hd(All),
+
+ ?line [_,_,_] = rb_filter([{rb_SUITE,"rb_test",re}],{Before,After},OutFile),
+ ?line [_,_] = rb_filter([{rb_SUITE,"rb_test",re}],{Before,Between1},OutFile),
+ ?line [_] = rb_filter([{rb_SUITE,"rb_test",re}],{Between2,After},OutFile),
+ ?line [_] = rb_filter([{rb_SUITE,rb_test_filter}],{Before,After},OutFile),
+ ?line [] = rb_filter([{rb_SUITE,rb_test_filter}],{Before,Between1},OutFile),
+ ?line [Last] = rb_filter([{rb_SUITE,rb_test_filter,no}],{Between2,After},OutFile),
+ ?line {_,Str} = Last,
+ ?line false = contains(Str,"rb_test_filter"),
+
+ ok.
+
+
+filter_re_no() -> filter_re_no(suite).
+filter_re_no(suite) -> [];
+filter_re_no(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line OutFile = filename:join(PrivDir,"rb_SUITE_log.txt"),
+
+ %% Insert some reports in the error log and start rb
+ init_error_logs(),
+ ?line ok = start_rb(OutFile),
+
+ ?line All = check_report(fun() -> rb:show() end,OutFile),
+
+ ?line E = [_,_] = rb_filter([{rb_SUITE,"rb_test",re}],OutFile),
+ ?line AllButE = rb_filter([{rb_SUITE,"rb_test",re,no}],OutFile),
+
+ {_,AllRep} = lists:unzip(All),
+ {_,ERep} = lists:unzip(E),
+ {_,AllButERep} = lists:unzip(AllButE),
+ ?line AllButERep = AllRep -- ERep,
+
+ ok.
+
+
+rescan() -> rescan(suite).
+rescan(suite) -> [];
+rescan(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line OutFile = filename:join(PrivDir,"rb_SUITE_log.txt"),
+
+ %% Start rb
+ ?line ok = start_rb(OutFile),
+
+ %% Insert one more report and check that the list is longer. Note
+ %% that there might be two more reports, since the progress report
+ %% from starting rb_server might not be included before the rescan.
+ ?line AllBefore = capture(fun() -> rb:list() end),
+ ?line error_logger:error_report([{rb_SUITE,rb_test_rescan}]),
+ ?line ok = rb:rescan(),
+ ?line AllAfter = capture(fun() -> rb:list() end),
+ ?line Diff = length(AllAfter) - length(AllBefore),
+ ?line true = (Diff >= 1),
+
+ ok.
+
+
+start_stop_log() -> start_stop_log(suite).
+start_stop_log(suite) -> [];
+start_stop_log(Config) ->
+ ?line PrivDir = ?config(priv_dir,Config),
+ ?line OutFile = filename:join(PrivDir,"rb_SUITE_log.txt"),
+ ?line ok = file:write_file(OutFile,[]),
+
+ %% Start rb and check that show is printed to standard_io
+ ?line ok = start_rb(),
+ ?line StdioResult = [_|_] = capture(fun() -> rb:show(1) end),
+ ?line {ok,<<>>} = file:read_file(OutFile),
+
+ %% Start log and check that show is printed to log and not to standad_io
+ ?line ok = rb:start_log(OutFile),
+ ?line [] = capture(fun() -> rb:show(1) end),
+ ?line {ok,Bin} = file:read_file(OutFile),
+ ?line true = (Bin =/= <<>>),
+
+ %% Stop log and check that show is printed to standard_io and not to log
+ ?line ok = rb:stop_log(),
+ ?line ok = file:write_file(OutFile,[]),
+ ?line StdioResult = capture(fun() -> rb:show(1) end),
+ ?line {ok,<<>>} = file:read_file(OutFile),
+
+ %% Test that standard_io is used if log file can not be opened
+ ?line ok = rb:start_log(filename:join(nonexistingdir,"newfile.txt")),
+ ?line StdioResult = capture(fun() -> rb:show(1) end),
+ ?line {ok,<<>>} = file:read_file(OutFile),
+
+ ok.
+
+
+%%%-----------------------------------------------------------------
+%%% INTERNAL FUNCTIONS
+
+restart_sasl() ->
+ application:stop(sasl),
+ ok = application:start(sasl),
+ wait_for_sasl().
+
+reset_sasl(Config) ->
+ application:unset_env(sasl,error_logger_mf_dir),
+ application:unset_env(sasl,error_logger_mf_maxbytes),
+ application:unset_env(sasl,error_logger_mf_maxfiles),
+ empty_error_logs(Config).
+
+empty_error_logs(Config) ->
+ application:stop(sasl),
+ catch delete_content(?config(rb_dir, Config)),
+ ok = application:start(sasl),
+ wait_for_sasl().
+
+wait_for_sasl() ->
+ wait_for_sasl(50).
+wait_for_sasl(0) ->
+ ?t:fail("sasl application did not start within 5 seconds");
+wait_for_sasl(N) ->
+ case lists:keymember(sasl,1,application:which_applications()) of
+ true ->
+ ok;
+ false ->
+ timer:sleep(100),
+ wait_for_sasl(N-1)
+ end.
+
+start_rb(OutFile) ->
+ do_start_rb([{start_log,OutFile}]).
+start_rb() ->
+ do_start_rb([]).
+
+do_start_rb(Opts) ->
+ {ok,Pid} = rb:start(Opts),
+
+ %% Wait for process to started, then wait a little bit more
+ sys:get_status(Pid),
+ timer:sleep(500),
+
+ %% Make sure printouts (e.g. from rb:list(), come to the test log,
+ %% and that they can be captured.
+ group_leader(group_leader(),Pid),
+ ok.
+
+
+delete_tree(Dir) ->
+ case filelib:is_dir(Dir) of
+ true ->
+ delete_content(Dir),
+ file:del_dir(Dir);
+ false ->
+ ok = file:delete(Dir)
+ end.
+
+delete_content(Dir) ->
+ {ok,Files} = file:list_dir(Dir),
+ lists:foreach(fun(File) -> delete_tree(filename:join(Dir,File)) end,
+ Files).
+
+init_error_logs() ->
+ ?line error_logger:error_report([{rb_SUITE,rb_test_error}]),
+ ?line error_logger:error_msg("rb_test_error_msg"),
+ ?line error_logger:info_report([{rb_SUITE,rb_test_info}]),
+ ?line error_logger:info_msg("rb_test_info_msg"),
+ ?line _Pid = start(),
+ ?line Ref = erlang:monitor(process,?MODULE),
+ ?line gen_server:cast(?MODULE,crash),
+ ?line receive {'DOWN',Ref,process,_,{rb_SUITE,rb_test_crash}} -> ok
+ after 2000 ->
+ ?t:format("Got: ~p~n",[process_info(self(),messages)]),
+ ?t:fail("rb_SUITE server never died")
+ end,
+ ?line erlang:demonitor(Ref),
+ ?line wait_for_server(),
+ ok.
+
+wait_for_server() ->
+ case whereis(?MODULE) of
+ undefined ->
+ wait_for_server();
+ Pid ->
+ timer:sleep(100), % allow the supervisor report to be written
+ Pid
+ end.
+
+capture(Fun) ->
+ ?t:capture_start(),
+ ok = Fun(),
+ timer:sleep(1000),
+ ?t:capture_stop(),
+ string:tokens(lists:append(?t:capture_get()),"\n").
+
+
+rb_filter(Filter,OutFile) ->
+ check_report(fun() -> rb:filter(Filter) end, OutFile).
+rb_filter(Filter,Dates,OutFile) ->
+ check_report(fun() -> rb:filter(Filter,Dates) end, OutFile).
+
+
+%% This function first empties the given report file, then executes
+%% the fun and returns a list of {N,Report}, where Report is a report
+%% read from the file and N is an integer. The newest report has the
+%% lowest number.
+%% If the fun was a call to rb:show() (i.e. with no arguments), then
+%% the numbering (N) will be the same as rb's own numbering (as shown
+%% by rb:list()).
+check_report(Fun,File) ->
+ file:delete(File),
+ rb:rescan([{start_log,File}]),
+ ok = Fun(),
+ {ok,Bin} = file:read_file(File),
+ Reports = split_reports(binary_to_list(Bin),[],[]),
+ lists:zip(lists:seq(1,length(Reports)),Reports).
+
+-define(report_header_line,"\n===============================================================================\n").
+split_reports([],Report,Reports) ->
+ add_report(Report,Reports);
+split_reports(Text,Report,Reports) ->
+ case Text of
+ ?report_header_line++Rest ->
+ {Heading,PrevReport} = lists:splitwith(fun($\n) -> false;
+ (_) -> true
+ end,
+ Report),
+ split_reports(Rest,
+ ?report_header_line++Heading,
+ add_report(PrevReport,Reports));
+ [Ch|Rest] ->
+ split_reports(Rest,[Ch|Report],Reports)
+ end.
+
+add_report(Report,Reports) ->
+ case string:strip(Report,both,$\n) of
+ [] -> Reports;
+ Report1 -> [lists:reverse(Report1)|Reports]
+ end.
+
+%% Returns true if Substr is a substring of Str.
+contains(Str,Substr) ->
+ 0 =/= string:str(Str,Substr).
+
+%% Sort the result of rb_list after report type
+sort_list(List) ->
+ sort_list(List,dict:new()).
+sort_list([H|T],D) ->
+ case re:run(H,"\s+[0-9]+\s+([a-z_]+)",[{capture,all_but_first,list}]) of
+ nomatch ->
+ sort_list(T,D);
+ {match,[TypeStr]} ->
+ sort_list(T,dict:append(list_to_atom(TypeStr),H,D))
+ end;
+sort_list([],D) ->
+ lists:sort(dict:to_list(D)).
+
+
+%%%-----------------------------------------------------------------
+%%% A dummy supervisor and gen_server used for creating crash- and
+%%% supervisor reports
+start() ->
+ {ok,Pid} =
+ supervisor:start_link({local, ?SUP}, ?MODULE, i_am_supervisor),
+ unlink(Pid),
+ Pid.
+start_server() ->
+ gen_server:start_link({local, ?MODULE}, ?MODULE, i_am_server, []).
+init(i_am_server) ->
+ {ok, state};
+init(i_am_supervisor) ->
+ AChild = {?SUP,{?MODULE,start_server,[]},
+ permanent,2000,worker,[?MODULE]},
+ {ok,{{one_for_all,1,1}, [AChild]}}.
+handle_call(_Request, _From, State) ->
+ Reply = ok,
+ {reply, Reply, State}.
+handle_cast(crash, State) ->
+ exit({rb_SUITE,rb_test_crash}),
+ {noreply, State}.
+handle_info(_Info, State) ->
+ {noreply, State}.
+terminate(_Reason, _State) ->
+ ok.
+
diff --git a/lib/sasl/test/release_handler_SUITE.erl b/lib/sasl/test/release_handler_SUITE.erl
new file mode 100644
index 0000000000..efa775f344
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE.erl
@@ -0,0 +1,1651 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+-module(release_handler_SUITE).
+
+-include_lib("common_test/include/ct.hrl").
+
+-compile(export_all).
+
+% Default timetrap timeout (set in init_per_testcase).
+%-define(default_timeout, ?t:minutes(40)).
+-define(default_timeout, ?t:minutes(10)).
+
+suite() ->
+ [{ct_hooks, [ts_install_cth]}].
+
+init_per_suite(Config) ->
+ application:start(sasl),
+ Config.
+
+end_per_suite(_Config) ->
+ ok.
+
+all() ->
+ case os:type() of
+ {unix, _} -> unix_cases();
+ {win32, _} -> win32_cases()
+ end.
+
+unix_cases() ->
+ RunErl = filename:join([code:root_dir(),"bin","run_erl"]),
+ RunErlCases = case filelib:is_file(RunErl) of
+ true -> [{group, release}];
+ false -> [no_run_erl]
+ end,
+ [target_system] ++ RunErlCases ++ cases().
+
+win32_cases() ->
+ cases().
+
+%% Cases that can be run on all platforms
+cases() ->
+ [otp_2740, otp_2760, otp_5761, instructions, eval_appup].
+
+groups() ->
+ [{release,[],
+ [
+ {group,release_single},
+ {group,release_gg}
+ ]},
+ {release_single,[],
+ [
+ upgrade,
+ client1,
+ client2
+ ]},
+ {release_gg,[],
+ [
+ upgrade_gg
+ ]}].
+
+%% {group,release}
+%% Top group for all cases using run_erl
+init_per_group(release, Config) ->
+ Dog = ?t:timetrap(?default_timeout),
+ P1gInstall = filename:join(priv_dir(Config),p1g_install),
+ ok = do_create_p1g(Config,P1gInstall),
+ ok = create_p1h(Config),
+ ?t:timetrap_cancel(Dog);
+
+%% {group,release_single}
+%% Subgroup of {group,release}, contains all cases that are not
+%% related to global_group
+init_per_group(release_single, Config) ->
+ Dog = ?t:timetrap(?default_timeout),
+
+ %% Create some more releases to upgrade to
+ ok = create_p1i(Config),
+ ok = create_p2a(Config),
+
+ ?t:timetrap_cancel(Dog);
+
+%% {group,release_gg}
+%% Subgroup of {group,release}. global_group tests.
+init_per_group(release_gg, Config0) ->
+ Config = [{sname_prefix,release_gg}|Config0],
+
+ PrivDir = priv_dir(Config),
+ Dog = ?t:timetrap(?default_timeout),
+
+ reg_print_proc(), %% starts a printer process on this node
+
+ Snames = [Gg1Sname,Gg2Sname,Gg3Sname,Gg4Sname,Gg5Sname,Gg6Sname] =
+ gg_node_snames(Config),
+
+ %% kill all possible nodes which are to be used
+ ok = stop_nodes([node_name(Sname) || Sname <- Snames]),
+
+ %% For gg1, gg3, gg4 and gg5: create a target system running
+ %% P1G, and with P1H unpacked.
+ %% For gg2 and gg6: create a target system running P1H.
+ %% Use gg2 for unpacking and permanenting P1H.
+ ok = copy_installed(Config,p1g_install,[Gg2Sname]),
+ InstallNode = unpack_p1h(Config,Gg2Sname),
+ ok = copy_installed(Config,Gg2Sname,[Gg1Sname,Gg3Sname,Gg4Sname,Gg5Sname]),
+ ok = permanent_p1h(InstallNode),
+ ok = stop_nodes([InstallNode]),
+ ok = copy_installed(Config,Gg2Sname,[Gg6Sname]),
+
+ %% Replace the sys.config files
+ %% The reason for not creating the releases with these configs in
+ %% the first place (create_p1g, create_p1h) is that then the
+ %% InstallNode (gg2) will be very slow started since it will try
+ %% to synch with the other nodes in the global group.
+ %% Also, the rpc call for installing the P1H release (in
+ %% permanent_p1h/1) would return {rpc,nodedown} due to change of
+ %% global groups.
+ lists:foreach(
+ fun(Sname) ->
+ ReleasesDir = filename:join([PrivDir,Sname,"releases"]),
+ write_term_file(filename:join([ReleasesDir,"P1G","sys.config"]),
+ gg_config([Gg1Sname,Gg3Sname,Gg4Sname,Gg5Sname])),
+ write_term_file(filename:join([ReleasesDir,"P1H","sys.config"]),
+ gg_config([Gg1Sname,Gg2Sname,Gg4Sname,
+ Gg5Sname,Gg6Sname]))
+ end,
+ Snames),
+
+ ?t:timetrap_cancel(Dog),
+ [{snames,Snames}|Config].
+
+
+end_per_group(release, Config) ->
+ Dog = ?t:timetrap(?default_timeout),
+ stop_print_proc(),
+ delete_release(Config),
+ ?t:timetrap_cancel(Dog),
+ Config;
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+init_per_testcase(Case, Config0) ->
+ Dog = test_server:timetrap(?default_timeout),
+ Config = [{sname_prefix,Case},{watchdog, Dog}|Config0],
+ try apply(?MODULE,Case,[cleanup,Config])
+ catch error:undef -> ok
+ end,
+ ?t:format("~n======= init_per_testcase done =======~n",[]),
+ Config.
+
+end_per_testcase(Case, Config) ->
+ ?t:format("~n======= start end_per_testcase =======~n",[]),
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+
+ %% DEBUG
+ case ?config(tc_status,Config) of
+ ok ->
+ ok;
+ _Fail ->
+ %% save logs from master and client nodes
+ PrivDir = priv_dir(Config),
+ SaveDir = filename:join(PrivDir,save),
+ FailDir = filename:join(SaveDir,lists:concat(["failed-",Case])),
+ ok = filelib:ensure_dir(filename:join(FailDir,"*")),
+
+ LogDirs = filelib:wildcard(filename:join([PrivDir,"*",log])),
+
+ lists:foreach(
+ fun(LogDir) ->
+ ["log",Sname|_] = lists:reverse(filename:split(LogDir)),
+ copy_tree(Config,LogDir,Sname,FailDir)
+ end,
+ LogDirs),
+
+ case filelib:is_file("sasl_erl_crash.dump") of
+ true ->
+ copy_file("sasl_erl_crash.dump",FailDir);
+ _ ->
+ ok
+ end
+
+ end,
+ %% End DEBUG
+
+ %% Remove any remaining sasl_erl_crash.dump
+ %% These can occur when a new master@<host> is started, before
+ %% the old usage of the name is unregistered, causing the node to
+ %% terminate. (This has no effect on the test case, as the node is
+ %% immediately restarted by heart and the test cases wait until
+ %% the node is actually up and running -- see wait_nodes_up/2)
+ file:delete("sasl_erl_crash.dump"),
+
+ try apply(?MODULE,Case,[cleanup,Config])
+ catch error:undef -> ok
+ end,
+ ok.
+
+gg_node_snames(Config) ->
+ [tc_sname(Config,X) || X <- [gg1,gg2,gg3,gg4,gg5,gg6]].
+
+
+%%%-----------------------------------------------------------------
+%%% TEST CASES
+
+
+%% Executed instead of release group when no run_erl program exists
+no_run_erl(Config) when is_list(Config) ->
+ {comment, "No run_erl program"}.
+
+
+
+%% Test upgrade and downgrade of erts
+upgrade(Conf) when is_list(Conf) ->
+ reg_print_proc(), %% starts a printer process on test_server node
+ ?t:format("upgrade ~p~n",[reg_print_proc]),
+ PrivDir = priv_dir(Conf),
+ Sname = tc_sname(Conf), % nodename for use in this testcase
+
+ %% Copy the P1G release to a directory for use in this testcase
+ ok = copy_installed(Conf,p1g_install,[Sname]),
+
+ %% start the test node
+ [TestNode] = start_nodes(Conf,[Sname],"upgrade start"),
+
+ %% unpack and install P1H
+ ok = rpc_inst(TestNode, install_1, [PrivDir]),
+ stop_cover(TestNode),
+ reboot_and_wait(TestNode,"install_1"),
+
+ %% reinstall P1H and make it permanent
+ ok = rpc_inst(TestNode, install_2, []),
+ stop_cover(TestNode),
+ reboot_and_wait(TestNode,"install_2",[a]),
+
+ %% check that P1H is permanent, unpack and install P1I, unpack and install P2A
+ TestNodeInit1 = rpc:call(TestNode,erlang,whereis,[init]),
+ ok = rpc_inst(TestNode, install_3, [PrivDir]),
+ stop_cover(TestNode),
+ ok = rpc_inst(TestNode, install_3a, []),
+ wait_nodes_up([{TestNode,TestNodeInit1}],"install_3",[a]),
+
+ %% check that P2A is used, reboot from P1I
+ ok = rpc_inst(TestNode, install_4, []),
+ stop_cover(TestNode),
+ reboot_and_wait(TestNode,"install_4",[a]),
+
+ %% check that P1I, reinstall P2A
+ TestNodeInit2 = rpc:call(TestNode,erlang,whereis,[init]),
+ ok = rpc_inst(TestNode, install_5, []),
+ stop_cover(TestNode),
+ ok = rpc_inst(TestNode, install_5a, []),
+ wait_nodes_up([{TestNode,TestNodeInit2}],"install_5",[a]),
+
+ %% check that P2A is used, make P2A permanent
+ ok = rpc_inst(TestNode, install_6, []),
+ stop_cover(TestNode),
+ reboot_and_wait(TestNode,"install_6",[a]),
+
+ %% check that P2A is permanent, install old P1H
+ TestNodeInit3 = rpc:call(TestNode,erlang,whereis,[init]),
+ stop_cover(TestNode),
+ ok = rpc_inst(TestNode, install_7, []),
+ wait_nodes_up([{TestNode,TestNodeInit3}],"install_7",[a]),
+
+ %% check that P1H is permanent, remove P1I and P2A
+ ok = rpc_inst(TestNode, install_8, []),
+ stop_cover(TestNode),
+ reboot_and_wait(TestNode,"install_8",[a]),
+
+ %% check that P1H is permanent, reboot old P1G
+ TestNodeInit4 = rpc:call(TestNode,erlang,whereis,[init]),
+ stop_cover(TestNode),
+ ok = rpc_inst(TestNode, install_9, []),
+ wait_nodes_up([{TestNode,TestNodeInit4}],"install_9"),
+
+ %% check that P1G is permanent, remove P1H
+ ok = rpc_inst(TestNode, install_10, []),
+ stop_cover(TestNode),
+ reboot_and_wait(TestNode,"install_10"),
+
+ %% check that P1G is permanent
+ ok = rpc_inst(TestNode, install_11, []),
+
+ ok.
+
+upgrade(cleanup,Config) ->
+ TestNode = tc_full_node_name(Config),
+ ok = stop_nodes([TestNode]).
+
+reboot_and_wait(Node,Tag) ->
+ reboot_and_wait(Node,Tag,[]).
+
+reboot_and_wait(Node,Tag,Apps) ->
+ InitPid = rpc:call(Node,erlang,whereis,[init]),
+ ok = rpc:call(Node,init,reboot,[]),
+ wait_nodes_up([{Node,InitPid}],Tag,Apps).
+
+
+%% Test upgrade and downgrade of erts, diskless
+client1(Conf) when is_list(Conf) ->
+ reg_print_proc(), %% starts a printer process on test_server node
+ PrivDir = priv_dir(Conf),
+ Master = tc_sname(Conf,master),
+ Client = tc_sname(Conf,client),
+ MasterDir = filename:join(PrivDir,Master),
+
+ %% Copy the P1G release to a directory for use in this testcase
+ ok = copy_installed(Conf,p1g_install,[Master]),
+ ok = copy_client(Conf,Master,Client,"start_cli1"),
+
+ %% start the master node
+ [TestNode] = start_nodes(Conf,[Master],"client1"),
+
+ ok = rpc_inst(TestNode, client1_1, [PrivDir,MasterDir,Client]),
+
+ ok.
+
+client1(cleanup,Config) ->
+ MasterNode = tc_full_node_name(Config,master),
+ ClientNode = tc_full_node_name(Config,client),
+ ok = stop_nodes([MasterNode,ClientNode]).
+
+
+
+%% Test diskless release handling when illegal master node
+client2(Conf) when is_list(Conf) ->
+ reg_print_proc(), %% starts a printer process on test_server node
+ PrivDir = priv_dir(Conf),
+ Master = tc_sname(Conf,master),
+ Client = tc_sname(Conf,client),
+
+ %% Copy the P1G release to a directory for use in this testcase
+ ok = copy_installed(Conf,p1g_install,[Master]),
+ ok = copy_client(Conf,Master,Client,"start_cli2"),
+
+ %% start the master node
+ [TestNode] = start_nodes(Conf,[Master],"client2"),
+
+ ok = rpc_inst(TestNode, client2, [PrivDir,Client]),
+
+ ok.
+
+client2(cleanup,Config) ->
+ MasterNode = tc_full_node_name(Config,master),
+ ClientNode = tc_full_node_name(Config,client),
+ ok = stop_nodes([MasterNode,ClientNode]).
+
+
+
+%% Test instructions _not_ tested by the installer module.
+instructions(Conf) when is_list(Conf) ->
+ DataDir = ?config(data_dir, Conf),
+
+ Dir = filename:join(DataDir, "c"),
+ true = code:add_path(Dir),
+ check_bstate("no", []),
+ ok = application:start(c),
+ ok = wait_for(bb),
+ check_bstate("first", []),
+ FirstBB = whereis(bb),
+
+ case whereis(cc) of
+ Pid when is_pid(Pid) -> ok;
+ _ -> ?t:fail("cc not started")
+ end,
+
+ %% Stop and start cc process
+ S1 = [point_of_no_return,
+ {stop, [aa]},
+ {apply, {?MODULE, no_cc, []}},
+ {start, [aa]}],
+ {ok, _} = release_handler_1:eval_script(S1, [], []),
+
+ case whereis(cc) of
+ Pid2 when is_pid(Pid2) -> ok;
+ _ -> ?t:fail("cc not started")
+ end,
+
+ %% Make bb run old version of b.
+ S2 = [point_of_no_return,
+ {remove, {b, soft_purge, soft_purge}}],
+ {ok, [{b, soft_purge}]} = release_handler_1:eval_script(S2, [], []),
+ check_bstate("first", [FirstBB]),
+
+ false = code:is_loaded(b),
+ {error,{old_processes,b}} = release_handler_1:eval_script(S2,[],[]),
+ check_bstate("first", [FirstBB]),
+
+ %% Let supervisor restart bb with new code
+ S3 = [point_of_no_return,
+ {purge, [b]}],
+ {ok, []} = release_handler_1:eval_script(S3, [], []),
+ ok = wait_for(bb),
+ check_bstate("second", []),
+ SecondBB = whereis(bb),
+
+ if
+ SecondBB =:= FirstBB -> ?t:fail("bb not killed");
+ true -> ok
+ end,
+
+ %% Restart bb yet another time
+ ok = application:stop(c),
+ ok = application:start(c),
+ ok = wait_for(bb),
+ check_bstate("third", []),
+ ThirdBB = whereis(bb),
+
+ case ThirdBB of
+ _ when is_pid(ThirdBB) -> ok;
+ undefined -> ?t:fail("bb not started")
+ end,
+
+ %% Make bb run old version of b.
+ %%c:l(b),
+ check_bstate("third", []),
+ false = code:purge(b),
+ check_bstate("third", []),
+ {module,b} = code:load_file(b),
+ check_bstate("third", [ThirdBB]),
+
+ %% Let supervisor restart bb yet another time
+ S4 = [point_of_no_return,
+ {remove, {b, brutal_purge, soft_purge}}],
+ {ok, HopefullyEmpty} = release_handler_1:eval_script(S4, [], []),
+ ok = wait_for(bb),
+ FourthBB = whereis(bb),
+
+ case HopefullyEmpty of
+ [{b, soft_purge}] ->
+ %% The process managed to start between purge and delete
+ check_bstate("fourth", [FourthBB]);
+ [] ->
+ %% The process started after delete
+ check_bstate("fourth", [])
+ end,
+
+ application:stop(c),
+ check_bstate("no", []),
+ ok.
+
+instructions(cleanup,Conf) ->
+ application:stop(c),
+ really_del_code([aa,b,c_sup]),
+ code:del_path(filename:join(?config(data_dir,Conf), "c")),
+ ok.
+
+really_del_code(Mods) ->
+ lists:foreach(fun(Mod) ->
+ code:purge(Mod), % remove old code
+ code:delete(Mod),% make current code old
+ code:purge(Mod) % remove old code
+ end,
+ Mods).
+
+check_bstate(Slogan,ExpectedProcs) ->
+ BB = whereis(bb),
+ ActualProcs = lists:sort([P || P <- processes(),
+ erlang:check_process_code(P, b)]),
+ ExpectedProcs2 = lists:sort(ExpectedProcs),
+ ?t:format("check_bstate:~n~p~n~p~n",
+ [{"bb process", Slogan, BB},
+ {"Processes running old b code", ActualProcs}]),
+ if
+ Slogan =:= "no", BB =/= undefined ->
+ ?t:fail("instructions failed; process bb is running");
+ Slogan =/= "no", BB =:= undefined ->
+ ?t:fail("instructions failed; process bb is not running");
+ ExpectedProcs2 =:= [], ActualProcs =/= ExpectedProcs2 ->
+ ?t:fail("instructions failed; old b processes are running");
+ ActualProcs =/= ExpectedProcs2 ->
+ ?t:fail("instructions failed; wrong number of old b processes are running");
+ true ->
+ ok
+ end.
+
+wait_for(Name) ->
+ case whereis(Name) of
+ undefined ->
+ timer:sleep(100),
+ wait_for(Name);
+ Pid when is_pid(Pid) ->
+ ok
+ end.
+
+no_cc() ->
+ case whereis(cc) of
+ Pid when is_pid(Pid) -> ?t:fail("cc not stopped");
+ _ -> ok
+ end.
+
+
+
+%%%-----------------------------------------------------------------
+%%% Testing of reported bugs and other tickets.
+%%%-----------------------------------------------------------------
+
+%%-----------------------------------------------------------------
+%% Ticket: OTP-2740
+%% Slogan: vsn not numeric doesn't work so good in release_handling
+%%-----------------------------------------------------------------
+%% Test vsn.
+otp_2740(Conf) ->
+ DataDir = ?config(data_dir, Conf),
+ Dir = filename:join(DataDir, "otp_2740"),
+ true = code:add_path(Dir),
+
+ {module, vsn_numeric} = c:l(vsn_numeric),
+ {module, vsn_tuple} = c:l(vsn_tuple),
+ {module, vsn_list} = c:l(vsn_list),
+ {module, vsn_atom} = c:l(vsn_atom),
+ {module, vsn_string} = c:l(vsn_string),
+
+ 231894 = release_handler_1:get_current_vsn(vsn_numeric),
+ {tuple,["of",terms]} = release_handler_1:get_current_vsn(vsn_tuple),
+ [list,"of",{some,terms}] = release_handler_1:get_current_vsn(vsn_list),
+ atom = release_handler_1:get_current_vsn(vsn_atom),
+ "a string" = release_handler_1:get_current_vsn(vsn_string),
+
+ true = code:del_path(Dir),
+ ok.
+
+%%-----------------------------------------------------------------
+%% Ticket: OTP-2760
+%% Slogan: when an application is removed from a node it is not unloaded
+%%-----------------------------------------------------------------
+%% Test that when an application is removed from a node it is also unloaded.
+otp_2760(Conf) ->
+ PrivDir = priv_dir(Conf),
+ Dir = filename:join(PrivDir,"otp_2760"),
+ DataDir = ?config(data_dir,Conf),
+ LibDir = filename:join([DataDir,app1_app2,lib1]),
+
+ Rel1 = create_and_install_fake_first_release(Dir,[{app1,"1.0",LibDir}]),
+ Rel2 = create_fake_upgrade_release(Dir,"after",[],{Rel1,Rel1,[LibDir]}),
+ Rel2Dir = filename:dirname(Rel2),
+
+ %% Start a node with Rel1.boot and check that the app1 module is loaded
+ {ok, Node} = t_start_node(otp_2760, Rel1, []),
+ {file, _} = rpc:call(Node, code, is_loaded, [app1]),
+
+ %% Execute the relup script and check that app1 is unloaded
+ {ok, [{"after", [{_Rel1Vsn, _Descr, Script}], _}]} =
+ file:consult(filename:join(Rel2Dir, "relup")),
+ {ok, []} = rpc:call(Node, release_handler_1, eval_script,
+ [Script, [], []]),
+ false = rpc:call(Node, code, is_loaded, [app1]),
+
+ true = stop_node(Node),
+ ok.
+
+%% Test upgrade using other filesystem than the defined in OTP and
+%% option {update_paths, true}
+otp_5761(Conf) when is_list(Conf) ->
+
+ %% In the following test case, the release upgrade is somewhat
+ %% simplified (since it is not this procedure in itself we want to
+ %% test, but that application code directories are set correctly.)
+ %% Existing Erlang release is used as base, instead of creating
+ %% a new one.
+
+ %% Set some paths
+ PrivDir = priv_dir(Conf),
+ Dir = filename:join(PrivDir,"otp_5761"),
+ RelDir = filename:join(?config(data_dir, Conf), "app1_app2"),
+ LibDir1 = filename:join(RelDir, "lib1"),
+ LibDir2 = filename:join(RelDir, "lib2"),
+
+ %% Create the releases
+ Rel1 = create_and_install_fake_first_release(Dir,
+ [{app1,"1.0",LibDir1},
+ {app2,"1.0",LibDir1}]),
+ Rel2 = create_fake_upgrade_release(Dir,
+ "2",
+ [{app1,"2.0",LibDir2},
+ {app2,"1.0",LibDir2}],
+ {Rel1,Rel1,[LibDir1]}),
+ Rel1Dir = filename:dirname(Rel1),
+ Rel2Dir = filename:dirname(Rel2),
+
+ %% Start a slave node
+ {ok, Node} = t_start_node(otp_5761, Rel1, filename:join(Rel1Dir,"sys.config")),
+
+ %% Bind some variable names that will be used in patternmatching below
+ App11Dir = filename:join([LibDir1, "app1-1.0"]),
+ App12Dir = filename:join([LibDir2, "app1-2.0"]),
+ App2aDir = filename:join([LibDir1, "app2-1.0"]),
+ App2bDir = filename:join([LibDir2, "app2-1.0"]),
+
+ %% Make sure correct code paths are used
+ App11Dir = rpc:call(Node, code, lib_dir, [app1]),
+ App2aDir = rpc:call(Node, code, lib_dir, [app2]),
+
+ %% Unpack rel2 (make sure it does not work if an AppDir is bad)
+ LibDir3 = filename:join(RelDir, "lib3"),
+ {error, {no_such_directory, _}} =
+ rpc:call(Node, release_handler, set_unpacked,
+ [Rel2++".rel", [{app1,"2.0",LibDir2}, {app2,"1.0",LibDir3}]]),
+ {ok, RelVsn2} =
+ rpc:call(Node, release_handler, set_unpacked,
+ [Rel2++".rel", [{app1,"2.0",LibDir2}, {app2,"1.0",LibDir2}]]),
+ ok = rpc:call(Node, release_handler, install_file,
+ [RelVsn2, filename:join(Rel2Dir, "relup")]),
+ ok = rpc:call(Node, release_handler, install_file,
+ [RelVsn2, filename:join(Rel2Dir, "start.boot")]),
+ ok = rpc:call(Node, release_handler, install_file,
+ [RelVsn2, filename:join(Rel2Dir, "sys.config")]),
+
+ %% Install RelVsn2 without {update_paths, true} option
+ {ok, RelVsn1, []} =
+ rpc:call(Node, release_handler, install_release, [RelVsn2]),
+ App12Dir = rpc:call(Node, code, lib_dir, [app1]),
+ App2aDir = rpc:call(Node, code, lib_dir, [app2]),
+
+ %% Install RelVsn1 again
+ {ok, RelVsn1, []} =
+ rpc:call(Node, release_handler, install_release, [RelVsn1]),
+
+ %% Install RelVsn2 with {update_paths, true} option
+ {ok, RelVsn1, []} =
+ rpc:call(Node, release_handler, install_release,
+ [RelVsn2, [{update_paths, true}]]),
+ App12Dir = rpc:call(Node, code, lib_dir, [app1]),
+ App2bDir = rpc:call(Node, code, lib_dir, [app2]),
+
+ %% Install RelVsn1 again
+ {ok, RelVsn1, []} =
+ rpc:call(Node, release_handler, install_release,
+ [RelVsn1, [{update_paths, true}]]),
+ App11Dir = rpc:call(Node, code, lib_dir, [app1]),
+ App2aDir = rpc:call(Node, code, lib_dir, [app2]),
+
+ %% Stop the slave node
+ true = stop_node(Node),
+ ok.
+
+%% Test upgrade and downgrade of applications
+eval_appup(Conf) when is_list(Conf) ->
+
+ %% OTP-6162
+ %% Create an ETS table which is updated by app1 if there is any
+ %% change made to the application configuration parameter 'var'
+ %% (see config_change/3 in myrel/lib1|2/app1-1|2.0/src/app1.erl)
+ ets:new(otp_6162, [set, public, named_table]),
+
+ %% Set some paths
+ RelDir = filename:join(?config(data_dir, Conf), "app1_app2"),
+ App11Dir = filename:join([RelDir, "lib1", "app1-1.0"]),
+ App12Dir = filename:join([RelDir, "lib2", "app1-2.0"]),
+ EbinDir = filename:join(App11Dir, "ebin"),
+
+ %% Start app1-1.0
+ code:add_patha(EbinDir),
+ ok = application:start(app1),
+ App11Dir = code:lib_dir(app1),
+ ok = gen_server:call(harry, error),
+
+ %% Upgrade to app1-2.0
+ {ok, []} = release_handler:upgrade_app(app1, App12Dir),
+ App12Dir = code:lib_dir(app1),
+ error = gen_server:call(harry, error),
+
+ %% OTP-6162
+ %% Value of config parameter 'var' should now be 'val2'
+ %% (see myrel/lib2/app1-2.0/ebin/app1.app)
+ [{var,val2}] = ets:lookup(otp_6162, var),
+
+ %% Downgrade to app1-1.0
+ {ok, []} = release_handler:downgrade_app(app1,"1.0",App11Dir),
+ App11Dir = code:lib_dir(app1),
+ ok = gen_server:call(harry, error),
+
+ %% OTP-6162
+ %% Value of config parameter 'var' should now be 'val1'
+ %% (see myrel/lib1/app1-1.0/ebin/app1.app)
+ [{var,val1}] = ets:lookup(otp_6162, var),
+
+ ok = application:stop(app1),
+ ok = application:unload(app1),
+
+ true = code:del_path(EbinDir),
+ ok.
+
+
+%% Test the example/target_system.erl module
+target_system(Conf) when is_list(Conf) ->
+ PrivDir = priv_dir(Conf),
+ DataDir = ?config(data_dir,Conf),
+
+ TargetCreateDir = filename:join([PrivDir,"target_system","create"]),
+ TargetInstallDir = filename:join([PrivDir,"target_system","install"]),
+
+ ok = filelib:ensure_dir(filename:join(TargetCreateDir,"xx")),
+ ok = filelib:ensure_dir(filename:join(TargetInstallDir,"xx")),
+
+
+ %% Create the .rel file
+ ErtsVsn = erlang:system_info(version),
+ RelName = filename:join(TargetCreateDir,"ts-1.0"),
+ RelFile = RelName++".rel",
+ RelVsn = "R1A",
+ create_rel_file(RelFile,RelName,RelVsn,ErtsVsn,[{a, "1.0"}]),
+
+ %% Build the target_system module
+ ExamplesEbin = filename:join([code:lib_dir(sasl),examples,ebin]),
+ TSPath =
+ case filelib:is_file(filename:join(ExamplesEbin,"target_system.beam")) of
+ true ->
+ ExamplesEbin;
+ false ->
+ {ok,_} =
+ compile:file(filename:join(DataDir,"target_system.erl"),
+ [{outdir,TargetCreateDir}]),
+ TargetCreateDir
+ end,
+ code:add_path(TSPath),
+
+ %% Create the release
+ target_system:create(RelName,[{path,[filename:join([DataDir,
+ lib,
+ "a-1.0",
+ ebin])]}]),
+
+ %% Install the release
+ target_system:install(RelName,TargetInstallDir),
+
+ code:del_path(TSPath),
+
+ %% Check that all files exist in installation
+ true = filelib:is_dir(filename:join(TargetInstallDir,"erts-"++ErtsVsn)),
+ LibDir = filename:join(TargetInstallDir,lib),
+ {ok,KernelVsn} = application:get_key(kernel,vsn),
+ {ok,StdlibVsn} = application:get_key(stdlib,vsn),
+ {ok,SaslVsn} = application:get_key(sasl,vsn),
+ true = filelib:is_dir(filename:join(LibDir,"kernel-"++KernelVsn)),
+ true = filelib:is_dir(filename:join(LibDir,"stdlib-"++StdlibVsn)),
+ true = filelib:is_dir(filename:join(LibDir,"sasl-"++SaslVsn)),
+ true = filelib:is_dir(filename:join(LibDir,"a-1.0")),
+ RelDir = filename:join(TargetInstallDir,releases),
+ true = filelib:is_regular(filename:join(RelDir,"RELEASES")),
+ true = filelib:is_regular(filename:join(RelDir,"start_erl.data")),
+ true = filelib:is_regular(filename:join(RelDir,
+ filename:basename(RelFile))),
+ true = filelib:is_dir(filename:join(RelDir,RelVsn)),
+ true = filelib:is_regular(filename:join([RelDir,RelVsn,"start.boot"])),
+ BinDir = filename:join(TargetInstallDir,bin),
+ true = filelib:is_regular(filename:join(BinDir,"start.boot")),
+ true = filelib:is_regular(filename:join(BinDir,erl)),
+ true = filelib:is_regular(filename:join(BinDir,start_erl)),
+ true = filelib:is_regular(filename:join(BinDir,start)),
+ true = filelib:is_regular(filename:join(BinDir,epmd)),
+ true = filelib:is_regular(filename:join(BinDir,run_erl)),
+ true = filelib:is_regular(filename:join(BinDir,to_erl)),
+
+ %% Check content of files
+ {ok,SED} = file:read_file(filename:join(RelDir,"start_erl.data")),
+ [ErtsVsn,RelVsn] = string:tokens(binary_to_list(SED),"\s\n"),
+ ok.
+
+
+
+%%%=================================================================
+%%% Testing global groups.
+%%%=================================================================
+
+%% This test case involves P1G and P1H with the sys.config as
+%% specified in gg_config/1. The test case checks that the global
+%% group information is correct before and after the upgrade and also
+%% after terminating one of the nodes. The flow is as follows:
+%% 1. Start all four nodes of global group gg1 with P1G
+%% 2. Terminate one of the nodes, and upgrade the others to P1H. P1H
+%% config adds to more nodes to the global group.
+%% 3. Start the two remaining nodes with P1H
+upgrade_gg(Conf) ->
+ [Gg1Sname,Gg2Sname,Gg3Sname,Gg4Sname,Gg5Sname,Gg6Sname] =
+ ?config(snames,Conf),
+
+ %% start gg1, gg3, gg4, gg5 and check that global group info is ok
+ Nodes1 = [Gg1,Gg3,Gg4,Gg5] =
+ start_nodes(Conf,[Gg1Sname,Gg3Sname,Gg4Sname,Gg5Sname],"upgrade_gg"),
+
+ %% Give some time to synch nodes, then check global group info.
+ timer:sleep(1000),
+ [check_gg_info(Node,Nodes1,[],Nodes1--[Node]) || Node <- Nodes1],
+
+ %% register a process on each of the nodes
+ ok = rpc:call(Gg1, installer, reg_proc, [reg1]),
+ ok = rpc:call(Gg3, installer, reg_proc, [reg3]),
+ ok = rpc:call(Gg4, installer, reg_proc, [reg4]),
+ ok = rpc:call(Gg5, installer, reg_proc, [reg5]),
+ are_names_reg_gg(Gg1, [reg1, reg3, reg4, reg5]),
+
+ %% Stop gg3, then upgrade gg1, gg4 and gg5 to P1H
+ ok = stop_nodes([Gg3]),
+
+ ok = install_release_changed_gg(Gg1,"P1H"),
+ ok = install_release_changed_gg(Gg4,"P1H"),
+ ok = install_release_changed_gg(Gg5,"P1H"),
+
+ %% Check global group info
+ Gg2 = node_name(Gg2Sname),
+ Gg6 = node_name(Gg6Sname),
+ Nodes2 = [Gg1,Gg4,Gg5],
+ [check_gg_info(Node,Nodes2,[Gg2,Gg6],Nodes2--[Node]) || Node <- Nodes2],
+
+ %% start gg2 and gg6
+ [Gg2,Gg6] = start_nodes(Conf,[Gg2Sname,Gg6Sname],"upgrade_gg start gg2/gg6"),
+
+ %% reg proc on each of the nodes
+ ok = rpc:call(Gg2, installer, reg_proc, [reg2]),
+ ok = rpc:call(Gg6, installer, reg_proc, [reg6]),
+ are_names_reg_gg(Gg1, [reg1, reg2, reg4, reg5, reg6]),
+
+ %% Check global group info
+ Nodes3 = [Gg1,Gg2,Gg4,Gg5,Gg6],
+ [check_gg_info(Node,Nodes3,[],Nodes3--[Node]) || Node <- Nodes3],
+
+ ok.
+
+upgrade_gg(cleanup,Config) ->
+ Snames = ?config(snames,Config),
+ NodeNames = [node_name(Sname) || Sname <- Snames],
+ ok = stop_nodes(NodeNames).
+
+
+
+
+%%%=================================================================
+%%% Misceleaneous functions
+%%%=================================================================
+stop_nodes(Nodes) ->
+ ?t:format("Stopping nodes: ~p~n",[Nodes]),
+ Running =
+ lists:foldl(fun(Node,Acc) ->
+ Now = now(),
+ stop_cover(Node),
+ case rpc:call(Node,installer,stop,[Now]) of
+ {badrpc,nodedown} ->
+ Acc;
+ Other ->
+ ?t:format("Stop ~p(~p): ~p~n",
+ [Node,Now,Other]),
+ [Node|Acc]
+ end
+ end, [], Nodes),
+ wait_nodes_down(Running).
+
+
+wait_nodes_down(Nodes) ->
+ ?t:format( "wait_nodes_down ~p:",[Nodes]),
+ wait_nodes_down(Nodes, 30).
+
+wait_nodes_down(Nodes, 0) ->
+ test_server:fail({error, {"could not kill nodes", Nodes}});
+wait_nodes_down(Nodes, N) ->
+ Fun = fun(Node, A) ->
+ case net_adm:ping(Node) of
+ pong ->
+ ?t:format( " net_adm:ping(~p) = pong", [Node]),
+ [Node|A];
+ pang ->
+ ?t:format( " net_adm:ping(~p) = pang", [Node]),
+ A
+ end
+ end,
+ Pang = lists:foldl(Fun, [], Nodes),
+ case Pang of
+ [] ->
+ ?t:format("",[]),
+ ok;
+ _ ->
+ timer:sleep(1000),
+ wait_nodes_down(Pang, N-1)
+ end.
+
+
+
+wait_nodes_up(Nodes, Tag) ->
+ wait_nodes_up(Nodes, Tag, []).
+
+wait_nodes_up(Nodes0, Tag, Apps) ->
+ ?t:format("wait_nodes_up(~p, ~p, ~p):",[Nodes0, Tag, Apps]),
+ Nodes = fix_nodes(Nodes0),
+ wait_nodes_up(Nodes, Tag, lists:umerge(Apps,[kernel,stdlib,sasl]), 30).
+
+fix_nodes([{Node,InitPid}|Nodes]) ->
+ [{Node,InitPid} | fix_nodes(Nodes)];
+fix_nodes([Node|Nodes]) ->
+ [{Node,fake_init_pid} | fix_nodes(Nodes)];
+fix_nodes([]) ->
+ [].
+
+wait_nodes_up(Nodes, Tag, Apps, 0) ->
+ test_server:fail({error, {"nodes not started", Nodes, Tag, Apps}});
+wait_nodes_up(Nodes, Tag, Apps, N) ->
+ Fun =
+ fun(NodeInfo={Node,OldInitPid}, A) ->
+ case rpc:call(Node, application, which_applications, []) of
+ {badrpc, nodedown} ->
+ ?t:format( " ~p = {badarg, nodedown}",[Node]),
+ [NodeInfo | A];
+ List when is_list(List)->
+ ?t:format( " ~p = [~p]",[Node, List]),
+ case lists:all(fun(App) ->
+ lists:keymember(App,1,List)
+ end, Apps) of
+ true ->
+ case rpc:call(Node,erlang,whereis,[init]) of
+ OldInitPid ->
+ [NodeInfo | A];
+ _ ->
+ start_cover(Node),
+ A
+ end;
+ false ->
+ [NodeInfo | A]
+ end
+ end
+ end,
+ Pang = lists:foldl(Fun,[],Nodes),
+ case Pang of
+ [] ->
+ ?t:format("",[]),
+ ok;
+ _ ->
+ timer:sleep(1000),
+ wait_nodes_up(Pang, Tag, Apps, N-1)
+ end.
+
+
+
+
+are_names_reg_gg(Node, Names) ->
+ ?t:format( "are_names_reg_gg ~p~n",[Names]),
+ are_names_reg_gg(Node, Names, 30).
+
+are_names_reg_gg(Node, Names, N) ->
+ case lists:sort(rpc:call(Node, global, registered_names, [])) of
+ Names ->
+ ok;
+ Regs when N > 0 ->
+ timer:sleep(1000),
+ ?t:format( "are_names_reg_gg Regs ~p~n",[Regs]),
+ are_names_reg_gg(Node, Names, N-1);
+ Regs ->
+ ?t:fail({error, {"Names not registered",
+ {{"should :", Names},
+ {"was :", Regs}}}})
+ end.
+
+
+
+t_start_node(Name, Boot, SysConfig) ->
+ Args =
+ case Boot of
+ [] -> [];
+ _ -> " -boot " ++ Boot
+ end ++
+ case SysConfig of
+ [] -> [];
+ _ -> " -config " ++ SysConfig
+ end,
+ test_server:start_node(Name, slave, [{args, Args}]).
+
+stop_node(Node) ->
+ ?t:stop_node(Node).
+
+
+copy_client(Conf,Master,Sname,StartScript) ->
+ io:format("copy_client(Conf)"),
+
+ DataDir = ?config(data_dir, Conf),
+ MasterDir = filename:join(priv_dir(Conf),Master),
+
+ {ok,Host} = inet:gethostname(),
+ {ok,IpTuple} = inet:getaddr(Host,inet),
+ IpAddr = inet_parse:ntoa(IpTuple),
+
+ CliNode = node_name(Sname),
+
+ Cli = filename:join([MasterDir, "clients", "type1", CliNode]),
+ ok = filelib:ensure_dir(filename:join([Cli,"bin","."])),
+ ok = filelib:ensure_dir(filename:join([Cli,"releases","."])),
+ ok = filelib:ensure_dir(filename:join([Cli,"log","."])),
+
+ P1GOrig = filename:join([MasterDir, "releases", "P1G"]),
+ ok = copy_tree(Conf,P1GOrig,filename:join(Cli,"releases")),
+
+ ok = subst_file(filename:join([DataDir, "clients", StartScript]),
+ filename:join([Cli,"bin","start"]),
+ [{"ROOT",MasterDir},
+ {"MASTER",atom_to_list(Master)},
+ {"IPADDR",IpAddr}],
+ [{chmod,8#0755}]),
+
+ StartErlData = filename:join([MasterDir, "releases", "start_erl.data"]),
+ CliRelDir = filename:join([Cli, "releases"]),
+ copy_file(StartErlData, CliRelDir),
+
+ RR = filename:join([MasterDir, "releases", "RELEASES"]),
+ copy_file(RR, CliRelDir),
+
+ ok.
+
+
+delete_release(Conf) ->
+ PrivDir = priv_dir(Conf),
+
+ {ok, OrigWd} = file:get_cwd(),
+
+ ok = file:set_cwd(PrivDir),
+ ?t:format("======== current dir ~p~n",[PrivDir]),
+ {ok, Dirs} = file:list_dir(PrivDir),
+ ?t:format("======== deleting ~p~n",[Dirs]),
+
+ ok = delete_release_os(Dirs),
+ ?t:format("======== remaining ~p~n",[file:list_dir(PrivDir)]),
+ ok = file:set_cwd(OrigWd),
+ ok.
+
+
+delete_release_os(Dirs) ->
+ case os:type() of
+ {unix, _} ->
+ delete_release_unix(Dirs);
+ {win32, _} ->
+ delete_release_win32(Dirs);
+ Os ->
+ test_server:fail({error, {not_yet_implemented_os, Os}})
+ end.
+
+
+delete_release_unix([]) ->
+ ok;
+delete_release_unix(["save"|Dirs]) ->
+ delete_release_unix(Dirs);
+delete_release_unix([Dir|Dirs]) ->
+ Rm = string:concat("rm -rf ", Dir),
+ ?t:format("============== COMMAND ~p~n",[Rm]),
+ case file:list_dir(Dir) of
+ {error, enotdir} ->
+ ok;
+ X ->
+ ?t:format("------- Dir ~p~n ~p~n",[Dir, X])
+ end,
+ case os:cmd(Rm) of
+ [] ->
+ ?t:format("------- Result of COMMAND ~p~n",[ok]);
+ Y ->
+ ?t:format("!!!!!!! delete ERROR Dir ~p Error ~p~n",[Dir, Y]),
+ ?t:format("------- ls -al ~p~n",[os:cmd("ls -al " ++ Dir)])
+ end,
+
+ delete_release_unix(Dirs).
+
+delete_release_win32([]) ->
+ ok;
+delete_release_win32(["save"|Dirs]) ->
+ delete_release_win32(Dirs);
+delete_release_win32([Dir|Dirs]) ->
+ Rm = string:concat("rmdir /s ", Dir),
+ [] = os:cmd(Rm),
+ delete_release_win32(Dirs).
+
+
+node_name(Sname) when is_atom(Sname) ->
+ {ok,Host} = inet:gethostname(),
+ list_to_atom(atom_to_list(Sname) ++ "@" ++ Host).
+
+copy_file(Src, Dest) ->
+ copy_file(Src, Dest, []).
+copy_file(Src, Dest, Opts) ->
+ case file:copy(Src,Dest) of
+ {ok,_} ->
+ preserve(Src,Dest,Opts),
+ chmod(Dest,Opts),
+ ok;
+ {error,eisdir} ->
+ NewDest = filename:join(Dest, filename:basename(Src)),
+ case file:copy(Src,NewDest) of
+ {ok,_} ->
+ preserve(Src,NewDest,Opts),
+ chmod(NewDest,Opts);
+ {error,Reason} ->
+ copy_error(Src,Dest,Reason)
+ end;
+ {error,Reason} ->
+ copy_error(Src,Dest,Reason)
+ end.
+
+preserve(Src,Dest,Opts) ->
+ case lists:member(preserve, Opts) of
+ true ->
+ {ok, FileInfo} = file:read_file_info(Src),
+ ok = file:write_file_info(Dest, FileInfo);
+ false ->
+ ok
+ end.
+
+chmod(Dest,Opts) ->
+ case lists:keyfind(chmod,1,Opts) of
+ {chmod,Mode} ->
+ ok = file:change_mode(Dest, Mode);
+ false ->
+ ok
+ end.
+
+
+
+copy_error(Src, Dest, Reason) ->
+ io:format("Copy ~s to ~s failed: ~s\n",
+ [Src,Dest,file:format_error(Reason)]),
+ ?t:fail(file_copy_failed).
+
+copy_tree(Conf, Src, DestDir) ->
+ case catch copy_tree(Conf, Src, filename:basename(Src), DestDir) of
+ ok ->
+ ok;
+ {'EXIT', {{badmatch,Error},_Stack}} ->
+ %% Most probably, an erl_tar call has failed.
+ %% Known to happen on some platforms (symbolic_link_too_long)
+ Error;
+ {'EXIT', Reason} ->
+ {error, Reason}
+ end.
+
+copy_tree(Conf, Src, NewName, DestDir) ->
+ PrivDir = priv_dir(Conf),
+ TempTarName = filename:join(PrivDir, "temp_tar_file.tar"),
+ %% Not compressing tar file here since that would increase test
+ %% suite time by almost 100%, and the tar file is deleted
+ %% imediately anyway.
+ {ok,Tar} = erl_tar:open(TempTarName, [write]),
+ ok = erl_tar:add(Tar, Src, NewName, []),
+ ok = erl_tar:close(Tar),
+ ok = erl_tar:extract(TempTarName, [{cwd,DestDir}]),
+ ok = file:delete(TempTarName),
+ ok.
+
+%% subst_file(Src, Dest, Vars)
+%% Src = Dest = string(), filename and path
+%% Vars = [{Var, Val}]
+%% Var = Val = string()
+%% Substitute all occurrences of %Var% for Val in Src, using the list
+%% of variables in Vars. Result is written to Dest.
+%%
+subst_file(Src, Dest, Vars) ->
+ subst_file(Src, Dest, Vars, []).
+subst_file(Src, Dest, Vars, Opts) ->
+ {ok, Bin} = file:read_file(Src),
+ Conts = binary_to_list(Bin),
+ NConts = subst(Conts, Vars),
+ ok = file:write_file(Dest, NConts),
+ preserve(Src,Dest,Opts),
+ chmod(Dest,Opts).
+
+subst(Str, Vars) ->
+ subst(Str, Vars, []).
+
+subst([$%, C| Rest], Vars, Result) when $A =< C, C =< $Z ->
+ subst_var([C| Rest], Vars, Result, []);
+subst([$%, C| Rest], Vars, Result) when $a =< C, C =< $z ->
+ subst_var([C| Rest], Vars, Result, []);
+subst([$%, C| Rest], Vars, Result) when C == $_ ->
+ subst_var([C| Rest], Vars, Result, []);
+subst([C| Rest], Vars, Result) ->
+ subst(Rest, Vars, [C| Result]);
+subst([], _Vars, Result) ->
+ lists:reverse(Result).
+
+subst_var([$%| Rest], Vars, Result, VarAcc) ->
+ Key = lists:reverse(VarAcc),
+ case lists:keysearch(Key, 1, Vars) of
+ {value, {Key, Value}} ->
+ subst(Rest, Vars, lists:reverse(Value, Result));
+ false ->
+ subst(Rest, Vars, [$%| VarAcc ++ [$%| Result]])
+ end;
+subst_var([C| Rest], Vars, Result, VarAcc) ->
+ subst_var(Rest, Vars, Result, [C| VarAcc]);
+subst_var([], Vars, Result, VarAcc) ->
+ subst([], Vars, [VarAcc ++ [$%| Result]]).
+
+
+priv_dir(Conf) ->
+ filename:absname(?config(priv_dir, Conf)). % Get rid of trailing slash
+
+latest_version(Dir) ->
+ List = filelib:wildcard(Dir ++ "*"),
+ lists:last(lists:sort(List)).
+
+%% A printer process which receives messages from other nodes and
+%% prints in the log
+reg_print_proc() ->
+ catch unregister(rh_print),
+ Pid = spawn_link(?MODULE, rh_print, []),
+ register(rh_print, Pid),
+ ok.
+
+rh_print() ->
+ receive
+ {print, {Module,Line}, [H|T]} ->
+ ?t:format("=== ~p:~p - ~p",[Module,Line,H]),
+ lists:foreach(fun(Term) -> ?t:format(" ~p",[Term]) end, T),
+ ?t:format("",[]),
+ rh_print();
+ kill ->
+ exit(normal)
+ end.
+
+stop_print_proc() ->
+ case whereis(rh_print) of %%removes the printer process
+ undefined ->
+ ok;
+ Pid when is_pid(Pid) ->
+ rh_print ! kill
+ end.
+
+%% Create the first target release, vsn P1G. This release is used for
+%% all test cases in {group,release}
+create_p1g(Conf,Sname) ->
+ do_create_p1g(Conf,filename:join(priv_dir(Conf),Sname)).
+
+do_create_p1g(Conf,TargetDir) ->
+ PrivDir = priv_dir(Conf),
+ DataDir = ?config(data_dir,Conf),
+ ErtsVsn = "4.4",
+ ErtsDir = "erts-"++ErtsVsn,
+
+ %% Create dirs
+ BinDir = filename:join(TargetDir,bin),
+ ReleasesDir = filename:join(TargetDir,releases),
+ LogDir = filename:join(TargetDir,log),
+ ok = filelib:ensure_dir(filename:join(BinDir,"*")),
+ ok = filelib:ensure_dir(filename:join(ReleasesDir,"*")),
+ ok = filelib:ensure_dir(filename:join(LogDir,"*")),
+
+ %% Copy stuff
+ ErtsLatest = latest_version(filename:join(code:root_dir(),"erts")),
+ ok = copy_tree(Conf, ErtsLatest, ErtsDir, TargetDir),
+ ErtsBinDir = filename:join([TargetDir,ErtsDir,bin]),
+ copy_file(filename:join([ErtsBinDir, "epmd"]), BinDir, [preserve]),
+ copy_file(filename:join([ErtsBinDir, "run_erl"]), BinDir, [preserve]),
+ copy_file(filename:join([ErtsBinDir, "to_erl"]), BinDir, [preserve]),
+
+ copy_file(filename:join(DataDir, "../installer.beam"),
+ filename:join([DataDir,lib,"installer-1.0",ebin])),
+
+ %% Create .rel, .script and .boot files
+ RelName = "rel0",
+ RelVsn = "P1G",
+ RelDir = filename:join(PrivDir,RelName),
+ RelFileName = filename:join(RelDir,RelName),
+ RelFile = RelFileName ++ ".rel",
+ ok = filelib:ensure_dir(RelFile),
+ LibPath = filename:join([DataDir,lib,"*",ebin]),
+
+ TarFile = create_basic_release(RelFile, RelVsn, {ErtsVsn,false},
+ LibPath, [], [], [], []),
+
+ %% Extract tar file in target directory (i.e. same directory as erts etc.)
+ ok = erl_tar:extract(TarFile, [{cwd, TargetDir}, compressed]),
+
+ %% Create start_erl.data
+ StartErlDataFile = filename:join([ReleasesDir, "start_erl.data"]),
+ StartErlData = io_lib:fwrite("~s ~s~n", [ErtsVsn, RelVsn]),
+ ok = file:write_file(StartErlDataFile, StartErlData),
+
+ %% Create RELEASES
+ ok = release_handler:create_RELEASES(TargetDir,ReleasesDir,RelFile,[]),
+
+ %% Create start_erl
+ ok = subst_file(filename:join([ErtsBinDir,"start_erl.src"]),
+ filename:join([BinDir,"start_erl"]),
+ [{"EMU","beam"}],
+ [{chmod,8#0755}]),
+
+ %% Create start script
+ %% Using a customized start script from DataDir where some options
+ %% (heart and nodename) are added compared to the start.src in the
+ %% erlang distribution.
+ ok = subst_file(filename:join(DataDir, "start"),
+ filename:join([BinDir, "start"]),
+ [{"ROOT",TargetDir}],
+ [preserve]),
+ ok.
+
+%% Create version P1H - which is P1G + a-1.0
+%% Must have run create_p1g first!!
+create_p1h(Conf) ->
+ create_upgrade_release(Conf,"rel1","P1H",{"4.4",false},[{a,"1.0"}],
+ [{a,[{key2,val2}]}],{"rel0",[new_appl]}).
+
+%% Create version P1I - which is P1H, but with application a upgraded to a-1.1
+%% Must have run create_p1h first!!
+create_p1i(Conf) ->
+ create_upgrade_release(Conf,"rel2","P1I",{"4.4",false},[{a,"1.1"}],
+ [{a,[{key2,newval2}]}],
+ {"rel1",[{extra,gott}]}).
+
+%% Create version P2A - which is P1I, but with erts-<latest>
+%% Must have run create_p1i first!!
+create_p2a(Conf) ->
+ ErtsVsn = erlang:system_info(version),
+ create_upgrade_release(Conf,"rel3","P2A",{ErtsVsn,code:root_dir()},
+ [{a,"1.1"}],[{a,[{key2,newval2}]}],
+ {"rel2",[new_emu]}).
+
+%% Create a release tar package which can be installed on top of P1G
+create_upgrade_release(Conf,RelName,RelVsn,Erts,Apps,Config,{UpFromName,Descr}) ->
+ PrivDir = priv_dir(Conf),
+ DataDir = ?config(data_dir,Conf),
+
+ RelDir = filename:join(PrivDir,RelName),
+ RelFileName = filename:join(RelDir,RelName),
+ RelFile = RelFileName ++ ".rel",
+ ok = filelib:ensure_dir(RelFile),
+ LibPath = filename:join([DataDir,lib,"*",ebin]),
+
+ UpFrom = [{filename:join([PrivDir,UpFromName,UpFromName]),Descr}],
+
+ create_basic_release(RelFile, RelVsn, Erts, LibPath,
+ Apps, Config, UpFrom, []),
+ ok.
+
+%% Create .rel, .script, .boot, sys.config and tar
+create_basic_release(RelFile,RelVsn,{ErtsVsn,ErtsDir},LibPath,ExtraApps,Config,UpFrom,DownTo) ->
+ RelDir = filename:dirname(RelFile),
+ RelFileName = filename:rootname(RelFile),
+
+ %% Create .rel file
+ create_installer_rel_file(RelFile,RelVsn,ErtsVsn,ExtraApps),
+
+ %% Generate .script and .boot
+ ok = systools:make_script(RelFileName,
+ [{path,[LibPath]},
+ {outdir,RelDir}]),
+
+ %% Generate relup
+ ok = systools:make_relup(RelFileName,UpFrom,DownTo,[{path,[LibPath]},
+ {outdir,RelDir}]),
+
+ %% Create sys.config
+ ok = write_term_file(filename:join(RelDir,"sys.config"),Config),
+
+
+ %% Create tar file (i.e. collect all lib/app-*/* and system files)
+ ok = systools:make_tar(RelFileName,
+ [{path,[LibPath]},
+ {outdir,RelDir} |
+ case ErtsDir of
+ false -> [];
+ _ -> [{erts,ErtsDir}]
+ end]),
+
+ RelFileName ++ ".tar.gz".
+
+%% Create a .rel file
+create_installer_rel_file(RelFile,RelVsn,ErtsVsn,ExtraApps) ->
+ create_rel_file(RelFile,"SASL-test",RelVsn,ErtsVsn,
+ [{installer,"1.0"}|ExtraApps]).
+
+create_rel_file(RelFile,RelName,RelVsn,ErtsVsn,ExtraApps) ->
+ {ok,KernelVsn} = application:get_key(kernel,vsn),
+ {ok,StdlibVsn} = application:get_key(stdlib,vsn),
+ {ok,SaslVsn} = application:get_key(sasl,vsn),
+ application:load(tools),
+ {ok,ToolsVsn} = application:get_key(tools,vsn),
+ application:load(runtime_tools),
+ {ok,RuntimeToolsVsn} = application:get_key(runtime_tools,vsn),
+
+ RelFileContent = {release,
+ {RelName, RelVsn},
+ {erts, ErtsVsn},
+ [{kernel, KernelVsn},
+ {stdlib, StdlibVsn},
+ {sasl, SaslVsn},
+ {runtime_tools, RuntimeToolsVsn},
+ {tools, ToolsVsn} |
+ ExtraApps]},
+ ok = write_term_file(RelFile,RelFileContent).
+
+%% Insert a term in a file, which can be read with file:consult/1.
+write_term_file(File,Term) ->
+ ok = file:write_file(File,io_lib:format("~p.~n",[Term])).
+
+
+%% Check that global group info is correct
+check_gg_info(Node,OtherAlive,OtherDead,Synced) ->
+ GGI = rpc:call(Node, global_group, info, []),
+ GI = rpc:call(Node, global, info,[]),
+ try do_check_gg_info(OtherAlive,OtherDead,Synced,GGI,GI)
+ catch _:E ->
+ ?t:format("~ncheck_gg_info failed for ~p: ~p~nwhen GGI was: ~p~n"
+ "and GI was: ~p~n",
+ [Node,E,GGI,GI]),
+ ?t:fail("check_gg_info failed")
+ end.
+
+do_check_gg_info(OtherAlive,OtherDead,Synced,GGI,GI) ->
+ {_,gg1} = lists:keyfind(own_group_name,1,GGI),
+ {_,synced} = lists:keyfind(state,1,GGI),
+ {_,AllNodes} = lists:keyfind(own_group_nodes,1,GGI),
+ true = lists:sort(AllNodes) =:= lists:sort(OtherAlive++OtherDead),
+ {_,[]} = lists:keyfind(sync_error,1,GGI),
+ {_,[{gg2,[_,_]}]} = lists:keyfind(other_groups,1,GGI),
+
+ %% There is a known bug in global_group (OTP-9177) which causes
+ %% the following to fail every now and then:
+ %% {_,SyncedNodes} = lists:keyfind(synced_nodes,1,GGI),
+ %% true = lists:sort(SyncedNodes) =:= lists:sort(Synced),
+ %% {_,NoContact} = lists:keyfind(no_contact,1,GGI),
+ %% true = lists:sort(NoContact) =:= lists:sort(OtherDead),
+
+ %% Therefore we use global:info instead for this part
+ {state,_,_,SyncedNodes,_,_,_,_,_,_,_} = GI,
+ true = lists:sort(SyncedNodes) =:= lists:sort(Synced),
+
+ %% .. and we only check that all OtherDead are listed as
+ %% no_contact (due to th bug there might be more nodes in this
+ %% list)
+ {_,NoContact} = lists:keyfind(no_contact,1,GGI),
+ true =
+ lists:sort(OtherDead) =:=
+ lists:sort([NC || NC <- NoContact,lists:member(NC,OtherDead)]),
+
+ ok.
+
+%% Return the configuration (to be inserted in sys.config) for global group tests
+gg_config(Snames) ->
+ Nodes = [node_name(Sname) || Sname <- Snames],
+ [{kernel, [{sync_nodes_optional, Nodes},
+ {sync_nodes_timeout, 10000},
+ {global_groups,
+ [{gg1, Nodes},
+ {gg2, [node_name(Sname) || Sname <- [ggq,ggw]]}]}]},
+ {a, [{key2, val2}]}].
+
+%% Start a node with short name SnameStr, and unpack P1H
+unpack_p1h(Conf,Sname) ->
+ PrivDir = priv_dir(Conf),
+ [Node] = start_nodes(Conf,[Sname],"create_p1h"),
+ ok = rpc_inst(Node, unpack_p1h, [PrivDir]),
+ Node.
+
+%% On the given node, install P1H and make it permanent
+%% This function is to be called after unpack_p1h/2, with the same node.
+permanent_p1h(Node) ->
+ ok = rpc_inst(Node, permanent_p1h, []).
+
+%% For each node in ToNodes, create a target installation which is
+%% indentical to the target installation for FromNode.
+copy_installed(Conf,FromNode,ToNodes) ->
+ PrivDir = priv_dir(Conf),
+ DataDir = ?config(data_dir,Conf),
+ lists:foreach(
+ fun(Node) ->
+ ok = copy_tree(Conf,filename:join(PrivDir,FromNode),Node,PrivDir),
+ NodeDir = filename:join(PrivDir,Node),
+ ok = subst_file(filename:join(DataDir, "start"),
+ filename:join([NodeDir, "bin", "start"]),
+ [{"ROOT",NodeDir}]),
+ LogDir = filename:join(NodeDir,log),
+ {ok,Logs} = file:list_dir(LogDir),
+ lists:foreach(fun(Log) ->
+ file:delete(filename:join(LogDir,Log))
+ end,
+ Logs)
+ end,
+ ToNodes).
+
+start_nodes(Conf,Snames,Tag) ->
+ PrivDir = priv_dir(Conf),
+ Nodes =
+ lists:map(
+ fun(Sname) ->
+ NodeDir = filename:join(PrivDir,Sname),
+ Node = node_name(Sname),
+
+ Script = filename:join([NodeDir,"bin","start"]),
+ Cmd = "env NODENAME="++atom_to_list(Sname) ++ " " ++ Script,
+ %% {ok,StartFile} = file:read_file(Cmd),
+ %% io:format("~s:\n~s~n~n",[Start,binary_to_list(StartFile)]),
+ Res = os:cmd(Cmd),
+ io:format("Start ~p: ~p~n=>\t~p~n", [Sname,Cmd,Res]),
+ Node
+ end,
+ Snames),
+ wait_nodes_up(Nodes,Tag),
+ Nodes.
+
+tc_sname(Config) ->
+ tc_sname(Config,"").
+tc_sname(Config,Fix) when is_atom(Fix) ->
+ tc_sname(Config,atom_to_list(Fix));
+tc_sname(Config,Fix) when is_list(Fix) ->
+ list_to_atom(
+ atom_to_list(?MODULE)
+ ++ "-" ++ atom_to_list(?config(sname_prefix, Config)) ++
+ case Fix of
+ "" -> "";
+ _ -> "-" ++ Fix
+ end).
+
+tc_full_node_name(Config) ->
+ tc_full_node_name(Config,"").
+tc_full_node_name(Config,Fix) ->
+ node_name(tc_sname(Config,Fix)).
+
+
+%% When installing a release for which the sys.config includes added
+%% or changed global group(s), this node (test_sever@host) will be
+%% disconnected from the test node (Node) by global_group.erl. This
+%% will cause the rpc:call to terminate with {badrpc,nodedown} even if
+%% the installation succeeds. This function installs the release,
+%% accepts the faulty return value and then checks if the release was
+%% successfully installed.
+install_release_changed_gg(Node,RelVsn) ->
+ stop_cover(Node),
+ {badrpc,nodedown} = rpc:call(Node,release_handler,install_release,[RelVsn]),
+ timer:sleep(100),
+ wait_installed(Node,RelVsn,4).
+
+wait_installed(Node,RelVsn,0) ->
+ ?t:fail("install_release_changed_gg failed for " ++ RelVsn ++
+ " on " ++ atom_to_list(Node));
+wait_installed(Node,RelVsn,N) ->
+ Rels = rpc:call(Node,release_handler,which_releases,[]),
+ case lists:keyfind(RelVsn, 2, Rels) of
+ {"SASL-test", RelVsn, _Libs, current} ->
+ start_cover(Node),
+ ok;
+ _ ->
+ timer:sleep(500),
+ wait_installed(Node,RelVsn,N-1)
+ end.
+
+%% Start/stop cover measurements on the given node
+start_cover(Node) ->
+ cover_fun(Node,start).
+stop_cover(Node) ->
+ cover_fun(Node,stop).
+
+cover_fun(Node,Func) ->
+ case ?t:is_cover() of
+ true ->
+ cover:Func(Node);
+ false ->
+ ok
+ end.
+
+%%%-----------------------------------------------------------------
+%%% Create a fake release ....
+
+%% This function will create and install a release build on the
+%% current running OTP release. It includes kernel, stdlib and sasl,
+%% and possibly other applications if they are listed in AppDirs =
+%% [{App,Vsn,LibDir}]
+create_and_install_fake_first_release(Dir,AppDirs) ->
+ %% Create the first release
+ {RelName,RelVsn} = init:script_id(),
+ {Rel,_} = create_fake_release(Dir,RelName,RelVsn,AppDirs),
+ ReleasesDir = filename:join(Dir, "releases"),
+ RelDir = filename:dirname(Rel),
+
+ %% And install it
+ RelVsnDir = filename:join(ReleasesDir, RelVsn),
+ ok = filelib:ensure_dir(filename:join(RelVsnDir,"*")),
+
+ ok = copy_file(Rel++".rel",RelVsnDir),
+ ok = copy_file(Rel++".boot",filename:join(RelVsnDir, "start.boot")),
+ ok = copy_file(filename:join(RelDir,"sys.config"),RelVsnDir),
+
+ ok = release_handler:create_RELEASES(code:root_dir(),
+ ReleasesDir,
+ Rel++".rel",
+ AppDirs),
+
+ Rel.
+
+%% This function create a new release, including a relup file. It can
+%% be upgraded to from the release created by
+%% create_and_install_fake_first_release/2. Unpack first by calls to
+%% release_handler:set_unpacked and release_handler:install_file.
+create_fake_upgrade_release(Dir,RelVsn,AppDirs,{UpFrom,DownTo,ExtraLibs}) ->
+ %% Create a new release
+ {RelName,_} = init:script_id(),
+ {Rel,Paths} = create_fake_release(Dir,RelName,RelVsn,AppDirs),
+ RelDir = filename:dirname(Rel),
+
+ %% And a relup file so it can be upgraded to
+ RelupPath = Paths ++ [filename:join([Lib,"*","ebin"]) || Lib <- ExtraLibs],
+ ok = systools:make_relup(Rel,[UpFrom],[DownTo],
+ [{path,RelupPath},
+ {outdir,RelDir}]),
+
+ Rel.
+
+
+create_fake_release(Dir,RelName,RelVsn,AppDirs) ->
+ %% Create .rel files
+ RelDir = filename:join(Dir,"rel_" ++ RelVsn),
+ Rel = filename:join([RelDir,"rel_" ++ RelVsn]),
+ ok = filelib:ensure_dir(Rel),
+ ErtsVsn = erlang:system_info(version),
+
+ {Apps,Paths} =
+ lists:foldl(fun({App,Vsn,Lib},{As,Ps}) ->
+ {[{App,Vsn}|As],
+ lists:umerge([filename:join([Lib,"*",ebin])],Ps)}
+ end,
+ {[],[]},
+ AppDirs),
+
+ create_rel_file(Rel++".rel",RelName,RelVsn,ErtsVsn,Apps),
+
+ %% Generate boot scripts
+ ok = systools:make_script(Rel,[local,
+ {path, Paths},
+ {outdir,RelDir}]),
+ ok = copy_file(Rel++".boot", filename:join(RelDir,"start.boot")),
+
+ %% Use an own 'releases' directory - we don't want to change the
+ %% contents of $OTP_ROOT/releases
+ %% Inform SASL about this via sys.config
+ ReleasesDir = filename:join(Dir, "releases"),
+ Config = [{sasl,[{releases_dir,ReleasesDir}]}],
+ ok = write_term_file(filename:join(RelDir,"sys.config"), Config),
+
+ {Rel,Paths}.
+
+
+rpc_inst(Node,Func,Args) ->
+ rpc:call(Node,installer,Func,[node()|Args]).
diff --git a/lib/sasl/test/release_handler_SUITE_data/Makefile.src b/lib/sasl/test/release_handler_SUITE_data/Makefile.src
new file mode 100644
index 0000000000..85e25fdc2f
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/Makefile.src
@@ -0,0 +1,108 @@
+EFLAGS=+debug_info
+
+P2B= \
+ P2B/a-2.0/ebin/a.beam \
+ P2B/a-2.0/ebin/a_sup.beam
+
+LIB= \
+ lib/a-1.1/ebin/a.beam \
+ lib/a-1.1/ebin/a_sup.beam \
+ lib/a-1.0/ebin/a.beam \
+ lib/a-1.0/ebin/a_sup.beam \
+
+APP= \
+ app1_app2/lib1/app1-1.0/ebin/app1_sup.@EMULATOR@ \
+ app1_app2/lib1/app1-1.0/ebin/app1_server.@EMULATOR@ \
+ app1_app2/lib1/app1-1.0/ebin/app1.@EMULATOR@ \
+ app1_app2/lib1/app2-1.0/ebin/app2_sup.@EMULATOR@ \
+ app1_app2/lib1/app2-1.0/ebin/app2_server.@EMULATOR@ \
+ app1_app2/lib1/app2-1.0/ebin/app2.@EMULATOR@ \
+ app1_app2/lib2/app1-2.0/ebin/app1_sup.@EMULATOR@ \
+ app1_app2/lib2/app1-2.0/ebin/app1_server.@EMULATOR@ \
+ app1_app2/lib2/app1-2.0/ebin/app1.@EMULATOR@ \
+ app1_app2/lib2/app2-1.0/ebin/app2_sup.@EMULATOR@ \
+ app1_app2/lib2/app2-1.0/ebin/app2_server.@EMULATOR@ \
+ app1_app2/lib2/app2-1.0/ebin/app2.@EMULATOR@
+
+OTP2740= \
+ otp_2740/vsn_atom.@EMULATOR@ \
+ otp_2740/vsn_list.@EMULATOR@ \
+ otp_2740/vsn_numeric.@EMULATOR@ \
+ otp_2740/vsn_tuple.@EMULATOR@ \
+ otp_2740/vsn_string.@EMULATOR@
+
+C= \
+ c/aa.@EMULATOR@ \
+ c/b.@EMULATOR@ \
+ c/c_sup.@EMULATOR@
+
+
+all: $(P2B) $(LIB) $(APP) $(OTP2740) $(C)
+
+P2B/a-2.0/ebin/a.@EMULATOR@: P2B/a-2.0/src/a.erl
+ erlc $(EFLAGS) -oP2B/a-2.0/ebin P2B/a-2.0/src/a.erl
+P2B/a-2.0/ebin/a_sup.@EMULATOR@: P2B/a-2.0/src/a_sup.erl
+ erlc $(EFLAGS) -oP2B/a-2.0/ebin P2B/a-2.0/src/a_sup.erl
+
+
+lib/a-1.0/ebin/a.@EMULATOR@: lib/a-1.0/src/a.erl
+ erlc $(EFLAGS) -olib/a-1.0/ebin lib/a-1.0/src/a.erl
+lib/a-1.0/ebin/a_sup.@EMULATOR@: lib/a-1.0/src/a_sup.erl
+ erlc $(EFLAGS) -olib/a-1.0/ebin lib/a-1.0/src/a_sup.erl
+
+
+lib/a-1.1/ebin/a.@EMULATOR@: lib/a-1.1/src/a.erl
+ erlc $(EFLAGS) -olib/a-1.1/ebin lib/a-1.1/src/a.erl
+lib/a-1.1/ebin/a_sup.@EMULATOR@: lib/a-1.1/src/a_sup.erl
+ erlc $(EFLAGS) -olib/a-1.1/ebin lib/a-1.1/src/a_sup.erl
+
+
+app1_app2/lib1/app1-1.0/ebin/app1_sup.@EMULATOR@: app1_app2/lib1/app1-1.0/src/app1_sup.erl
+ erlc $(EFLAGS) -oapp1_app2/lib1/app1-1.0/ebin app1_app2/lib1/app1-1.0/src/app1_sup.erl
+app1_app2/lib1/app1-1.0/ebin/app1_server.@EMULATOR@: app1_app2/lib1/app1-1.0/src/app1_server.erl
+ erlc $(EFLAGS) -oapp1_app2/lib1/app1-1.0/ebin app1_app2/lib1/app1-1.0/src/app1_server.erl
+app1_app2/lib1/app1-1.0/ebin/app1.@EMULATOR@: app1_app2/lib1/app1-1.0/src/app1.erl
+ erlc $(EFLAGS) -oapp1_app2/lib1/app1-1.0/ebin app1_app2/lib1/app1-1.0/src/app1.erl
+
+
+app1_app2/lib1/app2-1.0/ebin/app2_sup.@EMULATOR@: app1_app2/lib1/app2-1.0/src/app2_sup.erl
+ erlc $(EFLAGS) -oapp1_app2/lib1/app2-1.0/ebin app1_app2/lib1/app2-1.0/src/app2_sup.erl
+app1_app2/lib1/app2-1.0/ebin/app2_server.@EMULATOR@: app1_app2/lib1/app2-1.0/src/app2_server.erl
+ erlc $(EFLAGS) -oapp1_app2/lib1/app2-1.0/ebin app1_app2/lib1/app2-1.0/src/app2_server.erl
+app1_app2/lib1/app2-1.0/ebin/app2.@EMULATOR@: app1_app2/lib1/app2-1.0/src/app2.erl
+ erlc $(EFLAGS) -oapp1_app2/lib1/app2-1.0/ebin app1_app2/lib1/app2-1.0/src/app2.erl
+
+
+app1_app2/lib2/app1-2.0/ebin/app1_sup.@EMULATOR@: app1_app2/lib2/app1-2.0/src/app1_sup.erl
+ erlc $(EFLAGS) -oapp1_app2/lib2/app1-2.0/ebin app1_app2/lib2/app1-2.0/src/app1_sup.erl
+app1_app2/lib2/app1-2.0/ebin/app1_server.@EMULATOR@: app1_app2/lib2/app1-2.0/src/app1_server.erl
+ erlc $(EFLAGS) -oapp1_app2/lib2/app1-2.0/ebin app1_app2/lib2/app1-2.0/src/app1_server.erl
+app1_app2/lib2/app1-2.0/ebin/app1.@EMULATOR@: app1_app2/lib2/app1-2.0/src/app1.erl
+ erlc $(EFLAGS) -oapp1_app2/lib2/app1-2.0/ebin app1_app2/lib2/app1-2.0/src/app1.erl
+
+
+app1_app2/lib2/app2-1.0/ebin/app2_sup.@EMULATOR@: app1_app2/lib2/app2-1.0/src/app2_sup.erl
+ erlc $(EFLAGS) -oapp1_app2/lib2/app2-1.0/ebin app1_app2/lib2/app2-1.0/src/app2_sup.erl
+app1_app2/lib2/app2-1.0/ebin/app2_server.@EMULATOR@: app1_app2/lib2/app2-1.0/src/app2_server.erl
+ erlc $(EFLAGS) -oapp1_app2/lib2/app2-1.0/ebin app1_app2/lib2/app2-1.0/src/app2_server.erl
+app1_app2/lib2/app2-1.0/ebin/app2.@EMULATOR@: app1_app2/lib2/app2-1.0/src/app2.erl
+ erlc $(EFLAGS) -oapp1_app2/lib2/app2-1.0/ebin app1_app2/lib2/app2-1.0/src/app2.erl
+
+
+otp_2740/vsn_atom.@EMULATOR@: otp_2740/vsn_atom.erl
+ erlc $(EFLAGS) -ootp_2740 otp_2740/vsn_atom.erl
+otp_2740/vsn_list.@EMULATOR@: otp_2740/vsn_list.erl
+ erlc $(EFLAGS) -ootp_2740 otp_2740/vsn_list.erl
+otp_2740/vsn_numeric.@EMULATOR@: otp_2740/vsn_numeric.erl
+ erlc $(EFLAGS) -ootp_2740 otp_2740/vsn_numeric.erl
+otp_2740/vsn_tuple.@EMULATOR@: otp_2740/vsn_tuple.erl
+ erlc $(EFLAGS) -ootp_2740 otp_2740/vsn_tuple.erl
+otp_2740/vsn_string.@EMULATOR@: otp_2740/vsn_string.erl
+ erlc $(EFLAGS) -ootp_2740 otp_2740/vsn_string.erl
+
+c/aa.@EMULATOR@: c/aa.erl
+ erlc $(EFLAGS) -oc c/aa.erl
+c/b.@EMULATOR@: c/b.erl
+ erlc $(EFLAGS) -oc c/b.erl
+c/c_sup.@EMULATOR@: c/c_sup.erl
+ erlc $(EFLAGS) -oc c/c_sup.erl
diff --git a/lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/ebin/a.app b/lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/ebin/a.app
new file mode 100644
index 0000000000..200cfcfe47
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/ebin/a.app
@@ -0,0 +1,8 @@
+{application, a,
+ [{description, "A CXC 138 11"},
+ {vsn, "2.0"},
+ {modules, [{a, 1}, {a_sup,1}]},
+ {registered, [a_sup]},
+ {applications, [kernel, stdlib]},
+ {env, [{key1, val1}]},
+ {mod, {a_sup, []}}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/src/a.erl b/lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/src/a.erl
new file mode 100644
index 0000000000..cfe38b55ce
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/src/a.erl
@@ -0,0 +1,47 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+-module(a).
+
+
+-behaviour(gen_server).
+
+%% External exports
+-export([start_link/0, a/0]).
+%% Internal exports
+-export([init/1, handle_call/3, handle_info/2, terminate/2]).
+
+start_link() -> gen_server:start_link({local, aa}, a, [], []).
+
+a() -> gen_server:call(aa, a).
+
+%%-----------------------------------------------------------------
+%% Callback functions from gen_server
+%%-----------------------------------------------------------------
+init([]) ->
+ process_flag(trap_exit, true),
+ {ok, state}.
+
+handle_call(a, _From, State) ->
+ X = application:get_all_env(a),
+ {reply, X, State}.
+
+handle_info(_, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/src/a_sup.erl b/lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/src/a_sup.erl
new file mode 100644
index 0000000000..a141c1767b
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/P2B/a-2.0/src/a_sup.erl
@@ -0,0 +1,37 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+-module(a_sup).
+
+
+-behaviour(supervisor).
+
+%% External exports
+-export([start/2]).
+
+%% Internal exports
+-export([init/1]).
+
+start(_, _) ->
+ supervisor:start_link({local, a_sup}, a_sup, []).
+
+init([]) ->
+ SupFlags = {one_for_one, 4, 3600},
+ Config = {a,
+ {a, start_link, []},
+ permanent, 2000, worker, [a]},
+ {ok, {SupFlags, [Config]}}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/ebin/app1.app b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/ebin/app1.app
new file mode 100644
index 0000000000..0489cb2595
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/ebin/app1.app
@@ -0,0 +1,9 @@
+{application, app1,
+ [{description, "very simple example application"},
+ {id, "app1"},
+ {vsn, "1.0"},
+ {modules, [app1, app1_sup, app1_server]},
+ {registered, [harry]},
+ {applications, [kernel, stdlib, sasl]},
+ {env, [{var,val1}]},
+ {mod, {app1, []}}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1.erl
new file mode 100644
index 0000000000..f123c8f470
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1.erl
@@ -0,0 +1,22 @@
+-module(app1).
+
+-behaviour(application).
+
+%% Application callbacks
+-export([start/2, stop/1]).
+-export([config_change/3]).
+
+start(_Type, _StartArgs) ->
+ case app1_sup:start_link() of
+ {ok, Pid} ->
+ {ok, Pid};
+ Error ->
+ Error
+ end.
+
+stop(_State) ->
+ ok.
+
+config_change(Changed, _New, _Removed) ->
+ catch ets:insert(otp_6162, hd(Changed)),
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1_server.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1_server.erl
new file mode 100644
index 0000000000..9b49e772cc
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1_server.erl
@@ -0,0 +1,32 @@
+-module(app1_server).
+
+-behaviour(gen_server).
+
+%% API
+-export([start_link/0]).
+
+%% gen_server callbacks
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+start_link() ->
+ gen_server:start_link({local, harry}, ?MODULE, [], []).
+
+init([]) ->
+ {ok, []}.
+
+handle_call(_Request, _From, State) ->
+ Reply = ok,
+ {reply, Reply, State}.
+
+handle_cast(_Msg, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1_sup.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1_sup.erl
new file mode 100644
index 0000000000..e6ad9b6967
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app1-1.0/src/app1_sup.erl
@@ -0,0 +1,17 @@
+-module(app1_sup).
+
+-behaviour(supervisor).
+
+%% API
+-export([start_link/0]).
+
+%% Supervisor callbacks
+-export([init/1]).
+
+start_link() ->
+ supervisor:start_link(?MODULE, []).
+
+init([]) ->
+ AChild = {harry,{app1_server,start_link,[]},
+ permanent,2000,worker,[app1_server]},
+ {ok,{{one_for_all,0,1}, [AChild]}}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/ebin/app2.app b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/ebin/app2.app
new file mode 100644
index 0000000000..d48018cbda
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/ebin/app2.app
@@ -0,0 +1,9 @@
+{application, app2,
+ [{description, "very simple example application"},
+ {id, "app2"},
+ {vsn, "1.0"},
+ {modules, [app2, app2_sup, app2_server]},
+ {registered, [ginny]},
+ {applications, [kernel, stdlib, sasl]},
+ {env, []},
+ {mod, {app2, []}}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2.erl
new file mode 100644
index 0000000000..a41c39730c
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2.erl
@@ -0,0 +1,17 @@
+-module(app2).
+
+-behaviour(application).
+
+%% Application callbacks
+-export([start/2, stop/1]).
+
+start(_Type, _StartArgs) ->
+ case app2_sup:start_link() of
+ {ok, Pid} ->
+ {ok, Pid};
+ Error ->
+ Error
+ end.
+
+stop(_State) ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2_server.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2_server.erl
new file mode 100644
index 0000000000..d8440230ff
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2_server.erl
@@ -0,0 +1,32 @@
+-module(app2_server).
+
+-behaviour(gen_server).
+
+%% API
+-export([start_link/0]).
+
+%% gen_server callbacks
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+start_link() ->
+ gen_server:start_link({local, ginny}, ?MODULE, [], []).
+
+init([]) ->
+ {ok, []}.
+
+handle_call(_Request, _From, State) ->
+ Reply = ok,
+ {reply, Reply, State}.
+
+handle_cast(_Msg, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2_sup.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2_sup.erl
new file mode 100644
index 0000000000..80b0952d4b
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib1/app2-1.0/src/app2_sup.erl
@@ -0,0 +1,17 @@
+-module(app2_sup).
+
+-behaviour(supervisor).
+
+%% API
+-export([start_link/0]).
+
+%% Supervisor callbacks
+-export([init/1]).
+
+start_link() ->
+ supervisor:start_link(?MODULE, []).
+
+init([]) ->
+ AChild = {ginny,{app2_server,start_link,[]},
+ permanent,2000,worker,[app2_server]},
+ {ok,{{one_for_all,0,1}, [AChild]}}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/ebin/app1.app b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/ebin/app1.app
new file mode 100644
index 0000000000..3c65adfbb3
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/ebin/app1.app
@@ -0,0 +1,9 @@
+{application, app1,
+ [{description, "very simple example application"},
+ {id, "app1"},
+ {vsn, "2.0"},
+ {modules, [app1, app1_sup, app1_server]},
+ {registered, [harry]},
+ {applications, [kernel, stdlib, sasl]},
+ {env, [{var,val2}]},
+ {mod, {app1, []}}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/ebin/app1.appup b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/ebin/app1.appup
new file mode 100644
index 0000000000..e5e0cbda0e
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/ebin/app1.appup
@@ -0,0 +1,4 @@
+{"2.0",
+ [{"1.0", [{load_module, app1_server}]}],
+ [{"1.0", [{load_module, app1_server}]}]
+}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1.erl
new file mode 100644
index 0000000000..f123c8f470
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1.erl
@@ -0,0 +1,22 @@
+-module(app1).
+
+-behaviour(application).
+
+%% Application callbacks
+-export([start/2, stop/1]).
+-export([config_change/3]).
+
+start(_Type, _StartArgs) ->
+ case app1_sup:start_link() of
+ {ok, Pid} ->
+ {ok, Pid};
+ Error ->
+ Error
+ end.
+
+stop(_State) ->
+ ok.
+
+config_change(Changed, _New, _Removed) ->
+ catch ets:insert(otp_6162, hd(Changed)),
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1_server.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1_server.erl
new file mode 100644
index 0000000000..660d095ebf
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1_server.erl
@@ -0,0 +1,35 @@
+-module(app1_server).
+
+-behaviour(gen_server).
+
+%% API
+-export([start_link/0]).
+
+%% gen_server callbacks
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+start_link() ->
+ gen_server:start_link({local, harry}, ?MODULE, [], []).
+
+init([]) ->
+ {ok, []}.
+
+handle_call(error, _From, State) ->
+ Reply = error,
+ {reply, Reply, State};
+handle_call(_Request, _From, State) ->
+ Reply = ok,
+ {reply, Reply, State}.
+
+handle_cast(_Msg, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1_sup.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1_sup.erl
new file mode 100644
index 0000000000..e6ad9b6967
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app1-2.0/src/app1_sup.erl
@@ -0,0 +1,17 @@
+-module(app1_sup).
+
+-behaviour(supervisor).
+
+%% API
+-export([start_link/0]).
+
+%% Supervisor callbacks
+-export([init/1]).
+
+start_link() ->
+ supervisor:start_link(?MODULE, []).
+
+init([]) ->
+ AChild = {harry,{app1_server,start_link,[]},
+ permanent,2000,worker,[app1_server]},
+ {ok,{{one_for_all,0,1}, [AChild]}}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/ebin/app2.app b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/ebin/app2.app
new file mode 100644
index 0000000000..d48018cbda
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/ebin/app2.app
@@ -0,0 +1,9 @@
+{application, app2,
+ [{description, "very simple example application"},
+ {id, "app2"},
+ {vsn, "1.0"},
+ {modules, [app2, app2_sup, app2_server]},
+ {registered, [ginny]},
+ {applications, [kernel, stdlib, sasl]},
+ {env, []},
+ {mod, {app2, []}}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2.erl
new file mode 100644
index 0000000000..a41c39730c
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2.erl
@@ -0,0 +1,17 @@
+-module(app2).
+
+-behaviour(application).
+
+%% Application callbacks
+-export([start/2, stop/1]).
+
+start(_Type, _StartArgs) ->
+ case app2_sup:start_link() of
+ {ok, Pid} ->
+ {ok, Pid};
+ Error ->
+ Error
+ end.
+
+stop(_State) ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2_server.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2_server.erl
new file mode 100644
index 0000000000..d8440230ff
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2_server.erl
@@ -0,0 +1,32 @@
+-module(app2_server).
+
+-behaviour(gen_server).
+
+%% API
+-export([start_link/0]).
+
+%% gen_server callbacks
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+start_link() ->
+ gen_server:start_link({local, ginny}, ?MODULE, [], []).
+
+init([]) ->
+ {ok, []}.
+
+handle_call(_Request, _From, State) ->
+ Reply = ok,
+ {reply, Reply, State}.
+
+handle_cast(_Msg, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2_sup.erl b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2_sup.erl
new file mode 100644
index 0000000000..80b0952d4b
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/app1_app2/lib2/app2-1.0/src/app2_sup.erl
@@ -0,0 +1,17 @@
+-module(app2_sup).
+
+-behaviour(supervisor).
+
+%% API
+-export([start_link/0]).
+
+%% Supervisor callbacks
+-export([init/1]).
+
+start_link() ->
+ supervisor:start_link(?MODULE, []).
+
+init([]) ->
+ AChild = {ginny,{app2_server,start_link,[]},
+ permanent,2000,worker,[app2_server]},
+ {ok,{{one_for_all,0,1}, [AChild]}}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/c/aa.erl b/lib/sasl/test/release_handler_SUITE_data/c/aa.erl
new file mode 100644
index 0000000000..1c853c85b2
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/c/aa.erl
@@ -0,0 +1,41 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+-module(aa).
+
+
+-behaviour(gen_server).
+
+%% External exports
+-export([start_link/0]).
+%% Internal exports
+-export([init/1, handle_info/2, terminate/2]).
+
+start_link() -> gen_server:start_link({local, cc}, aa, [], []).
+
+%%-----------------------------------------------------------------
+%% Callback functions from gen_server
+%%-----------------------------------------------------------------
+init([]) ->
+ process_flag(trap_exit, true),
+ {ok, state}.
+
+handle_info(_, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/c/b.erl b/lib/sasl/test/release_handler_SUITE_data/c/b.erl
new file mode 100644
index 0000000000..d8426a515e
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/c/b.erl
@@ -0,0 +1,38 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+-module(b).
+
+
+%% External exports
+-export([start_link/0]).
+%% Internal exports
+-export([init/0]).
+
+start_link() -> {ok, proc_lib:spawn_link(b, init, [])}.
+
+%%-----------------------------------------------------------------
+%% Callback functions from gen_server
+%%-----------------------------------------------------------------
+init() ->
+ register(bb, self()),
+ loop().
+
+loop() ->
+ receive
+ hej -> ok
+ end.
diff --git a/lib/sasl/test/release_handler_SUITE_data/c/c.app b/lib/sasl/test/release_handler_SUITE_data/c/c.app
new file mode 100644
index 0000000000..908a94cf2d
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/c/c.app
@@ -0,0 +1,8 @@
+{application, c,
+ [{description, "C CXC 138 11"},
+ {vsn, "1.0"},
+ {modules, [b, {aa, 1}, {c_sup,1}]},
+ {registered, [cc,bb,c_sup]},
+ {applications, [kernel, stdlib]},
+ {env, [{key1, val1}]},
+ {mod, {c_sup, []}}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/c/c_sup.erl b/lib/sasl/test/release_handler_SUITE_data/c/c_sup.erl
new file mode 100644
index 0000000000..069eb3b99b
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/c/c_sup.erl
@@ -0,0 +1,40 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+-module(c_sup).
+
+
+-behaviour(supervisor).
+
+%% External exports
+-export([start/2]).
+
+%% Internal exports
+-export([init/1]).
+
+start(_, _) ->
+ supervisor:start_link({local, c_sup}, c_sup, []).
+
+init([]) ->
+ SupFlags = {one_for_one, 4, 3600},
+ Config1 = {c,
+ {aa, start_link, []},
+ permanent, 2000, worker, [aa]},
+ Config2 = {b,
+ {b, start_link, []},
+ permanent, 2000, worker, [b]},
+ {ok, {SupFlags, [Config1, Config2]}}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/clients/start_cli1 b/lib/sasl/test/release_handler_SUITE_data/clients/start_cli1
new file mode 100755
index 0000000000..ee3d8c97cf
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/clients/start_cli1
@@ -0,0 +1,38 @@
+#!/bin/sh
+#
+# This program invokes the erlang emulator by calling run_erl.
+# It should only be used at an embedded target system.
+# It should be modified to give the correct flags to erl (via start_erl),
+# e.g -mode embedded -sname XXX
+#
+# Usage: start [Data]
+#
+
+if [ "x${NODENAME}" = "x" ]
+then
+ echo "ERROR: Variable \$NODENAME is not set!!"
+ exit 1
+fi
+
+TESTHOST=`hostname | sed 's/[.].*//'`
+IPADDR=%IPADDR%
+
+ROOTDIR=%ROOT%
+CLIENTDIR=$ROOTDIR/clients/type1/$NODENAME@$TESTHOST
+
+RELDIR=$CLIENTDIR/releases
+
+# Note that this scripts is modified an copied to $CLIENTDIR/bin/start
+# in release_handler_SUITE:copy_client - therefore HEART_COMMAND is as follows:
+HEART_COMMAND=$CLIENTDIR/bin/start
+HW_WD_DISABLE=true
+export HW_WD_DISABLE HEART_COMMAND
+
+START_ERL_DATA=${1:-$RELDIR/start_erl.data}
+
+if [ ! -d /tmp/$NODENAME@$TESTHOST ]
+then
+ mkdir /tmp/$NODENAME@$TESTHOST
+fi
+
+$ROOTDIR/bin/run_erl /tmp/$NODENAME@$TESTHOST/ $CLIENTDIR/log "exec $ROOTDIR/bin/start_erl $ROOTDIR $RELDIR $START_ERL_DATA -heart -sname $NODENAME -sasl start_prg \\\"$CLIENTDIR/bin/start\\\" masters \[\\'%MASTER%@$TESTHOST\\'\] client_directory \\\"$CLIENTDIR\\\" -loader inet -id $NODENAME -hosts $IPADDR" > $CLIENTDIR/log/run_erl.out 2>&1 &
diff --git a/lib/sasl/test/release_handler_SUITE_data/clients/start_cli2 b/lib/sasl/test/release_handler_SUITE_data/clients/start_cli2
new file mode 100755
index 0000000000..88912cf884
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/clients/start_cli2
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# This program invokes the erlang emulator by calling run_erl.
+# It should only be used at an embedded target system.
+# It should be modified to give the correct flags to erl (via start_erl),
+# e.g -mode embedded -sname XXX
+#
+# Usage: start [Data]
+#
+
+if [ "x${NODENAME}" = "x" ]
+then
+ echo "ERROR: Variable \$NODENAME is not set!!"
+ exit 1
+fi
+
+TESTHOST=`hostname | sed 's/[.].*//'`
+
+ROOTDIR=%ROOT%
+CLIENTDIR=$ROOTDIR/clients/type1/$NODENAME@$TESTHOST
+
+RELDIR=$CLIENTDIR/releases
+
+# Note that this scripts is modified an copied to $CLIENTDIR/bin/start
+# in release_handler_SUITE:copy_client - therefore HEART_COMMAND is as follows:
+HEART_COMMAND=$CLIENTDIR/bin/start
+HW_WD_DISABLE=true
+export HW_WD_DISABLE HEART_COMMAND
+
+START_ERL_DATA=${1:-$RELDIR/start_erl.data}
+
+if [ ! -d /tmp/$NODENAME@$TESTHOST ]
+then
+ mkdir /tmp/$NODENAME@$TESTHOST
+fi
+
+$ROOTDIR/bin/run_erl /tmp/$NODENAME@$TESTHOST/ $CLIENTDIR/log "exec $ROOTDIR/bin/start_erl $ROOTDIR $RELDIR $START_ERL_DATA -heart -sname $NODENAME -sasl start_prg \\\"$CLIENTDIR/bin/start\\\" masters \[\\'%MASTER%@$TESTHOST\\',\\'master2@$TESTHOST\\'\] client_directory \\\"$CLIENTDIR\\\"" > /dev/null 2>&1 &
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/ebin/a.app b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/ebin/a.app
new file mode 100644
index 0000000000..e938137f67
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/ebin/a.app
@@ -0,0 +1,8 @@
+{application, a,
+ [{description, "A CXC 138 11"},
+ {vsn, "1.0"},
+ {modules, [{a, 1}, {a_sup,1}]},
+ {registered, [a_sup]},
+ {applications, [kernel, stdlib]},
+ {env, [{key1, val1}]},
+ {mod, {a_sup, []}}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a.app b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a.app
new file mode 100644
index 0000000000..e938137f67
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a.app
@@ -0,0 +1,8 @@
+{application, a,
+ [{description, "A CXC 138 11"},
+ {vsn, "1.0"},
+ {modules, [{a, 1}, {a_sup,1}]},
+ {registered, [a_sup]},
+ {applications, [kernel, stdlib]},
+ {env, [{key1, val1}]},
+ {mod, {a_sup, []}}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a.erl b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a.erl
new file mode 100644
index 0000000000..bb500bed69
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a.erl
@@ -0,0 +1,49 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+-module(a).
+
+
+-behaviour(gen_server).
+
+-vsn(1).
+
+%% External exports
+-export([start_link/0, a/0]).
+%% Internal exports
+-export([init/1, handle_call/3, handle_info/2, terminate/2]).
+
+start_link() -> gen_server:start_link({local, aa}, a, [], []).
+
+a() -> gen_server:call(aa, a).
+
+%%-----------------------------------------------------------------
+%% Callback functions from gen_server
+%%-----------------------------------------------------------------
+init([]) ->
+ process_flag(trap_exit, true),
+ {ok, state}.
+
+handle_call(a, _From, State) ->
+ X = application:get_all_env(a),
+ {reply, X, State}.
+
+handle_info(_, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a_sup.erl b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a_sup.erl
new file mode 100644
index 0000000000..a141c1767b
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.0/src/a_sup.erl
@@ -0,0 +1,37 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+-module(a_sup).
+
+
+-behaviour(supervisor).
+
+%% External exports
+-export([start/2]).
+
+%% Internal exports
+-export([init/1]).
+
+start(_, _) ->
+ supervisor:start_link({local, a_sup}, a_sup, []).
+
+init([]) ->
+ SupFlags = {one_for_one, 4, 3600},
+ Config = {a,
+ {a, start_link, []},
+ permanent, 2000, worker, [a]},
+ {ok, {SupFlags, [Config]}}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/ebin/a.app b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/ebin/a.app
new file mode 100644
index 0000000000..1c3053b2fa
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/ebin/a.app
@@ -0,0 +1,8 @@
+{application, a,
+ [{description, "A CXC 138 11"},
+ {vsn, "1.1"},
+ {modules, [{a, 2}, {a_sup,1}]},
+ {registered, [a_sup]},
+ {applications, [kernel, stdlib]},
+ {env, [{key1, val1}]},
+ {mod, {a_sup, []}}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/ebin/a.appup b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/ebin/a.appup
new file mode 100644
index 0000000000..05db4cb541
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/ebin/a.appup
@@ -0,0 +1,3 @@
+{"1.1",
+ [{"1.0",[{update,a,{advanced,extra_par}}]}],
+ []}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/src/a.erl b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/src/a.erl
new file mode 100644
index 0000000000..c082ad5339
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/src/a.erl
@@ -0,0 +1,54 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+-module(a).
+
+
+-behaviour(gen_server).
+
+%% External exports
+-export([start_link/0, a/0, b/0]).
+%% Internal exports
+-export([init/1, handle_call/3, handle_info/2, terminate/2, code_change/3]).
+
+start_link() -> gen_server:start_link({local, aa}, a, [], []).
+
+a() -> gen_server:call(aa, a).
+b() -> gen_server:call(aa, b).
+
+%%-----------------------------------------------------------------
+%% Callback functions from gen_server
+%%-----------------------------------------------------------------
+init([]) ->
+ process_flag(trap_exit, true),
+ {ok, {state, bval}}.
+
+handle_call(a, _From, State) ->
+ X = application:get_all_env(a),
+ {reply, X, State};
+
+handle_call(b, _From, State) ->
+ {reply, {ok, element(2, State)}, State}.
+
+handle_info(_, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(1, Extra, State) ->
+ {ok, {state, bval}}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/src/a_sup.erl b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/src/a_sup.erl
new file mode 100644
index 0000000000..a141c1767b
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/a-1.1/src/a_sup.erl
@@ -0,0 +1,37 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+-module(a_sup).
+
+
+-behaviour(supervisor).
+
+%% External exports
+-export([start/2]).
+
+%% Internal exports
+-export([init/1]).
+
+start(_, _) ->
+ supervisor:start_link({local, a_sup}, a_sup, []).
+
+init([]) ->
+ SupFlags = {one_for_one, 4, 3600},
+ Config = {a,
+ {a, start_link, []},
+ permanent, 2000, worker, [a]},
+ {ok, {SupFlags, [Config]}}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/installer-1.0/ebin/installer.app b/lib/sasl/test/release_handler_SUITE_data/lib/installer-1.0/ebin/installer.app
new file mode 100644
index 0000000000..6f77317f6a
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/installer-1.0/ebin/installer.app
@@ -0,0 +1,6 @@
+{application, installer,
+ [{description, "Installer application"},
+ {vsn, "1.0"},
+ {modules, [{installer, 1}]},
+ {registered, []},
+ {applications, [kernel, stdlib, sasl]}]}.
diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/installer-1.0/src/installer.erl b/lib/sasl/test/release_handler_SUITE_data/lib/installer-1.0/src/installer.erl
new file mode 120000
index 0000000000..c2f93b822d
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/lib/installer-1.0/src/installer.erl
@@ -0,0 +1 @@
+../../../../installer.erl \ No newline at end of file
diff --git a/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_atom.erl b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_atom.erl
new file mode 100644
index 0000000000..883688c231
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_atom.erl
@@ -0,0 +1,26 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+
+-module(vsn_atom).
+
+-vsn(atom).
+
+-export([ok/0]).
+
+ok() ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_list.erl b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_list.erl
new file mode 100644
index 0000000000..34c38307ba
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_list.erl
@@ -0,0 +1,26 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+
+-module(vsn_list).
+
+-vsn([list, "of", {some, terms}]).
+
+-export([ok/0]).
+
+ok() ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_numeric.erl b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_numeric.erl
new file mode 100644
index 0000000000..6bf52753fd
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_numeric.erl
@@ -0,0 +1,26 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+
+-module(vsn_numeric).
+
+-vsn(231894).
+
+-export([ok/0]).
+
+ok() ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_string.erl b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_string.erl
new file mode 100644
index 0000000000..aa430a0bb3
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_string.erl
@@ -0,0 +1,26 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+
+-module(vsn_string).
+
+-vsn("a string").
+
+-export([ok/0]).
+
+ok() ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_tuple.erl b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_tuple.erl
new file mode 100644
index 0000000000..3ff1018994
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/otp_2740/vsn_tuple.erl
@@ -0,0 +1,26 @@
+%% ``The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved via the world wide web at http://www.erlang.org/.
+%%
+%% 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 Utvecklings AB.
+%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+%% AB. All Rights Reserved.''
+%%
+%% $Id$
+%%
+
+-module(vsn_tuple).
+
+-vsn({tuple, ["of", terms]}).
+
+-export([ok/0]).
+
+ok() ->
+ ok.
diff --git a/lib/sasl/test/release_handler_SUITE_data/start b/lib/sasl/test/release_handler_SUITE_data/start
new file mode 100755
index 0000000000..45e526c15f
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/start
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# This program invokes the erlang emulator by calling run_erl.
+# It should only be used at an embedded target system.
+# It should be modified to give the correct flags to erl (via start_erl),
+# e.g -mode embedded -sname XXX
+#
+# Usage: start [Data]
+#
+ROOTDIR=%ROOT%
+
+if [ "x${NODENAME}" = "x" ]
+then
+ echo "ERROR: Variable \$NODENAME is not set!!"
+ exit 1
+fi
+
+if [ -z "$RELDIR" ]
+then
+ RELDIR=$ROOTDIR/releases
+fi
+
+HEART_COMMAND=$ROOTDIR/bin/start
+HW_WD_DISABLE=true
+export HW_WD_DISABLE HEART_COMMAND
+
+START_ERL_DATA=${1:-$RELDIR/start_erl.data}
+
+$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl $ROOTDIR $RELDIR $START_ERL_DATA -heart -sname $NODENAME" > $ROOTDIR/log/run_erl.out 2>&1 &
diff --git a/lib/sasl/test/release_handler_SUITE_data/target_system.erl b/lib/sasl/test/release_handler_SUITE_data/target_system.erl
new file mode 120000
index 0000000000..4d36c59632
--- /dev/null
+++ b/lib/sasl/test/release_handler_SUITE_data/target_system.erl
@@ -0,0 +1 @@
+../../examples/src/target_system.erl \ No newline at end of file
diff --git a/lib/sasl/test/sasl.cover b/lib/sasl/test/sasl.cover
new file mode 100644
index 0000000000..d19d3d0180
--- /dev/null
+++ b/lib/sasl/test/sasl.cover
@@ -0,0 +1,2 @@
+{incl_app,sasl,details}.
+
diff --git a/lib/sasl/test/sasl.spec b/lib/sasl/test/sasl.spec
new file mode 100644
index 0000000000..f3de90c9aa
--- /dev/null
+++ b/lib/sasl/test/sasl.spec
@@ -0,0 +1 @@
+{suites,"../sasl_test",all}.
diff --git a/lib/sasl/test/sasl_SUITE.erl b/lib/sasl/test/sasl_SUITE.erl
new file mode 100644
index 0000000000..454095db6a
--- /dev/null
+++ b/lib/sasl/test/sasl_SUITE.erl
@@ -0,0 +1,98 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+-module(sasl_SUITE).
+-include_lib("common_test/include/ct.hrl").
+
+
+% Default timetrap timeout (set in init_per_testcase).
+-define(default_timeout, ?t:minutes(1)).
+-define(application, sasl).
+
+% Test server specific exports
+-export([all/0,groups/0,init_per_group/2,end_per_group/2]).
+-export([init_per_testcase/2, end_per_testcase/2]).
+
+% Test cases must be exported.
+-export([app_test/1,
+ log_mf_h_env/1]).
+
+all() ->
+ [app_test, log_mf_h_env].
+
+groups() ->
+ [].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+init_per_testcase(_Case, Config) ->
+ ?line Dog=test_server:timetrap(?default_timeout),
+ [{watchdog, Dog}|Config].
+end_per_testcase(_Case, Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ ok.
+
+app_test(Config) when is_list(Config) ->
+ ?line ?t:app_test(sasl, allow),
+ ok.
+
+%% OTP-9185 - fail sasl start if some but not all log_mf_h env vars
+%% are given.
+log_mf_h_env(Config) ->
+ PrivDir = ?config(priv_dir,Config),
+ LogDir = filename:join(PrivDir,sasl_SUITE_log_dir),
+ ok = file:make_dir(LogDir),
+ application:stop(sasl),
+ SaslEnv = application:get_all_env(sasl),
+ lists:foreach(fun({E,_V}) -> application:unset_env(sasl,E) end, SaslEnv),
+
+ ok = application:set_env(sasl,error_logger_mf_dir,LogDir),
+ match_error(missing_config,application:start(sasl)),
+
+ ok = application:set_env(sasl,error_logger_mf_maxbytes,"xx"),
+ match_error(bad_config,application:start(sasl)),
+
+ ok = application:set_env(sasl,error_logger_mf_maxbytes,50000),
+ match_error(missing_config,application:start(sasl)),
+
+ ok = application:set_env(sasl,error_logger_mf_maxfiles,"xx"),
+ match_error(bad_config,application:start(sasl)),
+
+ ok = application:set_env(sasl,error_logger_mf_maxfiles,2),
+ ok = application:unset_env(sasl,error_logger_mf_dir),
+ match_error(missing_config,application:start(sasl)),
+
+ ok = application:set_env(sasl,error_logger_mf_dir,xx),
+ match_error(bad_config,application:start(sasl)),
+
+ ok = application:set_env(sasl,error_logger_mf_dir,LogDir),
+ ok = application:start(sasl).
+
+
+%%-----------------------------------------------------------------
+%% Internal
+match_error(Expected,{error,{bad_return,{_,{'EXIT',{Expected,{sasl,_}}}}}}) ->
+ ok;
+match_error(Expected,Actual) ->
+ ?t:fail({unexpected_return,Expected,Actual}).
diff --git a/lib/sasl/test/systools_SUITE.erl b/lib/sasl/test/systools_SUITE.erl
new file mode 100644
index 0000000000..9190b111ef
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE.erl
@@ -0,0 +1,2112 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%% Test suite for the systools module.
+%%
+%% The systools module is a wrapper for a number of modules that
+%% handle large parts of the release building functionality
+%% (e.g. checking app files, building a tar file, building
+%% release upgrad scripts.
+%%
+
+
+-module(systools_SUITE).
+
+%-define(debug, true).
+
+-include_lib("test_server/include/test_server.hrl").
+-define(format(S, A), ok).
+-define(datadir, ?config(data_dir, Config)).
+-define(privdir, ?config(priv_dir, Config)).
+-define(copydir, ?config(copy_dir, Config)).
+
+-include_lib("kernel/include/file.hrl").
+
+-export([all/0,suite/0,groups/0,init_per_group/2,end_per_group/2]).
+
+-export([ script_options/1, normal_script/1, no_mod_vsn_script/1,
+ wildcard_script/1, variable_script/1,
+ abnormal_script/1, src_tests_script/1, crazy_script/1,
+ warn_shadow_script/1,
+ included_script/1, included_override_script/1,
+ included_fail_script/1, included_bug_script/1, exref_script/1]).
+-export([ tar_options/1, normal_tar/1, no_mod_vsn_tar/1, variable_tar/1,
+ src_tests_tar/1, shadow_tar/1, var_tar/1,
+ exref_tar/1, link_tar/1]).
+-export([ normal_relup/1, abnormal_relup/1, no_appup_relup/1,
+ bad_appup_relup/1, app_start_type_relup/1, otp_3065/1]).
+-export([
+ otp_6226/1]).
+-export([init_per_suite/1, end_per_suite/1,
+ init_per_testcase/2, end_per_testcase/2]).
+
+-import(lists, [foldl/3]).
+
+-define(default_timeout, ?t:minutes(20)).
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+suite() ->
+ [{ct_hooks, [ts_install_cth]}].
+
+all() ->
+ [{group, script}, {group, tar}, {group, relup},
+ {group, tickets}].
+
+groups() ->
+ [{script, [],
+ [script_options, normal_script, no_mod_vsn_script,
+ wildcard_script, variable_script, abnormal_script,
+ src_tests_script, crazy_script, warn_shadow_script,
+ included_script, included_override_script,
+ included_fail_script, included_bug_script, exref_script,
+ otp_3065]},
+ {tar, [],
+ [tar_options, normal_tar, no_mod_vsn_tar, variable_tar,
+ src_tests_tar, shadow_tar, var_tar,
+ exref_tar, link_tar]},
+ {relup, [],
+ [normal_relup, abnormal_relup, no_appup_relup,
+ bad_appup_relup, app_start_type_relup]},
+ {tickets, [], [otp_6226]}].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+init_per_suite(Config) when is_list(Config) ->
+ %% Make of copy of the data directory.
+ DataDir = ?datadir,
+ PrivDir = ?privdir,
+ ?line CopyDir = fname(PrivDir, "datacopy"),
+ ?line TarFile = fname(PrivDir, "datacopy.tgz"),
+ ?line {ok, Tar} = erl_tar:open(TarFile, [write, compressed]),
+ ?line ok = erl_tar:add(Tar, DataDir, CopyDir, [compressed]),
+ ?line ok = erl_tar:close(Tar),
+ ?line ok = erl_tar:extract(TarFile, [compressed]),
+ ?line ok = file:delete(TarFile),
+
+ %% Compile source files in the copy directory.
+ ?line Sources = filelib:wildcard(fname([CopyDir,'*','*','*','*','*.erl'])),
+ ?line lists:foreach(fun compile_source/1, Sources),
+
+ %% To use in end_per_testcase
+ Path = code:get_path(),
+ {ok,Cwd} = file:get_cwd(),
+
+ [{copy_dir, CopyDir}, {cwd,Cwd}, {path,Path} | Config].
+
+compile_source(File) ->
+ %% The compiler will no longer create a Beam file
+ %% with a module name that does not match the output
+ %% file, so we must compile to a binary and write
+ %% the output file ourselves.
+ U = filename:dirname(filename:dirname(File)),
+ Base = filename:rootname(filename:basename(File)),
+ OutFile = filename:join([U,"ebin",Base++".beam"]),
+ OutFileTemp = OutFile ++ "#",
+ {ok,_,Code} = compile:file(File, [binary]),
+ ok = file:write_file(OutFileTemp, Code),
+ file:rename(OutFileTemp, OutFile).
+
+end_per_suite(Conf) when is_list(Conf) ->
+ %% Nothing.
+ Conf.
+
+init_per_testcase(link_tar, Config) ->
+ case os:type() of
+ {unix, _} -> init_per_testcase(dummy, Config);
+ {win32, _} -> {skip, "Skip on windows"}
+ end;
+init_per_testcase(_Case, Config) ->
+ ?line Dog = test_server:timetrap(?default_timeout),
+ [{watchdog, Dog}|Config].
+
+end_per_testcase(_Case, Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ case {?config(path,Config),?config(cwd,Config)} of
+ {undefined,undefined} ->
+ ok;
+ {Path,Cwd} ->
+ true = code:set_path(Path),
+ ok = file:set_cwd(Cwd)
+ end,
+ ok.
+
+
+
+%% Usage:
+%% systools:make_script("RelName")
+%% Make a boot file from RelName.rel.
+%% Generates RelName.{script,boot}
+%% systools:make_tar("RelName")
+%% Make a release package from RelName.rel.
+%% Generates RelName.tar,Z
+%% systools:script2boot(File)
+%% File.script -> File.boot
+%% systools:make_relup("Target", ["UpFromRel"...], ["DownToRel"...], Opts)
+%% Gather all appup scripts to the relup file
+%%
+
+
+%% make_script
+%%
+script_options(suite) -> [];
+script_options(doc) ->
+ ["Check illegal script options."];
+script_options(Config) when is_list(Config) ->
+ ?line {'EXIT',{{badarg,[{path,["Path",12,"Another"]}]}, _}} =
+ (catch systools:make_script("release", [{path,["Path",12,"Another"]}])),
+ ?line {'EXIT',{{badarg,[sillent]}, _}} =
+ (catch systools:make_script("release",
+ [{path,["Path","Another"]},sillent])),
+ ?line {'EXIT',{{badarg,[locall]}, _}} =
+ (catch systools:make_script("release",
+ [{path,["Path","Another"]},locall])),
+ ?line {'EXIT',{{badarg,[src_testsxx]}, _}} =
+ (catch systools:make_script("release",
+ [{path,["Path"]},src_testsxx])),
+ ?line {'EXIT',{{badarg,[{variables, {"TEST", "/home/lib"}}]}, _}} =
+ (catch systools:make_script("release",
+ [{variables, {"TEST", "/home/lib"}}])),
+ ?line {'EXIT',{{badarg,[{variables, [{a, b}, {"a", "b"}]}]}, _}} =
+ (catch systools:make_script("release",
+ [{variables, [{a, b}, {"a", "b"}]}])),
+ ?line {'EXIT',{{badarg,[exreff]}, _}} =
+ (catch systools:make_script("release",
+ [{path,["Path","Another"]},exreff])),
+ ?line {'EXIT',{{badarg,[{exref,["appl"]}]}, _}} =
+ (catch systools:make_script("release", [{exref,["appl"]}])),
+ ?line {'EXIT',{{badarg,[{machine, "appl"}]}, _}} =
+ (catch systools:make_script("release", [{machine,"appl"}])),
+ ok.
+
+
+%% make_script
+%%
+normal_script(suite) -> [];
+normal_script(doc) ->
+ ["Check that make_script handles normal case."];
+normal_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line PSAVE = code:get_path(), % Save path
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P1 = fname([LibDir, 'db-2.1', ebin]),
+ ?line P2 = fname([LibDir, 'fe-3.1', ebin]),
+
+ ?line true = code:add_patha(P1),
+ ?line true = code:add_patha(P2),
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line ok = systools:make_script(filename:basename(LatestName)),
+ ?line {ok, _} = read_script_file(LatestName), % Check readabillity
+
+ %% Check the same but w. silent flag
+ ?line {ok, _, []} = systools:make_script(LatestName, [silent]),
+
+ %% Use the local option
+ ?line ok = systools:make_script(LatestName, [local]),
+ ?line ok = check_script_path(LatestName),
+
+ %% use the path option
+ ?line code:set_path(PSAVE), % Restore path
+ %% Mess up std path:
+ ?line true = code:add_patha(fname([LibDir, 'db-1.0', ebin])),
+ ?line true = code:add_patha(fname([LibDir, 'fe-2.1', ebin])),
+
+ ?line error = systools:make_script(LatestName), %should fail
+ ?line ok = systools:make_script(LatestName,[{path, [P1, P2]}]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ?line code:set_path(PSAVE), % Restore path
+ ok.
+
+
+%% make_script
+%%
+no_mod_vsn_script(suite) -> [];
+no_mod_vsn_script(doc) ->
+ ["Check that make_script handles normal case.",
+ "Modules specified without version in .app file (db-3.1)."
+ "Note that this is now the normal way - i.e. systools now "
+ "ignores the module versions in the .app file."];
+no_mod_vsn_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line PSAVE = code:get_path(), % Save path
+
+ ?line {LatestDir, LatestName} = create_script(latest_no_mod_vsn,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P1 = fname([LibDir, 'db-3.1', ebin]),
+ ?line P2 = fname([LibDir, 'fe-3.1', ebin]),
+
+ ?line true = code:add_patha(P1),
+ ?line true = code:add_patha(P2),
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line ok = systools:make_script(filename:basename(LatestName)),
+ ?line {ok, _} = read_script_file(LatestName), % Check readabillity
+
+ %% Check the same but w. silent flag
+ ?line {ok, _, []} = systools:make_script(LatestName, [silent]),
+
+ %% Use the local option
+ ?line ok = systools:make_script(LatestName, [local]),
+ ?line ok = check_script_path(LatestName),
+
+ %% use the path option
+ ?line code:set_path(PSAVE), % Restore path
+ %% Mess up std path:
+ ?line true = code:add_patha(fname([LibDir, 'db-1.0', ebin])),
+ ?line true = code:add_patha(fname([LibDir, 'fe-2.1', ebin])),
+
+ ?line error = systools:make_script(LatestName), %should fail
+ ?line ok = systools:make_script(LatestName,
+ [{path, [P1, P2]}]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ?line code:set_path(PSAVE), % Restore path
+ ok.
+
+
+%% make_script
+%%
+wildcard_script(suite) -> [];
+wildcard_script(doc) ->
+ ["Check that make_script handles wildcards in path."];
+wildcard_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line WildDir = fname([LibDir, '*', ebin]),
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line error = systools:make_script(filename:basename(LatestName)),
+
+ ?line ok = systools:make_script(LatestName,
+ [{path, [WildDir]}]),
+
+ ?line {ok, _} = read_script_file(LatestName), % Check readabillity
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+
+%% make_script
+%%
+variable_script(suite) -> [];
+variable_script(doc) ->
+ ["Add own installation dependent variable in script."];
+variable_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line ok = systools:make_script(LatestName,
+ [{path, P},
+ {variables, [{"TEST", LibDir}]}]),
+
+ %% Check variables
+ ?line ok = check_var_script_file([fname(['$TEST', 'db-2.1', ebin]),
+ fname(['$TEST', 'fe-3.1', ebin])],
+ P,
+ LatestName),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% make_script
+%%
+abnormal_script(suite) -> [];
+abnormal_script(doc) ->
+ ["Abnormal cases."];
+abnormal_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+
+ ?line ok = file:set_cwd(LatestDir),
+ ?line LibDir = fname([DataDir, d_bad_app_vsn, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ %% Check wrong app vsn
+ ?line error = systools:make_script(LatestName, [{path, P}]),
+ ?line {error,
+ systools_make,
+ [{error_reading, {db, {no_valid_version,
+ {{"should be","2.1"},
+ {"found file", _, "2.0"}}}}}]} =
+ systools:make_script(LatestName, [silent, {path, P}]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+
+%% make_script
+%%
+src_tests_script(suite) -> [];
+src_tests_script(doc) ->
+ ["Do not check date of object file or that source code can be found."];
+src_tests_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line PSAVE = code:get_path(), % Save path
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_missing_src, lib]),
+ ?line P1 = fname([LibDir, 'db-2.1', ebin]),
+ ?line P2 = fname([LibDir, 'fe-3.1', ebin]),
+ N = [P1, P2],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ %% Manipulate the modification date of a beam file so it seems
+ %% older than its .erl file
+ ?line Erl = filename:join([P1,"..","src","db1.erl"]),
+ ?line {ok, FileInfo=#file_info{mtime={{Y,M,D},T}}} = file:read_file_info(Erl),
+ ?line Beam = filename:join(P1,"db1.beam"),
+ ?line ok=file:write_file_info(Beam, FileInfo#file_info{mtime={{Y-1,M,D},T}}),
+
+ %% Remove a .erl file
+ ?line Erl2 = filename:join([P1,"..","src","db2.erl"]),
+ ?line file:delete(Erl2),
+
+ %% Then make script - two warnings should be issued when
+ %% src_tests is given
+ %% 1. old object code for db1.beam
+ %% 2. missing source code for db2.beam
+ ?line {ok, _, [{warning,{obj_out_of_date,_}},
+ {warning,{source_not_found,_}}]} =
+ systools:make_script(LatestName, [silent, {path, N}, src_tests]),
+
+ %% Without the src_tests option, no warning should be issued
+ ?line {ok, _, []} =
+ systools:make_script(LatestName, [silent, {path, N}]),
+
+ %% Check that the old no_module_tests option (from the time when
+ %% it was default to do the src_test) is ignored
+ ?line {ok, _, [{warning,{obj_out_of_date,_}},
+ {warning,{source_not_found,_}}]} =
+ systools:make_script(LatestName, [silent,
+ {path, N},
+ no_module_tests,
+ src_tests]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ?line code:set_path(PSAVE),
+ ok.
+
+%% make_script
+%%
+warn_shadow_script(suite) -> [];
+warn_shadow_script(doc) ->
+ ["Check that jam file out of date warning doesn't",
+ "shadow bad module version error."];
+warn_shadow_script(Config) when is_list(Config) ->
+ %% This test has been removed since the 'vsn' attribute is
+ %% not used any more, starting with R6. No warning
+ %% 'obj_out_of_date' seemed to be generated.
+ true.
+
+
+%% make_script
+%%
+crazy_script(suite) -> [];
+crazy_script(doc) ->
+ ["Do the crazy cases."];
+crazy_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest, Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ %% Run with bad path
+ ?line error = systools:make_script(LatestName),
+ ?line {error, _, [{error_reading, _}, {error_reading, _}]} =
+ systools:make_script(LatestName, [silent]),
+
+ %% Run with .rel file lacking kernel
+ ?line {LatestDir2, LatestName2} = create_script(latest_nokernel, Config),
+ ?line ok = file:set_cwd(LatestDir2),
+
+ ?line error = systools:make_script(LatestName2),
+ ?line {error, _, {missing_mandatory_app,[kernel,stdlib]}} =
+ systools:make_script(LatestName2, [silent,{path,P}]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% make_script
+%%
+included_script(suite) -> [];
+included_script(doc) ->
+ ["Check that make_script handles generation of script",
+ "for applications with included applications."];
+included_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line {LatestDir, LatestName} = create_include_files(inc1, Config),
+ ?line ok = file:set_cwd(LatestDir),
+ ?line ok = systools:make_script(LatestName),
+ ?line ok = check_include_script(LatestName,
+ [t1, t2, t3, t5, t4, t6],
+ [t1, t3, t6]),
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% make_script
+%%
+included_override_script(suite) -> [];
+included_override_script(doc) ->
+ ["Check that make_script handles generation of script",
+ "for applications with included applications which are override by",
+ "the .rel file."];
+included_override_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line {LatestDir, LatestName} = create_include_files(inc2, Config),
+ ?line ok = file:set_cwd(LatestDir),
+ ?line ok = systools:make_script(LatestName),
+ ?line ok = check_include_script(LatestName,
+ [t1, t2, t3, t4, t6, t5],
+ [t1, t3, t6, t5]),
+
+ ?line {_, LatestName1} = create_include_files(inc3, Config),
+ ?line ok = systools:make_script(LatestName1),
+ ?line ok = check_include_script(LatestName1,
+ [t3, t5, t4, t6, t1, t2],
+ [t3, t6, t1, t2]),
+
+ ?line {_, LatestName2} = create_include_files(inc4, Config),
+ ?line ok = systools:make_script(LatestName2),
+ ?line ok = check_include_script(LatestName2,
+ [t3, t4, t6, t5, t1, t2],
+ [t3, t6, t5, t1, t2]),
+
+ ?line {_, LatestName3} = create_include_files(inc5, Config),
+ ?line ok = systools:make_script(LatestName3),
+ ?line ok = check_include_script(LatestName3,
+ [t3, t4, t6, t1, t2],
+ [t3, t6, t1, t2]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% make_script
+%%
+included_fail_script(suite) -> [];
+included_fail_script(doc) ->
+ ["Check that make_script handles errors then generating",
+ "script with included applications."];
+included_fail_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line {LatestDir, LatestName} = create_include_files(inc6, Config),
+ ?line ok = file:set_cwd(LatestDir),
+ ?line {error, _, {undefined_applications,[t2]}} =
+ systools:make_script(LatestName, [silent]),
+
+ ?line {_, LatestName1} = create_include_files(inc7, Config),
+ ?line {error, _, {duplicate_include,[{{t5,t7,_,_},{t5,t6,_,_}}]}} =
+ systools:make_script(LatestName1, [silent]),
+
+ ?line {_, LatestName3} = create_include_files(inc9, Config),
+ ?line {error, _, {circular_dependencies,[{t10,_},{t8,_}]}} =
+ systools:make_script(LatestName3, [silent]),
+
+ ?line {_, LatestName4} = create_include_files(inc10, Config),
+ ?line {error, _, [{error_reading,{t9,{override_include,[t7]}}}]} =
+ systools:make_script(LatestName4, [silent]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% make_script
+%%
+included_bug_script(suite) -> [];
+included_bug_script(doc) ->
+ ["Check that make_script handles generation of script",
+ "with difficult dependency for included applications."];
+included_bug_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line {LatestDir, LatestName} = create_include_files(inc11, Config),
+ ?line ok = file:set_cwd(LatestDir),
+ ?line ok = systools:make_script(LatestName),
+ ?line ok = check_include_script(LatestName,
+ [t13, t11, t12],
+ [t11, t12]),
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+
+%% make_script
+%%
+otp_3065(suite) -> [];
+otp_3065(doc) ->
+ ["Circular dependencies in systools:make_script()."];
+otp_3065(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line {LatestDir, LatestName} = create_include_files(otp_3065, Config),
+ ?line ok = file:set_cwd(LatestDir),
+ ?line ok = systools:make_script(LatestName),
+ ?line ok = check_include_script(LatestName,
+ [aa12, chAts, chTraffic],
+ [chTraffic]),
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+
+%% make_script
+%%
+exref_script(suite) -> [];
+exref_script(doc) ->
+ ["Check that make_script exref option works."];
+exref_script(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line PSAVE = code:get_path(), % Save path
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line {ok, _, _} = systools:make_script(LatestName, [{path,P}, silent]),
+
+ %% Complete exref
+ ?line {ok, _, W1} =
+ systools:make_script(LatestName, [exref, {path,P}, silent]),
+ ?line check_exref_warnings(with_db1, W1),
+ ?line {ok, _} = read_script_file(LatestName), % Check readabillity
+
+ %% Only exref the db application.
+ ?line {ok, _, W2} =
+ systools:make_script(LatestName, [{exref,[db]}, {path,P}, silent]),
+ ?line check_exref_warnings(with_db1, W2),
+ ?line {ok, _} = read_script_file(LatestName), % Check readabillity
+
+ %% Only exref the fe application.
+ ?line {ok, _, W3} =
+ systools:make_script(LatestName, [{exref,[fe]}, {path,P}, silent]),
+ ?line check_exref_warnings(without_db1, W3),
+ ?line {ok, _} = read_script_file(LatestName), % Check readabillity
+
+ %% exref the db and stdlib applications.
+ ?line {ok, _, W4} =
+ systools:make_script(LatestName, [{exref,[db,stdlib]}, {path,P}, silent]),
+ ?line check_exref_warnings(with_db1, W4),
+ ?line {ok, _} = read_script_file(LatestName), % Check readabillity
+ ?line ok = file:set_cwd(OldDir),
+ ?line code:set_path(PSAVE), % Restore path
+ ok.
+
+check_exref_warnings(with_db1, W) ->
+ case get_exref(undef, W) of
+ {ok, [{db2,non_existing_func,0},
+ {fe2,non_existing_func,0},
+ {lists,non_existing_func,1}]} ->
+ ok;
+ {ok, L} ->
+ test_server:fail({exref_warning_undef, L});
+ _E ->
+ test_server:fail({bad_undef,_E})
+ end;
+check_exref_warnings(without_db1, W) ->
+ case get_exref(undef, W) of
+ false ->
+ ok;
+ {ok, L} ->
+ test_server:fail({exref_warning_undef, L})
+ end.
+
+get_exref(undef, W) -> filter(no_hipe(get_exref1(exref_undef, W))).
+
+filter(false) ->
+ false;
+filter({ok, W}) ->
+ {ok, filter(W)};
+filter(L) ->
+ lists:filter(fun%({hipe_consttab,_,_}) -> false;
+ ({int,_,_}) -> false;
+ ({i,_,_}) -> false;
+ ({crypto,_,_}) -> false;
+ (_) -> true
+ end,
+ L).
+
+get_exref1(T, [{warning, {T, Value}}|_]) -> {ok, Value};
+get_exref1(T, [_|W]) -> get_exref1(T, W);
+get_exref1(_, []) -> false.
+
+no_hipe(false) ->
+ false;
+no_hipe({ok, Value}) ->
+ case erlang:system_info(hipe_architecture) of
+ undefined ->
+ Hipe = "hipe",
+ Fun = fun({M,_,_}) -> not lists:prefix(Hipe, atom_to_list(M)) end,
+ NewValue = lists:filter(Fun, Value),
+ {ok, NewValue};
+ _Arch ->
+ {ok, Value}
+ end.
+
+%% tar_options
+%%
+tar_options(suite) -> [];
+tar_options(doc) ->
+ ["Check illegal tar options."];
+tar_options(Config) when is_list(Config) ->
+ ?line {'EXIT',{{badarg,[{path,["Path",12,"Another"]}]}, _}} =
+ (catch systools:make_tar("release", [{path,["Path",12,"Another"]}])),
+ ?line {'EXIT',{{badarg,[sillent]}, _}} =
+ (catch systools:make_tar("release",
+ [{path,["Path","Another"]},sillent])),
+ ?line {'EXIT',{{badarg,[{dirs,["dirs"]}]}, _}} =
+ (catch systools:make_tar("release", [{dirs, ["dirs"]}])),
+ ?line {'EXIT',{{badarg,[{erts, illegal}]}, _}} =
+ (catch systools:make_tar("release", [{erts, illegal}])),
+ ?line {'EXIT',{{badarg,[src_testsxx]}, _}} =
+ (catch systools:make_tar("release",
+ [{path,["Path"]},src_testsxx])),
+ ?line {'EXIT',{{badarg,[{variables, [{a, b}, {"a", "b"}]}]}, _}} =
+ (catch systools:make_tar("release",
+ [{variables, [{a, b}, {"a", "b"}]}])),
+ ?line {'EXIT',{{badarg,[{var_tar, illegal}]}, _}} =
+ (catch systools:make_tar("release", [{var_tar, illegal}])),
+ ?line {'EXIT',{{badarg,[exreff]}, _}} =
+ (catch systools:make_tar("release",
+ [{path,["Path","Another"]},exreff])),
+ ?line {'EXIT',{{badarg,[{exref,["appl"]}]}, _}} =
+ (catch systools:make_tar("release", [{exref,["appl"]}])),
+ ?line {'EXIT',{{badarg,[{machine, "appl"}]}, _}} =
+ (catch systools:make_tar("release", [{machine,"appl"}])),
+ ok.
+
+
+%% normal_tar
+%%
+normal_tar(suite) -> [];
+normal_tar(doc) ->
+ ["Check normal case"];
+normal_tar(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line {ok, _, _} = systools:make_script(LatestName, [silent, {path, P}]),
+ ?line ok = systools:make_tar(LatestName, [{path, P}]),
+ ?line ok = check_tar(fname([lib,'db-2.1',ebin,'db.app']), LatestName),
+ ?line {ok, _, _} = systools:make_tar(LatestName, [{path, P}, silent]),
+ ?line ok = check_tar(fname([lib,'fe-3.1',ebin,'fe.app']), LatestName),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% no_mod_vsn_tar
+%%
+no_mod_vsn_tar(suite) -> [];
+no_mod_vsn_tar(doc) ->
+ ["Check normal case",
+ "Modules specified without version in .app file (db-3.1)."
+ "Note that this is now the normal way - i.e. systools now "
+ "ignores the module versions in the .app file."];
+no_mod_vsn_tar(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest_no_mod_vsn,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P = [fname([LibDir, 'db-3.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line {ok, _, _} = systools:make_script(LatestName, [silent, {path, P}]),
+ ?line ok = systools:make_tar(LatestName, [{path, P}]),
+ ?line ok = check_tar(fname([lib,'db-3.1',ebin,'db.app']), LatestName),
+ ?line {ok, _, _} = systools:make_tar(LatestName, [{path, P}, silent]),
+ ?line ok = check_tar(fname([lib,'fe-3.1',ebin,'fe.app']), LatestName),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% variable_tar
+%%
+variable_tar(suite) -> [];
+variable_tar(doc) ->
+ ["Use variable and create separate tar (included in generated tar)."];
+variable_tar(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line {ok, _, _} = systools:make_script(LatestName,
+ [silent,
+ {path, P},
+ {variables,[{"TEST", LibDir}]}]),
+
+ ?line ok = systools:make_tar(LatestName, [{path, P},
+ {variables,[{"TEST", LibDir}]}]),
+ ?line ok = check_var_tar("TEST", LatestName),
+
+ ?line {ok, _, _} = systools:make_tar(LatestName,
+ [{path, P}, silent,
+ {variables,[{"TEST", LibDir}]}]),
+ ?line ok = check_var_tar("TEST", LatestName),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% link_tar
+%%
+link_tar(suite) -> [];
+link_tar(doc) ->
+ ["Check that symlinks in applications are handled correctly"];
+link_tar(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_links, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ %% Make some links
+ ?line Db1Erl = fname(['db-2.1',src,'db1.erl']),
+ ?line NormalDb1Erl = fname([DataDir,d_normal,lib,Db1Erl]),
+ ?line LinkDb1Erl = fname([LibDir, Db1Erl]),
+ ?line ok = file:make_symlink(NormalDb1Erl, LinkDb1Erl),
+ ?line Db1Beam = fname(['db-2.1',ebin,'db1.beam']),
+ ?line NormalDb1Beam = fname([DataDir,d_normal,lib,Db1Beam]),
+ ?line LinkDb1Beam = fname([LibDir, Db1Beam]),
+ ?line ok = file:make_symlink(NormalDb1Beam, LinkDb1Beam),
+ ?line FeApp = fname(['fe-3.1',ebin,'fe.app']),
+ ?line NormalFeApp = fname([DataDir,d_normal,lib,FeApp]),
+ ?line LinkFeApp = fname([LibDir, FeApp]),
+ ?line ok = file:make_symlink(NormalFeApp, LinkFeApp),
+
+ %% Create the tar and check that the linked files are included as
+ %% regular files
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line {ok,_,[]} = systools:make_script(LatestName, [{path, P},silent]),
+
+ ?line {ok, _, []} = systools:make_tar(LatestName, [{path, P}, silent]),
+ ?line ok = check_tar_regular(?privdir,
+ [fname([lib,FeApp]),
+ fname([lib,Db1Beam])],
+ LatestName),
+
+ ?line {ok, _, []} = systools:make_tar(LatestName, [{path, P}, silent,
+ {dirs, [src]}]),
+ ?line ok = check_tar_regular(?privdir,
+ [fname([lib,FeApp]),
+ fname([lib,Db1Beam]),
+ fname([lib,Db1Erl])],
+ LatestName),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% src_tests_tar
+%%
+src_tests_tar(suite) -> [];
+src_tests_tar(doc) ->
+ ["Do not check date of object file or that source code can be found."];
+src_tests_tar(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_missing_src, lib]),
+ ?line P1 = fname([LibDir, 'db-2.1', ebin]),
+ ?line P2 = fname([LibDir, 'fe-3.1', ebin]),
+ P = [P1, P2],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ %% Manipulate the modification date of a beam file so it seems
+ %% older than the .erl file
+ Erl = filename:join([P1,"..","src","db1.erl"]),
+ {ok, FileInfo=#file_info{mtime={{Y,M,D},T}}} = file:read_file_info(Erl),
+ Beam = filename:join(P1,"db1.beam"),
+ ok = file:write_file_info(Beam, FileInfo#file_info{mtime={{Y-1,M,D},T}}),
+
+ %% Remove a .erl file
+ ?line Erl2 = filename:join([P1,"..","src","db2.erl"]),
+ ?line file:delete(Erl2),
+
+ ?line ok = systools:make_script(LatestName, [{path, P}]),
+
+ %% Then make tar - two warnings should be issued when
+ %% src_tests is given
+ %% 1. old object code for db1.beam
+ %% 2. missing source code for db2.beam
+ ?line {ok, _, [{warning,{obj_out_of_date,_}},
+ {warning,{source_not_found,_}}]} =
+ systools:make_tar(LatestName, [{path, P}, silent,
+ {dirs, [src]},
+ src_tests]),
+ ?line ok = check_tar(fname([lib,'db-2.1',src,'db1.erl']), LatestName),
+
+ %% Without the src_tests option, no warning should be issued
+ ?line {ok, _, []} = systools:make_tar(LatestName, [{path, P}, silent,
+ {dirs, [src]}]),
+ ?line ok = check_tar(fname([lib,'db-2.1',src,'db1.erl']), LatestName),
+
+ %% Check that the old no_module_tests option (from the time when
+ %% it was default to do the src_test) is ignored
+ ?line {ok, _, [{warning,{obj_out_of_date,_}},
+ {warning,{source_not_found,_}}]} =
+ systools:make_tar(LatestName, [{path, P}, silent,
+ {dirs, [src]},
+ no_module_tests,
+ src_tests]),
+ ?line ok = check_tar(fname([lib,'db-2.1',src,'db1.erl']), LatestName),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% shadow_tar
+%%
+shadow_tar(suite) -> [];
+shadow_tar(doc) ->
+ ["Check that jam file out of date warning doesn't",
+ "shadow bad module version error."];
+shadow_tar(Config) when is_list(Config) ->
+ % This test has been commented out since the 'vsn' attribute is not used
+ % any more, starting with R6. No warning 'obj_out_of_date' seemed to be
+ % generated.
+ true;
+shadow_tar(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line PSAVE = code:get_path(), % Save path
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, 'd_bad_mod+warn', lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line {error, _, _} = systools:make_tar(LatestName, [{path, P}, silent]),
+ ?line {error, _, _} = systools:make_tar(LatestName, [{path, P}, silent,
+ {dirs, [src]}]),
+ ?line ok = file:set_cwd(OldDir),
+ ?line code:set_path(PSAVE),
+ ok.
+
+
+%% var_tar
+%%
+var_tar(suite) -> [];
+var_tar(doc) ->
+ ["Check that make_tar handles generation and placement of tar",
+ "files for variables outside the main tar file.",
+ "Test the {var_tar, include | ownfile | omit} option."];
+var_tar(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line PSAVE = code:get_path(), % Save path
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line {ok, _, _} = systools:make_script(LatestName,
+ [silent,
+ {path, P},
+ {variables,[{"TEST", LibDir}]}]),
+
+ ?line ok = systools:make_tar(LatestName, [{path, P},
+ {var_tar, ownfile},
+ {variables,[{"TEST", LibDir}]}]),
+
+ ?line true = exists_tar_file("TEST"), %% Also removes the file !
+ ?line {error, {not_generated, _}} = check_var_tar("TEST", LatestName),
+
+ ?line ok = systools:make_tar(LatestName, [{path, P},
+ {var_tar, omit},
+ {variables,[{"TEST", LibDir}]}]),
+
+ ?line {error, {not_generated, _}} = check_var_tar("TEST", LatestName),
+ ?line false = exists_tar_file("TEST"),
+
+ ?line ok = systools:make_tar(LatestName, [{path, P},
+ {var_tar, include},
+ {variables,[{"TEST", LibDir}]}]),
+
+ ?line ok = check_var_tar("TEST", LatestName),
+ ?line false = exists_tar_file("TEST"),
+
+ ?line ok = file:set_cwd(OldDir),
+ ?line code:set_path(PSAVE),
+ ok.
+
+
+%% exref_tar
+%%
+exref_tar(suite) -> [];
+exref_tar(doc) ->
+ ["Check exref option."];
+exref_tar(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'fe-3.1', ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line {ok, _, _} = systools:make_script(LatestName, [silent, {path, P}]),
+
+ %% Complete exref
+ ?line {ok, _, W1} =
+ systools:make_tar(LatestName, [exref, {path, P}, silent]),
+ ?line check_exref_warnings(with_db1, W1),
+ ?line ok = check_tar(fname([lib,'db-2.1',ebin,'db.app']), LatestName),
+
+ %% Only exref the db application.
+ ?line {ok, _, W2} =
+ systools:make_tar(LatestName, [{exref, [db]}, {path, P}, silent]),
+ ?line check_exref_warnings(with_db1, W2),
+ ?line ok = check_tar(fname([lib,'fe-3.1',ebin,'fe.app']), LatestName),
+
+ %% Only exref the fe application.
+ ?line {ok, _, W3} =
+ systools:make_tar(LatestName, [{exref, [fe]}, {path, P}, silent]),
+ ?line check_exref_warnings(without_db1, W3),
+ ?line ok = check_tar(fname([lib,'db-2.1',ebin,'db.app']), LatestName),
+
+ %% exref the db and stdlib applications.
+ ?line {ok, _, W4} =
+ systools:make_tar(LatestName, [{exref, [db, stdlib]},
+ {path, P}, silent]),
+ ?line check_exref_warnings(with_db1, W4),
+ ?line ok = check_tar(fname([lib,'fe-3.1',ebin,'fe.app']), LatestName),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% The relup stuff.
+%%
+%%
+
+
+%% make_relup
+%%
+normal_relup(suite) -> [];
+normal_relup(doc) ->
+ ["Check normal case"];
+normal_relup(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir,LatestName} = create_script(latest0,Config),
+ ?line {_LatestDir1,LatestName1} = create_script(latest1,Config),
+ ?line {_LatestDir2,LatestName2} = create_script(latest2,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = [fname([DataDir, d_normal, lib])],
+ ?line P = [fname([LibDir, '*', ebin]),
+ fname([DataDir, lib, kernel, ebin]),
+ fname([DataDir, lib, stdlib, ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ %% OTP-2561: Check that the option 'restart_emulator' generates a
+ %% "restart_new_emulator" instruction.
+ ?line {ok, _ , _, []} =
+ systools:make_relup(LatestName, [LatestName1], [LatestName1],
+ [{path, P},restart_emulator,silent]),
+ ?line ok = check_relup([{db, "2.1"}], [{db, "1.0"}]),
+ ?line ok = check_restart_emulator(),
+
+ %% This is the ultra normal case
+ ?line ok = systools:make_relup(LatestName, [LatestName1], [LatestName1],
+ [{path, P}]),
+ ?line ok = check_relup([{db, "2.1"}], [{db, "1.0"}]),
+ ?line {ok, _, _, []} =
+ systools:make_relup(LatestName, [LatestName1], [LatestName1],
+ [{path, P}, silent]),
+ ?line ok = check_relup([{db, "2.1"}], [{db, "1.0"}]),
+
+ %% Check that warnings get through
+ ?line ok = systools:make_relup(LatestName, [LatestName2], [LatestName1],
+ [{path, P}]),
+ ?line ok = check_relup([{fe, "3.1"}, {db, "2.1"}], [{db, "1.0"}]),
+ ?line {ok, _, _, [{erts_vsn_changed, _}]} =
+ systools:make_relup(LatestName, [LatestName2], [LatestName1],
+ [{path, P}, silent]),
+ ?line ok = check_relup([{fe, "3.1"}, {db, "2.1"}], [{db, "1.0"}]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+
+%% This test fails if wrong version numbers are seen in the relup file
+%% or if any application is missing. This was triggered by OTP-1360.
+check_relup(UpVsnL, DnVsnL) ->
+ {ok, [{_V1, [{_, _, Up}], [{_, _, Dn}]}]} = file:consult(relup),
+ [] = foldl(fun(X, Acc) ->
+ true = lists:member(X, Acc),
+ lists:delete(X, Acc) end,
+ UpVsnL,
+ [{App, Vsn} || {load_object_code,{App,Vsn,_}} <- Up]),
+ [] = foldl(fun(X, Acc) ->
+ true = lists:member(X, Acc),
+ lists:delete(X, Acc) end,
+ DnVsnL,
+ [{App, Vsn} || {load_object_code,{App,Vsn,_}} <- Dn]),
+ ok.
+
+check_restart_emulator() ->
+ {ok, [{_V1, [{_, _, Up}], [{_, _, Dn}]}]} = file:consult(relup),
+ restart_new_emulator = lists:last(Up),
+ restart_new_emulator = lists:last(Dn),
+ ok.
+
+%% make_relup
+%%
+no_appup_relup(suite) -> [];
+no_appup_relup(doc) ->
+ ["Check that appup files may be missing, but only if we don't need them."];
+no_appup_relup(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir,LatestName} = create_script(latest_small,Config),
+ ?line {_LatestDir0,LatestName0} = create_script(latest_small0,Config),
+ ?line {_LatestDir1,LatestName1} = create_script(latest_small1,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line P1 = [fname([DataDir, d_no_appup, lib, 'fe-3.1', ebin]),
+ fname([DataDir, lib, kernel, ebin]),
+ fname([DataDir, lib, stdlib, ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ %% Check that appup might be missing
+ ?line ok =
+ systools:make_relup(LatestName, [LatestName], [], [{path, P1}]),
+ ?line {ok,_, _, []} =
+ systools:make_relup(LatestName, [LatestName], [],
+ [silent, {path, P1}]),
+
+ %% Check that appup might NOT be missing when we need it
+ ?line error =
+ systools:make_relup(LatestName, [LatestName0], [], [{path, P1}]),
+ ?line {error,_,{file_problem, {_,{error,{open,_,_}}}}} =
+ systools:make_relup(LatestName, [], [LatestName0],
+ [silent, {path, P1}]),
+
+ %% Check that appups missing vsn traps
+ ?line P2 = [fname([DataDir, d_no_appup, lib, 'fe-2.1', ebin]),
+ fname([DataDir, lib, kernel, ebin]),
+ fname([DataDir, lib, stdlib, ebin])],
+
+ ?line error =
+ systools:make_relup(LatestName0, [LatestName1], [], [{path, P2}]),
+ ?line {error,_,{no_relup, _, _, _}} =
+ systools:make_relup(LatestName0, [], [LatestName1],
+ [silent, {path, P2}]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% make_relup
+%%
+bad_appup_relup(suite) -> [];
+bad_appup_relup(doc) ->
+ ["Check that badly written appup files are detected"];
+bad_appup_relup(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir,LatestName} = create_script(latest_small,Config),
+ ?line {_LatestDir0,LatestName0} = create_script(latest_small0,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line N2 = [fname([DataDir, d_bad_appup, lib, 'fe-3.1', ebin]),
+ fname([DataDir, lib, kernel, ebin]),
+ fname([DataDir, lib, stdlib, ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ %% Check that bad appup is trapped
+ ?line error =
+ systools:make_relup(LatestName, [LatestName0], [], [{path, N2}]),
+ ?line {error,_,{file_problem, {_, {error, {parse,_, _}}}}} =
+ systools:make_relup(LatestName, [], [LatestName0],
+ [silent, {path, N2}]),
+
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+%% make_relup
+%%
+abnormal_relup(suite) -> [];
+abnormal_relup(doc) ->
+ ["Check some abnormal cases"];
+abnormal_relup(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir,LatestName} = create_script(latest0,Config),
+ ?line {_LatestDir1,LatestName1} = create_script(latest1,Config),
+
+ %% Check wrong app vsn
+ ?line DataDir = filename:absname(?copydir),
+ ?line P = [fname([DataDir, d_bad_app_vsn, lib, 'db-2.1', ebin]),
+ fname([DataDir, d_bad_app_vsn, lib, 'fe-3.1', ebin]),
+ fname([DataDir, lib, kernel, ebin]),
+ fname([DataDir, lib, stdlib, ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+ ?line error = systools:make_relup(LatestName, [LatestName1], [LatestName1],
+ [{path, P}]),
+ ?line R0 = systools:make_relup(LatestName, [LatestName1], [LatestName1],
+ [silent, {path, P}]),
+ ?line {error,systools_make,
+ [{error_reading,{db,{no_valid_version,
+ {{"should be","2.1"},
+ {"found file", _, "2.0"}}}}}]} = R0,
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+
+%% Check that application start type is used in relup
+app_start_type_relup(suite) ->
+ [];
+app_start_type_relup(doc) ->
+ ["Release upgrade file with various application start types"];
+app_start_type_relup(Config) when is_list(Config) ->
+ ?line PrivDir = ?config(priv_dir, Config),
+ ?line {Dir1,Name1} = create_script(latest_app_start_type1,Config),
+ ?line {Dir2,Name2} = create_script(latest_app_start_type2,Config),
+ ?line Release1 = filename:join(Dir1,Name1),
+ ?line Release2 = filename:join(Dir2,Name2),
+
+ ?line {ok, Release2Relup, systools_relup, []} = systools:make_relup(Release2, [Release1], [Release1], [{outdir, PrivDir}, silent]),
+ ?line {"2", [{"1",[], UpInstructions}], [{"1",[], DownInstructions}]} = Release2Relup,
+ %% ?t:format("Up: ~p",[UpInstructions]),
+ %% ?t:format("Dn: ~p",[DownInstructions]),
+ ?line [{load_object_code, {mnesia, _, _}},
+ {load_object_code, {sasl, _, _}},
+ {load_object_code, {webtool, _, _}},
+ {load_object_code, {snmp, _, _}},
+ {load_object_code, {xmerl, _, _}},
+ point_of_no_return
+ | UpInstructionsT] = UpInstructions,
+ ?line true = lists:member({apply,{application,start,[mnesia,permanent]}}, UpInstructionsT),
+ ?line true = lists:member({apply,{application,start,[sasl,transient]}}, UpInstructionsT),
+ ?line true = lists:member({apply,{application,start,[webtool,temporary]}}, UpInstructionsT),
+ ?line true = lists:member({apply,{application,load,[snmp]}}, UpInstructionsT),
+ ?line false = lists:any(fun({apply,{application,_,[xmerl|_]}}) -> true; (_) -> false end, UpInstructionsT),
+ ?line [point_of_no_return | DownInstructionsT] = DownInstructions,
+ ?line true = lists:member({apply,{application,stop,[mnesia]}}, DownInstructionsT),
+ ?line true = lists:member({apply,{application,stop,[sasl]}}, DownInstructionsT),
+ ?line true = lists:member({apply,{application,stop,[webtool]}}, DownInstructionsT),
+ ?line true = lists:member({apply,{application,stop,[snmp]}}, DownInstructionsT),
+ ?line true = lists:member({apply,{application,stop,[xmerl]}}, DownInstructionsT),
+ ?line true = lists:member({apply,{application,unload,[mnesia]}}, DownInstructionsT),
+ ?line true = lists:member({apply,{application,unload,[sasl]}}, DownInstructionsT),
+ ?line true = lists:member({apply,{application,unload,[webtool]}}, DownInstructionsT),
+ ?line true = lists:member({apply,{application,unload,[snmp]}}, DownInstructionsT),
+ ?line true = lists:member({apply,{application,unload,[xmerl]}}, DownInstructionsT),
+ ok.
+
+
+otp_6226(suite) ->
+ [];
+otp_6226(doc) ->
+ ["{outdir,Dir} option for systools:make_script()"];
+otp_6226(Config) when is_list(Config) ->
+ PrivDir = ?privdir,
+ ?line {ok, OldDir} = file:get_cwd(),
+
+ ?line {LatestDir, LatestName} = create_script(latest0,Config),
+ ?line {_LatestDir, LatestName1} = create_script(latest1,Config),
+
+ ?line DataDir = filename:absname(?copydir),
+ ?line LibDir = fname([DataDir, d_normal, lib]),
+ ?line P = [fname([LibDir, 'db-2.1', ebin]),
+ fname([LibDir, 'db-1.0', ebin]),
+ fname([LibDir, 'fe-3.1', ebin]),
+ fname([DataDir, lib, kernel, ebin]),
+ fname([DataDir, lib, stdlib, ebin])],
+
+ ?line ok = file:set_cwd(LatestDir),
+
+
+ %% Create an outdir1 directory
+ ?line ok = file:make_dir("outdir1"),
+
+ %% ==== Now test systools:make_script ====
+ %% a) badarg
+ ?line {'EXIT', {{badarg,[{outdir,outdir1}]}, _}} =
+ (catch systools:make_script(LatestName, [{outdir,outdir1},
+ {path,P},silent])),
+
+ %% b) absolute path
+ Outdir1 = filename:join(PrivDir, "outdir1"),
+ ?line {ok,_,[]} = systools:make_script(LatestName, [{outdir,Outdir1},
+ {path,P},silent]),
+ ?line Script1 = filename:join(Outdir1, LatestName ++ ".script"),
+ ?line Boot1 = filename:join(Outdir1, LatestName ++ ".boot"),
+ ?line true = filelib:is_file(Script1),
+ ?line true = filelib:is_file(Boot1),
+ ?line ok = file:delete(Script1),
+ ?line ok = file:delete(Boot1),
+
+ %% c) relative path
+ ?line {ok,_,[]} = systools:make_script(LatestName, [{outdir,"./outdir1"},
+ {path,P},silent]),
+ ?line true = filelib:is_file(Script1),
+ ?line true = filelib:is_file(Boot1),
+ ?line ok = file:delete(Script1),
+ ?line ok = file:delete(Boot1),
+
+ %% d) absolute but incorrect path
+ ?line Outdir2 = filename:join(PrivDir, "outdir2"),
+ ?line Script2 = filename:join(Outdir2, LatestName ++ ".script"),
+ ?line {error,_,{open,Script2,_}} =
+ systools:make_script(LatestName, [{outdir,Outdir2},{path,P},silent]),
+
+ %% e) relative but incorrect path
+ ?line {error,_,{open,_,_}} =
+ systools:make_script(LatestName, [{outdir,"./outdir2"},{path,P},silent]),
+
+ %% f) with .rel in another directory than cwd
+ ?line ok = file:set_cwd(Outdir1),
+ ?line {ok,_,[]} = systools:make_script(filename:join(PrivDir, LatestName),
+ [{outdir,"."},{path,P},silent]),
+ ?line true = filelib:is_file(LatestName ++ ".script"),
+ ?line true = filelib:is_file(LatestName ++ ".boot"),
+ ?line ok = file:delete(LatestName ++ ".script"),
+ ?line ok = file:delete(LatestName ++ ".boot"),
+ ?line ok = file:set_cwd(LatestDir),
+
+ %% ==== Now test systools:make_tar =====
+ ?line {ok,_,[]} = systools:make_script(LatestName, [{path,P},silent]),
+ %% a) badarg
+ ?line {'EXIT', {{badarg, [{outdir,outdir1}]}, _}} =
+ (catch systools:make_tar(LatestName,[{outdir,outdir1},{path,P},silent])),
+
+ %% b) absolute path
+ ?line {ok,_,[]} = systools:make_tar(LatestName, [{outdir,Outdir1},
+ {path,P},silent]),
+ ?line Tar1 = filename:join(Outdir1,LatestName++".tar.gz"),
+ ?line true = filelib:is_file(Tar1),
+ ?line ok = file:delete(Tar1),
+
+ %% c) relative path
+ ?line {ok,_,[]} = systools:make_tar(LatestName, [{outdir,"./outdir1"},
+ {path,P},silent]),
+ ?line true = filelib:is_file(Tar1),
+ ?line ok = file:delete(Tar1),
+
+ %% d) absolute but incorrect path
+ ?line Tar2 = filename:join(Outdir2,LatestName++".tar.gz"),
+ ?line {error,_,{tar_error,{open,Tar2,{Tar2,enoent}}}} =
+ systools:make_tar(LatestName, [{outdir,Outdir2},{path,P},silent]),
+
+ %% e) relative but incorrect path
+ ?line {error,_,{tar_error,{open,_,_}}} =
+ systools:make_tar(LatestName, [{outdir,"./outdir2"},{path,P},silent]),
+
+ %% f) with .rel in another directory than cwd
+ ?line ok = file:set_cwd(Outdir1),
+ ?line {ok,_,[]} = systools:make_tar(filename:join(PrivDir, LatestName),
+ [{outdir,"."},{path,P},silent]),
+ ?line true = filelib:is_file(Tar1),
+ ?line ok = file:set_cwd(LatestDir),
+
+ %% ===== Now test systools:make_relup =====
+ %% a) badarg
+ ?line {'EXIT', {{badarg, [{outdir,outdir1}]}, _}} =
+ (catch systools:make_relup(LatestName,[LatestName1],[LatestName1],
+ [{outdir,outdir1},
+ {path,P},silent])),
+
+ %% b) absolute path
+ Relup = filename:join(Outdir1, "relup"),
+ ?line {ok,_,_,[]} = systools:make_relup(LatestName,[LatestName1],[LatestName1],
+ [{outdir,Outdir1},
+ {path,P},silent]),
+ ?line true = filelib:is_file(Relup),
+ ?line ok = file:delete(Relup),
+
+ %% c) relative path
+ ?line {ok,_,_,[]} = systools:make_relup(LatestName,[LatestName1],[LatestName1],
+ [{outdir,"./outdir1"},
+ {path,P},silent]),
+ ?line true = filelib:is_file(Relup),
+ ?line ok = file:delete(Relup),
+
+ %% d) absolute but incorrect path
+ ?line {error,_,{file_problem,{"relup",enoent}}} =
+ systools:make_relup(LatestName,[LatestName1],[LatestName1],
+ [{outdir,Outdir2},{path,P},silent]),
+
+ %% e) relative but incorrect path
+ ?line {error,_,{file_problem,{"relup",enoent}}} =
+ systools:make_relup(LatestName,[LatestName1],[LatestName1],
+ [{outdir,"./outdir2"},{path,P},silent]),
+
+ %% f) with .rel in another directory than cwd
+ %% -- not necessary to test since relup by default is placed in
+ %% cwd, not in the same directory as the .rel file --
+
+ %% Change back to previous working directory
+ ?line ok = file:set_cwd(OldDir),
+ ok.
+
+
+%%%%%%
+%%%%%% Utilities
+%%%%%%
+
+check_script_path(RelName) ->
+ {ok, [Conts]} = read_script_file(RelName),
+ {script, {_, _}, ListOfThings} = Conts,
+ case lists:keysearch(path, 1, ListOfThings) of
+ {value, {path, [$$,$R,$O,$O,$T | _]}} -> %"$ROOT..."
+ false;
+ _ -> ok
+ end.
+
+check_var_script_file(VarDirs, NoExistDirs, RelName) ->
+ {ok, [Conts]} = read_script_file(RelName),
+ {script, {_, _}, ListOfThings} = Conts,
+ AllPaths = lists:append(lists:map(fun({path, P}) -> P;
+ (_) -> []
+ end,
+ ListOfThings)),
+ case lists:filter(fun(VarDir) -> lists:member(VarDir, AllPaths) end,
+ VarDirs) of
+ VarDirs ->
+ ok;
+ _ ->
+ test_server:fail("All variable dirs not in generated script")
+ end,
+ case lists:filter(fun(NoExistDir) -> lists:member(NoExistDir, AllPaths) end,
+ NoExistDirs) of
+ [] ->
+ ok;
+ _ ->
+ test_server:fail("Unexpected dirs in generated script")
+ end.
+
+check_include_script(RelName, ExpectedLoad, ExpectedStart) ->
+ {ok, [Conts]} = read_script_file(RelName),
+ {script, {_, _}, ListOfThings} = Conts,
+
+ %% Check that the applications are loaded in given order !
+ ActualLoad =
+ [App || {apply,{application,load,[{application,App,_}]}} <- ListOfThings,
+ App=/=kernel,
+ App=/=stdlib],
+
+ if ActualLoad =:= ExpectedLoad -> ok;
+ true -> test_server:fail({bad_load_order, ActualLoad, ExpectedLoad})
+ end,
+
+ %% Check that applications are started in given order !
+ ActualStart =
+ [App || {apply,{application,start_boot,[App|_]}} <- ListOfThings,
+ App =/= kernel,
+ App =/= stdlib],
+
+ if ActualStart =:= ExpectedStart -> ok;
+ true -> test_server:fail({bad_start_order, ActualStart,ExpectedStart})
+ end,
+
+ ok.
+
+read_script_file(RelName) ->
+ file:consult(RelName ++ ".script").
+
+check_var_tar(Variable, RelName) ->
+ Expected = tar_name(Variable),
+ case check_tar(Expected,RelName) of
+ ok ->
+ ok;
+ {error, {erroneous_tar_file, _, missing, _}} ->
+ {error, {not_generated, Expected}}
+ end.
+
+exists_tar_file(Name) ->
+ File = tar_name(Name),
+ case filelib:is_regular(File) of
+ true ->
+ ok = file:delete(File),
+ true;
+ _ ->
+ false
+ end.
+
+%% Take a snap of the generated tar file and check if a certain
+%% file is included.
+%% This ensures at least that the tar file is generated.
+check_tar(File, RelName) ->
+ TarContents = tar_contents(RelName),
+ case lists:member(File,TarContents) of
+ true -> ok;
+ _ -> {error, {erroneous_tar_file, tar_name(RelName), missing, File}}
+ end.
+
+%% Check that the given files exist in the tar file, and that they are
+%% not symlinks
+check_tar_regular(PrivDir, Files, RelName) ->
+ TmpDir = fname(PrivDir,tmp),
+ ok = file:make_dir(TmpDir),
+ ok = erl_tar:extract(tar_name(RelName),
+ [{files,Files},{cwd,TmpDir},compressed]),
+ R = lists:foldl(fun(File,Acc) ->
+ case file:read_link_info(fname(TmpDir,File)) of
+ {ok,#file_info{type=regular}} ->
+ Acc;
+ {ok,#file_info{type=Other}} ->
+ [{File,Other}|Acc];
+ _ ->
+ [{File,missing}|Acc]
+ end
+ end,
+ [],
+ Files),
+ delete_tree(TmpDir),
+ case R of
+ [] ->
+ ok;
+ NotThere ->
+ {error,{erroneous_tar_file,tar_name(RelName),NotThere}}
+ end.
+
+delete_tree(Dir) ->
+ case filelib:is_dir(Dir) of
+ true ->
+ {ok,Files} = file:list_dir(Dir),
+ lists:foreach(fun(File) -> delete_tree(filename:join(Dir,File)) end,
+ Files),
+ file:del_dir(Dir);
+ false ->
+ ok = file:delete(Dir)
+ end.
+
+tar_contents(Name) ->
+ {ok, Cont} = erl_tar:table(Name ++ ".tar.gz", [compressed]),
+ Cont.
+
+tar_name(Name) ->
+ Name ++ ".tar.gz".
+
+create_script(latest,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, latest),
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line io:format(Fd,
+ "{release, {\"Test release 3\", \"LATEST\"}, \n"
+ " {erts, \"4.4\"}, \n"
+ " [{kernel, \"~s\"}, {stdlib, \"~s\"}, \n"
+ " {db, \"2.1\"}, {fe, \"3.1\"}]}.\n",
+ [KernelVer,StdlibVer]),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest_no_mod_vsn,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, latest),
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line io:format(Fd,
+ "{release, {\"Test release 3\", \"LATESTNOMOD\"}, \n"
+ " {erts, \"4.4\"}, \n"
+ " [{kernel, \"~s\"}, {stdlib, \"~s\"}, \n"
+ " {db, \"3.1\"}, {fe, \"3.1\"}]}.\n",
+ [KernelVer,StdlibVer]),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest0,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, 'latest-1'),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line io:format(Fd,
+ "{release, {\"Test release 2\", \"LATEST0\"}, \n"
+ " {erts, \"4.4\"}, \n"
+ " [{kernel, \"1.0\"}, {stdlib, \"1.0\"}, \n"
+ " {db, \"2.1\"}, {fe, \"3.1\"}]}.\n",
+ []),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest1,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, latest),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line io:format(Fd,
+ "{release, {\"Test release 2\", \"LATEST1\"}, \n"
+ " {erts, \"4.4\"}, \n"
+ " [{kernel, \"1.0\"}, {stdlib, \"1.0\"}, \n"
+ " {db, \"1.0\"}, {fe, \"3.1\"}]}.\n",
+ []),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest2,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, 'latest-2'),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line io:format(Fd,
+ "{release, {\"Test release 1\", \"LATEST2\"}, \n"
+ " {erts, \"4.3\"}, \n"
+ " [{kernel, \"1.0\"}, {stdlib, \"1.0\"}, \n"
+ " {db, \"1.0\"}, {fe, \"2.1\"}]}.\n",
+ []),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest_small,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, 'latest-small'),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line io:format(Fd,
+ "{release, {\"Test release 2\", \"LATEST_SMALL\"}, \n"
+ " {erts, \"4.4\"}, \n"
+ " [{kernel, \"1.0\"}, {stdlib, \"1.0\"}, \n"
+ " {fe, \"3.1\"}]}.\n",
+ []),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest_small0,Config) -> %Differs in fe vsn
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, 'latest-small0'),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line io:format(Fd,
+ "{release, {\"Test release 2\", \"LATEST_SMALL0\"}, \n"
+ " {erts, \"4.4\"}, \n"
+ " [{kernel, \"1.0\"}, {stdlib, \"1.0\"}, \n"
+ " {fe, \"2.1\"}]}.\n",
+ []),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest_small1,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, 'latest-small1'),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line io:format(Fd,
+ "{release, {\"Test release 2\", \"LATEST_SMALL1\"}, \n"
+ " {erts, \"4.4\"}, \n"
+ " [{kernel, \"1.0\"}, {stdlib, \"1.0\"}, \n"
+ " {fe, \"500.18.7\"}]}.\n",
+ []),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest_nokernel,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, 'latest-nokernel'),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line io:format(Fd,
+ "{release, {\"Test release 3\", \"LATEST_NOKERNEL\"}, \n"
+ " {erts, \"4.4\"}, \n"
+ " [{db, \"2.1\"}, {fe, \"3.1\"}]}.\n",
+ []),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest_app_start_type1,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, latest_app_start_type1),
+ ?line ErtsVer = erlang:system_info(version),
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line RelfileContent =
+ {release,{"Test release", "1"},
+ {erts,ErtsVer},
+ [{kernel,KernelVer},
+ {stdlib,StdlibVer}]},
+ ?line io:format(Fd,"~p.~n",[RelfileContent]),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)};
+create_script(latest_app_start_type2,Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, latest_app_start_type2),
+ ?line ErtsVer = erlang:system_info(version),
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+ ?line OtherApps = [{mnesia,permanent},
+ {sasl,transient},
+ {webtool,temporary},
+ {snmp,load},
+ {xmerl,none}],
+ ?line lists:foreach(fun({App,_}) -> application:load(App) end,
+ OtherApps),
+ ?line Loaded = application:loaded_applications(),
+ ?line OtherAppsRel =
+ lists:map(fun({App,StartType}) ->
+ {_,_,Ver} = lists:keyfind(App,1,Loaded),
+ {App,Ver,StartType}
+ end,
+ OtherApps),
+ ?line {ok,Fd} = file:open(Name++".rel",write),
+ ?line RelfileContent =
+ {release,{"Test release", "2"},
+ {erts,ErtsVer},
+ [{kernel,KernelVer},
+ {stdlib,StdlibVer} | OtherAppsRel]},
+ ?line io:format(Fd,"~p.~n",[RelfileContent]),
+ ?line ok = file:close(Fd),
+ {filename:dirname(Name), filename:basename(Name)}.
+
+create_include_files(inc1, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc1),
+ create_apps(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t6, \"1.0\"}, {t5, \"1.0\"}, \n"
+ " {t4, \"1.0\"}, {t3, \"1.0\"}, {t2, \"1.0\"}, \n"
+ " {t1, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc2, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc2),
+ create_apps(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ %% t6 does not include t5 !
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t6, \"1.0\", [t4]}, {t5, \"1.0\"}, \n"
+ " {t4, \"1.0\"}, {t3, \"1.0\"}, {t2, \"1.0\"}, \n"
+ " {t1, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc3, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc3),
+ create_apps(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ %% t3 does not include t2 !
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t6, \"1.0\"}, {t5, \"1.0\"}, \n"
+ " {t4, \"1.0\"}, {t3, \"1.0\", []}, {t2, \"1.0\"}, \n"
+ " {t1, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc4, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc4),
+ create_apps(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ %% t3 does not include t2 !
+ %% t6 does not include t5 !
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t6, \"1.0\", [t4]}, {t5, \"1.0\"}, \n"
+ " {t4, \"1.0\"}, {t3, \"1.0\", []}, {t2, \"1.0\"}, \n"
+ " {t1, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc5, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc5),
+ create_apps(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ %% t6 does not include t5 !
+ %% exclude t5.
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t6, \"1.0\", [t4]}, \n"
+ " {t4, \"1.0\"}, {t3, \"1.0\", []}, {t2, \"1.0\"}, \n"
+ " {t1, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc6, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc6),
+ create_apps(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ %% t3 does include non existing t2 !
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t6, \"1.0\"}, {t5, \"1.0\"}, \n"
+ " {t4, \"1.0\"}, {t3, \"1.0\"}, \n"
+ " {t1, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc7, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc7),
+ create_apps(PrivDir),
+ create_app(t7, PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ %% t7 and t6 does include t5 !
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t7, \"1.0\"}, {t6, \"1.0\"}, {t5, \"1.0\"}, \n"
+ " {t4, \"1.0\"}, {t3, \"1.0\"}, {t2, \"1.0\"}, \n"
+ " {t1, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc8, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc8),
+ create_circular_apps(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ %% t8 uses t9 and t10 includes t9 !
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t8, \"1.0\"}, {t9, \"1.0\"}, {t10, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc9, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc9),
+ create_circular_apps(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ %% t8 uses t9, t9 uses t10 and t10 includes t8 ==> circular !!
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t8, \"1.0\"}, {t9, \"1.0\"}, {t10, \"1.0\", [t8]}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc10, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc10),
+ create_circular_apps(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ %% t9 tries to include not specified (in .app file) application !
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t8, \"1.0\"}, {t9, \"1.0\", [t7]}, {t10, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(inc11, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, inc11),
+ create_apps2(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {t11, \"1.0\"}, \n"
+ " {t12, \"1.0\"}, \n"
+ " {t13, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)};
+
+create_include_files(otp_3065, Config) ->
+ ?line PrivDir = ?privdir,
+ ?line Name = fname(PrivDir, otp_3065),
+ create_apps_3065(PrivDir),
+
+ ?line Apps = application_controller:which_applications(),
+ ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+
+ Rel = "{release, {\"test\",\"R1A\"}, {erts, \"45\"},\n"
+ " [{kernel, \"" ++ KernelVer ++ "\"}, {stdlib, \""
+ ++ StdlibVer ++ "\"},\n"
+ " {chAts, \"1.0\"}, {aa12, \"1.0\"}, \n"
+ " {chTraffic, \"1.0\"}]}.\n",
+ file:write_file(Name ++ ".rel", list_to_binary(Rel)),
+ {filename:dirname(Name), filename:basename(Name)}.
+
+create_apps(Dir) ->
+ T1 = "{application, t1,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, [kernel, stdlib]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't1.app'), list_to_binary(T1)),
+
+ T2 = "{application, t2,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, [t1]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't2.app'), list_to_binary(T2)),
+
+ T3 = "{application, t3,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, []},\n"
+ " {included_applications, [t2]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't3.app'), list_to_binary(T3)),
+
+ T4 = "{application, t4,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, [t3]},\n"
+ " {included_applications, []},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't4.app'), list_to_binary(T4)),
+
+ T5 = "{application, t5,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, [t3]},\n"
+ " {included_applications, []},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't5.app'), list_to_binary(T5)),
+
+ T6 = "{application, t6,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, []},\n"
+ " {included_applications, [t4, t5]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't6.app'), list_to_binary(T6)).
+
+create_app(t7, Dir) ->
+ T7 = "{application, t7,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, []},\n"
+ " {included_applications, [t5]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't7.app'), list_to_binary(T7)).
+
+create_circular_apps(Dir) ->
+ T8 = "{application, t8,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, [t9]},\n"
+ " {included_applications, []},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't8.app'), list_to_binary(T8)),
+
+ T9 = "{application, t9,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, [t10]},\n"
+ " {included_applications, []},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't9.app'), list_to_binary(T9)),
+
+ T10 = "{application, t10,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, []},\n"
+ " {included_applications, [t8, t9]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't10.app'), list_to_binary(T10)).
+
+create_apps2(Dir) ->
+ T11 = "{application, t11,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, []},\n"
+ " {included_applications, [t13]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't11.app'), list_to_binary(T11)),
+
+ T12 = "{application, t12,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, [t11]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't12.app'), list_to_binary(T12)),
+
+ T13 = "{application, t13,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, []},\n"
+ " {included_applications, []},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 't13.app'), list_to_binary(T13)).
+
+
+
+create_apps_3065(Dir) ->
+ T11 = "{application, chTraffic,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, []},\n"
+ " {included_applications, [chAts]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 'chTraffic.app'), list_to_binary(T11)),
+
+ T12 = "{application, chAts,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, []},\n"
+ " {included_applications, [aa12]},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 'chAts.app'), list_to_binary(T12)),
+
+ T13 = "{application, aa12,\n"
+ " [{vsn, \"1.0\"},\n"
+ " {description, \"test\"},\n"
+ " {modules, []},\n"
+ " {applications, [chAts]},\n"
+ " {included_applications, []},\n"
+ " {registered, []}]}.\n",
+ file:write_file(fname(Dir, 'aa12.app'), list_to_binary(T13)).
+
+fname(N) ->
+ filename:join(N).
+
+fname(Dir, Basename) ->
+ filename:join(Dir, Basename).
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/ebin/db.app b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/ebin/db.app
new file mode 100644
index 0000000000..d375768b99
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/ebin/db.app
@@ -0,0 +1,8 @@
+{application, db,
+ [{description, "ERICSSON NR FOR DB"},
+ {vsn, "2.0"},
+ {modules, [{db1, "1.0"}, {db2, "1.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {db1, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/ebin/db.appup b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/ebin/db.appup
new file mode 100644
index 0000000000..621838f0b4
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/ebin/db.appup
@@ -0,0 +1,20 @@
+%%
+%% Release upgrade script for db (data base)
+%%
+
+{
+ "2.1",
+%%% Upgrade from:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]},
+ {"1.1", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/src/db1.erl b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/src/db1.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/src/db1.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/src/db2.erl b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/src/db2.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/db-2.1/src/db2.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/ebin/fe.app b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/ebin/fe.app
new file mode 100644
index 0000000000..d3bd85cda6
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/ebin/fe.app
@@ -0,0 +1,8 @@
+{application, fe,
+ [{description, "ERICSSON NR FOR FE"},
+ {vsn, "3.1"},
+ {modules, [{fe1, "1.0"}, {fe2, "1.0"}, {fe3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {fe2, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/ebin/fe.appup b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/ebin/fe.appup
new file mode 100644
index 0000000000..4ab13c1bae
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/ebin/fe.appup
@@ -0,0 +1,27 @@
+%%
+%% Release upgrade script for fe (front end)
+%%
+
+{
+ "3.1",
+%%% Upgrade from:
+ [
+ {"2.1.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {{advanced, extra}, soft_purge, soft_purge,
+ [fe1, fe2]}
+ ]},
+
+ {"2.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe1, fe2]}
+ ]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"2.1", [{update, fe2, soft, soft_purge, soft_purge, []},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe2]}
+ ]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe1.erl b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe1.erl
new file mode 100644
index 0000000000..aa5bfa8098
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe1.erl
@@ -0,0 +1,2 @@
+-module(fe1).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe2.erl b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe2.erl
new file mode 100644
index 0000000000..869f3b93c8
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe2.erl
@@ -0,0 +1,2 @@
+-module(fe2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe3.erl b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe3.erl
new file mode 100644
index 0000000000..6473342f52
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_app_vsn/lib/fe-3.1/src/fe3.erl
@@ -0,0 +1,2 @@
+-module(fe3).
+-vsn("2.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_appup/lib/fe-3.1/ebin/fe.app b/lib/sasl/test/systools_SUITE_data/d_bad_appup/lib/fe-3.1/ebin/fe.app
new file mode 100644
index 0000000000..0696e2494c
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_appup/lib/fe-3.1/ebin/fe.app
@@ -0,0 +1,7 @@
+{application, fe,
+ [{description, "ERICSSON NR FOR FE"},
+ {vsn, "3.1"},
+ {modules, [{fe1, "1.0"}, {fe2, "1.0"}, {fe3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {mod, {fe1, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_appup/lib/fe-3.1/ebin/fe.appup b/lib/sasl/test/systools_SUITE_data/d_bad_appup/lib/fe-3.1/ebin/fe.appup
new file mode 100644
index 0000000000..dac4c00851
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_appup/lib/fe-3.1/ebin/fe.appup
@@ -0,0 +1,27 @@
+%%
+%% Release upgrade script for fe (front end)
+%%
+
+{
+ "3.1",
+%%% Upgrade from:
+ [
+ {"2.1.1" [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge,
+ [fe1, fe2]}
+ ]},
+
+ {"2.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe1, fe2]}
+ ]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"2.1", [{update, fe2, soft, soft_purge, soft_purge, []},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe2]}
+ ]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/ebin/db.app b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/ebin/db.app
new file mode 100644
index 0000000000..191919f8d3
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/ebin/db.app
@@ -0,0 +1,8 @@
+{application, db,
+ [{description, "ERICSSON NR FOR DB"},
+ {vsn, "2.1"},
+ {modules, [{db1, "1.0"}, {db2, "1.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {db1, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/ebin/db.appup b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/ebin/db.appup
new file mode 100644
index 0000000000..621838f0b4
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/ebin/db.appup
@@ -0,0 +1,20 @@
+%%
+%% Release upgrade script for db (data base)
+%%
+
+{
+ "2.1",
+%%% Upgrade from:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]},
+ {"1.1", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/src/db1.erl b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/src/db1.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/src/db1.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/src/db2.erl b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/src/db2.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/db-2.1/src/db2.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/ebin/fe.app b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/ebin/fe.app
new file mode 100644
index 0000000000..d3bd85cda6
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/ebin/fe.app
@@ -0,0 +1,8 @@
+{application, fe,
+ [{description, "ERICSSON NR FOR FE"},
+ {vsn, "3.1"},
+ {modules, [{fe1, "1.0"}, {fe2, "1.0"}, {fe3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {fe2, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/ebin/fe.appup b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/ebin/fe.appup
new file mode 100644
index 0000000000..2db69eba76
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/ebin/fe.appup
@@ -0,0 +1,27 @@
+%%
+%% Release upgrade script for fe (front end)
+%%
+
+{
+ "3.1",
+%%% Upgrade from:
+ [
+ {"2.1.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge,
+ [fe1, fe2]}
+ ]},
+
+ {"2.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe1, fe2]}
+ ]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"2.1", [{update, fe2, soft, soft_purge, soft_purge, []},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe2]}
+ ]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe1.erl b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe1.erl
new file mode 100644
index 0000000000..cdbb9ef532
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe1.erl
@@ -0,0 +1,2 @@
+-module(fe1).
+-vsn("1.1").
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe2.erl b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe2.erl
new file mode 100644
index 0000000000..869f3b93c8
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe2.erl
@@ -0,0 +1,2 @@
+-module(fe2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe3.erl b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe3.erl
new file mode 100644
index 0000000000..6473342f52
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_bad_mod+warn/lib/fe-3.1/src/fe3.erl
@@ -0,0 +1,2 @@
+-module(fe3).
+-vsn("2.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/ebin/db.app b/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/ebin/db.app
new file mode 100644
index 0000000000..3e0ac3c3c9
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/ebin/db.app
@@ -0,0 +1,8 @@
+{application, db,
+ [{description, "ERICSSON NR FOR DB"},
+ {vsn, "2.1"},
+ {modules, [{db1, "1.0"}, {db2, "1.0"}, {db3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {db1, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/ebin/db.appup b/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/ebin/db.appup
new file mode 100644
index 0000000000..621838f0b4
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/ebin/db.appup
@@ -0,0 +1,20 @@
+%%
+%% Release upgrade script for db (data base)
+%%
+
+{
+ "2.1",
+%%% Upgrade from:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]},
+ {"1.1", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/src/db2.erl b/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/src/db2.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/src/db2.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/src/db3.erl b/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/src/db3.erl
new file mode 100644
index 0000000000..6473342f52
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_links/lib/db-2.1/src/db3.erl
@@ -0,0 +1,2 @@
+-module(fe3).
+-vsn("2.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/ebin/fe.appup b/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/ebin/fe.appup
new file mode 100644
index 0000000000..4ab13c1bae
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/ebin/fe.appup
@@ -0,0 +1,27 @@
+%%
+%% Release upgrade script for fe (front end)
+%%
+
+{
+ "3.1",
+%%% Upgrade from:
+ [
+ {"2.1.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {{advanced, extra}, soft_purge, soft_purge,
+ [fe1, fe2]}
+ ]},
+
+ {"2.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe1, fe2]}
+ ]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"2.1", [{update, fe2, soft, soft_purge, soft_purge, []},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe2]}
+ ]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe1.erl b/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe1.erl
new file mode 100644
index 0000000000..aa5bfa8098
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe1.erl
@@ -0,0 +1,2 @@
+-module(fe1).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe2.erl b/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe2.erl
new file mode 100644
index 0000000000..869f3b93c8
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe2.erl
@@ -0,0 +1,2 @@
+-module(fe2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe3.erl b/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe3.erl
new file mode 100644
index 0000000000..6473342f52
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_links/lib/fe-3.1/src/fe3.erl
@@ -0,0 +1,2 @@
+-module(fe3).
+-vsn("2.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/ebin/db.app b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/ebin/db.app
new file mode 100644
index 0000000000..191919f8d3
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/ebin/db.app
@@ -0,0 +1,8 @@
+{application, db,
+ [{description, "ERICSSON NR FOR DB"},
+ {vsn, "2.1"},
+ {modules, [{db1, "1.0"}, {db2, "1.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {db1, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/ebin/db.appup b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/ebin/db.appup
new file mode 100644
index 0000000000..621838f0b4
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/ebin/db.appup
@@ -0,0 +1,20 @@
+%%
+%% Release upgrade script for db (data base)
+%%
+
+{
+ "2.1",
+%%% Upgrade from:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]},
+ {"1.1", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/src/db1.erl b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/src/db1.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/src/db1.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/src/db2.erl b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/src/db2.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/db-2.1/src/db2.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/ebin/fe.app b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/ebin/fe.app
new file mode 100644
index 0000000000..d3bd85cda6
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/ebin/fe.app
@@ -0,0 +1,8 @@
+{application, fe,
+ [{description, "ERICSSON NR FOR FE"},
+ {vsn, "3.1"},
+ {modules, [{fe1, "1.0"}, {fe2, "1.0"}, {fe3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {fe2, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/ebin/fe.appup b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/ebin/fe.appup
new file mode 100644
index 0000000000..4ab13c1bae
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/ebin/fe.appup
@@ -0,0 +1,27 @@
+%%
+%% Release upgrade script for fe (front end)
+%%
+
+{
+ "3.1",
+%%% Upgrade from:
+ [
+ {"2.1.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {{advanced, extra}, soft_purge, soft_purge,
+ [fe1, fe2]}
+ ]},
+
+ {"2.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe1, fe2]}
+ ]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"2.1", [{update, fe2, soft, soft_purge, soft_purge, []},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe2]}
+ ]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe1.erl b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe1.erl
new file mode 100644
index 0000000000..cdbb9ef532
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe1.erl
@@ -0,0 +1,2 @@
+-module(fe1).
+-vsn("1.1").
diff --git a/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe2.erl b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe2.erl
new file mode 100644
index 0000000000..869f3b93c8
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe2.erl
@@ -0,0 +1,2 @@
+-module(fe2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe3.erl b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe3.erl
new file mode 100644
index 0000000000..6473342f52
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_missing_src/lib/fe-3.1/src/fe3.erl
@@ -0,0 +1,2 @@
+-module(fe3).
+-vsn("2.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-2.1/ebin/fe.app b/lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-2.1/ebin/fe.app
new file mode 100644
index 0000000000..47ea248720
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-2.1/ebin/fe.app
@@ -0,0 +1,8 @@
+{application, fe,
+ [{description, "ERICSSON NR FOR FE"},
+ {vsn, "2.1"},
+ {modules, [{fe1, "1.0"}, {fe2, "1.0"}, {fe3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {fe2, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-2.1/ebin/fe.appup b/lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-2.1/ebin/fe.appup
new file mode 100644
index 0000000000..2db69eba76
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-2.1/ebin/fe.appup
@@ -0,0 +1,27 @@
+%%
+%% Release upgrade script for fe (front end)
+%%
+
+{
+ "3.1",
+%%% Upgrade from:
+ [
+ {"2.1.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge,
+ [fe1, fe2]}
+ ]},
+
+ {"2.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe1, fe2]}
+ ]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"2.1", [{update, fe2, soft, soft_purge, soft_purge, []},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe2]}
+ ]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-3.1/ebin/fe.app b/lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-3.1/ebin/fe.app
new file mode 100644
index 0000000000..0696e2494c
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_no_appup/lib/fe-3.1/ebin/fe.app
@@ -0,0 +1,7 @@
+{application, fe,
+ [{description, "ERICSSON NR FOR FE"},
+ {vsn, "3.1"},
+ {modules, [{fe1, "1.0"}, {fe2, "1.0"}, {fe3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {mod, {fe1, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/ebin/db.app b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/ebin/db.app
new file mode 100644
index 0000000000..22530ee335
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/ebin/db.app
@@ -0,0 +1,8 @@
+{application, db,
+ [{description, "ERICSSON NR FOR DB"},
+ {vsn, "1.0"},
+ {modules, [{db1, "1.0"}, {db2, "1.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {db1, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/src/db1.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/src/db1.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/src/db1.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/src/db2.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/src/db2.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.0/src/db2.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/ebin/db.app b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/ebin/db.app
new file mode 100644
index 0000000000..7243a0a96a
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/ebin/db.app
@@ -0,0 +1,8 @@
+{application, db,
+ [{description, "ERICSSON NR FOR DB"},
+ {vsn, "1.1"},
+ {modules, [{db1, "1.0"}, {db2, "1.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {db1, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/src/db1.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/src/db1.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/src/db1.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/src/db2.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/src/db2.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-1.1/src/db2.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/ebin/db.app b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/ebin/db.app
new file mode 100644
index 0000000000..202d7f1234
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/ebin/db.app
@@ -0,0 +1,7 @@
+{application, db,
+ [{description, "ERICSSON NR FOR DB"},
+ {vsn, "2.1"},
+ {modules, [{db1, "1.0"}, {db2, "1.0"}]},
+ {registered, []},
+ {applications, []},
+ {mod, {db1, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/ebin/db.appup b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/ebin/db.appup
new file mode 100644
index 0000000000..621838f0b4
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/ebin/db.appup
@@ -0,0 +1,20 @@
+%%
+%% Release upgrade script for db (data base)
+%%
+
+{
+ "2.1",
+%%% Upgrade from:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]},
+ {"1.1", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/src/db1.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/src/db1.erl
new file mode 100644
index 0000000000..7cddf6bb63
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/src/db1.erl
@@ -0,0 +1,13 @@
+-module(db1).
+-vsn("1.0").
+
+-export([a/0]).
+
+a() ->
+ lists:non_existing_func("dummy_list"),
+ b().
+
+b() ->
+ fe2:non_existing_func(),
+ db2:non_existing_func(),
+ fe1:a().
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/src/db2.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/src/db2.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-2.1/src/db2.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/ebin/db.app b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/ebin/db.app
new file mode 100644
index 0000000000..97643561eb
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/ebin/db.app
@@ -0,0 +1,7 @@
+{application, db,
+ [{description, "ERICSSON NR FOR DB"},
+ {vsn, "3.1"},
+ {modules, [db1, db2]},
+ {registered, []},
+ {applications, []},
+ {mod, {db1, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/ebin/db.appup b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/ebin/db.appup
new file mode 100644
index 0000000000..e636eee158
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/ebin/db.appup
@@ -0,0 +1,20 @@
+%%
+%% Release upgrade script for db (data base)
+%%
+
+{
+ "3.1",
+%%% Upgrade from:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]},
+ {"1.1", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"1.0", [{update, db1, soft, soft_purge, soft_purge, []},
+ {update, db2, soft, soft_purge, soft_purge, [db1]}]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/src/db1.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/src/db1.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/src/db1.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/src/db2.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/src/db2.erl
new file mode 100644
index 0000000000..a17640316e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/db-3.1/src/db2.erl
@@ -0,0 +1,2 @@
+-module(db2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/ebin/fe.app b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/ebin/fe.app
new file mode 100644
index 0000000000..c7ba1dfe91
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/ebin/fe.app
@@ -0,0 +1,8 @@
+{application, fe,
+ [{description, "ERICSSON NR FOR FE"},
+ {vsn, "2.1.1"},
+ {modules, [{fe1, "1.0"}, {fe2, "1.0"}, {fe3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {fe2, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe1.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe1.erl
new file mode 100644
index 0000000000..aa5bfa8098
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe1.erl
@@ -0,0 +1,2 @@
+-module(fe1).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe2.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe2.erl
new file mode 100644
index 0000000000..869f3b93c8
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe2.erl
@@ -0,0 +1,2 @@
+-module(fe2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe3.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe3.erl
new file mode 100644
index 0000000000..6473342f52
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1.1/src/fe3.erl
@@ -0,0 +1,2 @@
+-module(fe3).
+-vsn("2.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/ebin/fe.app b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/ebin/fe.app
new file mode 100644
index 0000000000..47ea248720
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/ebin/fe.app
@@ -0,0 +1,8 @@
+{application, fe,
+ [{description, "ERICSSON NR FOR FE"},
+ {vsn, "2.1"},
+ {modules, [{fe1, "1.0"}, {fe2, "1.0"}, {fe3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {env, []},
+ {start, {fe2, start, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe1.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe1.erl
new file mode 100644
index 0000000000..aa5bfa8098
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe1.erl
@@ -0,0 +1,2 @@
+-module(fe1).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe2.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe2.erl
new file mode 100644
index 0000000000..869f3b93c8
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe2.erl
@@ -0,0 +1,2 @@
+-module(fe2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe3.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe3.erl
new file mode 100644
index 0000000000..6473342f52
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-2.1/src/fe3.erl
@@ -0,0 +1,2 @@
+-module(fe3).
+-vsn("2.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/ebin/fe.app b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/ebin/fe.app
new file mode 100644
index 0000000000..0696e2494c
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/ebin/fe.app
@@ -0,0 +1,7 @@
+{application, fe,
+ [{description, "ERICSSON NR FOR FE"},
+ {vsn, "3.1"},
+ {modules, [{fe1, "1.0"}, {fe2, "1.0"}, {fe3, "2.0"}]},
+ {registered, []},
+ {applications, []},
+ {mod, {fe1, []}}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/ebin/fe.appup b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/ebin/fe.appup
new file mode 100644
index 0000000000..2db69eba76
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/ebin/fe.appup
@@ -0,0 +1,27 @@
+%%
+%% Release upgrade script for fe (front end)
+%%
+
+{
+ "3.1",
+%%% Upgrade from:
+ [
+ {"2.1.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge,
+ [fe1, fe2]}
+ ]},
+
+ {"2.1", [{update, fe1, soft, soft_purge, soft_purge, []},
+ {update, fe2, soft, soft_purge, soft_purge, [fe1]},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe1, fe2]}
+ ]}
+ ],
+
+%%% Downgrade to:
+ [
+ {"2.1", [{update, fe2, soft, soft_purge, soft_purge, []},
+ {update, fe3, {advanced, extra}, soft_purge, soft_purge, [fe2]}
+ ]}
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe1.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe1.erl
new file mode 100644
index 0000000000..8aca89b2c7
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe1.erl
@@ -0,0 +1,7 @@
+-module(fe1).
+-vsn("1.0").
+
+-export([a/0]).
+
+a() ->
+ ok.
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe2.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe2.erl
new file mode 100644
index 0000000000..869f3b93c8
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe2.erl
@@ -0,0 +1,2 @@
+-module(fe2).
+-vsn("1.0").
diff --git a/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe3.erl b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe3.erl
new file mode 100644
index 0000000000..6473342f52
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/d_normal/lib/fe-3.1/src/fe3.erl
@@ -0,0 +1,2 @@
+-module(fe3).
+-vsn("2.0").
diff --git a/lib/sasl/test/systools_SUITE_data/lib/kernel/ebin/kernel.app b/lib/sasl/test/systools_SUITE_data/lib/kernel/ebin/kernel.app
new file mode 100644
index 0000000000..e33314be7a
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/lib/kernel/ebin/kernel.app
@@ -0,0 +1,6 @@
+{application, kernel,
+ [{description, "FAKE KERNEL"},
+ {vsn, "1.0"},
+ {modules, []},
+ {registered, []},
+ {applications, []}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/lib/kernel/ebin/kernel.appup b/lib/sasl/test/systools_SUITE_data/lib/kernel/ebin/kernel.appup
new file mode 100644
index 0000000000..c53f07591f
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/lib/kernel/ebin/kernel.appup
@@ -0,0 +1,12 @@
+%%
+%% Fake release upgrade script for kernel
+%%
+
+{
+ "4.4.1",
+ [
+ ],
+
+ [
+ ]
+}.
diff --git a/lib/sasl/test/systools_SUITE_data/lib/stdlib/ebin/stdlib.app b/lib/sasl/test/systools_SUITE_data/lib/stdlib/ebin/stdlib.app
new file mode 100644
index 0000000000..288fcfe74e
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/lib/stdlib/ebin/stdlib.app
@@ -0,0 +1,6 @@
+{application, stdlib,
+ [{description, "FAKE STDLIB"},
+ {vsn, "1.0"},
+ {modules, []},
+ {registered, []},
+ {applications, []}]}.
diff --git a/lib/sasl/test/systools_SUITE_data/lib/stdlib/ebin/stdlib.appup b/lib/sasl/test/systools_SUITE_data/lib/stdlib/ebin/stdlib.appup
new file mode 100644
index 0000000000..b521eb5d71
--- /dev/null
+++ b/lib/sasl/test/systools_SUITE_data/lib/stdlib/ebin/stdlib.appup
@@ -0,0 +1,12 @@
+%%
+%% Fake release upgrade script for stdlib
+%%
+
+{
+ "1.1",
+ [
+ ],
+
+ [
+ ]
+}.
diff --git a/lib/sasl/test/systools_rc_SUITE.erl b/lib/sasl/test/systools_rc_SUITE.erl
new file mode 100644
index 0000000000..bb93f38fa7
--- /dev/null
+++ b/lib/sasl/test/systools_rc_SUITE.erl
@@ -0,0 +1,488 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+-module(systools_rc_SUITE).
+
+-include_lib("test_server/include/test_server.hrl").
+-include_lib("sasl/src/systools.hrl").
+-export([all/0,groups/0,init_per_group/2,end_per_group/2,
+ syntax_check/1, translate/1, translate_app/1]).
+
+%%-----------------------------------------------------------------
+%% erl -compile systools_rc_SUITE @i ../src/ @i ../../test_server/include/
+%% c(systools_rc_SUITE, [{i, "../src"}, {i, "../../test_server/include"}]).
+%%-----------------------------------------------------------------
+all() ->
+ [syntax_check, translate, translate_app].
+
+groups() ->
+ [].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+syntax_check(suite) -> [];
+syntax_check(Config) when is_list(Config) ->
+ PreApps =
+ [#application{name = test,
+ description = "TEST",
+ vsn = "0.1",
+ modules = [{foo,1},{bar,1},{baz,1},{old_mod,1}],
+ regs = [],
+ mod = {sasl, []}},
+ #application{name = snmp,
+ description = "SNMP",
+ vsn = "1.0",
+ modules = [snmp],
+ regs = [],
+ mod = {snmp, []}}],
+ Apps =
+ [#application{name = test,
+ description = "TEST",
+ vsn = "1.0",
+ modules = [{foo,1},{bar,1},{baz,1},{new_mod,1}],
+ regs = [],
+ mod = {sasl, []}}],
+ S1 = [
+ {update, bar, {advanced, extra}, brutal_purge, brutal_purge, []},
+ {update, foo, soft, soft_purge, soft_purge, [bar]},
+ {update, baz, 5000, soft, brutal_purge, brutal_purge, []},
+ {add_module, new_mod},
+ {remove_application, snmp}
+ ],
+ ?line {ok, _} = systools_rc:translate_scripts([S1], Apps, PreApps),
+ S2 = [
+ {apply, {m, f, [a]}},
+ {load_object_code, {tst, "1.0", [new_mod]}},
+ point_of_no_return,
+ {update, bar, {advanced, extra}, brutal_purge, brutal_purge, []},
+ {update, foo, soft, soft_purge, soft_purge, [bar]},
+ {load, {new_mod, soft_purge, soft_purge}},
+ {remove, {old_mod, soft_purge, soft_purge}},
+ {purge, [m1, m2]},
+ {suspend, [m1]},
+ {code_change, [{m1, extra}]},
+ {resume, [m1]},
+ {stop, [m3,m4]},
+ {start, [m3,m4]},
+ {sync_nodes, id1, {m, f, [a]}},
+ {sync_nodes, id2, [cp1, cp2]},
+ {apply, {m,f,[a]}},
+ restart_new_emulator
+ ],
+ ?line {ok, _} = systools_rc:translate_scripts([S2], Apps, []),
+ S3 = [{apply, {m, f, a}}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S3], Apps, []),
+ S3_1 = [{apply, {m, 3, a}}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S3_1], Apps, []),
+ S4 = [{apply, {m, f}}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S4], Apps, []),
+ S5 = [{load_object_code, hej}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S5], Apps, []),
+ S6 = [{load_object_code, {342, "1.0", [foo]}}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S6], Apps, []),
+ S7 = [{load_object_code, {tets, "1.0", foo}}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S7], Apps, []),
+ S8 = [{suspend, [m1]}, point_of_no_return],
+ ?line {error, _, _} = systools_rc:translate_scripts([S8], Apps, []),
+ S9 = [{update, ba, {advanced, extra}, brutal_purge, brutal_purge, []}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S9], Apps, []),
+ S10 = [{update, bar, {advanced, extra}, brutal_purge, brutal_purge, [baz]}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S10], Apps, []),
+ S11 = [{update, bar, {advanced, extra}, brutal_purge, brutal_purge, [ba]}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S11], Apps, []),
+ S12 = [{update, bar, advanced, brutal_purge, brutal_purge, []}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S12], Apps, []),
+ S13 = [{update, bar, {advanced, extra}, rutal_purge, brutal_purge, [ba]}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S13], Apps, []),
+ S14 = [{update, bar, {advanced, extra}, brutal_purge, rutal_purge, [ba]}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S14], Apps, []),
+ S15 = [{update, bar, {advanced, extra}, brutal_purge, brutal_purge, ba}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S15], Apps, []),
+ S16 = [{code_change, [module]}],
+ ?line {error, _, _} = systools_rc:translate_scripts([S16], Apps, []),
+ ?line ok.
+
+translate(suite) -> [];
+translate(Config) when is_list(Config) ->
+ Apps =
+ [#application{name = test,
+ description = "TEST",
+ vsn = "1.0",
+ modules = [{foo,1},{bar,1},{baz,1},
+ {x,1},{y,1},{z,1}],
+ regs = [],
+ mod = {sasl, []}}],
+ %% Simple translation (1)
+ Up1 = [{update, foo, soft, soft_purge, soft_purge, []}],
+ ?line {ok, X1} = systools_rc:translate_scripts([Up1], Apps, []),
+ ?line [{load_object_code, {test,"1.0",[foo]}},
+ point_of_no_return,
+ {suspend,[foo]},
+ {load,{foo,soft_purge,soft_purge}},
+ {resume,[foo]}] = X1,
+
+ %% Simple translation (2)
+ Up2 = [{update, foo, {advanced, extra}, soft_purge, soft_purge, []}],
+ ?line {ok, X2} = systools_rc:translate_scripts([Up2], Apps, []),
+ ?line [{load_object_code, {test,"1.0",[foo]}},
+ point_of_no_return,
+ {suspend,[foo]},
+ {load,{foo,soft_purge,soft_purge}},
+ {code_change, up, [{foo, extra}]},
+ {resume,[foo]}] = X2,
+
+ ?line {ok, X22} = systools_rc:translate_scripts(dn,[Up2], Apps, []),
+ ?line [{load_object_code, {test,"1.0",[foo]}},
+ point_of_no_return,
+ {suspend,[foo]},
+ {code_change, down, [{foo, extra}]},
+ {load,{foo,soft_purge,soft_purge}},
+ {resume,[foo]}] = X22,
+
+ Up2a = [{update, foo, static, default, {advanced,extra},
+ soft_purge, soft_purge, []}],
+ ?line {ok, X2a} = systools_rc:translate_scripts([Up2a], Apps, []),
+ ?line [{load_object_code, {test,"1.0",[foo]}},
+ point_of_no_return,
+ {suspend,[foo]},
+ {load,{foo,soft_purge,soft_purge}},
+ {code_change, up, [{foo, extra}]},
+ {resume,[foo]}] = X2a,
+
+ ?line {ok, X22a} = systools_rc:translate_scripts(dn,[Up2a], Apps, []),
+ ?line [{load_object_code, {test,"1.0",[foo]}},
+ point_of_no_return,
+ {suspend,[foo]},
+ {load,{foo,soft_purge,soft_purge}},
+ {code_change, down, [{foo, extra}]},
+ {resume,[foo]}] = X22a,
+
+ %% Simple dependency (1)
+ Up3 = [{update, foo, soft, soft_purge, soft_purge, [bar]},
+ {update, bar, soft, soft_purge, soft_purge, []}],
+ ?line {ok, X31} = systools_rc:translate_scripts([Up3], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,bar]},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {resume,[bar,foo]}] = X31,
+ ?line {ok, X32} = systools_rc:translate_scripts(dn,[Up3], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,bar]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {resume,[bar,foo]}] = X32,
+
+ Up3a = [{update, foo, static, default, soft, soft_purge, soft_purge, [bar]},
+ {update, bar, static, default, soft, soft_purge, soft_purge, []}],
+ ?line {ok, X3a1} = systools_rc:translate_scripts([Up3a], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo, bar]},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {resume,[bar,foo]}] = X3a1,
+ ?line {ok, X3a2} = systools_rc:translate_scripts(dn,[Up3a], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,bar]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {resume,[bar,foo]}] = X3a2,
+
+ %% Simple dependency (2)
+ Up4 = [{update, foo, soft, soft_purge, soft_purge, [bar]},
+ {update, bar, {advanced, []}, soft_purge, soft_purge, []}],
+ ?line {ok, X4} = systools_rc:translate_scripts(up,[Up4], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,bar]},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {code_change,up,[{bar,[]}]},
+ {resume,[bar,foo]}] = X4,
+
+ ?line {ok, X42} = systools_rc:translate_scripts(dn,[Up4], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,bar]},
+ {code_change,down,[{bar,[]}]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {resume,[bar,foo]}] = X42,
+
+ Up4a = [{update, foo, soft, soft_purge, soft_purge, [bar]},
+ {update, bar, static, infinity, {advanced, []},
+ soft_purge, soft_purge, []}],
+ ?line {ok, X4a} = systools_rc:translate_scripts(up,[Up4a], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,{bar,infinity}]},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {code_change,up,[{bar,[]}]},
+ {resume,[bar,foo]}] = X4a,
+
+ ?line {ok, X42a} = systools_rc:translate_scripts(dn,[Up4a], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,{bar,infinity}]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {code_change,down,[{bar,[]}]},
+ {resume,[bar,foo]}] = X42a,
+
+ Up4b = [{update, foo, soft, soft_purge, soft_purge, [bar]},
+ {update, bar, dynamic, infinity, {advanced, []},
+ soft_purge, soft_purge, []}],
+ ?line {ok, X4b} = systools_rc:translate_scripts(up,[Up4b], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,{bar,infinity}]},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {code_change,up,[{bar,[]}]},
+ {resume,[bar,foo]}] = X4b,
+
+ ?line {ok, X42b} = systools_rc:translate_scripts(dn,[Up4b], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,{bar,infinity}]},
+ {code_change,down,[{bar,[]}]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {resume,[bar,foo]}] = X42b,
+
+ %% More complex dependency
+ Up5 = [{update, foo, soft, soft_purge, soft_purge, [bar, baz]},
+ {update, bar, {advanced, []}, soft_purge, soft_purge, []},
+ {update, baz, {advanced, baz}, soft_purge, soft_purge, [bar]}],
+ ?line {ok, X5} = systools_rc:translate_scripts([Up5], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,baz,bar]}},
+ point_of_no_return,
+ {suspend,[foo,baz,bar]},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{baz,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {code_change,up,[{baz,baz},{bar,[]}]},
+ {resume,[bar,baz,foo]}] = X5,
+
+ ?line {ok, X52} = systools_rc:translate_scripts(dn,[Up5], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,baz,bar]}},
+ point_of_no_return,
+ {suspend,[foo,baz,bar]},
+ {code_change,down,[{baz,baz},{bar,[]}]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{baz,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {resume,[bar,baz,foo]}] = X52,
+
+ Up5a = [{update, foo, dynamic, infinity, soft, soft_purge,
+ soft_purge, [bar, baz]},
+ {update, bar, static, 7000, {advanced, []}, soft_purge,
+ soft_purge, []},
+ {update, baz, dynamic, default, {advanced, baz}, soft_purge,
+ soft_purge, [bar]}],
+ ?line {ok, X5a} = systools_rc:translate_scripts([Up5a], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,baz,bar]}},
+ point_of_no_return,
+ {suspend,[{foo,infinity},baz,{bar,7000}]},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{baz,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {code_change,up,[{baz,baz}, {bar,[]}]},
+ {resume,[bar,baz,foo]}] = X5a,
+
+ ?line {ok, X52a} = systools_rc:translate_scripts(dn,[Up5a], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,baz,bar]}},
+ point_of_no_return,
+ {suspend,[{foo,infinity},baz,{bar,7000}]},
+ {code_change,down,[{baz,baz}]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{baz,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {code_change,down,[{bar,[]}]},
+ {resume,[bar,baz,foo]}] = X52a,
+
+ Up5b = [{update, foo, dynamic, infinity, soft, soft_purge,
+ soft_purge, [bar, baz]},
+ {update, bar, dynamic, 7000, {advanced, []}, soft_purge,
+ soft_purge, []},
+ {update, baz, static, default, {advanced, baz}, soft_purge,
+ soft_purge, [bar]}],
+ ?line {ok, X5b} = systools_rc:translate_scripts([Up5b], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,baz,bar]}},
+ point_of_no_return,
+ {suspend,[{foo,infinity},baz,{bar,7000}]},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{baz,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {code_change,up,[{baz,baz},{bar,[]}]},
+ {resume,[bar,baz,foo]}] = X5b,
+
+ ?line {ok, X52b} = systools_rc:translate_scripts(dn,[Up5b], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,baz,bar]}},
+ point_of_no_return,
+ {suspend,[{foo,infinity},baz,{bar,7000}]},
+ {code_change,down,[{bar,[]}]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{baz,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {code_change,down,[{baz,baz}]},
+ {resume,[bar,baz,foo]}] = X52b,
+
+ %% Simple circular dependency (1)
+ Up6 = [{update, foo, soft, soft_purge, soft_purge, [bar]},
+ {update, bar, soft, soft_purge, soft_purge, [foo]}],
+ ?line {ok, X61} = systools_rc:translate_scripts([Up6], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,bar]},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {resume,[bar,foo]}] = X61,
+ ?line {ok, X62} = systools_rc:translate_scripts(dn,[Up6], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {suspend,[foo,bar]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {resume,[bar,foo]}] = X62,
+
+ %% Simple circular dependency (2)
+ Up7 = [{update, foo, soft, soft_purge, soft_purge, [bar, baz]},
+ {update, bar, soft, soft_purge, soft_purge, [foo]},
+ {update, baz, soft, soft_purge, soft_purge, [bar]}],
+ ?line {ok, X71} = systools_rc:translate_scripts([Up7], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar,baz]}},
+ point_of_no_return,
+ {suspend,[foo,bar,baz]},
+ {load,{baz,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{foo,soft_purge,soft_purge}},
+ {resume,[baz, bar, foo]}] = X71,
+ ?line {ok, X72} = systools_rc:translate_scripts(dn,[Up7], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar,baz]}},
+ point_of_no_return,
+ {suspend,[foo,bar,baz]},
+ {load,{foo,soft_purge,soft_purge}},
+ {load,{bar,soft_purge,soft_purge}},
+ {load,{baz,soft_purge,soft_purge}},
+ {resume,[baz,bar,foo]}] = X72,
+
+ %% Complex circular dependencies, check only order
+ %%
+ Up8 = [{update, foo, soft, soft_purge, soft_purge, [baz]},
+ {update, y, soft, soft_purge, soft_purge, [bar]},
+ {update, x, soft, soft_purge, soft_purge, [y, z]},
+ {update, z, soft, soft_purge, soft_purge, [x]},
+ {update, bar, soft, soft_purge, soft_purge, [baz]},
+ {update, baz, soft, soft_purge, soft_purge, [bar]}],
+ ?line {ok, X8} = systools_rc:translate_scripts([Up8], Apps, []),
+ ?line {value, {suspend, Order}} = lists:keysearch(suspend, 1, X8),
+ ?line Rest = case lists:reverse(Order) of
+ [bar, baz | R] -> R;
+ [baz, bar | R] -> R
+ end,
+ ?line case Rest of
+ [y, z, x, foo] -> ok;
+ [y, x, z, foo] -> ok;
+ [foo, y, z, x] -> ok;
+ [foo, y, x, z] -> ok;
+ [y, foo, z, x] -> ok;
+ [y, foo, x, z] -> ok
+ end,
+
+ %% Check that order among other instructions isn't changed
+ Up9 = [{update, foo, soft, soft_purge, soft_purge, [baz]},
+ {apply, {m, f, [1]}},
+ {update, y, soft, soft_purge, soft_purge, [bar]},
+ {apply, {m, f, [2]}},
+ {update, x, soft, soft_purge, soft_purge, [y, z]},
+ {apply, {m, f, [3]}},
+ {update, z, soft, soft_purge, soft_purge, [x]},
+ {apply, {m, f, [4]}},
+ {update, bar, soft, soft_purge, soft_purge, [baz]},
+ {apply, {m, f, [5]}},
+ {update, baz, soft, soft_purge, soft_purge, [bar]},
+ {apply, {m, f, [6]}}],
+ ?line {ok, X9} = systools_rc:translate_scripts([Up9], Apps, []),
+ Other2 = [X || {apply, {m, f, [X]}} <- X9],
+ ?line [1,2,3,4,5,6] = lists:sort(Other2),
+ ?line ok.
+
+
+translate_app(suite) -> [];
+translate_app(Config) when is_list(Config) ->
+ PreApps =
+ [#application{name = test,
+ description = "TEST",
+ vsn = "1.0",
+ modules = [{foo,1},{bar,1},{baz,1}],
+ regs = [],
+ mod = {sasl, []}},
+ #application{name = pelle,
+ description = "PELLE",
+ vsn = "1.0",
+ modules = [pelle, kalle],
+ regs = [],
+ mod = {pelle, []}}],
+ Apps =
+ [#application{name = test,
+ description = "TEST",
+ vsn = "1.0",
+ modules = [{foo,1},{bar,1},{baz,1}],
+ regs = [],
+ mod = {sasl, []}}],
+ %% Simple translation (1)
+ Up1 = [{add_module, foo},
+ {add_module, bar}],
+ ?line {ok, X1} = systools_rc:translate_scripts([Up1], Apps, []),
+ ?line [{load_object_code,{test,"1.0",[foo,bar]}},
+ point_of_no_return,
+ {load,{foo,brutal_purge,brutal_purge}},
+ {load,{bar,brutal_purge,brutal_purge}}] = X1,
+
+ %% Simple translation (2)
+ Up2 = [{add_application, test}],
+ ?line {ok, X2} = systools_rc:translate_scripts([Up2], Apps, []),
+io:format("X2=~p~n", [X2]),
+ ?line [{load_object_code,{test,"1.0",[foo,bar,baz]}},
+ point_of_no_return,
+ {load,{foo,brutal_purge,brutal_purge}},
+ {load,{bar,brutal_purge,brutal_purge}},
+ {load,{baz,brutal_purge,brutal_purge}},
+ {apply,{application,start,[test,permanent]}}] = X2,
+
+ %% Simple translation (3)
+ Up3 = [{remove_application, pelle}],
+ ?line {ok, X3} = systools_rc:translate_scripts([Up3], Apps, PreApps),
+ ?line [point_of_no_return,
+ {apply,{application,stop,[pelle]}},
+ {remove,{pelle,brutal_purge,brutal_purge}},
+ {remove,{kalle,brutal_purge,brutal_purge}},
+ {purge,[pelle,kalle]},
+ {apply,{application,unload,[pelle]}}] = X3,
+ ?line ok.
diff --git a/lib/snmp/doc/src/files.mk b/lib/snmp/doc/src/files.mk
index bd94cd6bac..61c91c9729 100644
--- a/lib/snmp/doc/src/files.mk
+++ b/lib/snmp/doc/src/files.mk
@@ -157,4 +157,5 @@ MIB_FILES = \
$(MIBSDIR)/SNMP-VIEW-BASED-ACM-MIB.mib \
$(MIBSDIR)/SNMP-USM-AES-MIB.mib \
$(MIBSDIR)/INET-ADDRESS-MIB.mib \
+ $(MIBSDIR)/TRANSPORT-ADDRESS-MIB.mib \
$(MIBSDIR)/OTP-SNMPEA-MIB.mib
diff --git a/lib/snmp/doc/src/notes.xml b/lib/snmp/doc/src/notes.xml
index 2efeb8ae3f..6a20d8ee3a 100644
--- a/lib/snmp/doc/src/notes.xml
+++ b/lib/snmp/doc/src/notes.xml
@@ -33,6 +33,116 @@
</header>
<section>
+ <title>SNMP Development Toolkit 4.20</title>
+ <p>Version 4.20 supports code replacement in runtime from/to
+ version 4.19 and 4.18.</p>
+
+ <section>
+ <title>Improvements and new features</title>
+<!--
+ <p>-</p>
+-->
+ <list type="bulleted">
+ <item>
+ <p>[agent] Added support for sending traps to IPv6 targets. </p>
+ <p>See the
+ <seealso marker="snmp_agent_config_files#target_addr">target address config file</seealso>,
+ the <seealso marker="snmpa_conf#target_addr_entry">target_addr_entry/11</seealso> function or
+ <seealso marker="snmp_target_mib#add_addr">add_addr/11</seealso> for more info. </p>
+ <p>Own Id: OTP-9088</p>
+ <p>Aux Id: Seq 11790</p>
+ </item>
+
+
+ <item>
+ <p>[agent] To be able to handle multiple engine-id(s) when
+ sending trap(s), the function
+ <seealso marker="snmp_community_mib#add_community">
+ add_community/6</seealso> has been added. </p>
+ <p>Own Id: OTP-9119</p>
+ <p>Aux Id: Seq 11792</p>
+ </item>
+
+ <item>
+ <p>[manager] The API for snmp requests has been augmented to
+ allow the caller to override some configuration. </p>
+ <p>This has been done by introducing a new set of API functions, see
+ <seealso marker="snmpm#sync_get2">sync_get2/3,4</seealso>,
+ <seealso marker="snmpm#async_get2">async_get2/3,4</seealso>,
+ <seealso marker="snmpm#sync_get_next2">sync_get_next2/3,4</seealso>,
+ <seealso marker="snmpm#async_get_next2">async_get_next2/3,4</seealso>,
+ <seealso marker="snmpm#sync_get_bulk2">sync_get_bulk2/5,6</seealso>,
+ <seealso marker="snmpm#async_get_bulk2">async_get_bulk2/5,6</seealso>,
+ <seealso marker="snmpm#sync_set2">sync_set2/3,4</seealso> and
+ <seealso marker="snmpm#async_set2">async_set2/3,4</seealso>
+ for more info. </p>
+ <p>Own Id: OTP-9162</p>
+ </item>
+
+ <item>
+ <p>[manager] The old API functions (for get and set
+ requests:
+ snmpm:g/3,4,5,6,7, snmpm:ag/3,4,5,6,7,
+ snmpm:gn/3,4,5,6,7, snmpm:agn/3,4,5,6,7,
+ snmpm:s/3,4,5,6,7, snmpm:s/3,4,5,6,7,
+ snmpm:gb/5,6,7,8,9 and snmpm:agb/5,6,7,8,9)
+ are now officially deprecated.
+ They will be removed as of R16B. </p>
+ <p>Own Id: OTP-9174</p>
+ </item>
+
+ <item>
+ <p>[agent] Pass extra info through the agent to the net-if
+ process when sending notifications. </p>
+ <p>See
+ <seealso marker="snmpa#send_notification2">
+ snmpa:send_notification2/3</seealso> for more info.
+ See also the incomming net-if messages when sending a
+ <seealso marker="snmp_agent_netif#im_send_pdu">trap</seealso>
+ (send_pdu message) and
+ <seealso marker="snmp_agent_netif#im_send_pdu_req">
+ notification</seealso> (send_pdu_req message). </p>
+ <p>Own Id: OTP-9183</p>
+ <p>Aux Id: Seq 11817</p>
+ </item>
+
+ <item>
+ <p>Added type specs for functions that do not return. </p>
+ <p>Kostis Sagonas</p>
+ <p>Own Id: OTP-9208</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+<!--
+ <p>-</p>
+-->
+
+ <list type="bulleted">
+ <item>
+ <p>Fixed endode/decode of values of type <c>Counter32</c>. </p>
+ <p>This type (<c>Counter32</c>) is an unsigned integer 32,
+ but is actually encoded as an signed integer 32.
+ The encode/decode functions however, treated it as if it was
+ encodeded as an unsigned integer 32. </p>
+ <p>Own Id: OTP-9022</p>
+ </item>
+
+ </list>
+ </section>
+
+
+ <section>
+ <title>Incompatibilities</title>
+ <p>-</p>
+ </section>
+
+ </section> <!-- 4.20 -->
+
+
+ <section>
<title>SNMP Development Toolkit 4.19</title>
<p>Version 4.19 supports code replacement in runtime from/to
version 4.18.</p>
@@ -126,6 +236,7 @@ snmp_view_basec_acm_mib:vacmAccessTable(set, RowIndex, Cols).
</section> <!-- 4.19 -->
+
<section>
<title>SNMP Development Toolkit 4.18</title>
<p>Version 4.18 supports code replacement in runtime from/to
@@ -226,7 +337,7 @@ snmp_view_basec_acm_mib:vacmAccessTable(set, RowIndex, Cols).
<p>The config utility
(<seealso marker="snmp#config">snmp:config/0</seealso>)
generated a default notify.conf
- with a bad name for the starndard trap entry (was "stadard trap",
+ with a bad name for the standard trap entry (was "stadard trap",
but should have been "standard trap"). This has been corrected. </p>
<p>Kenji Rikitake</p>
<p>Own Id: OTP-8433</p>
@@ -430,7 +541,7 @@ snmp_view_basec_acm_mib:vacmAccessTable(set, RowIndex, Cols).
<p>The config utility
(<seealso marker="snmp#config">snmp:config/0</seealso>)
generated a default notify.conf
- with a bad name for the starndard trap entry (was "stadard trap",
+ with a bad name for the standard trap entry (was "stadard trap",
but should have been "standard trap"). This has been corrected. </p>
<p>Kenji Rikitake</p>
<p>Own Id: OTP-8433</p>
diff --git a/lib/snmp/doc/src/snmp_agent_config_files.xml b/lib/snmp/doc/src/snmp_agent_config_files.xml
index b62269d506..bd5c537522 100644
--- a/lib/snmp/doc/src/snmp_agent_config_files.xml
+++ b/lib/snmp/doc/src/snmp_agent_config_files.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE chapter SYSTEM "chapter.dtd">
<chapter>
@@ -367,56 +367,50 @@
<marker id="target_addr"></marker>
<title>Target Address Definitions</title>
<p>The information about Target Address Definitions should be
- stored in a file called
- <c>target_addr.conf</c>.
- </p>
+ stored in a file called <c>target_addr.conf</c>. </p>
<p>The corresponding tables are <c>snmpTargetAddrTable</c> in the
- SNMP-TARGET-MIB and <c>snmpTargetAddrExtTable</c> in the SNMP-COMMUNITY-MIB.
- </p>
- <p>Each entry is a term:
- </p>
- <p><c>{TargetName, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId}.</c> or <br></br>
-<c>{TargetName, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}.</c></p>
+ SNMP-TARGET-MIB and <c>snmpTargetAddrExtTable</c> in the
+ SNMP-COMMUNITY-MIB. </p>
+ <p>Each entry is a term: </p>
+ <p><c>{TargetName, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId}.</c> <br></br> or <br></br>
+<c>{TargetName, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}.</c> <br></br> or <br></br>
+<c>{TargetName, Domain, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}.</c></p>
<list type="bulleted">
<item>
<p><c>TargetName</c> is a unique non-empty string.
</p>
</item>
<item>
- <p><c>Ip</c> is a list of four integers.
- </p>
+ <p><c>Domain</c> is one of the atoms:
+ <c>transportDomainUdpIpv4</c> | <c>transportDomainUdpIpv6</c>. </p>
</item>
<item>
- <p><c>Udp</c> is an integer.
- </p>
+ <p><c>Ip</c> is a list of four or eight integers. </p>
</item>
<item>
- <p><c>Timeout</c> is an integer.
- </p>
+ <p><c>Udp</c> is an integer. </p>
</item>
<item>
- <p><c>RetryCount</c> is an integer.
- </p>
+ <p><c>Timeout</c> is an integer. </p>
</item>
<item>
- <p><c>TagList</c> is a string.
- </p>
+ <p><c>RetryCount</c> is an integer. </p>
</item>
<item>
- <p><c>ParamsName</c> is a string.
- </p>
+ <p><c>TagList</c> is a string. </p>
</item>
<item>
- <p><c>EngineId</c> is a string or the atom <c>discovery</c>.
- </p>
+ <p><c>ParamsName</c> is a string. </p>
</item>
<item>
- <p><c>TMask</c> is a string of size 0, or size 6 (default: []).
- </p>
+ <p><c>EngineId</c> is a string or the atom <c>discovery</c>. </p>
</item>
<item>
- <p><c>MaxMessageSize</c> is an integer (default: 2048).
- </p>
+ <p><c>TMask</c> is a list of integer() of size 0,
+ size 6 or size 10 (default: []). </p>
+ </item>
+ <item>
+ <p><c>MaxMessageSize</c> is an integer (default: 2048). </p>
</item>
</list>
<p>Note that if <c>EngineId</c> has the value <c>discovery</c>,
@@ -429,14 +423,10 @@
<marker id="target_params"></marker>
<title>Target Parameters Definitions</title>
<p>The information about Target Parameters Definitions should be
- stored in a file called
- <c>target_params.conf</c>.
- </p>
+ stored in a file called <c>target_params.conf</c>. </p>
<p>The corresponding table is <c>snmpTargetParamsTable</c> in the
- SNMP-TARGET-MIB.
- </p>
- <p>Each entry is a term:
- </p>
+ SNMP-TARGET-MIB. </p>
+ <p>Each entry is a term: </p>
<p><c>{ParamsName, MPModel, SecurityModel, SecurityName, SecurityLevel}.</c></p>
<list type="bulleted">
<item>
diff --git a/lib/snmp/doc/src/snmp_agent_netif.xml b/lib/snmp/doc/src/snmp_agent_netif.xml
index 1f2dbe80db..d751740a82 100644
--- a/lib/snmp/doc/src/snmp_agent_netif.xml
+++ b/lib/snmp/doc/src/snmp_agent_netif.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE chapter SYSTEM "chapter.dtd">
<chapter>
@@ -65,16 +65,19 @@
</section>
<section>
+ <marker id="messages"></marker>
<title>Messages</title>
<p>The section <em>Messages</em> describes mandatory messages, which
Net if must send and be able to receive.
</p>
<section>
+ <marker id="outgoing_messages"></marker>
<title>Outgoing Messages</title>
<p>Net if must send the following message when it receives an
- SNMP PDU from the network that is aimed for the MasterAgent:
- </p>
+ SNMP PDU from the network that is aimed for the MasterAgent:
+ </p>
+ <marker id="om_snmp_pdu"></marker>
<pre>
MasterAgent ! {snmp_pdu, Vsn, Pdu, PduMS, ACMData, From, Extra}
</pre>
@@ -106,9 +109,10 @@ MasterAgent ! {snmp_pdu, Vsn, Pdu, PduMS, ACMData, From, Extra}
the request.</item>
</list>
<p>The following message is used to report that a response to a
- request has been received. The only request an agent can send
- is an Inform-Request.
- </p>
+ request has been received. The only request an agent can send
+ is an Inform-Request.
+ </p>
+ <marker id="om_snmp_response_received"></marker>
<pre>
Pid ! {snmp_response_received, Vsn, Pdu, From}
</pre>
@@ -131,119 +135,153 @@ Pid ! {snmp_response_received, Vsn, Pdu, From}
</section>
<section>
+ <marker id="incoming_messages"></marker>
<title>Incoming Messages</title>
<p>This section describes the incoming messages which a Net if
- process must be able to receive.
- </p>
+ process must be able to receive.
+ </p>
<list type="bulleted">
<item>
+ <marker id="im_snmp_response"></marker>
<p><c>{snmp_response, Vsn, Pdu, Type, ACMData, To, Extra}</c></p>
<p>This message is sent to the Net if process from a master
agent as a response to a previously received request.
</p>
<list type="bulleted">
- <item><c>Vsn</c> is either <c>'version-1'</c>,
- <c>'version-2'</c>, or <c>'version-3'</c>.
+ <item>
+ <p><c>Vsn</c> is either <c>'version-1'</c>,
+ <c>'version-2'</c>, or <c>'version-3'</c>. </p>
</item>
- <item><c>Pdu</c> is an SNMP PDU record (as defined in
- snmp_types.hrl) with the SNMP response.
+ <item>
+ <p><c>Pdu</c> is an SNMP PDU record (as defined in
+ snmp_types.hrl) with the SNMP response. </p>
</item>
- <item><c>Type</c> is the <c>#pdu.type</c> of the original
- request.
+ <item>
+ <p><c>Type</c> is the <c>#pdu.type</c>
+ of the original request. </p>
</item>
- <item><c>ACMData</c> is data used by the Access Control
- Module in use. Normally this is just sent to
- <c>snmpa_mpd:generate_response_message</c> (see Reference Manual).
+ <item>
+ <p><c>ACMData</c> is data used by the Access Control
+ Module in use. Normally this is just sent to
+ <c>snmpa_mpd:generate_response_message</c>
+ (see Reference Manual). </p>
</item>
- <item><c>To</c> is the destination address. If UDP over IP
- is used, this should be a 2-tuple <c>{IP, UDPport}</c>,
- where <c>IP</c> is a 4-tuple with the IP address, and
- <c>UDPport</c> is an integer.
+ <item>
+ <p><c>To</c> is the destination address. If UDP over IP
+ is used, this should be a 2-tuple <c>{IP, UDPport}</c>,
+ where <c>IP</c> is a 4-tuple with the IP address, and
+ <c>UDPport</c> is an integer. </p>
</item>
- <item><c>Extra</c> is the term that the Net if process
- sent to the agent when the request was sent to the agent.
+ <item>
+ <p><c>Extra</c> is the term that the Net if process
+ sent to the agent when the request was sent to the agent. </p>
</item>
</list>
</item>
<item>
+ <marker id="im_discarded_pdu"></marker>
<p><c>{discarded_pdu, Vsn, ReqId, ACMData, Variable, Extra}</c></p>
<p>This message is sent from a master agent if it for some
- reason decided to discard the pdu.
- </p>
+ reason decided to discard the pdu. </p>
<list type="bulleted">
- <item><c>Vsn</c> is either <c>'version-1'</c>,
- <c>'version-2'</c>, or <c>'version-3'</c>.
+ <item>
+ <p><c>Vsn</c> is either <c>'version-1'</c>,
+ <c>'version-2'</c>, or <c>'version-3'</c>. </p>
</item>
- <item><c>ReqId</c> is the request id of the original
- request.
+ <item>
+ <p><c>ReqId</c> is the request id of the original request. </p>
</item>
- <item><c>ACMData</c> is data used by the Access Control
- Module in use. Normally this is just sent to
- <c>snmpa_mpd:generate_response_message</c> (see Reference Manual).
+ <item>
+ <p><c>ACMData</c> is data used by the Access Control
+ Module in use. Normally this is just sent to
+ <c>snmpa_mpd:generate_response_message</c>
+ (see Reference Manual). </p>
</item>
- <item><c>Variable</c> is the name of an snmp counter that
- represents the error, e.g. <c>snmpInBadCommunityUses</c>.
+ <item>
+ <p><c>Variable</c> is the name of an snmp counter that
+ represents the error, e.g. <c>snmpInBadCommunityUses</c>. </p>
</item>
- <item><c>Extra</c> is the term that the Net if process
- sent to the agent when the request was sent to the agent.
+ <item>
+ <p><c>Extra</c> is the term that the Net if process
+ sent to the agent when the request was sent to the agent. </p>
</item>
</list>
</item>
<item>
- <p><c>{send_pdu, Vsn, Pdu, MsgData, To}</c></p>
+ <marker id="im_send_pdu"></marker>
+ <p><c>{send_pdu, Vsn, Pdu, MsgData, To, Extra}</c></p>
<p>This message is sent from a master agent when a trap is
- to be sent.
- </p>
+ to be sent. </p>
<list type="bulleted">
- <item><c>Vsn</c> is either <c>'version-1'</c>,
- <c>'version-2'</c>, or <c>'version-3'</c>.
+ <item>
+ <p><c>Vsn</c> is either <c>'version-1'</c>,
+ <c>'version-2'</c>, or <c>'version-3'</c>.</p>
</item>
- <item><c>Pdu</c> is an SNMP PDU record (as defined in
- snmp_types.hrl) with the SNMP response.
+ <item>
+ <p><c>Pdu</c> is an SNMP PDU record (as defined in
+ snmp_types.hrl) with the SNMP response. </p>
+ </item>
+ <item>
+ <p><c>MsgData</c> is the message specific data used in
+ the SNMP message. This value is normally sent to
+ <c>snmpa_mpd:generate_message/4</c>. In SNMPv1 and
+ SNMPv2c, this message data is the community string. In
+ SNMPv3, it is the context information. </p>
</item>
- <item><c>MsgData</c> is the message specific data used in
- the SNMP message. This value is normally sent to
- <c>snmpa_mpd:generate_message/4</c>. In SNMPv1 and
- SNMPv2c, this message data is the community string. In
- SNMPv3, it is the context information.
+ <item>
+ <p><c>To</c> is a list of the destination addresses and
+ their corresponding security parameters. This value is
+ normally sent to <c>snmpa_mpd:generate_message/4</c>. </p>
</item>
- <item><c>To</c> is a list of the destination addresses and
- their corresponding security parameters. This value is
- normally sent to <c>snmpa_mpd:generate_message/4</c>.
+ <item>
+ <p><c>Extra</c> is any term that the notification sender
+ wishes to pass to the Net if process when sending a notification
+ (see
+ <seealso marker="snmpa#send_notification2">send notification
+ </seealso> for more info). </p>
</item>
</list>
</item>
<item>
- <p><c>{send_pdu_req, Vsn, Pdu, MsgData, To, Pid}</c></p>
- <p>This <marker id="message"></marker>
- message is sent from a master
- agent when a request is
- to be sent. The only request an agent can send is
- Inform-Request. The net if process needs to remember the
- request id and the Pid, and when a response is received for
- the request id, send it to Pid, using a
- <c>snmp_response_received</c> message.
- </p>
- <list type="bulleted">
- <item><c>Vsn</c> is either <c>'version-1'</c>,
- <c>'version-2'</c>, or <c>'version-3'</c>.
- </item>
- <item><c>Pdu</c> is an SNMP PDU record (as defined in
- snmp_types.hrl) with the SNMP response.
- </item>
- <item><c>MsgData</c> is the message specific data used in
- the SNMP message. This value is normally sent to
- <c>snmpa_mpd:generate_message/4</c>. In SNMPv1 and
- SNMPv2c, this message data is the community string. In
- SNMPv3, it is the context information.
+ <marker id="im_send_pdu_req"></marker>
+ <p><c>{send_pdu_req, Vsn, Pdu, MsgData, To, Pid, Extra}</c></p>
+ <p>This message is sent from a master agent when a request is to
+ be sent. The only request an agent can send is Inform-Request.
+ The net if process needs to remember the request id and the Pid,
+ and when a response is received for the request id, send it to Pid,
+ using a <c>snmp_response_received</c> message. </p>
+ <list type="bulleted">
+ <item>
+ <p><c>Vsn</c> is either <c>'version-1'</c>,
+ <c>'version-2'</c>, or <c>'version-3'</c>.</p>
+ </item>
+ <item>
+ <p><c>Pdu</c> is an SNMP PDU record (as defined in
+ snmp_types.hrl) with the SNMP response. </p>
+ </item>
+ <item>
+ <p><c>MsgData</c> is the message specific data used in
+ the SNMP message. This value is normally sent to
+ <c>snmpa_mpd:generate_message/4</c>. In SNMPv1 and
+ SNMPv2c, this message data is the community string. In
+ SNMPv3, it is the context information. </p>
+ </item>
+ <item>
+ <p><c>To</c> is a list of the destination addresses and
+ their corresponding security parameters. This value is
+ normally sent to <c>snmpa_mpd:generate_message/4</c>. </p>
+ </item>
+ <item>
+ <p><c>Pid</c> is a process identifier. </p>
+ </item>
+ <item>
+ <p><c>Extra</c> is any term that the notification sender
+ wishes to pass to the Net if process when sending a notification
+ (see
+ <seealso marker="snmpa#send_notification2">send notification
+ </seealso> for more info). </p>
</item>
- <item><c>To</c> is a list of the destination addresses and
- their corresponding security parameters. This value is
- normally sent to <c>snmpa_mpd:generate_message/4</c>.
- </item>
- <item><c>Pid</c> is a process identifier.
- </item>
- </list>
+ </list>
</item>
</list>
</section>
diff --git a/lib/snmp/doc/src/snmp_community_mib.xml b/lib/snmp/doc/src/snmp_community_mib.xml
index 7c7386af19..5e7bca3e27 100644
--- a/lib/snmp/doc/src/snmp_community_mib.xml
+++ b/lib/snmp/doc/src/snmp_community_mib.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE erlref SYSTEM "erlref.dtd">
<erlref>
<header>
<copyright>
- <year>1999</year><year>2009</year>
+ <year>1999</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -35,11 +35,13 @@
<modulesummary>Instrumentation Functions for SNMP-COMMUNITY-MIB</modulesummary>
<description>
<p>The module <c>snmp_community_mib</c> implements the instrumentation
- functions for the
- SNMP-COMMUNITY-MIB, and functions for configuring the database.
- </p>
+ functions for the SNMP-COMMUNITY-MIB, and functions for configuring the
+ database. </p>
<p>The configuration files are described in the SNMP User's Manual.</p>
+
+ <marker id="configure"></marker>
</description>
+
<funcs>
<func>
<name>configure(ConfDir) -> void()</name>
@@ -68,8 +70,11 @@
</p>
<p>The configuration file read is: <c>community.conf</c>.
</p>
+
+ <marker id="reconfigure"></marker>
</desc>
</func>
+
<func>
<name>reconfigure(ConfDir) -> void()</name>
<fsummary>Configure the SNMP-COMMUNITY-MIB</fsummary>
@@ -96,28 +101,35 @@
where the configuration files are found.
</p>
<p>The configuration file read is: <c>community.conf</c>.</p>
+
<marker id="add_community"></marker>
</desc>
</func>
+
<func>
<name>add_community(Idx, CommName, SecName, CtxName, TransportTag) -> Ret</name>
+ <name>add_community(Idx, CommName, SecName, EngineId, CtxName, TransportTag) -> Ret</name>
<fsummary>Added one community</fsummary>
<type>
<v>Idx = string()</v>
<v>CommName = string()</v>
<v>SecName = string()</v>
+ <v>EngineId = string()</v>
<v>CtxName = string()</v>
<v>TransportTag = string()</v>
<v>Ret = {ok, Key} | {error, Reason}</v>
<v>Key = term()</v>
- <v>Reason = term()</v>
+ <v>Reason = term()</v>
</type>
<desc>
<p>Adds a community to the agent config.
- Equivalent to one line in the <c>community.conf</c> file.</p>
+ Equivalent to one line in the <c>community.conf</c> file.</p>
+ <p>With the <c>EngineId</c> argument it is possible to
+ override the configured engine-id (SNMP-FRAMEWORK-MIB).</p>
<marker id="delete_community"></marker>
</desc>
</func>
+
<func>
<name>delete_community(Key) -> Ret</name>
<fsummary>Delete one community</fsummary>
diff --git a/lib/snmp/doc/src/snmp_target_mib.xml b/lib/snmp/doc/src/snmp_target_mib.xml
index 4a36be19a3..d5151d41de 100644
--- a/lib/snmp/doc/src/snmp_target_mib.xml
+++ b/lib/snmp/doc/src/snmp_target_mib.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE erlref SYSTEM "erlref.dtd">
<erlref>
<header>
<copyright>
- <year>1998</year><year>2009</year>
+ <year>1998</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -39,9 +39,21 @@
and functions for configuring the database. </p>
<p>The configuration files are described in the SNMP User's Manual.</p>
- <marker id="configure"></marker>
+ <marker id="types"></marker>
</description>
+ <section>
+ <title>DATA TYPES</title>
+ <code type="none"><![CDATA[
+transportDomain() = transportDomainUdpIpv4 | transportDomainUdpIpv6
+transportAddressIPv4() = [integer()], length 4
+transportAddressIPv6() = [integer()], length 8
+transportAddressMask() = [integer()], length 0 (default), 6 (IPv4) or 10 (IPv6)
+ ]]></code>
+
+ <marker id="configure"></marker>
+ </section>
+
<funcs>
<func>
<name>configure(ConfDir) -> void()</name>
@@ -118,17 +130,19 @@
<func>
<name>add_addr(Name, Ip, Port, Timeout, Retry, TagList, Params, EngineId, TMask, MMS) -> Ret</name>
+ <name>add_addr(Name, Domain, Ip, Port, Timeout, Retry, TagList, Params, EngineId, TMask, MMS) -> Ret</name>
<fsummary>Add one target address definition</fsummary>
<type>
<v>Name = string()</v>
- <v>Ip = [integer()], length 4</v>
+ <v>Domain = transportDomain()</v>
+ <v>Ip = transportAddressIPv4() | transportAddressIPv6() (depends on the value of Domain)</v>
<v>Port = integer()</v>
<v>Timeout = integer()</v>
<v>Retry = integer()</v>
<v>TagList = string()</v>
<v>ParamsName = string()</v>
<v>EngineId = string()</v>
- <v>TMask = string(), length 0 or 6</v>
+ <v>TMask = transportAddressMask() (depends on Domain)</v>
<v>MMS = integer()</v>
<v>Ret = {ok, Key} | {error, Reason}</v>
<v>Key = term()</v>
diff --git a/lib/snmp/doc/src/snmpa.xml b/lib/snmp/doc/src/snmpa.xml
index 1d680e80f5..27d89ea4e3 100644
--- a/lib/snmp/doc/src/snmpa.xml
+++ b/lib/snmp/doc/src/snmpa.xml
@@ -872,10 +872,138 @@ snmp_agent:register_subagent(SA1,[1,2,3], SA2).
then that sub-agent will be unregistered from all trees in
<c>Agent</c>. </p>
- <marker id="send_notification"></marker>
+ <marker id="send_notification2"></marker>
</desc>
</func>
+
+ <func>
+ <name>send_notification2(Agent, Notification, SendOpts) -> void()</name>
+ <fsummary>Send notification</fsummary>
+ <type>
+ <v>Agent = pid() | atom()</v>
+ <v>Notification = atom()</v>
+ <v>SendOpts = [send_option()]</v>
+ <v>send_option() = {receiver, receiver()} | {name, notify_name()} | {context, context_name()} | {varbinds, varbinds()} | {local_engine_id, string()} | {extra, extra_info()}</v>
+ <v>receiver() = no_receiver | {tag(), tag_receiver()} | notification_delivery_info()</v>
+ <v>tag() = term(()</v>
+ <v>tag_receiver() = pid() | registered_name() | {Mod, Func, Args}</v>
+ <v>registered_name() = atom()</v>
+ <v>Mod = atom()</v>
+ <v>Func = atom()</v>
+ <v>Args = list()</v>
+ <v>notify_name() = string()</v>
+ <v>context_name() = string()</v>
+ <v>varbinds() = [varbind()]</v>
+ <v>varbind() = {variable(), value()} | {column(), row_index(), value()} | {oid(), value()}</v>
+ <v>variable() = atom()</v>
+ <v>value() = term()</v>
+ <v>column() = atom()</v>
+ <v>row_index() = [int()]</v>
+ <v>extra_info() = term()</v>
+ </type>
+ <desc>
+ <p>Send the notification <c>Notification</c> to the management
+ targets defined for notify-name (<c>name</c>) in the
+ <c>snmpNotifyTable</c> in SNMP-NOTIFICATION-MIB from the
+ specified <c>context</c>. </p>
+
+ <p>If no <c>name</c> is specified (or if it is <c>""</c>), the
+ notification is sent to all management targets. </p>
+
+ <p>If no <c>context</c> is specified, the default context, <c>""</c>,
+ is used. </p>
+
+ <p>The send option <c>receiver</c> specifies where information
+ about delivery of Inform-Requests should be sent. The agent
+ sends Inform-Requests and waits for acknowledgments from the
+ management targets.
+ The <c>receiver</c> can have three values: </p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>no_receiver</c> - No information is delivered. </p>
+ </item>
+
+ <item>
+ <p><c>notification_delivery_info()</c> - The information is
+ delivered via a function call according to this data. See the
+ <seealso marker="#data_types">DATA TYPES</seealso> section
+ above for details. </p>
+ </item>
+
+ <item>
+ <p><c>{tag(), tag_receiver()}</c> - The information is delivered
+ either via messages or via a function call according to the value
+ of <c>tag_receiver()</c>. </p>
+ <p>Delivery is done differently depending on the value
+ of <c>tag_receiver()</c>: </p>
+
+ <list>
+ <item>
+ <p><c>pid() | registered_name()</c> - The info will be delivered in
+ the following messages: </p>
+ <list>
+ <item>
+ <p><c>{snmp_targets, tag(), Addresses}</c></p>
+ <p>This informs the user which target addresses the
+ notification was sent to. </p>
+ </item>
+ <item>
+ <p><c>{snmp_notification, tag(), {got_response, Address}}</c></p>
+ <p>This informs the user that this target address
+ acknowledged the notification. </p>
+ </item>
+ <item>
+ <p><c>{snmp_notification, tag(), {no_response, Address}}</c></p>
+ <p>This informs the user that this target address
+ did not acknowledge the notification. </p>
+ </item>
+ </list>
+ <p>The notification is sent as an Inform-Request to each
+ target address in <c>Addresses</c> and if there are no
+ targets for which an Inform-Request is sent, <c>Addresses</c>
+ is the empty list <c>[]</c>. </p>
+ <p>The <c>tag_receiver()</c> will first be sent the
+ <c>snmp_targets</c> message, and then for each address in
+ <c>Addresses</c> list, one of the two <c>snmp_notification</c>
+ messages. </p>
+ </item>
+
+ <item>
+ <p><c>{Mod, Func, Args}</c> - The info will be delivered via
+ the function call: </p>
+ <p><c>Mod:Func([Msg | Args])</c></p>
+ <p>where <c>Msg</c> has the same content and purpose as the
+ messages descrived above.</p>
+ </item>
+
+ </list>
+ </item>
+ </list>
+
+ <note>
+ <p>The <c>extra</c> info is not normally interpreted by the agent,
+ instead it is passed through to the
+ <seealso marker="snmp_agent_netif">net-if</seealso> process. It is
+ up to the implementor of that process to make use of this data. </p>
+ <p>The version of net-if provided by this application makes no use
+ of this data, with one exception:
+ Any tuple containing the atom
+ <c>snmpa_default_notification_extra_info</c>
+ may be used by the agent and is therefor <em>reserved</em>. </p>
+ <p>See the net-if incomming messages for sending a
+ <seealso marker="snmp_agent_netif#im_send_pdu">
+ trap</seealso> and
+ <seealso marker="snmp_agent_netif#im_send_pdu_req">
+ notification</seealso> for more info. </p>
+ </note>
+
+ <marker id="send_notification"></marker>
+ </desc>
+ </func>
+
+
<func>
<name>send_notification(Agent, Notification, Receiver)</name>
<name>send_notification(Agent, Notification, Receiver, Varbinds)</name>
@@ -907,18 +1035,19 @@ snmp_agent:register_subagent(SA1,[1,2,3], SA2).
</type>
<desc>
<p>Sends the notification <c>Notification</c> to the
- management targets defined for <c>NotifyName</c> in the
- <c>snmpNotifyTable</c> in SNMP-NOTIFICATION-MIB from the
- specified context. If no <c>NotifyName</c> is specified (or
- if it is <c>""</c>), the notification is sent to all
- management targets (<c>Addresses</c> below). If no <c>ContextName</c>
- is specified, the default <c>""</c> context is used.
- </p>
+ management targets defined for <c>NotifyName</c> in the
+ <c>snmpNotifyTable</c> in SNMP-NOTIFICATION-MIB from the
+ specified context. </p>
+ <p>If no <c>NotifyName</c> is specified (or if it is <c>""</c>),
+ the notification is sent to all management targets
+ (<c>Addresses</c> below). </p>
+ <p>If no <c>ContextName</c> is specified, the default <c>""</c>
+ context is used. </p>
<p>The parameter <c>Receiver</c> specifies where information
- about delivery of Inform-Requests should be sent. The agent
- sends Inform-Requests and waits for acknowledgments from the
- managers. <c>Receiver</c> can have three values: </p>
+ about delivery of Inform-Requests should be sent. The agent
+ sends Inform-Requests and waits for acknowledgments from the
+ managers. <c>Receiver</c> can have three values: </p>
<list type="bulleted">
<item>
@@ -926,17 +1055,18 @@ snmp_agent:register_subagent(SA1,[1,2,3], SA2).
</item>
<item>
- <p><c>{Tag, Recv}</c> - The information is delivered either via messages
- or via a function call according to the value of <c>Recv</c>. </p>
- </item>
-
- <item>
<p><c>notification_delivery_info()</c> - The information is
delivered via a function call according to this data. See the
<seealso marker="#data_types">DATA TYPES</seealso> section
above for details. </p>
</item>
+ <item>
+ <p><c>{Tag, Recv}</c> - The information is delivered either via
+ messages or via a function call according to the value of
+ <c>Recv</c>. </p>
+ </item>
+
</list>
@@ -1064,86 +1194,20 @@ snmp_agent:register_subagent(SA1,[1,2,3], SA2).
(see SNMP-FRAMEWORK-MIB). </p>
</note>
-<!--
- <marker id="send_trap"></marker>
--->
- <marker id="discovery"></marker>
+ <p><c>ExtraInfo</c> is not normally used in any way by the agent.
+ It is intended to be passed along to the net-if process, which is
+ a component that a user can implement themself. The users own net-if
+ may then make use of ExtraInfo. The net-if provided with this
+ application does not process ExtraInfo. </p>
+ <p>There is one exception. <em>Any</em> tuple containing the atom
+ <c>snmpa_default_notification_extra_info</c> will, in this context,
+ be considered belonging to this application, and may be processed
+ by the agent. </p>
+
+ <marker id="discovery"></marker>
</desc>
</func>
-<!--
- <func>
- <name>send_trap(Agent,Trap,Community)</name>
- <name>send_trap(Agent,Trap,Community,Varbinds) -> void()</name>
- <fsummary>Send a trap</fsummary>
- <type>
- <v>Agent = pid() | atom()</v>
- <v>Trap = atom()</v>
- <v>Community = string()</v>
- <v>Varbinds = [Varbind]</v>
- <v>Varbind = {Variable, Value} | {Column, RowIndex, Value} | {OID, Value}</v>
- <v>Variable = atom()</v>
- <v>Column = atom()</v>
- <v>OID = oid()</v>
- <v>Value = term()</v>
- <v>RowIndex = [int()]</v>
- </type>
- <desc>
- <p>Note! This function is only kept for backwards
- compatibility reasons. Use <c>send_notification</c> instead.
- </p>
- <p>Sends the trap <c>Trap</c> to the managers defined for
- <c>Community</c> in the <c>intTrapDestTable</c> in
- OTP-SNMPEA-MIB. The optional argument <c>Varbinds</c> defines
- values for the objects in the trap. If no value is given for
- an object, the <c>Agent</c> performs a get-operation to
- retrieve the value.
- </p>
- <p><c>Varbinds</c> is a list of <c>Varbind</c>, where each
- <c>Varbind</c> is one of:
- </p>
- <list type="bulleted">
- <item><c>{Variable, Value}</c>, where <c>Variable</c> is the
- symbolic name of a scalar variable referred to in the trap
- specification.
- </item>
- <item><c>{Column, RowIndex, Value}</c>, where <c>Column</c>
- is the symbolic name of a column variable.
- <c>RowIndex</c> is a list of indices for the specified
- element. If this is the case, the OBJECT IDENTIFIER sent
- in the trap is the <c>RowIndex</c> appended to the OBJECT
- IDENTIFIER for the table column. This is the OBJECT
- IDENTIFIER which specifies the element.
- </item>
- <item><c>{OID, Value}</c>, where <c>OID</c> is the OBJECT
- IDENTIFIER for an instance of an object, scalar variable,
- or column variable.
- </item>
- </list>
- <p>For example, to specify that <c>sysLocation</c> should have the
- value <c>"upstairs"</c> in the trap, we could use one of:
- </p>
- <list type="bulleted">
- <item><c>{sysLocation, "upstairs"}</c> or</item>
- <item><c>{[1,3,6,1,2,1,1,6,0], "upstairs"}</c> or</item>
- <item><c>{?sysLocation_instance, "upstairs"}</c> (provided
- that the generated <c>.hrl</c> file is included)</item>
- </list>
- <p>If a variable in the trap is a table element, the
- <c>RowIndex</c> for the element must be given in the
- <c>Varbinds</c> list. In this case, the OBJECT IDENTIFIER sent
- in the trap is the OBJECT IDENTIFIER that identifies this
- element. This OBJECT IDENTIFIER could be used in a get
- operation later.
- </p>
- <p>This function is asynchronous, and does not return any
- information. If an error occurs, <c>snmp_error:user_err/2</c>
- is called and the trap is discarded. </p>
-
- <marker id="discovery"></marker>
- </desc>
- </func>
--->
<func>
<name>discovery(TargetName, Notification) -> {ok, ManagerEngineID} | {error, Reason}</name>
diff --git a/lib/snmp/doc/src/snmpa_conf.xml b/lib/snmp/doc/src/snmpa_conf.xml
index d873574c6e..a533c179ee 100644
--- a/lib/snmp/doc/src/snmpa_conf.xml
+++ b/lib/snmp/doc/src/snmpa_conf.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE erlref SYSTEM "erlref.dtd">
<erlref>
<header>
<copyright>
- <year>2006</year><year>2010</year>
+ <year>2006</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -38,8 +38,21 @@
used for manipulating (write/append/read) the config files of the
SNMP agent. </p>
- <marker id="agent_entry"></marker>
+ <marker id="types"></marker>
</description>
+
+ <section>
+ <title>DATA TYPES</title>
+ <code type="none"><![CDATA[
+transportDomain() = transportDomainUdpIpv4 | transportDomainUdpIpv6
+transportAddressIPv4() = [integer()], length 4
+transportAddressIPv6() = [integer()], length 8
+transportAddressMask() = [integer()], length 0 (default), 6 (IPv4) or 10 (IPv6)
+ ]]></code>
+
+ <marker id="agent_entry"></marker>
+ </section>
+
<funcs>
<func>
<name>agent_entry(Tag, Val) -> agent_entry()</name>
@@ -381,17 +394,19 @@
<name>target_addr_entry(Name, Ip, TagList, ParamsName, EngineId, TMask) -> target_addr_entry()</name>
<name>target_addr_entry(Name, Ip, Udp, TagList, ParamsName, EngineId, TMask, MaxMessageSize) -> target_addr_entry()</name>
<name>target_addr_entry(Name, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize) -> target_addr_entry()</name>
+ <name>target_addr_entry(Name, Domain, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize) -> target_addr_entry()</name>
<fsummary>Create an target_addr entry</fsummary>
<type>
<v>Name = string()</v>
- <v>Ip = string()</v>
+ <v>Domain = transportDomain()</v>
+ <v>Ip = transportAddressIPv4() | transportAddressIPv6() (depends on Domain)</v>
<v>Udp = integer()</v>
<v>Timeout = integer()</v>
<v>RetryCount = integer()</v>
<v>TagList = string()</v>
<v>ParamsName = string()</v>
<v>EngineId = string()</v>
- <v>TMask = string()</v>
+ <v>TMask = transportAddressMask() (depends on Domain)</v>
<v>MaxMessageSize = integer()</v>
<v>target_addr_entry() = term()</v>
</type>
diff --git a/lib/snmp/doc/src/snmpm.xml b/lib/snmp/doc/src/snmpm.xml
index 1ee391d9ba..72849b9c9e 100644
--- a/lib/snmp/doc/src/snmpm.xml
+++ b/lib/snmp/doc/src/snmpm.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE erlref SYSTEM "erlref.dtd">
<erlref>
@@ -63,6 +63,10 @@ value_type() = o ('OBJECT IDENTIFIER') |
c64 ('Counter64') |
tt ('TimeTicks')
value() = term()
+community() = string()
+sec_model() = any | v1 | v2c | usm
+sec_name() = string()
+sec_level() = noAuthNoPriv | authNoPriv | authPriv
]]></code>
<marker id="monitor"></marker>
@@ -482,11 +486,65 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1
<p>Get a list of all registered usm users with engine-id
<c>EngineID</c>.</p>
- <marker id="sync_get"></marker>
+ <marker id="sync_get2"></marker>
</desc>
</func>
<func>
+ <name>sync_get2(UserId, TargetName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
+ <name>sync_get2(UserId, TargetName, Oids, SendOpts) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
+ <fsummary>Synchronous <c>get-request</c></fsummary>
+ <type>
+ <v>UserId = term()</v>
+ <v>TargetName = target_name()</v>
+ <v>Oids = [oid()]</v>
+ <v>SendOpts = send_opts()</v>
+ <v>send_opts() = [send_opt()]</v>
+ <v>send_opt() = {context, string()} | {timeout, pos_integer()} | {extra, term()} | {community, community()} | {sec_model, sec_model()} | {sec_name, string()} | {sec_level, sec_level()} | {max_message_size, pos_integer()}</v>
+ <v>SnmpReply = snmp_reply()</v>
+ <v>Remaining = integer()</v>
+ <v>Reason = {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term()</v>
+ <v>ReqId = term()</v>
+ <v>ActualReason = term()</v>
+ <v>SecInfo = [sec_info()]</v>
+ <v>sec_info() = {sec_tag(), ExpectedValue, ReceivedValue}</v>
+ <v>sec_tag() = atom()</v>
+ <v>ExpectedValue = ReceivedValue = term()</v>
+ <v>SnmpInfo = term()</v>
+ </type>
+ <desc>
+ <p>Synchronous <c>get-request</c>. </p>
+
+ <p><c>Remaining</c> is the remaining time of the given (or default)
+ timeout time.</p>
+
+ <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that
+ the net_if process failed to send the message. This could happen
+ because of any number of reasons, i.e. encoding error.
+ <em>ActualReason</em> is the actual reason in this case. </p>
+
+ <p>The send option <c>extra</c> specifies an opaque data structure
+ passed on to the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a option (when using the built in
+ net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <p>Some of the send options (<c>community</c>, <c>sec_model</c>,
+ <c>sec_name</c>, <c>sec_level</c> and <c>max_message_size</c>)
+ are <c>override options</c>. That is,
+ for <em>this</em> request, they override any configuration done
+ when the agent was registered. </p>
+
+ <p>For <c>SnmpInfo</c>, see the user callback function
+ <seealso marker="snmpm_user#handle_report">handle_report</seealso>.</p>
+
+ <marker id="sync_get"></marker>
+ </desc>
+ </func>
+
+ <func>
<name>sync_get(UserId, TargetName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
<name>sync_get(UserId, TargetName, ContextName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
<name>sync_get(UserId, TargetName, Oids, Timeout) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
@@ -513,19 +571,63 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1
<desc>
<p>Synchronous <c>get-request</c>. </p>
<p><c>Remaining</c> is the remaining time of the given or
- default timeout time.</p>
+ default timeout time.</p>
<p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that
- the net_if process failed to send the message. This could happen
- because of any number of reasons, i.e. encoding error. <em>R</em>
- is the actual reason in this case. </p>
- <p><c>ExtraInfo</c> is an opaque data structure passed on to
- the net-if process. The net-if process included in this
- application makes no use of this info, so the only use for it
- in such a configuration (when using the built in net-if) would
- be tracing.</p>
+ the net_if process failed to send the message. This could happen
+ because of any number of reasons, i.e. encoding error. <em>R</em>
+ is the actual reason in this case. </p>
+ <p><c>ExtraInfo</c> is an opaque data structure passed on to
+ the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a configuration (when using the
+ built in net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
<p>For <c>SnmpInfo</c>, see the user callback function
<seealso marker="snmpm_user#handle_report">handle_report</seealso>.</p>
+ <marker id="async_get2"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>async_get2(UserId, TargetName, Oids) -> {ok, ReqId} | {error, Reason}</name>
+ <name>async_get2(UserId, TargetName, Oids, SendOpts) -> {ok, ReqId} | {error, Reason}</name>
+ <fsummary>Asynchronous <c>get-request</c></fsummary>
+ <type>
+ <v>UserId = term()</v>
+ <v>TargetName = target_name()</v>
+ <v>Oids = [oid()]</v>
+ <v>SendOpts = send_opts()</v>
+ <v>send_opts() = [send_opt()]</v>
+ <v>send_opt() = {context, string()} | {timeout, pos_integer()} | {extra, term()} | {community, community()} | {sec_model, sec_model()} | {sec_name, string()} | {sec_level, sec_level()} | {max_message_size, pos_integer()}</v>
+ <v>ReqId = term()</v>
+ <v>Reason = term()</v>
+ </type>
+ <desc>
+ <p>Asynchronous <c>get-request</c>.</p>
+
+ <p>The reply, if it arrives, will be delivered to the user
+ through a call to the snmpm_user callback function
+ <c>handle_pdu</c>.</p>
+
+ <p>The send option <c>timeout</c> specifies for how long the request is
+ valid (after which the manager is free to delete it).</p>
+
+ <p>The send option <c>extra</c> specifies an opaque data structure
+ passed on to the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a option (when using the built in
+ net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <p>Some of the send options (<c>community</c>, <c>sec_model</c>,
+ <c>sec_name</c>, <c>sec_level</c> and <c>max_message_size</c>)
+ are <c>override options</c>. That is,
+ for <em>this</em> request, they override any configuration done
+ when the agent was registered. </p>
+
<marker id="async_get"></marker>
</desc>
</func>
@@ -550,17 +652,73 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1
<desc>
<p>Asynchronous <c>get-request</c>.</p>
<p>The reply, if it arrives, will be delivered to the user
- through a call to the snmpm_user callback function
- <c>handle_pdu</c>.</p>
- <p>The <c>Expire</c> time indicates for how long the request is
- valid (after which the manager is free to delete it).</p>
- <p><c>ExtraInfo</c> is an opaque data structure passed on to
- the net-if process. The net-if process included in this
- application makes no use of this info, so the only use for it
- in such a configuration (when using the built in net-if) would
- be tracing.</p>
-
- <marker id="sync_get_next"></marker>
+ through a call to the snmpm_user callback function
+ <c>handle_pdu</c>.</p>
+ <p>The <c>Expire</c> time indicates for how long the request is
+ valid (after which the manager is free to delete it).</p>
+ <p><c>ExtraInfo</c> is an opaque data structure passed on to
+ the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a configuration (when using the
+ built in net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <marker id="sync_get_next2"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>sync_get_next2(UserId, TargetName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
+ <name>sync_get_next2(UserId, TargetName, Oids, SendOpts) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
+ <fsummary>Synchronous <c>get-next-request</c></fsummary>
+ <type>
+ <v>UserId = term()</v>
+ <v>TargetName = target_name()</v>
+ <v>Oids = [oid()]</v>
+ <v>SendOpts = send_opts()</v>
+ <v>send_opts() = [send_opt()]</v>
+ <v>send_opt() = {context, string()} | {timeout, pos_integer()} | {extra, term()} | {community, community()} | {sec_model, sec_model()} | {sec_name, string()} | {sec_level, sec_level()} | {max_message_size, pos_integer()}</v>
+ <v>SnmpReply = snmp_reply()</v>
+ <v>Remaining = integer()</v>
+ <v>Reason = {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term()</v>
+ <v>ReqId = term()</v>
+ <v>ActualReason = term()</v>
+ <v>SecInfo = [sec_info()]</v>
+ <v>sec_info() = {sec_tag(), ExpectedValue, ReceivedValue}</v>
+ <v>sec_tag() = atom()</v>
+ <v>ExpectedValue = ReceivedValue = term()</v>
+ <v>SnmpInfo = term()</v>
+ </type>
+ <desc>
+ <p>Synchronous <c>get-next-request</c>. </p>
+
+ <p><c>Remaining</c> is the remaining time of the given (or default)
+ timeout time.</p>
+
+ <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that
+ the net_if process failed to send the message. This could happen
+ because of any number of reasons, i.e. encoding error.
+ <em>ActualReason</em> is the actual reason in this case. </p>
+
+ <p>The send option <c>extra</c> specifies an opaque data structure
+ passed on to the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a option (when using the built in
+ net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <p>Some of the send options (<c>community</c>, <c>sec_model</c>,
+ <c>sec_name</c>, <c>sec_level</c> and <c>max_message_size</c>)
+ are <c>override options</c>. That is,
+ for <em>this</em> request, they override any configuration done
+ when the agent was registered. </p>
+
+ <p>For <c>SnmpInfo</c>, see the user callback function
+ <seealso marker="snmpm_user#handle_report">handle_report</seealso>.</p>
+
+ <marker id="sync_get_next"></marker>
</desc>
</func>
@@ -587,16 +745,57 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1
<p>Synchronous <c>get-next-request</c>. </p>
<p><c>Remaining</c> time of the given or default timeout time.</p>
<p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that
- the net_if process failed to send the message. This could happen
- because of any number of reasons, i.e. encoding error. <em>R</em>
- is the actual reason in this case. </p>
- <p><c>ExtraInfo</c> is an opaque data structure passed on to
- the net-if process. The net-if process included in this
- application makes no use of this info, so the only use for it
- in such a configuration (when using the built in net-if) would
- be tracing.</p>
-
- <marker id="async_get_next"></marker>
+ the net_if process failed to send the message. This could happen
+ because of any number of reasons, i.e. encoding error. <em>R</em>
+ is the actual reason in this case. </p>
+ <p><c>ExtraInfo</c> is an opaque data structure passed on to
+ the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a configuration (when using the
+ built in net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <marker id="async_get_next2"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>async_get_next2(UserId, TargetName, Oids) -> {ok, ReqId} | {error, Reason}</name>
+ <name>async_get_next2(UserId, TargetName, Oids, SendOpts) -> {ok, ReqId} | {error, Reason}</name>
+ <fsummary>Asynchronous <c>get-next-request</c></fsummary>
+ <type>
+ <v>UserId = term()</v>
+ <v>TargetName = target_name()</v>
+ <v>Oids = [oid()]</v>
+ <v>send_opt() = {context, string()} | {timeout, pos_integer()} | {extra, term()} | {community, community()} | {sec_model, sec_model()} | {sec_name, string()} | {sec_level, sec_level()} | {max_message_size, pos_integer()}</v>
+ <v>ReqId = integer()</v>
+ <v>Reason = term()</v>
+ </type>
+ <desc>
+ <p>Asynchronous <c>get-next-request</c>. </p>
+
+ <p>The reply will be delivered to the user through a call
+ to the snmpm_user callback function <c>handle_pdu</c>.</p>
+
+ <p>The send option <c>timeout</c> specifies for how long the request is
+ valid (after which the manager is free to delete it).</p>
+
+ <p>The send option <c>extra</c> specifies an opaque data structure
+ passed on to the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a option (when using the built in
+ net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <p>Some of the send options (<c>community</c>, <c>sec_model</c>,
+ <c>sec_name</c>, <c>sec_level</c> and <c>max_message_size</c>)
+ are <c>override options</c>. That is,
+ for <em>this</em> request, they override any configuration done
+ when the agent was registered. </p>
+
+ <marker id="async_get_next"></marker>
</desc>
</func>
@@ -620,11 +819,75 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1
<desc>
<p>Asynchronous <c>get-next-request</c>. </p>
<p>The reply will be delivered to the user through a call
- to the snmpm_user callback function <c>handle_pdu</c>.</p>
+ to the snmpm_user callback function <c>handle_pdu</c>.</p>
<p>The <c>Expire</c> time indicates for how long the request is
- valid (after which the manager is free to delete it).</p>
+ valid (after which the manager is free to delete it).</p>
+ <p><c>ExtraInfo</c> is an opaque data structure passed on to
+ the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a configuration (when using the
+ built in net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <marker id="sync_set2"></marker>
+ </desc>
+ </func>
- <marker id="sync_set"></marker>
+ <func>
+ <name>sync_set2(UserId, TargetName, VarsAndVals) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
+ <name>sync_set2(UserId, TargetName, VarsAndVals, SendOpts) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
+ <fsummary>Synchronous <c>set-request</c></fsummary>
+ <type>
+ <v>UserId = term()</v>
+ <v>TargetName = target_name()</v>
+ <v>VarsAndVals = vars_and_vals()</v>
+ <v>SendOpts = send_opts()</v>
+ <v>send_opts() = [send_opt()]</v>
+ <v>send_opt() = {context, string()} | {timeout, pos_integer()} | {extra, term()} | {community, community()} | {sec_model, sec_model()} | {sec_name, string()} | {sec_level, sec_level()} | {max_message_size, pos_integer()}</v>
+ <v>SnmpReply = snmp_reply()</v>
+ <v>Remaining = integer()</v>
+ <v>Reason = {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term()</v>
+ <v>ReqId = term()</v>
+ <v>ActualReason = term()</v>
+ <v>SecInfo = [sec_info()]</v>
+ <v>sec_info() = {sec_tag(), ExpectedValue, ReceivedValue}</v>
+ <v>sec_tag() = atom()</v>
+ <v>ExpectedValue = ReceivedValue = term()</v>
+ <v>SnmpInfo = term()</v>
+ </type>
+ <desc>
+ <p>Synchronous <c>set-request</c>. </p>
+
+ <p><c>Remaining</c> is the remaining time of the given (or default)
+ timeout time.</p>
+
+ <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that
+ the net_if process failed to send the message. This could happen
+ because of any number of reasons, i.e. encoding error.
+ <em>ActualReason</em> is the actual reason in this case. </p>
+
+ <p>When <em>var_and_val()</em> is <em>{oid(), value()}</em>, the
+ manager makes an educated guess based on the loaded mibs. </p>
+
+ <p>The send option <c>extra</c> specifies an opaque data structure
+ passed on to the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a option (when using the built in
+ net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <p>Some of the send options (<c>community</c>, <c>sec_model</c>,
+ <c>sec_name</c>, <c>sec_level</c> and <c>max_message_size</c>)
+ are <c>override options</c>. That is,
+ for <em>this</em> request, they override any configuration done
+ when the agent was registered. </p>
+
+ <p>For <c>SnmpInfo</c>, see the user callback function
+ <seealso marker="snmpm_user#handle_report">handle_report</seealso>.</p>
+
+ <marker id="sync_set"></marker>
</desc>
</func>
@@ -651,18 +914,64 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1
<p>Synchronous <c>set-request</c>. </p>
<p><c>Remaining</c> time of the given or default timeout time.</p>
<p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that
- the net_if process failed to send the message. This could happen
- because of any number of reasons, i.e. encoding error. <em>R</em>
- is the actual reason in this case. </p>
- <p>When <em>var_and_val()</em> is <em>{oid(), value()}</em>, the
- manager makes an educated guess based on the loaded mibs. </p>
- <p><c>ExtraInfo</c> is an opaque data structure passed on to
- the net-if process. The net-if process included in this
- application makes no use of this info, so the only use for it
- in such a configuration (when using the built in net-if) would
- be tracing.</p>
-
- <marker id="async_set"></marker>
+ the net_if process failed to send the message. This could happen
+ because of any number of reasons, i.e. encoding error. <em>R</em>
+ is the actual reason in this case. </p>
+ <p>When <em>var_and_val()</em> is <em>{oid(), value()}</em>, the
+ manager makes an educated guess based on the loaded mibs. </p>
+ <p><c>ExtraInfo</c> is an opaque data structure passed on to
+ the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a configuration (when using the
+ built in net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <marker id="async_set2"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>async_set2(UserId, TargetName, VarsAndVals) -> {ok, ReqId} | {error, Reason}</name>
+ <name>async_set2(UserId, TargetName, VarsAndVals, SendOpts) -> {ok, ReqId} | {error, Reason}</name>
+ <fsummary>Asynchronous <c>set-request</c></fsummary>
+ <type>
+ <v>UserId = term()</v>
+ <v>TargetName = target_name()</v>
+ <v>VarsAndVals = vars_and_vals()</v>
+ <v>SendOpts = send_opts()</v>
+ <v>send_opts() = [send_opt()]</v>
+ <v>send_opt() = {context, string()} | {timeout, pos_integer()} | {extra, term()} | {community, community()} | {sec_model, sec_model()} | {sec_name, string()} | {sec_level, sec_level()} | {max_message_size, pos_integer()}</v>
+ <v>ReqId = term()</v>
+ <v>Reason = term()</v>
+ </type>
+ <desc>
+ <p>Asynchronous <c>set-request</c>. </p>
+
+ <p>The reply will be delivered to the user through a call
+ to the snmpm_user callback function <c>handle_pdu</c>.</p>
+
+ <p>The send option <c>timeout</c> specifies for how long the request is
+ valid (after which the manager is free to delete it).</p>
+
+ <p>When <em>var_and_val()</em> is <em>{oid(), value()}</em>, the
+ manager makes an educated guess based on the loaded mibs. </p>
+
+ <p>The send option <c>extra</c> specifies an opaque data structure
+ passed on to the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a option (when using the built in
+ net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <p>Some of the send options (<c>community</c>, <c>sec_model</c>,
+ <c>sec_name</c>, <c>sec_level</c> and <c>max_message_size</c>)
+ are <c>override options</c>. That is,
+ for <em>this</em> request, they override any configuration done
+ when the agent was registered. </p>
+
+ <marker id="async_set"></marker>
</desc>
</func>
@@ -685,18 +994,76 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1
<desc>
<p>Asynchronous <c>set-request</c>. </p>
<p>The reply will be delivered to the user through a call
- to the snmpm_user callback function <c>handle_pdu</c>.</p>
+ to the snmpm_user callback function <c>handle_pdu</c>.</p>
<p>The <c>Expire</c> time indicates for how long the request is
- valid (after which the manager is free to delete it).</p>
- <p>When <em>var_and_val()</em> is <em>{oid(), value()}</em>, the
- manager makes an educated guess based on the loaded mibs. </p>
- <p><c>ExtraInfo</c> is an opaque data structure passed on to
- the net-if process. The net-if process included in this
- application makes no use of this info, so the only use for it
- in such a configuration (when using the built in net-if) would
- be tracing.</p>
-
- <marker id="sync_get_bulk"></marker>
+ valid (after which the manager is free to delete it).</p>
+ <p>When <em>var_and_val()</em> is <em>{oid(), value()}</em>, the
+ manager makes an educated guess based on the loaded mibs. </p>
+ <p><c>ExtraInfo</c> is an opaque data structure passed on to
+ the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a configuration (when using the
+ built in net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <marker id="sync_get_bulk2"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>sync_get_bulk2(UserId, TragetName, NonRep, MaxRep, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
+ <name>sync_get_bulk2(UserId, TragetName, NonRep, MaxRep, Oids, SendOpts) -> {ok, SnmpReply, Remaining} | {error, Reason}</name>
+ <fsummary>Synchronous <c>get-bulk-request</c></fsummary>
+ <type>
+ <v>UserId = term()</v>
+ <v>TargetName = target_name()</v>
+ <v>NonRep = integer()</v>
+ <v>MaxRep = integer()</v>
+ <v>Oids = [oid()]</v>
+ <v>SendOpts = send_opts()</v>
+ <v>send_opts() = [send_opt()]</v>
+ <v>send_opt() = {context, string()} | {timeout, pos_integer()} | {extra, term()} | {community, community()} | {sec_model, sec_model()} | {sec_name, string()} | {sec_level, sec_level()} | {max_message_size, pos_integer()}</v>
+ <v>SnmpReply = snmp_reply()</v>
+ <v>Remaining = integer()</v>
+ <v>Reason = {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term()</v>
+ <v>ReqId = term()</v>
+ <v>ActualReason = term()</v>
+ <v>SecInfo = [sec_info()]</v>
+ <v>sec_info() = {sec_tag(), ExpectedValue, ReceivedValue}</v>
+ <v>sec_tag() = atom()</v>
+ <v>ExpectedValue = ReceivedValue = term()</v>
+ <v>SnmpInfo = term()</v>
+ </type>
+ <desc>
+ <p>Synchronous <c>get-bulk-request</c> (See RFC1905).</p>
+
+ <p><c>Remaining</c> is the remaining time of the given (or default)
+ timeout time.</p>
+
+ <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that
+ the net_if process failed to send the message. This could happen
+ because of any number of reasons, i.e. encoding error.
+ <em>ActualReason</em> is the actual reason in this case. </p>
+
+ <p>The send option <c>extra</c> specifies an opaque data structure
+ passed on to the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a option (when using the built in
+ net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <p>Some of the send options (<c>community</c>, <c>sec_model</c>,
+ <c>sec_name</c>, <c>sec_level</c> and <c>max_message_size</c>)
+ are <c>override options</c>. That is,
+ for <em>this</em> request, they override any configuration done
+ when the agent was registered. </p>
+
+ <p>For <c>SnmpInfo</c>, see the user callback function
+ <seealso marker="snmpm_user#handle_report">handle_report</seealso>.</p>
+
+ <marker id="sync_get_bulk"></marker>
</desc>
</func>
@@ -723,17 +1090,60 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1
<desc>
<p>Synchronous <c>get-bulk-request</c> (See RFC1905).</p>
<p><c>Remaining</c> time of the given or default timeout time.</p>
- <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that
- the net_if process failed to send the message. This could happen
- because of any number of reasons, i.e. encoding error. <em>R</em>
- is the actual reason in this case. </p>
- <p><c>ExtraInfo</c> is an opaque data structure passed on to
- the net-if process. The net-if process included in this
- application makes no use of this info, so the only use for it
- in such a configuration (when using the built in net-if) would
- be tracing.</p>
-
- <marker id="async_get_bulk"></marker>
+ <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that
+ the net_if process failed to send the message. This could happen
+ because of any number of reasons, i.e. encoding error. <em>R</em>
+ is the actual reason in this case. </p>
+ <p><c>ExtraInfo</c> is an opaque data structure passed on to
+ the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a configuration (when using the
+ built in net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
+
+ <marker id="async_get_bulk2"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids) -> {ok, ReqId} | {error, Reason}</name>
+ <name>async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts) -> {ok, ReqId} | {error, Reason}</name>
+ <fsummary>Asynchronous <c>get-bulk-request</c></fsummary>
+ <type>
+ <v>UserId = term()</v>
+ <v>TargetName = target_name()</v>
+ <v>NonRep = integer()</v>
+ <v>MaxRep = integer()</v>
+ <v>Oids = [oid()]</v>
+ <v>SendOpts = send_opts()</v>
+ <v>send_opts() = [send_opt()]</v>
+ <v>send_opt() = {context, string()} | {timeout, pos_integer()} | {extra, term()} | {community, community()} | {sec_model, sec_model()} | {sec_name, string()} | {sec_level, sec_level()} | {max_message_size, pos_integer()}</v>
+ <v>ReqId = integer()</v>
+ <v>Reason = term()</v>
+ </type>
+ <desc>
+ <p>Asynchronous <c>get-bulk-request</c> (See RFC1905).</p>
+
+ <p>The reply will be delivered to the user through a call
+ to the snmpm_user callback function <c>handle_pdu</c>.</p>
+
+ <p>The send option <c>timeout</c> specifies for how long the request is
+ valid (after which the manager is free to delete it).</p>
+
+ <p>The send option <c>extra</c> specifies an opaque data structure
+ passed on to the net-if process. The net-if process included in this
+ application makes no use of this info, so the only use for it
+ in such a configuration (when using the built in net-if) would
+ be tracing.</p>
+
+ <p>Some of the send options (<c>community</c>, <c>sec_model</c>,
+ <c>sec_name</c>, <c>sec_level</c> and <c>max_message_size</c>)
+ are <c>override options</c>. That is,
+ for <em>this</em> request, they override any configuration done
+ when the agent was registered. </p>
+
+ <marker id="async_get_bulk"></marker>
</desc>
</func>
@@ -759,9 +1169,16 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1
<desc>
<p>Asynchronous <c>get-bulk-request</c> (See RFC1905).</p>
<p>The reply will be delivered to the user through a call
- to the snmpm_user callback function <c>handle_pdu</c>.</p>
+ to the snmpm_user callback function <c>handle_pdu</c>.</p>
<p>The <c>Expire</c> time indicates for how long the request is
- valid (after which the manager is free to delete it).</p>
+ valid (after which the manager is free to delete it).</p>
+ <p><c>ExtraInfo</c> is an opaque data structure passed on to
+ the net-if process. The net-if process included in this
+ application makes, with one exception, no use of this info,
+ so the only use for it in such a configuration (when using the
+ built in net-if) would be tracing. The one usage exception is:
+ <em>Any</em> tuple with <c>snmpm_extra_info_tag</c> as its first
+ element is reserved for internal use. </p>
<marker id="cancel_async_request"></marker>
</desc>
diff --git a/lib/snmp/mibs/Makefile.in b/lib/snmp/mibs/Makefile.in
index 7aefb0ea34..3af74eca75 100644
--- a/lib/snmp/mibs/Makefile.in
+++ b/lib/snmp/mibs/Makefile.in
@@ -61,7 +61,8 @@ MIBS_A = \
SNMP-USER-BASED-SM-MIB \
SNMP-VIEW-BASED-ACM-MIB \
SNMP-USM-AES-MIB \
- INET-ADDRESS-MIB
+ INET-ADDRESS-MIB \
+ TRANSPORT-ADDRESS-MIB
MIBS_B = OTP-SNMPEA-MIB
diff --git a/lib/snmp/mibs/TRANSPORT-ADDRESS-MIB.mib b/lib/snmp/mibs/TRANSPORT-ADDRESS-MIB.mib
new file mode 100644
index 0000000000..7d450fbc2a
--- /dev/null
+++ b/lib/snmp/mibs/TRANSPORT-ADDRESS-MIB.mib
@@ -0,0 +1,417 @@
+TRANSPORT-ADDRESS-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+ MODULE-IDENTITY, OBJECT-IDENTITY, mib-2 FROM SNMPv2-SMI
+ TEXTUAL-CONVENTION FROM SNMPv2-TC;
+
+transportAddressMIB MODULE-IDENTITY
+ LAST-UPDATED "200211010000Z"
+ ORGANIZATION
+ "IETF Operations and Management Area"
+ CONTACT-INFO
+ "Juergen Schoenwaelder (Editor)
+ TU Braunschweig
+ Bueltenweg 74/75
+ 38106 Braunschweig, Germany
+ Phone: +49 531 391-3289
+
+ Send comments to <[email protected]>."
+ DESCRIPTION
+ "This MIB module provides commonly used transport
+ address definitions.
+
+ Copyright (C) The Internet Society (2002). This version of
+ this MIB module is part of RFC 3419; see the RFC itself for
+ full legal notices."
+
+ -- Revision log
+
+ REVISION "200211010000Z"
+ DESCRIPTION
+ "Initial version, published as RFC 3419."
+ ::= { mib-2 100 }
+
+
+transportDomains OBJECT IDENTIFIER ::= { transportAddressMIB 1 }
+
+transportDomainUdpIpv4 OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The UDP over IPv4 transport domain. The corresponding
+ transport address is of type TransportAddressIPv4 for
+ global IPv4 addresses."
+ ::= { transportDomains 1 }
+
+transportDomainUdpIpv6 OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The UDP over IPv6 transport domain. The corresponding
+ transport address is of type TransportAddressIPv6 for
+ global IPv6 addresses."
+ ::= { transportDomains 2 }
+
+transportDomainUdpIpv4z OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The UDP over IPv4 transport domain. The corresponding
+ transport address is of type TransportAddressIPv4z for
+ scoped IPv4 addresses with a zone index."
+ ::= { transportDomains 3 }
+
+transportDomainUdpIpv6z OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The UDP over IPv6 transport domain. The corresponding
+ transport address is of type TransportAddressIPv6z for
+ scoped IPv6 addresses with a zone index."
+ ::= { transportDomains 4 }
+
+transportDomainTcpIpv4 OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The TCP over IPv4 transport domain. The corresponding
+ transport address is of type TransportAddressIPv4 for
+ global IPv4 addresses."
+ ::= { transportDomains 5 }
+
+transportDomainTcpIpv6 OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The TCP over IPv6 transport domain. The corresponding
+ transport address is of type TransportAddressIPv6 for
+ global IPv6 addresses."
+ ::= { transportDomains 6 }
+
+transportDomainTcpIpv4z OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The TCP over IPv4 transport domain. The corresponding
+ transport address is of type TransportAddressIPv4z for
+ scoped IPv4 addresses with a zone index."
+ ::= { transportDomains 7 }
+
+transportDomainTcpIpv6z OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The TCP over IPv6 transport domain. The corresponding
+ transport address is of type TransportAddressIPv6z for
+ scoped IPv6 addresses with a zone index."
+ ::= { transportDomains 8 }
+
+transportDomainSctpIpv4 OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The SCTP over IPv4 transport domain. The corresponding
+ transport address is of type TransportAddressIPv4 for
+ global IPv4 addresses. This transport domain usually
+ represents the primary address on multihomed SCTP
+ endpoints."
+ ::= { transportDomains 9 }
+
+transportDomainSctpIpv6 OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The SCTP over IPv6 transport domain. The corresponding
+ transport address is of type TransportAddressIPv6 for
+ global IPv6 addresses. This transport domain usually
+ represents the primary address on multihomed SCTP
+ endpoints."
+ ::= { transportDomains 10 }
+
+transportDomainSctpIpv4z OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The SCTP over IPv4 transport domain. The corresponding
+ transport address is of type TransportAddressIPv4z for
+ scoped IPv4 addresses with a zone index. This transport
+ domain usually represents the primary address on
+ multihomed SCTP endpoints."
+ ::= { transportDomains 11 }
+
+transportDomainSctpIpv6z OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The SCTP over IPv6 transport domain. The corresponding
+ transport address is of type TransportAddressIPv6z for
+ scoped IPv6 addresses with a zone index. This transport
+ domain usually represents the primary address on
+ multihomed SCTP endpoints."
+ ::= { transportDomains 12 }
+
+transportDomainLocal OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The Posix Local IPC transport domain. The corresponding
+ transport address is of type TransportAddressLocal.
+
+ The Posix Local IPC transport domain incorporates the
+ well-known UNIX domain sockets."
+ ::= { transportDomains 13 }
+
+transportDomainUdpDns OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The UDP transport domain using fully qualified domain
+ names. The corresponding transport address is of type
+ TransportAddressDns."
+ ::= { transportDomains 14 }
+
+transportDomainTcpDns OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The TCP transport domain using fully qualified domain
+ names. The corresponding transport address is of type
+ TransportAddressDns."
+ ::= { transportDomains 15 }
+
+transportDomainSctpDns OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The SCTP transport domain using fully qualified domain
+ names. The corresponding transport address is of type
+ TransportAddressDns."
+ ::= { transportDomains 16 }
+
+TransportDomain ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "A value that represents a transport domain.
+
+ Some possible values, such as transportDomainUdpIpv4, are
+ defined in this module. Other possible values can be
+ defined in other MIB modules."
+ SYNTAX OBJECT IDENTIFIER
+
+--
+-- The enumerated values of the textual convention below should
+-- be identical to the last sub-identifier of the OID registered
+-- for the same domain.
+--
+
+TransportAddressType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "A value that represents a transport domain. This is the
+ enumerated version of the transport domain registrations
+ in this MIB module. The enumerated values have the
+ following meaning:
+
+ unknown(0) unknown transport address type
+ udpIpv4(1) transportDomainUdpIpv4
+ udpIpv6(2) transportDomainUdpIpv6
+ udpIpv4z(3) transportDomainUdpIpv4z
+ udpIpv6z(4) transportDomainUdpIpv6z
+ tcpIpv4(5) transportDomainTcpIpv4
+ tcpIpv6(6) transportDomainTcpIpv6
+ tcpIpv4z(7) transportDomainTcpIpv4z
+ tcpIpv6z(8) transportDomainTcpIpv6z
+ sctpIpv4(9) transportDomainSctpIpv4
+ sctpIpv6(10) transportDomainSctpIpv6
+ sctpIpv4z(11) transportDomainSctpIpv4z
+ sctpIpv6z(12) transportDomainSctpIpv6z
+ local(13) transportDomainLocal
+ udpDns(14) transportDomainUdpDns
+ tcpDns(15) transportDomainTcpDns
+ sctpDns(16) transportDomainSctpDns
+
+ This textual convention can be used to represent transport
+ domains in situations where a syntax of TransportDomain is
+ unwieldy (for example, when used as an index).
+
+ The usage of this textual convention implies that additional
+ transport domains can only be supported by updating this MIB
+ module. This extensibility restriction does not apply for the
+ TransportDomain textual convention which allows MIB authors
+ to define additional transport domains independently in
+ other MIB modules."
+ SYNTAX INTEGER {
+ unknown(0),
+ udpIpv4(1),
+ udpIpv6(2),
+ udpIpv4z(3),
+ udpIpv6z(4),
+ tcpIpv4(5),
+ tcpIpv6(6),
+ tcpIpv4z(7),
+ tcpIpv6z(8),
+ sctpIpv4(9),
+ sctpIpv6(10),
+ sctpIpv4z(11),
+ sctpIpv6z(12),
+ local(13),
+ udpDns(14),
+ tcpDns(15),
+ sctpDns(16)
+ }
+
+TransportAddress ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Denotes a generic transport address.
+
+ A TransportAddress value is always interpreted within the
+ context of a TransportAddressType or TransportDomain value.
+ Every usage of the TransportAddress textual convention MUST
+ specify the TransportAddressType or TransportDomain object
+ which provides the context. Furthermore, MIB authors SHOULD
+ define a separate TransportAddressType or TransportDomain
+ object for each TransportAddress object. It is suggested that
+ the TransportAddressType or TransportDomain is logically
+ registered before the object(s) which use the
+ TransportAddress textual convention if they appear in the
+ same logical row.
+
+ The value of a TransportAddress object must always be
+ consistent with the value of the associated
+ TransportAddressType or TransportDomain object. Attempts
+ to set a TransportAddress object to a value which is
+ inconsistent with the associated TransportAddressType or
+ TransportDomain must fail with an inconsistentValue error.
+
+ When this textual convention is used as a syntax of an
+ index object, there may be issues with the limit of 128
+ sub-identifiers specified in SMIv2, STD 58. In this case,
+ the OBJECT-TYPE declaration MUST include a 'SIZE' clause
+ to limit the number of potential instance sub-identifiers."
+ SYNTAX OCTET STRING (SIZE (0..255))
+
+TransportAddressIPv4 ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "1d.1d.1d.1d:2d"
+ STATUS current
+ DESCRIPTION
+ "Represents a transport address consisting of an IPv4
+ address and a port number (as used for example by UDP,
+ TCP and SCTP):
+
+ octets contents encoding
+ 1-4 IPv4 address network-byte order
+ 5-6 port number network-byte order
+
+ This textual convention SHOULD NOT be used directly in object
+ definitions since it restricts addresses to a specific format.
+ However, if it is used, it MAY be used either on its own or
+ in conjunction with TransportAddressType or TransportDomain
+ as a pair."
+ SYNTAX OCTET STRING (SIZE (6))
+
+TransportAddressIPv6 ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "0a[2x:2x:2x:2x:2x:2x:2x:2x]0a:2d"
+ STATUS current
+ DESCRIPTION
+ "Represents a transport address consisting of an IPv6
+ address and a port number (as used for example by UDP,
+ TCP and SCTP):
+
+ octets contents encoding
+ 1-16 IPv6 address network-byte order
+ 17-18 port number network-byte order
+
+ This textual convention SHOULD NOT be used directly in object
+ definitions since it restricts addresses to a specific format.
+ However, if it is used, it MAY be used either on its own or
+ in conjunction with TransportAddressType or TransportDomain
+ as a pair."
+ SYNTAX OCTET STRING (SIZE (18))
+
+TransportAddressIPv4z ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "1d.1d.1d.1d%4d:2d"
+ STATUS current
+ DESCRIPTION
+ "Represents a transport address consisting of an IPv4
+ address, a zone index and a port number (as used for
+ example by UDP, TCP and SCTP):
+
+ octets contents encoding
+ 1-4 IPv4 address network-byte order
+ 5-8 zone index network-byte order
+ 9-10 port number network-byte order
+
+ This textual convention SHOULD NOT be used directly in object
+ definitions since it restricts addresses to a specific format.
+ However, if it is used, it MAY be used either on its own or
+ in conjunction with TransportAddressType or TransportDomain
+ as a pair."
+ SYNTAX OCTET STRING (SIZE (10))
+
+TransportAddressIPv6z ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "0a[2x:2x:2x:2x:2x:2x:2x:2x%4d]0a:2d"
+ STATUS current
+ DESCRIPTION
+ "Represents a transport address consisting of an IPv6
+ address, a zone index and a port number (as used for
+ example by UDP, TCP and SCTP):
+
+ octets contents encoding
+ 1-16 IPv6 address network-byte order
+ 17-20 zone index network-byte order
+ 21-22 port number network-byte order
+
+ This textual convention SHOULD NOT be used directly in object
+ definitions since it restricts addresses to a specific format.
+ However, if it is used, it MAY be used either on its own or
+ in conjunction with TransportAddressType or TransportDomain
+ as a pair."
+ SYNTAX OCTET STRING (SIZE (22))
+
+TransportAddressLocal ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "1a"
+ STATUS current
+ DESCRIPTION
+ "Represents a POSIX Local IPC transport address:
+
+ octets contents encoding
+ all POSIX Local IPC address string
+
+ The Posix Local IPC transport domain subsumes UNIX domain
+ sockets.
+
+ This textual convention SHOULD NOT be used directly in object
+ definitions since it restricts addresses to a specific format.
+ However, if it is used, it MAY be used either on its own or
+ in conjunction with TransportAddressType or TransportDomain
+ as a pair.
+
+ When this textual convention is used as a syntax of an
+ index object, there may be issues with the limit of 128
+ sub-identifiers specified in SMIv2, STD 58. In this case,
+ the OBJECT-TYPE declaration MUST include a 'SIZE' clause
+ to limit the number of potential instance sub-identifiers."
+ REFERENCE
+ "Protocol Independent Interfaces (IEEE POSIX 1003.1g)"
+ SYNTAX OCTET STRING (SIZE (1..255))
+
+TransportAddressDns ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "1a"
+ STATUS current
+ DESCRIPTION
+ "Represents a DNS domain name followed by a colon ':'
+ (ASCII character 0x3A) and a port number in ASCII.
+ The name SHOULD be fully qualified whenever possible.
+
+ Values of this textual convention are not directly useable as
+ transport-layer addressing information, and require runtime
+ resolution. As such, applications that write them must be
+ prepared for handling errors if such values are not
+ supported, or cannot be resolved (if resolution occurs at the
+ time of the management operation).
+
+ The DESCRIPTION clause of TransportAddress objects that may
+ have TransportAddressDns values must fully describe how (and
+ when) such names are to be resolved to IP addresses and vice
+ versa.
+
+ This textual convention SHOULD NOT be used directly in object
+ definitions since it restricts addresses to a specific format.
+ However, if it is used, it MAY be used either on its own or
+ in conjunction with TransportAddressType or TransportDomain
+ as a pair.
+
+ When this textual convention is used as a syntax of an
+ index object, there may be issues with the limit of 128
+ sub-identifiers specified in SMIv2, STD 58. In this case,
+ the OBJECT-TYPE declaration MUST include a 'SIZE' clause
+ to limit the number of potential instance sub-identifiers."
+ SYNTAX OCTET STRING (SIZE (1..255))
+
+END
diff --git a/lib/snmp/priv/conf/agent/target_addr.conf b/lib/snmp/priv/conf/agent/target_addr.conf
index 33a5d0d4c4..f48a6645a3 100644
--- a/lib/snmp/priv/conf/agent/target_addr.conf
+++ b/lib/snmp/priv/conf/agent/target_addr.conf
@@ -3,9 +3,13 @@
%% The data is inserted into the snmpTargetAddrTable defined
%% in SNMP-TARGET-MIB, and in the snmpTargeAddrExtTabke defined
%% in SNMP-COMMUNITY-MIB.
-%% Each row is a 9-tuple:
-%% {Name, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId,
-%% TMask, MaxMessageSize}.
+%% Each row is a 10 or 11-tuple (Domain is optional):
+%% {Name,
+%% Domain, Ip, Port,
+%% Timeout, RetryCount, TagList, ParamsName, EngineId,
+%% TMask, MaxMessageSize}.
+%% The value of Domain decide the format of the Ip and TMask values.
+%% If not present, classic Ipv4 is assumed.
%% The EngineId value is only used if Inform-Requests are sent to this
%% target. If Informs are not sent, this value is ignored, and can be
%% e.g. an empty string. However, if Informs are sent, it is essential
diff --git a/lib/snmp/src/agent/snmp_community_mib.erl b/lib/snmp/src/agent/snmp_community_mib.erl
index 5644a43345..3debe0a30e 100644
--- a/lib/snmp/src/agent/snmp_community_mib.erl
+++ b/lib/snmp/src/agent/snmp_community_mib.erl
@@ -25,7 +25,7 @@
snmpTargetAddrExtTable/3,
community2vacm/2, vacm2community/2,
get_target_addr_ext_mms/2]).
--export([add_community/5, delete_community/1]).
+-export([add_community/5, add_community/6, delete_community/1]).
-export([check_community/1]).
-include("SNMP-COMMUNITY-MIB.hrl").
@@ -128,12 +128,16 @@ read_community_config_files(Dir) ->
Comms.
check_community({Index, CommunityName, SecName, CtxName, TransportTag}) ->
+ EngineID = get_engine_id(),
+ check_community({Index, CommunityName, SecName,
+ EngineID, CtxName, TransportTag});
+check_community({Index, CommunityName, SecName,
+ EngineID, CtxName, TransportTag}) ->
snmp_conf:check_string(Index,{gt,0}),
snmp_conf:check_string(CommunityName),
snmp_conf:check_string(SecName),
snmp_conf:check_string(CtxName),
snmp_conf:check_string(TransportTag),
- EngineID = get_engine_id(),
Comm = {Index, CommunityName, SecName, EngineID, CtxName, TransportTag,
?'StorageType_nonVolatile', ?'RowStatus_active'},
{ok, Comm};
@@ -173,6 +177,13 @@ table_del_row(Tab, Key) ->
%% FIXME: does not work with mnesia
add_community(Idx, CommName, SecName, CtxName, TransportTag) ->
Community = {Idx, CommName, SecName, CtxName, TransportTag},
+ do_add_community(Community).
+
+add_community(Idx, CommName, SecName, EngineId, CtxName, TransportTag) ->
+ Community = {Idx, CommName, SecName, EngineId, CtxName, TransportTag},
+ do_add_community(Community).
+
+do_add_community(Community) ->
case (catch check_community(Community)) of
{ok, Row} ->
Key = element(1, Row),
diff --git a/lib/snmp/src/agent/snmp_notification_mib.erl b/lib/snmp/src/agent/snmp_notification_mib.erl
index 1cd69b430f..3da5766b44 100644
--- a/lib/snmp/src/agent/snmp_notification_mib.erl
+++ b/lib/snmp/src/agent/snmp_notification_mib.erl
@@ -273,9 +273,12 @@ find_targets(Key, TargAddrs, Db, Res) ->
get_targets([{TagList, Addr, TargetName, Params, Timeout, Retry}|T],
Tag, Type, Name) ->
case snmp_misc:is_tag_member(Tag, TagList) of
- true -> [{Name, {Addr, TargetName, Params, type(Type, Timeout, Retry)}}|
- get_targets(T, Tag, Type, Name)];
+ true ->
+ ?vtrace("tag ~w *is* member", [Tag]),
+ [{Name, {Addr, TargetName, Params, type(Type, Timeout, Retry)}}|
+ get_targets(T, Tag, Type, Name)];
false ->
+ ?vtrace("tag ~w is *not* member", [Tag]),
get_targets(T, Tag, Type, Name)
end;
get_targets([], _Tag, _Type, _Name) ->
diff --git a/lib/snmp/src/agent/snmp_target_mib.erl b/lib/snmp/src/agent/snmp_target_mib.erl
index 270a5fd5b6..b2f2417b02 100644
--- a/lib/snmp/src/agent/snmp_target_mib.erl
+++ b/lib/snmp/src/agent/snmp_target_mib.erl
@@ -26,16 +26,18 @@
snmpTargetParamsTable/1, snmpTargetParamsTable/3,
get_target_addrs/0, get_target_engine_id/1, set_target_engine_id/2,
is_valid_tag/3, get/3, table_next/2]).
--export([add_addr/10, delete_addr/1,
+-export([add_addr/10, add_addr/11, delete_addr/1,
add_params/5, delete_params/1]).
-export([check_target_addr/1, check_target_params/1]).
+-export([default_domain/0]).
--include("snmp_types.hrl").
--include("snmp_tables.hrl").
--include("SNMP-TARGET-MIB.hrl").
--include("SNMPv2-TC.hrl").
--include("SNMPv2-TM.hrl").
--include("SNMP-FRAMEWORK-MIB.hrl").
+-include_lib("snmp/include/snmp_types.hrl").
+-include_lib("snmp/include/snmp_tables.hrl").
+-include_lib("snmp/include/SNMP-TARGET-MIB.hrl").
+-include_lib("snmp/include/SNMPv2-TC.hrl").
+-include_lib("snmp/include/SNMPv2-TM.hrl").
+-include_lib("snmp/include/SNMP-FRAMEWORK-MIB.hrl").
+-include_lib("snmp/include/TRANSPORT-ADDRESS-MIB.hrl").
-define(VMODULE,"TARGET-MIB").
-include("snmp_verbosity.hrl").
@@ -49,6 +51,12 @@
%%-----------------------------------------------------------------
+
+default_domain() ->
+ snmpUDPDomain.
+
+
+%%-----------------------------------------------------------------
%% Func: configure/1
%% Args: Dir is the directory where the configuration files are found.
%% Purpose: If the tables doesn't exist, this function reads
@@ -139,39 +147,51 @@ read_target_config_files(Dir) ->
%% {Name, Ip, Udp, Timeout, RetryCount, TagList, Params, EngineId,
%% TMask, MMS}
%%-----------------------------------------------------------------
-check_target_addr({Name, Ip, Udp, Timeout, RetryCount, TagList,
- Params, EngineId, TMask, MMS}) ->
+
+check_target_addr({Name, Domain, Ip, Udp, Timeout, RetryCount, TagList,
+ Params, EngineId, TMask, MMS}) ->
?vtrace("check target address with:"
- "~n Name: ~s"
- "~n Ip: ~p"
- "~n Udp: ~p"
- "~n Timeout: ~p"
- "~n RetryCount: ~p"
- "~n TagList: ~p"
- "~n Params: ~p"
- "~n EngineId: ~p"
- "~n TMask: ~p"
- "~n MMS: ~p",
- [Name,Ip,Udp,Timeout,RetryCount,
- TagList,Params,EngineId,TMask,MMS]),
+ "~n Name: ~s"
+ "~n Domain: ~p"
+ "~n Ip: ~p"
+ "~n Udp: ~p"
+ "~n Timeout: ~p"
+ "~n RetryCount: ~p"
+ "~n TagList: ~p"
+ "~n Params: ~p"
+ "~n EngineId: ~p"
+ "~n TMask: ~p"
+ "~n MMS: ~p",
+ [Name,
+ Domain, Ip, Udp,
+ Timeout, RetryCount,
+ TagList, Params, EngineId, TMask, MMS]),
snmp_conf:check_string(Name,{gt,0}),
- snmp_conf:check_ip(Ip),
+ snmp_conf:check_domain(Domain),
+ snmp_conf:check_ip(Domain, Ip),
snmp_conf:check_integer(Udp, {gt, 0}),
snmp_conf:check_integer(Timeout, {gte, 0}),
snmp_conf:check_integer(RetryCount, {gte,0}),
snmp_conf:check_string(TagList),
snmp_conf:check_string(Params),
check_engine_id(EngineId),
- TAddr = Ip ++ [Udp div 256, Udp rem 256],
- check_mask(TMask, TAddr),
+ TAddress = snmp_conf:mk_taddress(Domain, Ip, Udp),
+ TDomain = snmp_conf:mk_tdomain(Domain),
+ check_tmask(TDomain, TMask, TAddress),
snmp_conf:check_packet_size(MMS),
?vtrace("check target address done",[]),
-
- Addr = {Name, ?snmpUDPDomain, TAddr, Timeout,
+ Addr = {Name, TDomain, TAddress, Timeout,
RetryCount, TagList, Params,
?'StorageType_nonVolatile', ?'RowStatus_active', EngineId,
TMask, MMS}, % Values for Augmenting table in SNMP-COMMUNITY-MIB
{ok, Addr};
+check_target_addr({Name, Ip, Udp, Timeout, RetryCount, TagList,
+ Params, EngineId, TMask, MMS}) ->
+ Domain = default_domain(),
+ check_target_addr({Name,
+ Domain, Ip, Udp,
+ Timeout, RetryCount, TagList,
+ Params, EngineId, TMask, MMS});
check_target_addr({Name, Ip, Udp, Timeout, RetryCount, TagList, Params,
EngineId}) ->
check_target_addr({Name, Ip, Udp, Timeout, RetryCount, TagList,
@@ -194,12 +214,13 @@ check_engine_id(discovery) ->
check_engine_id(EngineId) ->
snmp_conf:check_string(EngineId).
-check_mask([], _TAddr) ->
+
+check_tmask(_TDomain, [], _TAddress) ->
ok;
-check_mask(TMask, TAddr) when length(TMask) == length(TAddr) ->
- snmp_conf:check_taddress(TMask);
-check_mask(TMask, _TAddr) ->
- throw({error, {invalid_mask, TMask}}).
+check_tmask(TDomain, TMask, TAddress) when length(TMask) =:= length(TAddress) ->
+ snmp_conf:check_taddress(TDomain, TMask);
+check_tmask(_TDomain, TMask, _TAddr) ->
+ throw({error, {invalid_tmask, TMask}}).
%%-----------------------------------------------------------------
@@ -261,7 +282,13 @@ table_del_row(Tab, Key) ->
add_addr(Name, Ip, Port, Timeout, Retry, TagList,
Params, EngineId, TMask, MMS) ->
- Addr = {Name, Ip, Port, Timeout, Retry, TagList,
+ Domain = default_domain(),
+ add_addr(Name, Domain, Ip, Port, Timeout, Retry, TagList,
+ Params, EngineId, TMask, MMS).
+
+add_addr(Name, Domain, Ip, Port, Timeout, Retry, TagList,
+ Params, EngineId, TMask, MMS) ->
+ Addr = {Name, Domain, Ip, Port, Timeout, Retry, TagList,
Params, EngineId, TMask, MMS},
case (catch check_target_addr(Addr)) of
{ok, Row} ->
@@ -341,8 +368,11 @@ maybe_create_var(Var) ->
init_var(Var) -> ets:insert(snmp_agent_table, {Var, 0}).
vars() ->
- [snmpUnavailableContexts,
- snmpUnknownContexts].
+ [
+ snmpUnavailableContexts,
+ snmpUnknownContexts
+ ].
+
%%-----------------------------------------------------------------
%% API functions
@@ -562,6 +592,8 @@ snmpTargetAddrTable(print) ->
Prefix, element(?snmpTargetAddrTDomain, Row),
case element(?snmpTargetAddrTDomain, Row) of
?snmpUDPDomain -> udp;
+ ?transportDomainUdpIpv4 -> udpIpv4;
+ ?transportDomainUdpIpv6 -> udpIpv6;
_ -> undefined
end,
Prefix, element(?snmpTargetAddrTAddress, Row),
@@ -610,14 +642,14 @@ snmpTargetAddrTable(get, RowIndex, Cols) ->
snmpTargetAddrTable(get_next, RowIndex, Cols) ->
next(snmpTargetAddrTable, RowIndex, Cols);
snmpTargetAddrTable(set, RowIndex, Cols0) ->
- %% BMK BMK BMK
- case (catch verify_targetAddrTable_cols(Cols0, [])) of
+ %% BMK BMK
+ case (catch verify_targetAddrTable_cols(Cols0)) of
{ok, Cols} ->
snmp_notification_mib:invalidate_cache(),
%% Add columns for augmenting table snmpTargetAddrExtTable and for
- %% target engine ID. Target engine ID is set to "". The function
+ %% target engine ID. Target engine ID is set to "". The function
%% get_target_engine_id will return "" unless a value is set using
- %% set_target_engine_id. If it is "" Informs can't be sent to the
+ %% set_target_engine_id. If it is "" Informs can't be sent to the
%% target.
NCols = Cols ++ [{?snmpTargetAddrEngineId, ""},
{?snmpTargetAddrTMask, []},
@@ -628,12 +660,12 @@ snmpTargetAddrTable(set, RowIndex, Cols0) ->
Error
end;
snmpTargetAddrTable(is_set_ok, RowIndex, Cols0) ->
- case (catch verify_targetAddrTable_cols(Cols0, [])) of
+ case (catch verify_targetAddrTable_cols(Cols0)) of
{ok, Cols} ->
%% Add columns for augmenting table snmpTargetAddrExtTable and for
- %% target engine ID. Target engine ID is set to "". The function
+ %% target engine ID. Target engine ID is set to "". The function
%% get_target_engine_id will return "" unless a value is set using
- %% set_target_engine_id. If it is "" Informs can't be sent to the
+ %% set_target_engine_id. If it is "" Informs can't be sent to the
%% target.
NCols = Cols ++ [{?snmpTargetAddrEngineId, ""},
{?snmpTargetAddrTMask, []},
@@ -647,55 +679,83 @@ snmpTargetAddrTable(Op, Arg1, Arg2) ->
Db = db(snmpTargetAddrTable),
snmp_generic:table_func(Op, Arg1, Arg2, Db).
+verify_targetAddrTable_cols(Cols) ->
+ ValidCols0 = verify_targetAddrTable_cols(Cols, []),
+ %% Make a last pass to verify TDomain and TAddress.
+ ValidCols0.
+
verify_targetAddrTable_cols([], Cols) ->
{ok, lists:reverse(Cols)};
-verify_targetAddrTable_cols([{Col, Val0}|Cols], Acc) ->
- Val = verify_targetAddrTable_col(Col, Val0),
- verify_targetAddrTable_cols(Cols, [{Col, Val}|Acc]).
+verify_targetAddrTable_cols([{Col, Val0}|Cols], ValidCols) ->
+ Val = verify_targetAddrTable_col(Col, Val0, ValidCols),
+ verify_targetAddrTable_cols(Cols, [{Col, Val}|ValidCols]).
-verify_targetAddrTable_col(?snmpTargetAddrName, Name) ->
+verify_targetAddrTable_col(?snmpTargetAddrName, Name, _) ->
case (catch snmp_conf:check_string(Name)) of
ok ->
Name;
_ ->
wrongValue(?snmpTargetAddrName)
end;
-verify_targetAddrTable_col(?snmpTargetAddrTAddress, TAddr) ->
- case (catch snmp_conf:check_taddress(TAddr)) of
+verify_targetAddrTable_col(?snmpTargetAddrTDomain, TDomain, _) ->
+ case (catch snmp_conf:check_tdomain(TDomain)) of
ok ->
- TAddr;
+ TDomain;
_ ->
- wrongValue(?snmpTargetAddrTAddress)
+ wrongValue(?snmpTargetAddrTDomain)
+ end;
+%% In order to (properly) validate the TAddress,
+%% the TDomain must already have been validated
+%% (the format of TAddress depends on TDomain).
+verify_targetAddrTable_col(?snmpTargetAddrTAddress, TAddress, ValidCols) ->
+ case lists:keysearch(?snmpTargetAddrTDomain, 1, ValidCols) of
+ {value, {?snmpTargetAddrTDomain, TDomain}} ->
+ case (catch snmp_conf:check_taddress(TDomain, TAddress)) of
+ ok ->
+ TAddress;
+ _ ->
+ wrongValue(?snmpTargetAddrTAddress)
+ end;
+ false ->
+ %% The user did not provide us with a TDomain, which
+ %% must mean that he/she intends to use the old domain.
+ TDomain = snmp_conf:mk_tdomain(default_domain()),
+ case (catch snmp_conf:check_taddress(TDomain, TAddress)) of
+ ok ->
+ TAddress;
+ _ ->
+ wrongValue(?snmpTargetAddrTAddress)
+ end
end;
-verify_targetAddrTable_col(?snmpTargetAddrTimeout, Timeout) ->
+verify_targetAddrTable_col(?snmpTargetAddrTimeout, Timeout, _) ->
case (catch snmp_conf:check_integer(Timeout)) of
ok when Timeout >= 0 ->
Timeout;
_ ->
wrongValue(?snmpTargetAddrTimeout)
end;
-verify_targetAddrTable_col(?snmpTargetAddrRetryCount, Retry) ->
+verify_targetAddrTable_col(?snmpTargetAddrRetryCount, Retry, _) ->
case (catch snmp_conf:check_integer(Retry)) of
ok when Retry >= 0 ->
Retry;
_ ->
wrongValue(?snmpTargetAddrRetryCount)
end;
-verify_targetAddrTable_col(?snmpTargetAddrTagList, TagList) ->
+verify_targetAddrTable_col(?snmpTargetAddrTagList, TagList, _) ->
case (catch snmp_conf:check_string(TagList)) of
ok ->
TagList;
_ ->
wrongValue(?snmpTargetAddrTagList)
end;
-verify_targetAddrTable_col(?snmpTargetAddrParams, Params) ->
+verify_targetAddrTable_col(?snmpTargetAddrParams, Params, _) ->
case (catch snmp_conf:check_string(Params)) of
ok ->
Params;
_ ->
wrongValue(?snmpTargetAddrParams)
end;
-verify_targetAddrTable_col(_, Val) ->
+verify_targetAddrTable_col(_, Val, _) ->
Val.
diff --git a/lib/snmp/src/agent/snmpa.erl b/lib/snmp/src/agent/snmpa.erl
index 22fbd33add..b2e4f253ab 100644
--- a/lib/snmp/src/agent/snmpa.erl
+++ b/lib/snmp/src/agent/snmpa.erl
@@ -60,6 +60,7 @@
register_subagent/3, unregister_subagent/2,
+ send_notification2/3,
send_notification/3, send_notification/4, send_notification/5,
send_notification/6, send_notification/7,
send_trap/3, send_trap/4,
@@ -108,8 +109,9 @@
-export([print_mib_info/0, print_mib_tables/0, print_mib_variables/0]).
-include("snmpa_atl.hrl").
+-include("snmpa_internal.hrl").
--define(EXTRA_INFO, undefined).
+-define(DISCO_EXTRA_INFO, undefined).
%%-----------------------------------------------------------------
@@ -596,22 +598,56 @@ set_request_limit(Agent, NewLimit) ->
%% -
+send_notification2(Agent, Notification, SendOpts) ->
+ snmpa_agent:send_notification(Agent, Notification, SendOpts).
+
send_notification(Agent, Notification, Recv) ->
- send_notification(Agent, Notification, Recv, "", "", []).
+ SendOpts =
+ [
+ {receiver, Recv},
+ {varbinds, []},
+ {name, ""},
+ {context, ""},
+ {extra, ?DEFAULT_NOTIF_EXTRA_INFO}
+ ],
+ send_notification2(Agent, Notification, SendOpts).
send_notification(Agent, Notification, Recv, Varbinds) ->
- send_notification(Agent, Notification, Recv, "", "", Varbinds).
+ SendOpts =
+ [
+ {receiver, Recv},
+ {varbinds, Varbinds},
+ {name, ""},
+ {context, ""},
+ {extra, ?DEFAULT_NOTIF_EXTRA_INFO}
+ ],
+ send_notification2(Agent, Notification, SendOpts).
send_notification(Agent, Notification, Recv, NotifyName, Varbinds) ->
- send_notification(Agent, Notification, Recv, NotifyName, "", Varbinds).
+ SendOpts =
+ [
+ {receiver, Recv},
+ {varbinds, Varbinds},
+ {name, NotifyName},
+ {context, ""},
+ {extra, ?DEFAULT_NOTIF_EXTRA_INFO}
+ ],
+ send_notification2(Agent, Notification, SendOpts).
send_notification(Agent, Notification, Recv, NotifyName,
ContextName, Varbinds)
when (is_list(NotifyName) andalso
is_list(ContextName) andalso
is_list(Varbinds)) ->
- snmpa_agent:send_trap(Agent, Notification, NotifyName,
- ContextName, Recv, Varbinds).
+ SendOpts =
+ [
+ {receiver, Recv},
+ {varbinds, Varbinds},
+ {name, NotifyName},
+ {context, ContextName},
+ {extra, ?DEFAULT_NOTIF_EXTRA_INFO}
+ ],
+ send_notification2(Agent, Notification, SendOpts).
send_notification(Agent, Notification, Recv,
NotifyName, ContextName, Varbinds, LocalEngineID)
@@ -619,8 +655,16 @@ send_notification(Agent, Notification, Recv,
is_list(ContextName) andalso
is_list(Varbinds) andalso
is_list(LocalEngineID)) ->
- snmpa_agent:send_trap(Agent, Notification, NotifyName,
- ContextName, Recv, Varbinds, LocalEngineID).
+ SendOpts =
+ [
+ {receiver, Recv},
+ {varbinds, Varbinds},
+ {name, NotifyName},
+ {context, ContextName},
+ {extra, ?DEFAULT_NOTIF_EXTRA_INFO},
+ {local_engine_id, LocalEngineID}
+ ],
+ send_notification2(Agent, Notification, SendOpts).
%% Kept for backwards compatibility
send_trap(Agent, Trap, Community) ->
@@ -655,7 +699,7 @@ discovery(TargetName, Notification, Varbinds, DiscoHandler)
discovery(TargetName, Notification, ContextName, Varbinds, DiscoHandler).
discovery(TargetName, Notification, ContextName, Varbinds, DiscoHandler) ->
- ExtraInfo = ?EXTRA_INFO,
+ ExtraInfo = ?DISCO_EXTRA_INFO,
discovery(TargetName, Notification, ContextName, Varbinds, DiscoHandler,
ExtraInfo).
diff --git a/lib/snmp/src/agent/snmpa_acm.erl b/lib/snmp/src/agent/snmpa_acm.erl
index 6ad4f0b442..30bd34a205 100644
--- a/lib/snmp/src/agent/snmpa_acm.erl
+++ b/lib/snmp/src/agent/snmpa_acm.erl
@@ -62,11 +62,13 @@
%% {error, Reason} |
%% {discarded, Variable, Reason}
%% Types: Pdu = #pdu
-%% ACMData = acm_data() = {community, Community, Address} |
-%% {v3, MsgID, SecModel, SecName, SecLevel,
-%% ContextEngineID, ContextName, SecData}
+%% ACMData = acm_data() =
+%% {community, SecModel, Community, TDomain, TAddress} |
+%% {v3, MsgID, SecModel, SecName, SecLevel,
+%% ContextEngineID, ContextName, SecData}
%% Community = string()
-%% Address = ip() ++ udp() (list)
+%% TDomain = ?transportDomainUdpIpv4 | ?transportDomainUdpIpv6
+%% TAddress = ip() ++ udp() (list)
%% MsgID = integer() <not used>
%% SecModel = ?SEC_* (see snmp_types.hrl)
%% SecName = string()
@@ -114,7 +116,10 @@ error2status(_) -> genErr.
%% discarded: no error response is sent
%% authentication_failure: no error response is sent, a trap is generated
%%-----------------------------------------------------------------
-init_ca(Pdu, {community, SecModel, Community, TAddr}) ->
+init_ca(Pdu, {community, SecModel, Community, TAddress}) ->
+ TDomain = snmp_conf:mk_tdomain(snmp_target_mib:default_domain()),
+ init_ca(Pdu, {community, SecModel, Community, TDomain, TAddress});
+init_ca(Pdu, {community, SecModel, Community, TDomain, TAddress}) ->
%% This is a v1 or v2c request. Use SNMP-COMMUNITY-MIB to
%% map the community to vacm parameters.
?vtrace("check access for ~n"
@@ -126,18 +131,18 @@ init_ca(Pdu, {community, SecModel, Community, TAddr}) ->
_ -> read
end,
?vtrace("View type: ~p", [ViewType]),
- CaCacheKey = {Community, SecModel, TAddr, ViewType},
+ CaCacheKey = {Community, SecModel, TDomain, TAddress, ViewType},
case check_ca_cache(CaCacheKey) of
false ->
- case snmp_community_mib:community2vacm(Community,
- {?snmpUDPDomain,TAddr}) of
+ case snmp_community_mib:community2vacm(Community,
+ {TDomain, TAddress}) of
{SecName, _ContextEngineId, ContextName} ->
%% Maybe we should check that the contextEngineID
%% matches the local engineID?
%% It better, since we don't impl. proxy.
?vtrace("get mib view"
"~n Security name: ~p"
- "~n Context name: ~p",[SecName,ContextName]),
+ "~n Context name: ~p",[SecName, ContextName]),
case snmpa_vacm:get_mib_view(ViewType, SecModel, SecName,
?'SnmpSecurityLevel_noAuthNoPriv',
ContextName) of
@@ -153,7 +158,7 @@ init_ca(Pdu, {community, SecModel, Community, TAddr}) ->
end;
undefined ->
{authentication_failure, snmpInBadCommunityNames,
- {bad_community_name, TAddr, Community}}
+ {bad_community_name, TDomain, TAddress, Community}}
end;
Res ->
Res
@@ -219,6 +224,7 @@ upd_ca_cache(KeyVal) ->
invalidate_ca_cache() ->
erase(ca_cache).
+
%%-----------------------------------------------------------------
%% Func: check(Res) -> {ok, MibView} | {discarded, Variable, Reason}
%% Args: Res = {ok, AccessFunc} |
diff --git a/lib/snmp/src/agent/snmpa_agent.erl b/lib/snmp/src/agent/snmpa_agent.erl
index f70885b2ec..e4cfeddb6a 100644
--- a/lib/snmp/src/agent/snmpa_agent.erl
+++ b/lib/snmp/src/agent/snmpa_agent.erl
@@ -30,7 +30,7 @@
-export([subagent_set/2,
load_mibs/2, unload_mibs/2, which_mibs/1, whereis_mib/2, info/1,
register_subagent/3, unregister_subagent/2,
- send_trap/6, send_trap/7,
+ send_notification/3,
register_notification_filter/5,
unregister_notification_filter/2,
which_notification_filter/1,
@@ -62,10 +62,16 @@
-export([increment_counter/3]).
-export([restart_worker/1, restart_set_worker/1]).
+%% For backward compatibillity
+-export([send_trap/6, send_trap/7]).
+
%% Internal exports
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3, tr_var/2, tr_varbind/1,
- handle_pdu/7, worker/2, worker_loop/1, do_send_trap/7]).
+ handle_pdu/7, worker/2, worker_loop/1,
+ do_send_trap/7, do_send_trap/8]).
+
+-include("snmpa_internal.hrl").
-ifndef(default_verbosity).
-define(default_verbosity,silence).
@@ -527,6 +533,11 @@ which_notification_filter(Agent) ->
call(Agent, which_notification_filter).
+send_notification(Agent, Notification, SendOpts) ->
+ Msg = {send_notif, Notification, SendOpts},
+ maybe_call(Agent, Msg).
+
+%% <BACKWARD-COMPAT>
send_trap(Agent, Trap, NotifyName, CtxName, Recv, Varbinds) ->
?d("send_trap -> entry with"
"~n self(): ~p"
@@ -538,13 +549,33 @@ send_trap(Agent, Trap, NotifyName, CtxName, Recv, Varbinds) ->
"~n Varbinds: ~p",
[self(), Agent, wis(Agent),
Trap, NotifyName, CtxName, Recv, Varbinds]),
- Msg = {send_trap, Trap, NotifyName, CtxName, Recv, Varbinds},
- case (wis(Agent) =:= self()) of
- false ->
- call(Agent, Msg);
- true ->
- Agent ! Msg
- end.
+ SendOpts = [
+ {receiver, Recv},
+ {varbinds, Varbinds},
+ {name, NotifyName},
+ {context, CtxName},
+ {extra, ?DEFAULT_NOTIF_EXTRA_INFO}
+ ],
+ send_notification(Agent, Trap, SendOpts).
+
+%% send_trap(Agent, Trap, NotifyName, CtxName, Recv, Varbinds) ->
+%% ?d("send_trap -> entry with"
+%% "~n self(): ~p"
+%% "~n Agent: ~p [~p]"
+%% "~n Trap: ~p"
+%% "~n NotifyName: ~p"
+%% "~n CtxName: ~p"
+%% "~n Recv: ~p"
+%% "~n Varbinds: ~p",
+%% [self(), Agent, wis(Agent),
+%% Trap, NotifyName, CtxName, Recv, Varbinds]),
+%% Msg = {send_trap, Trap, NotifyName, CtxName, Recv, Varbinds},
+%% case (wis(Agent) =:= self()) of
+%% false ->
+%% call(Agent, Msg);
+%% true ->
+%% Agent ! Msg
+%% end.
send_trap(Agent, Trap, NotifyName, CtxName, Recv, Varbinds, LocalEngineID) ->
?d("send_trap -> entry with"
@@ -558,14 +589,38 @@ send_trap(Agent, Trap, NotifyName, CtxName, Recv, Varbinds, LocalEngineID) ->
"~n LocalEngineID: ~p",
[self(), Agent, wis(Agent),
Trap, NotifyName, CtxName, Recv, Varbinds, LocalEngineID]),
- Msg =
- {send_trap, Trap, NotifyName, CtxName, Recv, Varbinds, LocalEngineID},
- case (wis(Agent) =:= self()) of
- false ->
- call(Agent, Msg);
- true ->
- Agent ! Msg
- end.
+ SendOpts = [
+ {receiver, Recv},
+ {varbinds, Varbinds},
+ {name, NotifyName},
+ {context, CtxName},
+ {extra, ?DEFAULT_NOTIF_EXTRA_INFO},
+ {local_engine_id, LocalEngineID}
+ ],
+ send_notification(Agent, Trap, SendOpts).
+
+%% send_trap(Agent, Trap, NotifyName, CtxName, Recv, Varbinds, LocalEngineID) ->
+%% ?d("send_trap -> entry with"
+%% "~n self(): ~p"
+%% "~n Agent: ~p [~p]"
+%% "~n Trap: ~p"
+%% "~n NotifyName: ~p"
+%% "~n CtxName: ~p"
+%% "~n Recv: ~p"
+%% "~n Varbinds: ~p"
+%% "~n LocalEngineID: ~p",
+%% [self(), Agent, wis(Agent),
+%% Trap, NotifyName, CtxName, Recv, Varbinds, LocalEngineID]),
+%% Msg =
+%% {send_trap, Trap, NotifyName, CtxName, Recv, Varbinds, LocalEngineID},
+%% case (wis(Agent) =:= self()) of
+%% false ->
+%% call(Agent, Msg);
+%% true ->
+%% Agent ! Msg
+%% end.
+
+%% </BACKWARD-COMPAT>
%% -- Discovery functions --
@@ -655,7 +710,14 @@ wis(Atom) when is_atom(Atom) ->
forward_trap(Agent, TrapRecord, NotifyName, CtxName, Recv, Varbinds) ->
- Agent ! {forward_trap, TrapRecord, NotifyName, CtxName, Recv, Varbinds}.
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
+ forward_trap(Agent, TrapRecord, NotifyName, CtxName, Recv, Varbinds,
+ ExtraInfo).
+
+forward_trap(Agent, TrapRecord, NotifyName, CtxName, Recv, Varbinds,
+ ExtraInfo) ->
+ Agent ! {forward_trap, TrapRecord, NotifyName, CtxName, Recv, Varbinds,
+ ExtraInfo}.
%%-----------------------------------------------------------------
@@ -745,6 +807,22 @@ handle_info(worker_available, S) ->
?vdebug("worker available",[]),
{noreply, S#state{worker_state = ready}};
+handle_info({send_notif, Notification, SendOpts}, S) ->
+ ?vlog("[handle_info] send trap request:"
+ "~n Notification: ~p"
+ "~n SendOpts: ~p",
+ [Notification, SendOpts]),
+ case (catch handle_send_trap(cast, S, Notification, SendOpts)) of
+ {ok, NewS} ->
+ {noreply, NewS};
+ {'EXIT', R} ->
+ ?vinfo("Trap not sent:~n ~p", [R]),
+ {noreply, S};
+ _ ->
+ {noreply, S}
+ end;
+
+%% <BACKWARD-COMPAT>
handle_info({send_trap, Trap, NotifyName, ContextName, Recv, Varbinds}, S) ->
?vlog("[handle_info] send trap request:"
"~n Trap: ~p"
@@ -753,9 +831,10 @@ handle_info({send_trap, Trap, NotifyName, ContextName, Recv, Varbinds}, S) ->
"~n Recv: ~p"
"~n Varbinds: ~p",
[Trap, NotifyName, ContextName, Recv, Varbinds]),
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
LocalEngineID = ?DEFAULT_LOCAL_ENGINE_ID,
- case catch handle_send_trap(S, Trap, NotifyName, ContextName,
- Recv, Varbinds, LocalEngineID) of
+ case (catch handle_send_trap(S, Trap, NotifyName, ContextName,
+ Recv, Varbinds, LocalEngineID, ExtraInfo)) of
{ok, NewS} ->
{noreply, NewS};
{'EXIT', R} ->
@@ -775,8 +854,9 @@ handle_info({send_trap, Trap, NotifyName, ContextName, Recv, Varbinds,
"~n Varbinds: ~p"
"~n LocalEngineID: ~p",
[Trap, NotifyName, ContextName, Recv, Varbinds, LocalEngineID]),
- case catch handle_send_trap(S, Trap, NotifyName, ContextName,
- Recv, Varbinds, LocalEngineID) of
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
+ case (catch handle_send_trap(S, Trap, NotifyName, ContextName,
+ Recv, Varbinds, LocalEngineID, ExtraInfo)) of
{ok, NewS} ->
{noreply, NewS};
{'EXIT', R} ->
@@ -785,8 +865,31 @@ handle_info({send_trap, Trap, NotifyName, ContextName, Recv, Varbinds,
_ ->
{noreply, S}
end;
+%% </BACKWARD-COMPAT>
handle_info({forward_trap, TrapRecord, NotifyName, ContextName,
+ Recv, Varbinds, ExtraInfo}, S) ->
+ ?vlog("[handle_info] forward trap request:"
+ "~n TrapRecord: ~p"
+ "~n NotifyName: ~p"
+ "~n ContextName: ~p"
+ "~n Recv: ~p"
+ "~n Varbinds: ~p",
+ [TrapRecord, NotifyName, ContextName, Recv, Varbinds]),
+ LocalEngineID = ?DEFAULT_LOCAL_ENGINE_ID,
+ case (catch maybe_send_trap(S, TrapRecord, NotifyName, ContextName,
+ Recv, Varbinds, LocalEngineID, ExtraInfo)) of
+ {ok, NewS} ->
+ {noreply, NewS};
+ {'EXIT', R} ->
+ ?vinfo("Trap not sent:~n ~p", [R]),
+ {noreply, S};
+ _ ->
+ {noreply, S}
+ end;
+
+%% <BACKWARD-COMPAT>
+handle_info({forward_trap, TrapRecord, NotifyName, ContextName,
Recv, Varbinds}, S) ->
?vlog("[handle_info] forward trap request:"
"~n TrapRecord: ~p"
@@ -795,9 +898,10 @@ handle_info({forward_trap, TrapRecord, NotifyName, ContextName,
"~n Recv: ~p"
"~n Varbinds: ~p",
[TrapRecord, NotifyName, ContextName, Recv, Varbinds]),
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
LocalEngineID = ?DEFAULT_LOCAL_ENGINE_ID,
case (catch maybe_send_trap(S, TrapRecord, NotifyName, ContextName,
- Recv, Varbinds, LocalEngineID)) of
+ Recv, Varbinds, LocalEngineID, ExtraInfo)) of
{ok, NewS} ->
{noreply, NewS};
{'EXIT', R} ->
@@ -806,6 +910,7 @@ handle_info({forward_trap, TrapRecord, NotifyName, ContextName,
_ ->
{noreply, S}
end;
+%% </BACKWARD-COMPAT>
handle_info({backup_done, Reply}, #state{backup = {_, From}} = S) ->
?vlog("[handle_info] backup done:"
@@ -908,6 +1013,23 @@ handle_call(restart_set_worker, _From, #state{set_worker = Pid} = S) ->
end,
{reply, ok, S};
+handle_call({send_notif, Notification, SendOpts}, _From, S) ->
+ ?vlog("[handle_info] send trap request:"
+ "~n Notification: ~p"
+ "~n SendOpts: ~p",
+ [Notification, SendOpts]),
+ case (catch handle_send_trap(call, S, Notification, SendOpts)) of
+ {ok, NewS} ->
+ {reply, ok, NewS};
+ {'EXIT', Reason} ->
+ ?vinfo("Trap not sent:~n ~p", [Reason]),
+ {reply, {error, {send_failed, Reason}}, S};
+ _ ->
+ ?vinfo("Trap not sent", []),
+ {reply, {error, send_failed}, S}
+ end;
+
+%% <BACKWARD-COMPAT>
handle_call({send_trap, Trap, NotifyName, ContextName, Recv, Varbinds},
_From, S) ->
?vlog("[handle_call] send trap request:"
@@ -917,19 +1039,20 @@ handle_call({send_trap, Trap, NotifyName, ContextName, Recv, Varbinds},
"~n Recv: ~p"
"~n Varbinds: ~p",
[Trap, NotifyName, ContextName, Recv, Varbinds]),
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
LocalEngineID =
case S#state.type of
master_agent ->
?DEFAULT_LOCAL_ENGINE_ID;
_ ->
%% subagent -
- %% we don't need this, eventually the trap sent request
- %% will reach the master-agent and then it will look up
- %% the proper engine id.
+ %% we don't need this now, eventually the trap send
+ %% request will reach the master-agent and then it
+ %% will look up the proper engine id.
ignore
end,
case (catch handle_send_trap(S, Trap, NotifyName, ContextName,
- Recv, Varbinds, LocalEngineID)) of
+ Recv, Varbinds, LocalEngineID, ExtraInfo)) of
{ok, NewS} ->
{reply, ok, NewS};
{'EXIT', Reason} ->
@@ -951,8 +1074,9 @@ handle_call({send_trap, Trap, NotifyName,
"~n Varbinds: ~p"
"~n LocalEngineID: ~p",
[Trap, NotifyName, ContextName, Recv, Varbinds, LocalEngineID]),
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
case (catch handle_send_trap(S, Trap, NotifyName, ContextName,
- Recv, Varbinds, LocalEngineID)) of
+ Recv, Varbinds, LocalEngineID, ExtraInfo)) of
{ok, NewS} ->
{reply, ok, NewS};
{'EXIT', Reason} ->
@@ -962,6 +1086,7 @@ handle_call({send_trap, Trap, NotifyName,
?vinfo("Trap not sent", []),
{reply, {error, send_failed}, S}
end;
+%% </BACKWARD-COMPAT>
handle_call({discovery,
TargetName, Notification, ContextName, Vbs, DiscoHandler,
@@ -1470,7 +1595,10 @@ handle_backup_res([{Who, Crap}|Results], Acc) ->
%% because we (for some reason) support the function
%% snmpa:current_community().
%%-----------------------------------------------------------------
-cheat({community, _SecModel, Community, _IpUdp}, Address, ContextName) ->
+cheat({community, SecModel, Community, _TAddress}, Address, ContextName) ->
+ {Community, Address, ContextName};
+cheat({community, _SecModel, Community, _TDomain, _TAddress},
+ Address, ContextName) ->
{Community, Address, ContextName};
cheat(_, Address, ContextName) ->
{"", Address, ContextName}.
@@ -1523,19 +1651,24 @@ spawn_thread(Vsn, Pdu, PduMS, ACMData, Address, Extra) ->
proc_lib:spawn_link(?MODULE, handle_pdu, Args).
spawn_trap_thread(TrapRec, NotifyName, ContextName, Recv, Vbs,
- LocalEngineID) ->
+ LocalEngineID, ExtraInfo) ->
Dict = get(),
proc_lib:spawn_link(?MODULE, do_send_trap,
[TrapRec, NotifyName, ContextName,
- Recv, Vbs, LocalEngineID, Dict]).
+ Recv, Vbs, LocalEngineID, ExtraInfo, Dict]).
do_send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs,
LocalEngineID, Dict) ->
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
+ do_send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs,
+ LocalEngineID, ExtraInfo, Dict).
+do_send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs,
+ LocalEngineID, ExtraInfo, Dict) ->
lists:foreach(fun({Key, Val}) -> put(Key, Val) end, Dict),
put(sname,trap_sender_short_name(get(sname))),
?vlog("starting",[]),
snmpa_trap:send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs,
- LocalEngineID, get(net_if)).
+ LocalEngineID, ExtraInfo, get(net_if)).
worker(Master, Dict) ->
lists:foreach(fun({Key, Val}) -> put(Key, Val) end, Dict),
@@ -1550,21 +1683,34 @@ worker_loop(Master) ->
handle_pdu(Vsn, Pdu, PduMS, ACMData, Address, Extra),
Master ! worker_available;
- %% We don't trap exits!
+ %% We don't trap EXITs!
{TrapRec, NotifyName, ContextName, Recv, Vbs} ->
?vtrace("worker_loop -> send trap:"
"~n ~p", [TrapRec]),
snmpa_trap:send_trap(TrapRec, NotifyName,
- ContextName, Recv, Vbs, get(net_if)),
+ ContextName, Recv, Vbs,
+ ?DEFAULT_NOTIF_EXTRA_INFO,
+ get(net_if)),
Master ! worker_available;
- %% We don't trap exits!
+ %% We don't trap EXITs!
{send_trap,
TrapRec, NotifyName, ContextName, Recv, Vbs, LocalEngineID} ->
?vtrace("worker_loop -> send trap:"
"~n ~p", [TrapRec]),
snmpa_trap:send_trap(TrapRec, NotifyName,
- ContextName, Recv, Vbs, LocalEngineID,
+ ContextName, Recv, Vbs,
+ LocalEngineID, ?DEFAULT_NOTIF_EXTRA_INFO,
+ get(net_if)),
+ Master ! worker_available;
+
+ {send_trap,
+ TrapRec, NotifyName, ContextName, Recv, Vbs, LocalEngineID, ExtraInfo} ->
+ ?vtrace("worker_loop -> send trap:"
+ "~n ~p", [TrapRec]),
+ snmpa_trap:send_trap(TrapRec, NotifyName,
+ ContextName, Recv, Vbs,
+ LocalEngineID, ExtraInfo,
get(net_if)),
Master ! worker_available;
@@ -1713,34 +1859,79 @@ handle_acm_error(Vsn, Reason, Pdu, ACMData, Address, Extra) ->
ok
end.
+get_opt(Key, Default, SendOpts) ->
+ case lists:keysearch(Key, 1, SendOpts) of
+ {value, {Key, Value}} ->
+ Value;
+ false ->
+ Default
+ end.
-handle_send_trap(S, TrapName, NotifyName, ContextName, Recv, Varbinds,
- LocalEngineID) ->
+handle_send_trap(call, #state{type = master_agent} = S,
+ Notification, SendOpts) ->
+ SendOpts2 =
+ case lists:keymember(local_engine_id, 1, SendOpts) of
+ true ->
+ SendOpts;
+ false ->
+ [{local_engine_id, ?DEFAULT_LOCAL_ENGINE_ID}|SendOpts]
+ end,
+ handle_send_trap(S, Notification, SendOpts2);
+handle_send_trap(call, S, Notification, SendOpts) ->
+ SendOpts2 =
+ case lists:keymember(local_engine_id, 1, SendOpts) of
+ true ->
+ SendOpts;
+ false ->
+ %% subagent -
+ %% we don't need this now, eventually the trap send
+ %% request will reach the master-agent and then it
+ %% will look up the proper engine id.
+ [{local_engine_id, ignore}|SendOpts]
+ end,
+ handle_send_trap(S, Notification, SendOpts2);
+handle_send_trap(_, S, Notification, SendOpts) ->
+ handle_send_trap(S, Notification, SendOpts).
+
+handle_send_trap(S, Notification, SendOpts) ->
+ NotifyName = get_opt(name, "", SendOpts),
+ ContextName = get_opt(context, "", SendOpts),
+ Recv = get_opt(receiver, no_receiver, SendOpts),
+ Varbinds = get_opt(varbinds, [], SendOpts),
+ ExtraInfo = get_opt(extra, ?DEFAULT_NOTIF_EXTRA_INFO, SendOpts),
+ LocalEngineID =
+ get_opt(local_engine_id, ?DEFAULT_LOCAL_ENGINE_ID, SendOpts),
+ handle_send_trap(S, Notification, NotifyName, ContextName, Recv, Varbinds,
+ LocalEngineID, ExtraInfo).
+
+handle_send_trap(#state{type = Type} = S,
+ Notification, NotifyName, ContextName, Recv, Varbinds,
+ LocalEngineID, ExtraInfo) ->
?vtrace("handle_send_trap -> entry with"
- "~n S#state.type: ~p"
+ "~n Agent type: ~p"
"~n TrapName: ~p"
"~n NotifyName: ~p"
"~n ContextName: ~p"
"~n LocalEngineID: ~p",
- [S#state.type, TrapName, NotifyName, ContextName, LocalEngineID]),
- case snmpa_trap:construct_trap(TrapName, Varbinds) of
+ [Type, Notification, NotifyName, ContextName, LocalEngineID]),
+ case snmpa_trap:construct_trap(Notification, Varbinds) of
{ok, TrapRecord, VarList} ->
?vtrace("handle_send_trap -> construction complete: "
"~n TrapRecord: ~p"
"~n VarList: ~p",
[TrapRecord, VarList]),
- case S#state.type of
+ case Type of
subagent ->
?vtrace("handle_send_trap -> [sub] forward trap",[]),
maybe_forward_trap(S, TrapRecord, NotifyName,
- ContextName, Recv, VarList),
+ ContextName, Recv, VarList, ExtraInfo),
{ok, S};
master_agent ->
?vtrace("handle_send_trap -> "
"[master] handle send trap",[]),
maybe_send_trap(S, TrapRecord, NotifyName,
ContextName, Recv, VarList,
- LocalEngineID)
+ LocalEngineID, ExtraInfo)
end;
error ->
error
@@ -1748,7 +1939,7 @@ handle_send_trap(S, TrapName, NotifyName, ContextName, Recv, Varbinds,
maybe_forward_trap(#state{parent = Parent, nfilters = NFs} = S,
- TrapRec, NotifyName, ContextName, Recv, V) ->
+ TrapRec, NotifyName, ContextName, Recv, V, ExtraInfo) ->
?vtrace("maybe_forward_trap -> entry with"
"~n NFs: ~p", [NFs]),
case filter_notification(NFs, [], TrapRec) of
@@ -1764,13 +1955,15 @@ maybe_forward_trap(#state{parent = Parent, nfilters = NFs} = S,
{send, [], TrapRec2} ->
?vtrace("maybe_forward_trap -> forward trap:"
"~n ~p", [TrapRec2]),
- forward_trap(Parent, TrapRec2, NotifyName, ContextName, Recv, V),
+ forward_trap(Parent, TrapRec2, NotifyName, ContextName, Recv, V,
+ ExtraInfo),
{ok, S};
{send, Removed, TrapRec2} ->
?vtrace("maybe_forward_trap -> forward trap:"
"~n ~p", [TrapRec2]),
- forward_trap(Parent, TrapRec2, NotifyName, ContextName, Recv, V),
+ forward_trap(Parent, TrapRec2, NotifyName, ContextName, Recv, V,
+ ExtraInfo),
NFs2 = del_notification_filter(Removed, NFs),
{ok, S#state{nfilters = NFs2}}
end.
@@ -1778,7 +1971,7 @@ maybe_forward_trap(#state{parent = Parent, nfilters = NFs} = S,
maybe_send_trap(#state{nfilters = NFs} = S,
TrapRec, NotifyName, ContextName, Recv, Varbinds,
- LocalEngineID) ->
+ LocalEngineID, ExtraInfo) ->
?vtrace("maybe_send_trap -> entry with"
"~n NFs: ~p", [NFs]),
case filter_notification(NFs, [], TrapRec) of
@@ -1796,7 +1989,7 @@ maybe_send_trap(#state{nfilters = NFs} = S,
"~n ~p", [TrapRec2]),
do_handle_send_trap(S, TrapRec2,
NotifyName, ContextName, Recv, Varbinds,
- LocalEngineID);
+ LocalEngineID, ExtraInfo);
{send, Removed, TrapRec2} ->
?vtrace("maybe_send_trap -> send trap:"
@@ -1804,36 +1997,37 @@ maybe_send_trap(#state{nfilters = NFs} = S,
NFs2 = del_notification_filter(Removed, NFs),
do_handle_send_trap(S#state{nfilters = NFs2}, TrapRec2,
NotifyName, ContextName, Recv, Varbinds,
- LocalEngineID)
+ LocalEngineID, ExtraInfo)
end.
do_handle_send_trap(S, TrapRec, NotifyName, ContextName, Recv, Varbinds,
- LocalEngineID) ->
+ LocalEngineID, ExtraInfo) ->
Vbs = snmpa_trap:try_initialise_vars(get(mibserver), Varbinds),
case S#state.type of
subagent ->
forward_trap(S#state.parent, TrapRec, NotifyName, ContextName,
- Recv, Vbs),
+ Recv, Vbs, ExtraInfo),
{ok, S};
master_agent when S#state.multi_threaded =:= false ->
?vtrace("do_handle_send_trap -> send trap:"
"~n ~p", [TrapRec]),
snmpa_trap:send_trap(TrapRec, NotifyName, ContextName,
- Recv, Vbs, LocalEngineID, get(net_if)),
+ Recv, Vbs, LocalEngineID, ExtraInfo,
+ get(net_if)),
{ok, S};
master_agent when S#state.worker_state =:= busy ->
%% Main worker busy => create new worker
?vtrace("do_handle_send_trap -> main worker busy: "
"spawn a trap sender", []),
spawn_trap_thread(TrapRec, NotifyName, ContextName, Recv, Vbs,
- LocalEngineID),
+ LocalEngineID, ExtraInfo),
{ok, S};
master_agent ->
%% Send to main worker
?vtrace("do_handle_send_trap -> send to main worker",[]),
S#state.worker ! {send_trap,
TrapRec, NotifyName, ContextName, Recv, Vbs,
- LocalEngineID},
+ LocalEngineID, ExtraInfo},
{ok, S#state{worker_state = busy}}
end.
@@ -1932,7 +2126,7 @@ send_discovery(S, From,
TargetName, Record, ContextName, InitVars,
DiscoHandler, ExtraInfo) ->
case snmpa_trap:send_discovery(TargetName, Record, ContextName,
- InitVars, get(net_if)) of
+ InitVars, get(net_if), ExtraInfo) of
{ok, Sender, SecLevel} ->
Disco = #disco{from = From,
rec = Record,
@@ -2009,9 +2203,12 @@ handle_discovery_response(#state{disco = #disco{target = TargetName,
#disco{rec = Record,
ctx = ContextName,
ivbs = InitVars} = Disco,
- case snmpa_trap:send_discovery(TargetName, Record,
+ case snmpa_trap:send_discovery(TargetName,
+ Record,
ContextName,
- InitVars, get(net_if)) of
+ InitVars,
+ get(net_if),
+ ExtraInfo) of
{ok, Sender, _SecLevel} ->
?vdebug("handle_discovery_response(1) -> "
"stage 2 trap sent", []),
@@ -3971,6 +4168,14 @@ user_err(F, A) ->
%% ---------------------------------------------------------------------
+maybe_call(Server, Req) ->
+ case (wis(Server) =:= self()) of
+ false ->
+ call(Server, Req);
+ true ->
+ Server ! Req
+ end.
+
call(Server, Req) ->
gen_server:call(Server, Req, infinity).
diff --git a/lib/snmp/src/agent/snmpa_authentication_service.erl b/lib/snmp/src/agent/snmpa_authentication_service.erl
index 572fab7fbf..d406c58ee4 100644
--- a/lib/snmp/src/agent/snmpa_authentication_service.erl
+++ b/lib/snmp/src/agent/snmpa_authentication_service.erl
@@ -29,11 +29,12 @@ behaviour_info(_) ->
%%-----------------------------------------------------------------
%% init_check_access(Pdu, ACMData)
%% Pdu = #pdu
-%% ACMData = acm_data() = {community, Community, Address} |
-%% {v3, MsgID, SecModel, SecName, SecLevel,
-%% ContextEngineID, ContextName, SecData}
+%% ACMData = acm_data() = {community, SecModel, Community, TDomain, TAddress} |
+%% {v3, MsgID, SecModel, SecName, SecLevel,
+%% ContextEngineID, ContextName, SecData}
%% Community = string()
-%% Address = ip() ++ udp() (list)
+%% TDomain = ?transportDomainUdpIpv4 | ?transportDomainUdpIpv6
+%% TAddress = ip() ++ udp() (list)
%% MsgID = integer() <not used>
%% SecModel = ?SEC_* (see snmp_types.hrl)
%% SecName = string()
diff --git a/lib/snmp/src/agent/snmpa_conf.erl b/lib/snmp/src/agent/snmpa_conf.erl
index b4fc716b3e..4e5aab5319 100644
--- a/lib/snmp/src/agent/snmpa_conf.erl
+++ b/lib/snmp/src/agent/snmpa_conf.erl
@@ -48,7 +48,7 @@
%% target_addr.conf
target_addr_entry/5, target_addr_entry/6,
- target_addr_entry/8, target_addr_entry/10,
+ target_addr_entry/8, target_addr_entry/10, target_addr_entry/11,
write_target_addr_config/2, write_target_addr_config/3,
append_target_addr_config/2,
read_target_addr_config/1,
@@ -447,7 +447,23 @@ target_addr_entry(Name,
EngineId,
TMask,
MaxMessageSize) ->
+ target_addr_entry(Name, snmp_target_mib:default_domain(), Ip, Udp,
+ Timeout, RetryCount, TagList, ParamsName,
+ TMask, MaxMessageSize).
+
+target_addr_entry(Name,
+ Domain,
+ Ip,
+ Udp,
+ Timeout,
+ RetryCount,
+ TagList,
+ ParamsName,
+ EngineId,
+ TMask,
+ MaxMessageSize) ->
{Name,
+ Domain,
Ip,
Udp,
Timeout,
@@ -465,9 +481,13 @@ write_target_addr_config(Dir, Conf) ->
"%% The data is inserted into the snmpTargetAddrTable defined\n"
"%% in SNMP-TARGET-MIB, and in the snmpTargetAddrExtTable defined\n"
"%% in SNMP-COMMUNITY-MIB.\n"
-"%% Each row is a 10-tuple:\n"
-"%% {Name, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId,\n"
-"%% TMask, MaxMessageSize}.\n"
+"%% Each row is a 10 or 11-tuple (Domain is optional):\n"
+"%% {Name, \n"
+"%% Domain, Ip, Port, \n"
+"%% Timeout, RetryCount, TagList, ParamsName, EngineId,\n"
+"%% TMask, MaxMessageSize}.\n"
+"%% The value of Domain decide the format of the Ip and TMask values. \n"
+"%% If not present, classic Ipv4 is assumed. \n"
"%% The EngineId value is only used if Inform-Requests are sent to this\n"
"%% target. If Informs are not sent, this value is ignored, and can be\n"
"%% e.g. an empty string. However, if Informs are sent, it is essential\n"
@@ -521,16 +541,31 @@ write_target_addr_conf(Fd, Hdr, Conf) ->
write_target_addr_conf(Fd, Conf) ->
Fun = fun(Entry) -> do_write_target_addr_conf(Fd, Entry) end,
- lists:foreach(Fun, Conf).
+ lists:foreach(Fun, Conf),
+ ok.
do_write_target_addr_conf(Fd,
- {Name, Ip, Udp,
+ {Name,
+ Ip, Udp,
+ Timeout, RetryCount, TagList,
+ ParamsName, EngineId,
+ TMask, MaxMessageSize}) ->
+ Domain = snmp_target_mib:default_domain(),
+ do_write_target_addr_conf(Fd,
+ {Name,
+ Domain, Ip, Udp,
+ Timeout, RetryCount, TagList,
+ ParamsName, EngineId,
+ TMask, MaxMessageSize});
+do_write_target_addr_conf(Fd,
+ {Name,
+ Domain, Ip, Udp,
Timeout, RetryCount, TagList,
ParamsName, EngineId,
TMask, MaxMessageSize}) ->
io:format(Fd,
- "{\"~s\", ~w, ~w, ~w, ~w, \"~s\", \"~s\", \"~s\", ~w, ~w}.~n",
- [Name, Ip, Udp, Timeout, RetryCount, TagList,
+ "{\"~s\", ~w, ~w, ~w, ~w, ~w, \"~s\", \"~s\", \"~s\", ~w, ~w}.~n",
+ [Name, Domain, Ip, Udp, Timeout, RetryCount, TagList,
ParamsName, EngineId, TMask, MaxMessageSize]);
do_write_target_addr_conf(_Fd, Crap) ->
error({bad_target_addr_config, Crap}).
@@ -546,13 +581,13 @@ target_params_entry(Name, Vsn) ->
target_params_entry(Name, Vsn, SecName, SecLevel).
target_params_entry(Name, Vsn, SecName, SecLevel) ->
- MPModel = if Vsn == v1 -> v1;
- Vsn == v2 -> v2c;
- Vsn == v3 -> v3
+ MPModel = if Vsn =:= v1 -> v1;
+ Vsn =:= v2 -> v2c;
+ Vsn =:= v3 -> v3
end,
- SecModel = if Vsn == v1 -> v1;
- Vsn == v2 -> v2c;
- Vsn == v3 -> usm
+ SecModel = if Vsn =:= v1 -> v1;
+ Vsn =:= v2 -> v2c;
+ Vsn =:= v3 -> usm
end,
target_params_entry(Name, MPModel, SecModel, SecName, SecLevel).
diff --git a/lib/snmp/src/agent/snmpa_internal.hrl b/lib/snmp/src/agent/snmpa_internal.hrl
index 9fa874f119..a91f30a4a6 100644
--- a/lib/snmp/src/agent/snmpa_internal.hrl
+++ b/lib/snmp/src/agent/snmpa_internal.hrl
@@ -23,6 +23,7 @@
-include_lib("snmp/src/app/snmp_internal.hrl").
-define(DEFAULT_LOCAL_ENGINE_ID, snmp_framework_mib:get_engine_id()).
+-define(DEFAULT_NOTIF_EXTRA_INFO, {snmpa_default_notification_extra_info}).
-define(snmpa_info(F, A), ?snmp_info("agent", F, A)).
-define(snmpa_warning(F, A), ?snmp_warning("agent", F, A)).
diff --git a/lib/snmp/src/agent/snmpa_mpd.erl b/lib/snmp/src/agent/snmpa_mpd.erl
index fd75b98f84..39a4246d26 100644
--- a/lib/snmp/src/agent/snmpa_mpd.erl
+++ b/lib/snmp/src/agent/snmpa_mpd.erl
@@ -115,8 +115,8 @@ reset() ->
%% Func: process_packet(Packet, TDomain, TAddress, State, Log) ->
%% {ok, SnmpVsn, Pdu, PduMS, ACMData} | {discarded, Reason}
%% Types: Packet = binary()
-%% TDomain = snmpUDPDomain | atom()
-%% TAddress = {Ip, Udp}
+%% TDomain = snmpUDPDomain | transportDomain()
+%% TAddress = {Ip, Udp} (*but* depends on TDomain)
%% State = #state
%% Purpose: This is the main Message Dispatching function. (see
%% section 4.2.1 in rfc2272)
@@ -182,24 +182,30 @@ discarded_pdu(Variable) -> inc(Variable).
%%-----------------------------------------------------------------
%% Handles a Community based message (v1 or v2c).
%%-----------------------------------------------------------------
-v1_v2c_proc(Vsn, NoteStore, Community, snmpUDPDomain,
+v1_v2c_proc(Vsn, NoteStore, Community, Domain,
{Ip, Udp}, LocalEngineID,
Data, HS, Log, Packet) ->
- TAddress = tuple_to_list(Ip) ++ [Udp div 256, Udp rem 256],
- AgentMS = get_engine_max_message_size(LocalEngineID),
- MgrMS = snmp_community_mib:get_target_addr_ext_mms(?snmpUDPDomain,
- TAddress),
- PduMS = case MgrMS of
- {ok, MMS} when MMS < AgentMS -> MMS - HS;
- _ -> AgentMS - HS
- end,
+ TDomain = snmp_conf:mk_tdomain(Domain),
+ TAddress = snmp_conf:mk_taddress(Domain, Ip, Udp),
+ AgentMS = get_engine_max_message_size(LocalEngineID),
+ MgrMS = snmp_community_mib:get_target_addr_ext_mms(TDomain, TAddress),
+ PduMS = case MgrMS of
+ {ok, MMS} when MMS < AgentMS -> MMS - HS;
+ _ -> AgentMS - HS
+ end,
case (catch snmp_pdus:dec_pdu(Data)) of
Pdu when is_record(Pdu, pdu) ->
Log(Pdu#pdu.type, Packet),
inc_snmp_in_vars(Pdu),
#pdu{request_id = ReqId} = Pdu,
- OkRes = {ok, Vsn, Pdu, PduMS,
- {community, sec_model(Vsn), Community, TAddress}},
+
+ %% <TDomain>
+ %% We have added TDomain, what are the consequences?
+ ACMData =
+ {community, sec_model(Vsn), Community, TDomain, TAddress},
+ OkRes = {ok, Vsn, Pdu, PduMS, ACMData},
+ %% </TDomain>
+
%% Make sure that we don't process duplicate SET request
%% twice. We don't know what could happen in that case.
%% The mgr does, so he has to generate a new SET request.
@@ -216,8 +222,6 @@ v1_v2c_proc(Vsn, NoteStore, Community, snmpUDPDomain,
snmp_note_store:set_note(NoteStore,
100, Key, true),
%% Uses ACMData that snmpa_acm knows of.
- %% snmpUDPDomain is implicit, since that's the only
- %% one we handle.
OkRes;
true ->
{discarded, duplicate_pdu}
@@ -275,12 +279,12 @@ v3_proc(NoteStore, Packet, LocalEngineID, V3Hdr, Data, Log) ->
"~n msgSecurityParameters = ~w",
[MsgID, MMS, MsgFlags, MsgSecurityModel, SecParams]),
%% 7.2.4
- SecModule = get_security_module(MsgSecurityModel),
+ SecModule = get_security_module(MsgSecurityModel),
%% 7.2.5
- SecLevel = check_sec_level(MsgFlags),
+ SecLevel = check_sec_level(MsgFlags),
IsReportable = snmp_misc:is_reportable(MsgFlags),
%% 7.2.6
- ?vtrace("v3_proc -> [7.2.6]"
+ ?vtrace("v3_proc -> [7.2.4-7.2.6]"
"~n SecModule = ~p"
"~n SecLevel = ~p"
"~n IsReportable = ~p",
@@ -531,7 +535,7 @@ check_sec_module_result(Res, V3Hdr, Data, LocalEngineID, IsReportable, Log) ->
?vdebug("security module result [7.2.6-b]:"
"~n Reason: ~p", [Reason]),
throw({discarded, {securityError, Reason}});
- {error, Reason, ErrorInfo} when IsReportable == true -> % case 7.2.6 a
+ {error, Reason, ErrorInfo} when IsReportable =:= true -> % case 7.2.6 a
?vdebug("security module result when reportable [7.2.6-a]:"
"~n Reason: ~p"
"~n ErrorInfo: ~p", [Reason, ErrorInfo]),
@@ -574,7 +578,7 @@ generate_response_msg(Vsn, RePdu, Type, ACMData, LocalEngineID, Log) ->
generate_response_msg(Vsn, RePdu, Type, ACMData, LocalEngineID, Log, 1).
generate_response_msg(Vsn, RePdu, Type,
- {community, _SecModel, Community, _IpUdp},
+ {community, _SecModel, Community, _TDomain, _TAddress},
LocalEngineID,
Log, _) ->
case catch snmp_pdus:enc_pdu(RePdu) of
diff --git a/lib/snmp/src/agent/snmpa_net_if.erl b/lib/snmp/src/agent/snmpa_net_if.erl
index 97a7a63dee..bbc5568cde 100644
--- a/lib/snmp/src/agent/snmpa_net_if.erl
+++ b/lib/snmp/src/agent/snmpa_net_if.erl
@@ -314,6 +314,14 @@ loop(S) ->
NewS = maybe_handle_send_pdu(S, Vsn, Pdu, MsgData, To, undefined),
loop(NewS);
+ %% We dont use the extra-info at this time, ...
+ {send_pdu, Vsn, Pdu, MsgData, To, _ExtraInfo} ->
+ ?vdebug("send pdu: "
+ "~n Pdu: ~p"
+ "~n To: ~p", [Pdu, To]),
+ NewS = maybe_handle_send_pdu(S, Vsn, Pdu, MsgData, To, undefined),
+ loop(NewS);
+
%% Informs
{send_pdu_req, Vsn, Pdu, MsgData, To, From} ->
?vdebug("send pdu request: "
@@ -324,7 +332,18 @@ loop(S) ->
NewS = maybe_handle_send_pdu(S, Vsn, Pdu, MsgData, To, From),
loop(NewS);
+ %% We dont use the extra-info at this time, ...
+ {send_pdu_req, Vsn, Pdu, MsgData, To, From, _ExtraInfo} ->
+ ?vdebug("send pdu request: "
+ "~n Pdu: ~p"
+ "~n To: ~p"
+ "~n From: ~p",
+ [Pdu, To, toname(From)]),
+ NewS = maybe_handle_send_pdu(S, Vsn, Pdu, MsgData, To, From),
+ loop(NewS);
+
%% Discovery Inform
+ %% <BACKWARD-COMPAT>
{send_discovery, Pdu, MsgData, To, From} ->
?vdebug("received send discovery request: "
"~n Pdu: ~p"
@@ -333,6 +352,18 @@ loop(S) ->
[Pdu, To, toname(From)]),
NewS = handle_send_discovery(S, Pdu, MsgData, To, From),
loop(NewS);
+ %% </BACKWARD-COMPAT>
+
+ %% Discovery Inform
+ {send_discovery, Pdu, MsgData, To, From, ExtraInfo} ->
+ ?vdebug("received send discovery request: "
+ "~n Pdu: ~p"
+ "~n To: ~p"
+ "~n From: ~p"
+ "~n ExtraInfo: ~p",
+ [Pdu, To, toname(From), ExtraInfo]),
+ NewS = handle_send_discovery(S, Pdu, MsgData, To, From),
+ loop(NewS);
{discarded_pdu, _Vsn, ReqId, _ACMData, Variable, _Extra} ->
?vdebug("discard PDU: ~p", [Variable]),
@@ -504,7 +535,6 @@ handle_discovery_response(_Ip, _Port, #pdu{request_id = ReqId} = Pdu,
S
end.
-
handle_recv(#state{usock = Sock,
mpd_state = MpdState,
note_store = NS,
@@ -513,7 +543,9 @@ handle_recv(#state{usock = Sock,
LogF = fun(Type, Data) ->
log(Log, Type, Data, Ip, Port)
end,
- case (catch snmpa_mpd:process_packet(Packet, snmpUDPDomain, {Ip, Port},
+ Domain = snmp_conf:which_domain(Ip), % What the ****...
+ case (catch snmpa_mpd:process_packet(Packet,
+ Domain, {Ip, Port},
MpdState, NS, LogF)) of
{ok, _Vsn, Pdu, _PduMS, {discovery, ManagerEngineId}} ->
handle_discovery_response(Ip, Port, Pdu, ManagerEngineId, S);
@@ -636,7 +668,6 @@ process_taddrs([{{_Domain, AddrAndPort}, _SecData}|T], Acc) ->
process_taddrs([{_Domain, AddrAndPort}|T], Acc) ->
process_taddrs(T, [AddrAndPort|Acc]).
-
merge_taddrs(To1, To2) ->
merge_taddrs(To1, To2, []).
@@ -776,15 +807,49 @@ handle_send_pdu1(#state{log = Log,
usock = Sock,
filter = FilterMod}, Type, Addresses) ->
SendFun =
- fun({snmpUDPDomain, {Ip, Port}, Packet}) when is_binary(Packet) ->
- ?vdebug("sending packet:"
+ fun({snmpUDPDomain, {Ip, Port}, Packet})
+ when is_binary(Packet) ->
+ ?vdebug("[snmpUDPDomain] sending packet:"
+ "~n size: ~p"
+ "~n to: ~p:~p",
+ [sz(Packet), Ip, Port]),
+ maybe_udp_send(FilterMod, Log, Type, Sock, Ip, Port, Packet);
+
+ ({snmpUDPDomain, {Ip, Port}, {Packet, _LogData}})
+ when is_binary(Packet) ->
+ ?vdebug("[snmpUDPDomain] sending encrypted packet:"
+ "~n size: ~p"
+ "~n to: ~p:~p",
+ [sz(Packet), Ip, Port]),
+ maybe_udp_send(FilterMod, Log, Type, Sock, Ip, Port, Packet);
+
+ ({transportDomainUdpIpv4, {Ip, Port}, Packet})
+ when is_binary(Packet) ->
+ ?vdebug("[transportDomainUdpIpv4] sending packet:"
+ "~n size: ~p"
+ "~n to: ~p:~p",
+ [sz(Packet), Ip, Port]),
+ maybe_udp_send(FilterMod, Log, Type, Sock, Ip, Port, Packet);
+
+ ({transportDomainUdpIpv4, {Ip, Port}, {Packet, _LogData}})
+ when is_binary(Packet) ->
+ ?vdebug("[transportDomainUdpIpv4] sending encrypted packet:"
+ "~n size: ~p"
+ "~n to: ~p:~p",
+ [sz(Packet), Ip, Port]),
+ maybe_udp_send(FilterMod, Log, Type, Sock, Ip, Port, Packet);
+
+ ({transportDomainUdpIpv6, {Ip, Port}, Packet})
+ when is_binary(Packet) ->
+ ?vdebug("[transportDomainUdpIpv6] sending packet:"
"~n size: ~p"
"~n to: ~p:~p",
[sz(Packet), Ip, Port]),
maybe_udp_send(FilterMod, Log, Type, Sock, Ip, Port, Packet);
- ({snmpUDPDomain, {Ip, Port}, {Packet, _LogData}}) when is_binary(Packet) ->
- ?vdebug("sending encrypted packet:"
+ ({transportDomainUdpIpv6, {Ip, Port}, {Packet, _LogData}})
+ when is_binary(Packet) ->
+ ?vdebug("[transportDomainUdpIpv6] sending encrypted packet:"
"~n size: ~p"
"~n to: ~p:~p",
[sz(Packet), Ip, Port]),
diff --git a/lib/snmp/src/agent/snmpa_trap.erl b/lib/snmp/src/agent/snmpa_trap.erl
index 450cb2e9f4..3c7ae804a5 100644
--- a/lib/snmp/src/agent/snmpa_trap.erl
+++ b/lib/snmp/src/agent/snmpa_trap.erl
@@ -24,27 +24,34 @@
%% External exports
-export([construct_trap/2,
try_initialise_vars/2,
- send_trap/6, send_trap/7]).
--export([send_discovery/5]).
+ send_trap/6, send_trap/7, send_trap/8]).
+-export([send_discovery/6]).
%% Internal exports
--export([init_v2_inform/9,
- init_v3_inform/9, init_v3_inform/10,
+-export([init_v2_inform/9, init_v2_inform/10,
+ init_v3_inform/9, init_v3_inform/10, init_v3_inform/11,
send_inform/6]).
--export([init_discovery_inform/12, send_discovery_inform/5]).
-
--include("snmp_types.hrl").
--include("snmpa_internal.hrl").
--include("SNMPv2-MIB.hrl").
--include("SNMPv2-TM.hrl").
--include("SNMPv2-TC.hrl").
--include("SNMP-FRAMEWORK-MIB.hrl").
--include("SNMP-TARGET-MIB.hrl").
+-export([init_discovery_inform/13, send_discovery_inform/5]).
+
+%% <BACKWARD-COMPAT>
+-export([send_discovery/5,
+ init_discovery_inform/12]).
+%% </BACKWARD-COMPAT>
+
+-include_lib("snmp/include/snmp_types.hrl").
+-include_lib("snmp/src/agent/snmpa_internal.hrl").
+-include_lib("snmp/include/SNMPv2-MIB.hrl").
+-include_lib("snmp/include/SNMPv2-TM.hrl").
+-include_lib("snmp/include/SNMPv2-TC.hrl").
+-include_lib("snmp/include/SNMP-FRAMEWORK-MIB.hrl").
+-include_lib("snmp/include/SNMP-TARGET-MIB.hrl").
+-include_lib("snmp/include/TRANSPORT-ADDRESS-MIB.hrl").
-define(enterpriseSpecific, 6).
-define(VMODULE,"TRAP").
-include("snmp_verbosity.hrl").
+-include("snmpa_internal.hrl").
%%-----------------------------------------------------------------
@@ -335,25 +342,36 @@ make_varbind_list(Varbinds) ->
%% SnmpTargetAddrTable (using the Tag).
%%-----------------------------------------------------------------
send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs, NetIf) ->
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
+ LocalEngineID = ?DEFAULT_LOCAL_ENGINE_ID,
+ send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs,
+ LocalEngineID, ExtraInfo, NetIf).
+
+send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs, ExtraInfo, NetIf) ->
LocalEngineID = ?DEFAULT_LOCAL_ENGINE_ID,
send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs,
- LocalEngineID, NetIf).
+ LocalEngineID, ExtraInfo, NetIf).
-send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs, LocalEngineID, NetIf) ->
+send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs, LocalEngineID,
+ ExtraInfo, NetIf) ->
(catch do_send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs,
- LocalEngineID, NetIf)).
+ LocalEngineID, ExtraInfo, NetIf)).
do_send_trap(TrapRec, NotifyName, ContextName, Recv, Vbs,
- LocalEngineID, NetIf) ->
+ LocalEngineID, ExtraInfo, NetIf) ->
VarbindList = make_varbind_list(Vbs),
Dests = find_dests(NotifyName),
send_trap_pdus(Dests, ContextName, {TrapRec, VarbindList}, [], [], [],
- Recv, LocalEngineID, NetIf).
+ Recv, LocalEngineID, ExtraInfo, NetIf).
send_discovery(TargetName, Record, ContextName, Vbs, NetIf) ->
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
+ send_discovery(TargetName, Record, ContextName, Vbs, NetIf, ExtraInfo).
+send_discovery(TargetName, Record, ContextName, Vbs, NetIf, ExtraInfo) ->
case find_dest(TargetName) of
{ok, Dest} ->
- send_discovery_pdu(Dest, Record, ContextName, Vbs, NetIf);
+ send_discovery_pdu(Dest, Record, ContextName, Vbs, NetIf,
+ ExtraInfo);
Error ->
Error
end.
@@ -440,11 +458,13 @@ split_variables([]) -> {[], []}.
%% NOTE: This function is executed in the master agent's context
%%-----------------------------------------------------------------
find_dests("") ->
+ ?vtrace("find destinations", []),
snmp_notification_mib:get_targets();
find_dests(NotifyName) ->
+ ?vtrace("find destinations for ~p", [NotifyName]),
case snmp_notification_mib:get_targets(NotifyName) of
[] ->
- ?vlog("No dests found for snmpNotifyName: ~p",[NotifyName]),
+ ?vlog("No dests found for NotifyName: ~p", [NotifyName]),
[];
Dests ->
Dests
@@ -529,7 +549,8 @@ find_dest(TargetName) ->
send_discovery_pdu({Dest, TargetName, {SecModel, SecName, SecLevel},
Timeout, Retry},
- Record, ContextName, Vbs, NetIf) ->
+ Record, ContextName, Vbs, NetIf,
+ ExtraInfo) ->
?vdebug("send_discovery_pdu -> entry with "
"~n Destination address: ~p"
"~n Target name: ~p"
@@ -539,9 +560,10 @@ send_discovery_pdu({Dest, TargetName, {SecModel, SecName, SecLevel},
"~n Timeout: ~p"
"~n Retry: ~p"
"~n Record: ~p"
- "~n ContextName: ~p",
+ "~n ContextName: ~p"
+ "~n ExtraInfo: ~p",
[Dest, TargetName, SecModel, SecName, SecLevel,
- Timeout, Retry, Record, ContextName]),
+ Timeout, Retry, Record, ContextName, ExtraInfo]),
case get_mib_view(SecModel, SecName, SecLevel, ContextName) of
{ok, MibView} ->
case check_all_varbinds(Record, Vbs, MibView) of
@@ -551,7 +573,7 @@ send_discovery_pdu({Dest, TargetName, {SecModel, SecName, SecLevel},
SecModel, SecName, SecLevel,
TargetName, ContextName,
Timeout, Retry,
- SysUpTime, NetIf);
+ SysUpTime, NetIf, ExtraInfo);
false ->
{error, {mibview_validation_failed, Vbs, MibView}}
end;
@@ -561,7 +583,7 @@ send_discovery_pdu({Dest, TargetName, {SecModel, SecName, SecLevel},
send_discovery_pdu(Record, Dest, Vbs,
SecModel, SecName, SecLevel, TargetName,
- ContextName, Timeout, Retry, SysUpTime, NetIf) ->
+ ContextName, Timeout, Retry, SysUpTime, NetIf, ExtraInfo) ->
{_Oid, IVbs} = mk_v2_trap(Record, Vbs, SysUpTime), % v2 refers to SMIv2;
Sender = proc_lib:spawn_link(?MODULE, init_discovery_inform,
[self(),
@@ -570,13 +592,25 @@ send_discovery_pdu(Record, Dest, Vbs,
ContextName,
Timeout, Retry,
IVbs, NetIf,
- get(verbosity)]),
+ get(verbosity),
+ ExtraInfo]),
{ok, Sender, SecLevel}.
init_discovery_inform(Parent,
Dest,
SecModel, SecName, SecLevel, TargetName,
ContextName, Timeout, Retry, Vbs, NetIf, Verbosity) ->
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
+ init_discovery_inform(Parent,
+ Dest,
+ SecModel, SecName, SecLevel, TargetName,
+ ContextName, Timeout, Retry, Vbs, NetIf,
+ Verbosity, ExtraInfo).
+init_discovery_inform(Parent,
+ Dest,
+ SecModel, SecName, SecLevel, TargetName,
+ ContextName, Timeout, Retry, Vbs, NetIf,
+ Verbosity, ExtraInfo) ->
put(verbosity, Verbosity),
put(sname, madis),
Pdu = make_discovery_pdu(Vbs),
@@ -584,7 +618,7 @@ init_discovery_inform(Parent,
SecLevelFlag = mk_flag(SecLevel),
SecData = {SecModel, SecName, SecLevelFlag, TargetName},
MsgData = {SecData, ContextEngineId, ContextName},
- Msg = {send_discovery, Pdu, MsgData, Dest, self()},
+ Msg = {send_discovery, Pdu, MsgData, Dest, self(), ExtraInfo},
?MODULE:send_discovery_inform(Parent, Timeout*10, Retry, Msg, NetIf).
%% note_timeout(Timeout, Retry)
@@ -628,11 +662,11 @@ send_discovery_inform(Parent, Timeout, Retry, Msg, NetIf) ->
%% should be used for the target, and determine the message
%% specific parameters to be used.
%%-----------------------------------------------------------------
-send_trap_pdus([{DestAddr, TargetName, {MpModel, SecModel, SecName, SecLevel},
- Type} | T],
+send_trap_pdus([{DestAddr, TargetName,
+ {MpModel, SecModel, SecName, SecLevel}, Type} | T],
ContextName,
{TrapRec, Vbs}, V1Res, V2Res, V3Res, Recv,
- LocalEngineID, NetIf) ->
+ LocalEngineID, ExtraInfo, NetIf) ->
?vdebug("send trap pdus: "
"~n Destination address: ~p"
"~n Target name: ~p"
@@ -658,13 +692,13 @@ send_trap_pdus([{DestAddr, TargetName, {MpModel, SecModel, SecName, SecLevel},
send_trap_pdus(T, ContextName, {TrapRec, Vbs},
[{DestAddr, Community} | V1Res],
V2Res, V3Res, Recv,
- LocalEngineID, NetIf);
+ LocalEngineID, ExtraInfo, NetIf);
undefined ->
?vdebug("No community found for v1 dest: ~p",
[element(2, DestAddr)]),
send_trap_pdus(T, ContextName, {TrapRec, Vbs},
V1Res, V2Res, V3Res, Recv,
- LocalEngineID, NetIf)
+ LocalEngineID, ExtraInfo, NetIf)
end;
true when MpModel =:= ?MP_V2C ->
?vtrace("send_trap_pdus -> v2c mp model",[]),
@@ -679,13 +713,14 @@ send_trap_pdus([{DestAddr, TargetName, {MpModel, SecModel, SecName, SecLevel},
send_trap_pdus(T, ContextName, {TrapRec, Vbs},
V1Res,
[{DestAddr, Community, Type}|V2Res],
- V3Res, Recv, LocalEngineID, NetIf);
+ V3Res, Recv,
+ LocalEngineID, ExtraInfo, NetIf);
undefined ->
?vdebug("No community found for v2c dest: ~p",
[element(2, DestAddr)]),
send_trap_pdus(T, ContextName, {TrapRec, Vbs},
V1Res, V2Res, V3Res, Recv,
- LocalEngineID, NetIf)
+ LocalEngineID, ExtraInfo, NetIf)
end;
true when MpModel =:= ?MP_V3 ->
?vtrace("send_trap_pdus -> v3 mp model",[]),
@@ -694,20 +729,20 @@ send_trap_pdus([{DestAddr, TargetName, {MpModel, SecModel, SecName, SecLevel},
send_trap_pdus(T, ContextName, {TrapRec, Vbs},
V1Res, V2Res,
[{DestAddr, MsgData, Type} | V3Res],
- Recv, LocalEngineID, NetIf);
+ Recv, LocalEngineID, ExtraInfo, NetIf);
true ->
?vlog("bad MpModel ~p for dest ~p",
[MpModel, element(2, DestAddr)]),
send_trap_pdus(T, ContextName, {TrapRec, Vbs},
V1Res, V2Res, V3Res, Recv,
- LocalEngineID, NetIf);
+ LocalEngineID, ExtraInfo, NetIf);
_ ->
?vlog("no access for dest: "
"~n ~p in target ~p",
[element(2, DestAddr), TargetName]),
send_trap_pdus(T, ContextName, {TrapRec, Vbs},
V1Res, V2Res, V3Res, Recv,
- LocalEngineID, NetIf)
+ LocalEngineID, ExtraInfo, NetIf)
end;
{discarded, Reason} ->
?vlog("mib view error ~p for"
@@ -715,24 +750,27 @@ send_trap_pdus([{DestAddr, TargetName, {MpModel, SecModel, SecName, SecLevel},
"~n SecName: ~w",
[Reason, element(2, DestAddr), SecName]),
send_trap_pdus(T, ContextName, {TrapRec, Vbs},
- V1Res, V2Res, V3Res, Recv, LocalEngineID, NetIf)
+ V1Res, V2Res, V3Res, Recv,
+ LocalEngineID, ExtraInfo, NetIf)
end;
-send_trap_pdus([], ContextName, {TrapRec, Vbs}, V1Res, V2Res, V3Res,
- Recv, LocalEngineID, NetIf) ->
+send_trap_pdus([], ContextName, {TrapRec, Vbs},
+ V1Res, V2Res, V3Res, Recv,
+ LocalEngineID, ExtraInfo,
+ NetIf) ->
SysUpTime = snmp_standard_mib:sys_up_time(),
?vdebug("send trap pdus with sysUpTime ~p", [SysUpTime]),
InformRecvs = get_inform_recvs(V2Res ++ V3Res),
InformTargets = [Addr || {Addr, _, _, _} <- InformRecvs],
deliver_recv(Recv, snmp_targets, InformTargets),
- send_v1_trap(TrapRec, V1Res, Vbs, NetIf, SysUpTime),
- send_v2_trap(TrapRec, V2Res, Vbs, Recv, NetIf, SysUpTime),
- send_v3_trap(TrapRec, V3Res, Vbs, Recv, LocalEngineID, NetIf,
+ send_v1_trap(TrapRec, V1Res, Vbs, ExtraInfo, NetIf, SysUpTime),
+ send_v2_trap(TrapRec, V2Res, Vbs, Recv, ExtraInfo, NetIf, SysUpTime),
+ send_v3_trap(TrapRec, V3Res, Vbs, Recv, LocalEngineID, ExtraInfo, NetIf,
SysUpTime, ContextName).
-send_v1_trap(_TrapRec, [], _Vbs, _NetIf, _SysUpTime) ->
+send_v1_trap(_TrapRec, [], _Vbs, _ExtraInfo, _NetIf, _SysUpTime) ->
ok;
send_v1_trap(#trap{enterpriseoid = Enter, specificcode = Spec},
- V1Res, Vbs, NetIf, SysUpTime) ->
+ V1Res, Vbs, ExtraInfo, NetIf, SysUpTime) ->
?vdebug("prepare to send v1 trap "
"~n '~p'"
"~n with"
@@ -744,9 +782,10 @@ send_v1_trap(#trap{enterpriseoid = Enter, specificcode = Spec},
lists:foreach(fun({Community, Addrs}) ->
?vtrace("send v1 trap pdu to ~p",[Addrs]),
NetIf ! {send_pdu, 'version-1', TrapPdu,
- {community, Community}, Addrs}
+ {community, Community}, Addrs, ExtraInfo}
end, AddrCommunities);
-send_v1_trap(#notification{oid = Oid}, V1Res, Vbs, NetIf, SysUpTime) ->
+send_v1_trap(#notification{oid = Oid}, V1Res, Vbs, ExtraInfo, NetIf,
+ SysUpTime) ->
%% Use alg. in rfc2089 to map a v2 trap to a v1 trap
% delete Counter64 objects from vbs
?vdebug("prepare to send v1 trap '~p'",[Oid]),
@@ -768,31 +807,31 @@ send_v1_trap(#notification{oid = Oid}, V1Res, Vbs, NetIf, SysUpTime) ->
lists:foreach(fun({Community, Addrs}) ->
?vtrace("send v1 trap to ~p",[Addrs]),
NetIf ! {send_pdu, 'version-1', TrapPdu,
- {community, Community}, Addrs}
+ {community, Community}, Addrs, ExtraInfo}
end, AddrCommunities).
-send_v2_trap(_TrapRec, [], _Vbs, _Recv, _NetIf, _SysUpTime) ->
+send_v2_trap(_TrapRec, [], _Vbs, _Recv, _ExtraInfo, _NetIf, _SysUpTime) ->
ok;
-send_v2_trap(TrapRec, V2Res, Vbs, Recv, NetIf, SysUpTime) ->
+send_v2_trap(TrapRec, V2Res, Vbs, Recv, ExtraInfo, NetIf, SysUpTime) ->
?vdebug("prepare to send v2 trap",[]),
{_Oid, IVbs} = mk_v2_trap(TrapRec, Vbs, SysUpTime),
- TrapRecvs = get_trap_recvs(V2Res),
- InformRecvs = get_inform_recvs(V2Res),
- do_send_v2_trap(TrapRecvs, IVbs, NetIf),
- do_send_v2_inform(InformRecvs, IVbs, Recv, NetIf).
+ TrapRecvs = get_trap_recvs(V2Res),
+ InformRecvs = get_inform_recvs(V2Res),
+ do_send_v2_trap(TrapRecvs, IVbs, ExtraInfo, NetIf),
+ do_send_v2_inform(InformRecvs, IVbs, Recv, ExtraInfo, NetIf).
-send_v3_trap(_TrapRec, [], _Vbs, _Recv, _LocalEngineID,
+send_v3_trap(_TrapRec, [], _Vbs, _Recv, _LocalEngineID, _ExtraInfo,
_NetIf, _SysUpTime, _ContextName) ->
ok;
-send_v3_trap(TrapRec, V3Res, Vbs, Recv, LocalEngineID,
+send_v3_trap(TrapRec, V3Res, Vbs, Recv, LocalEngineID, ExtraInfo,
NetIf, SysUpTime, ContextName) ->
?vdebug("prepare to send v3 trap",[]),
{_Oid, IVbs} = mk_v2_trap(TrapRec, Vbs, SysUpTime), % v2 refers to SMIv2;
TrapRecvs = get_trap_recvs(V3Res), % same SMI for v3
InformRecvs = get_inform_recvs(V3Res),
- do_send_v3_trap(TrapRecvs, ContextName, IVbs, NetIf),
+ do_send_v3_trap(TrapRecvs, ContextName, IVbs, ExtraInfo, NetIf),
do_send_v3_inform(InformRecvs, ContextName, IVbs, Recv,
- LocalEngineID, NetIf).
+ LocalEngineID, ExtraInfo, NetIf).
mk_v2_trap(#notification{oid = Oid}, Vbs, SysUpTime) ->
@@ -830,60 +869,70 @@ get_inform_recvs(InformRecvs) ->
[{Addr, MsgData, Timeout, Retry} ||
{Addr, MsgData, {inform, Timeout, Retry}} <- InformRecvs].
-do_send_v2_trap([], _Vbs, _NetIf) ->
+do_send_v2_trap([], _Vbs, _ExtraInfo, _NetIf) ->
ok;
-do_send_v2_trap(Recvs, Vbs, NetIf) ->
+do_send_v2_trap(Recvs, Vbs, ExtraInfo, NetIf) ->
TrapPdu = make_v2_notif_pdu(Vbs, 'snmpv2-trap'),
AddrCommunities = mk_addr_communities(Recvs),
lists:foreach(fun({Community, Addrs}) ->
?vtrace("~n send v2 trap to ~p",[Addrs]),
NetIf ! {send_pdu, 'version-2', TrapPdu,
- {community, Community}, Addrs}
+ {community, Community}, Addrs, ExtraInfo}
end, AddrCommunities),
ok.
-do_send_v2_inform([], _Vbs, _Recv, _NetIf) ->
+do_send_v2_inform([], _Vbs, _Recv, _ExtraInfo, _NetIf) ->
ok;
-do_send_v2_inform(Recvs, Vbs, Recv, NetIf) ->
+do_send_v2_inform(Recvs, Vbs, Recv, ExtraInfo, NetIf) ->
lists:foreach(
fun({Addr, Community, Timeout, Retry}) ->
?vtrace("~n start inform sender to send v2 inform to ~p",
[Addr]),
proc_lib:spawn_link(?MODULE, init_v2_inform,
[Addr, Timeout, Retry, Vbs,
- Recv, NetIf, Community,
+ Recv, ExtraInfo, NetIf, Community,
get(verbosity), get(sname)])
end,
Recvs).
-do_send_v3_trap([], _ContextName, _Vbs, _NetIf) ->
+do_send_v3_trap([], _ContextName, _Vbs, _ExtraInfo, _NetIf) ->
ok;
-do_send_v3_trap(Recvs, ContextName, Vbs, NetIf) ->
+do_send_v3_trap(Recvs, ContextName, Vbs, ExtraInfo, NetIf) ->
TrapPdu = make_v2_notif_pdu(Vbs, 'snmpv2-trap'), % Yes, v2
ContextEngineId = snmp_framework_mib:get_engine_id(),
lists:foreach(fun(Recv) ->
?vtrace("~n send v3 notif to ~p",[Recv]),
NetIf ! {send_pdu, 'version-3', TrapPdu,
- {v3, ContextEngineId, ContextName}, [Recv]}
+ {v3, ContextEngineId, ContextName},
+ [Recv], ExtraInfo}
end, Recvs),
ok.
-do_send_v3_inform([], _ContextName, _Vbs, _Recv, _LocalEngineID, _NetIf) ->
+do_send_v3_inform([], _ContextName, _Vbs, _Recv,
+ _LocalEngineID, _ExtraInfo, _NetIf) ->
ok;
-do_send_v3_inform(Recvs, ContextName, Vbs, Recv, LocalEngineID, NetIf) ->
+do_send_v3_inform(Recvs, ContextName, Vbs, Recv,
+ LocalEngineID, ExtraInfo, NetIf) ->
lists:foreach(
fun({Addr, MsgData, Timeout, Retry}) ->
?vtrace("~n start inform sender to send v3 inform to ~p",
[Addr]),
proc_lib:spawn_link(?MODULE, init_v3_inform,
[{Addr, MsgData}, Timeout, Retry, Vbs,
- Recv, LocalEngineID, NetIf, ContextName,
+ Recv, LocalEngineID, ExtraInfo,
+ NetIf, ContextName,
get(verbosity), get(sname)])
end,
Recvs).
%% New process
-init_v2_inform(Addr, Timeout, Retry, Vbs, Recv, NetIf, Community,V,S) ->
+init_v2_inform(Addr, Timeout, Retry, Vbs, Recv, NetIf, Community, V, S) ->
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
+ init_v2_inform(Addr, Timeout, Retry, Vbs, Recv, ExtraInfo, NetIf,
+ Community, V, S).
+
+init_v2_inform(Addr, Timeout, Retry, Vbs, Recv, ExtraInfo, NetIf,
+ Community, V, S) ->
%% Make a new Inform for each recipient; they need unique
%% request-ids!
put(verbosity,V),
@@ -892,17 +941,26 @@ init_v2_inform(Addr, Timeout, Retry, Vbs, Recv, NetIf, Community,V,S) ->
[Timeout,Retry]),
InformPdu = make_v2_notif_pdu(Vbs, 'inform-request'),
Msg = {send_pdu_req, 'version-2', InformPdu, {community, Community},
- [Addr], self()},
+ [Addr], self(), ExtraInfo},
?MODULE:send_inform(Addr, Timeout*10, Retry, Msg, Recv, NetIf).
%% New process
init_v3_inform(Addr, Timeout, Retry, Vbs, Recv, NetIf, ContextName, V, S) ->
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
LocalEngineID = ?DEFAULT_LOCAL_ENGINE_ID,
- init_v3_inform(Addr, Timeout, Retry, Vbs, Recv, LocalEngineID,
+ init_v3_inform(Addr, Timeout, Retry, Vbs, Recv,
+ LocalEngineID, ExtraInfo,
+ NetIf, ContextName, V, S).
+
+init_v3_inform(Addr, Timeout, Retry, Vbs, Recv, LocalEngineID, NetIf,
+ ContextName, V, S) ->
+ ExtraInfo = ?DEFAULT_NOTIF_EXTRA_INFO,
+ init_v3_inform(Addr, Timeout, Retry, Vbs, Recv,
+ LocalEngineID, ExtraInfo,
NetIf, ContextName, V, S).
-init_v3_inform(Addr, Timeout, Retry, Vbs, Recv, LocalEngineID,
+init_v3_inform(Addr, Timeout, Retry, Vbs, Recv, LocalEngineID, ExtraInfo,
NetIf, ContextName, V, S) ->
%% Make a new Inform for each recipient; they need unique
%% request-ids!
@@ -913,7 +971,7 @@ init_v3_inform(Addr, Timeout, Retry, Vbs, Recv, LocalEngineID,
InformPdu = make_v2_notif_pdu(Vbs, 'inform-request'), % Yes, v2
ContextEngineId = LocalEngineID,
Msg = {send_pdu_req, 'version-3', InformPdu,
- {v3, ContextEngineId, ContextName}, [Addr], self()},
+ {v3, ContextEngineId, ContextName}, [Addr], self(), ExtraInfo},
?MODULE:send_inform(Addr, Timeout*10, Retry, Msg, Recv, NetIf).
send_inform(Addr, _Timeout, -1, _Msg, Recv, _NetIf) ->
@@ -1001,9 +1059,27 @@ transform_taddr({?snmpUDPDomain, [A1, A2, A3, A4, P1, P2]}) -> % v2
Addr = {A1, A2, A3, A4},
Port = P1 bsl 8 + P2,
{Addr, Port};
+transform_taddr({?transportDomainUdpIpv4, [A1, A2, A3, A4, P1, P2]}) -> % v2
+ Addr = {A1, A2, A3, A4},
+ Port = P1 bsl 8 + P2,
+ {Addr, Port};
+transform_taddr({?transportDomainUdpIpv6,
+ [A1, A2, A3, A4, A5, A6, A7, A8, P1, P2]}) -> % v2
+ Addr = {A1, A2, A3, A4, A5, A6, A7, A8},
+ Port = P1 bsl 8 + P2,
+ {Addr, Port};
transform_taddr({{?snmpUDPDomain, [A1, A2, A3, A4, P1, P2]}, _MsgData}) -> % v3
Addr = {A1, A2, A3, A4},
Port = P1 bsl 8 + P2,
+ {Addr, Port};
+transform_taddr({{?transportDomainUdpIpv4, [A1, A2, A3, A4, P1, P2]}, _MsgData}) -> % v3
+ Addr = {A1, A2, A3, A4},
+ Port = P1 bsl 8 + P2,
+ {Addr, Port};
+transform_taddr({{?transportDomainUdpIpv6,
+ [A1, A2, A3, A4, A5, A6, A7, A8, P1, P2]}, _MsgData}) -> % v3
+ Addr = {A1, A2, A3, A4, A5, A6, A7, A8},
+ Port = P1 bsl 8 + P2,
{Addr, Port}.
@@ -1053,13 +1129,14 @@ mk_addr_communities(Recvs) ->
[{Addr, Comm} | T] = lists:keysort(2, Recvs),
mic(T, Comm, [Addr], []).
-mic([{Addr, Comm} | T], CurComm, AddrList, Res) when Comm == CurComm ->
+mic([{Addr, Comm} | T], CurComm, AddrList, Res) when Comm =:= CurComm ->
mic(T, CurComm, [Addr | AddrList], Res);
mic([{Addr, Comm} | T], CurComm, AddrList, Res) ->
mic(T, Comm, [Addr], [{CurComm, AddrList} | Res]);
mic([], CurComm, AddrList, Res) ->
[{CurComm, AddrList} | Res].
+
%%-----------------------------------------------------------------
%% Convert the SecurityLevel into a flag value used by snmpa_mpd
%%-----------------------------------------------------------------
diff --git a/lib/snmp/src/agent/snmpa_usm.erl b/lib/snmp/src/agent/snmpa_usm.erl
index f35d1f1916..6f54307f9f 100644
--- a/lib/snmp/src/agent/snmpa_usm.erl
+++ b/lib/snmp/src/agent/snmpa_usm.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1999-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1999-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -330,7 +330,6 @@ non_authoritative(SecName,
end
end.
-
is_auth(?usmNoAuthProtocol, _, _, _, SecName, _, _, _, _) -> % 3.2.5
error(usmStatsUnsupportedSecLevels,
?usmStatsUnsupportedSecLevels_instance, SecName); % OTP-5464
@@ -613,8 +612,7 @@ authenticate_outgoing(Message, UsmSecParams,
end,
?vtrace("authenticate_outgoing -> encode message only",[]),
snmp_pdus:enc_message_only(Message2).
-
-
+
%%-----------------------------------------------------------------
%% Auth and priv algorithms
@@ -753,14 +751,19 @@ set_engine_latest_time(SnmpEngineID, EngineTime) ->
%%-----------------------------------------------------------------
%% Utility functions
%%-----------------------------------------------------------------
+-spec error(term()) -> no_return().
error(Reason) ->
throw({error, Reason}).
+-spec error(term(), term()) -> no_return().
error(Reason, ErrorInfo) ->
throw({error, Reason, ErrorInfo}).
+-spec error(term(), term(), term()) -> no_return().
error(Variable, Oid, SecName) ->
error(Variable, Oid, SecName, []).
+
+-spec error(term(), term(), term(), [term()]) -> no_return().
error(Variable, Oid, SecName, Opts) ->
Val = inc(Variable),
ErrorInfo = {#varbind{oid = Oid,
@@ -772,7 +775,6 @@ error(Variable, Oid, SecName, Opts) ->
inc(Name) -> ets:update_counter(snmp_agent_table, Name, 1).
-
get_counter(Name) ->
case (catch ets:lookup(snmp_agent_table, Name)) of
[{_, Val}] ->
@@ -780,8 +782,3 @@ get_counter(Name) ->
_ ->
0
end.
-
-
-
-
-
diff --git a/lib/snmp/src/app/snmp.appup.src b/lib/snmp/src/app/snmp.appup.src
index de0e5d6e14..5deb40be0f 100644
--- a/lib/snmp/src/app/snmp.appup.src
+++ b/lib/snmp/src/app/snmp.appup.src
@@ -22,10 +22,56 @@
%% ----- U p g r a d e -------------------------------------------------------
[
+ {"4.19",
+ [
+ {load_module, snmpa, soft_purge, soft_purge, []},
+ {load_module, snmpm, soft_purge, soft_purge, [snmpm_server]},
+ {load_module, snmpa_usm, soft_purge, soft_purge, []},
+ {load_module, snmpm_usm, soft_purge, soft_purge, []},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {load_module, snmp_pdus, soft_purge, soft_purge, []},
+ {load_module, snmp_conf, soft_purge, soft_purge, []},
+ {load_module, snmpa_conf, soft_purge, soft_purge, [snmp_conf]},
+ {load_module, snmp_misc, soft_purge, soft_purge, []},
+ {load_module, snmp_config, soft_purge, soft_purge, []},
+ {load_module, snmpa_mpd, soft_purge, soft_purge, [snmp_conf]},
+ {load_module, snmpa_trap, soft_purge, soft_purge,
+ [snmpa_mpd, snmp_notification_mib, snmp_target_mib, snmpa_net_if]},
+ {load_module, snmpa_acm, soft_purge, soft_purge,
+ [snmp_conf, snmpa_mpd, snmp_target_mib]},
+ {load_module, snmpa_conf, soft_purge, soft_purge,
+ [snmp_notification_mib]},
+ {load_module, snmp_notification_mib, soft_purge, soft_purge,
+ [snmp_conf, snmp_target_mib]},
+ {load_module, snmp_community_mib, soft_purge, soft_purge, []},
+ {load_module, snmp_target_mib, soft_purge, soft_purge,
+ [snmp_conf]},
+ {update, snmpm_net_if, soft, soft_purge, soft_purge, []},
+ {update, snmpm_server, soft, soft_purge, soft_purge, [snmpm_net_if]},
+ {update, snmpa_net_if, soft, soft_purge, soft_purge,
+ [snmp_conf, snmpa_mpd]},
+ {update, snmpa_agent, soft, soft_purge, soft_purge,
+ [snmpa_acm, snmpa_mpd, snmpa_trap]}
+ ]
+ },
{"4.18",
[
+ {load_module, snmpa, soft_purge, soft_purge, []},
+ {load_module, snmpm, soft_purge, soft_purge, [snmpm_server]},
+ {load_module, snmpa_usm, soft_purge, soft_purge, []},
+ {load_module, snmpm_usm, soft_purge, soft_purge, []},
{load_module, snmp_misc, soft_purge, soft_purge, []},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {load_module, snmp_pdus, soft_purge, soft_purge, []},
+ {load_module, snmp_conf, soft_purge, soft_purge, []},
+ {load_module, snmp_config, soft_purge, soft_purge, [snmp_conf]},
+ {load_module, snmpa_conf, soft_purge, soft_purge, []},
+ {load_module, snmpa_mpd, soft_purge, soft_purge, [snmp_conf]},
{load_module, snmpa_vacm, soft_purge, soft_purge, []},
+ {load_module, snmpa_trap, soft_purge, soft_purge,
+ [snmpa_mpd, snmp_notification_mib, snmp_target_mib, snmpa_net_if]},
+ {load_module, snmpa_acm, soft_purge, soft_purge,
+ [snmp_conf, snmpa_mpd, snmp_target_mib]},
{load_module, snmpa, soft_purge, soft_purge,
[snmp_community_mib,
snmp_framework_mib,
@@ -33,6 +79,8 @@
snmp_target_mib,
snmp_user_based_sm_mib,
snmp_view_based_acm_mib]},
+ {load_module, snmp_notification_mib, soft_purge, soft_purge,
+ [snmp_conf, snmp_target_mib, snmpa_mib_lib]},
{load_module, snmp_community_mib, soft_purge, soft_purge,
[snmpa_mib_lib]},
{load_module, snmp_framework_mib, soft_purge, soft_purge,
@@ -45,7 +93,15 @@
[snmpa_mib_lib]},
{load_module, snmp_view_based_acm_mib, soft_purge, soft_purge,
[snmpa_mib_lib, snmpa_vacm]},
- {load_module, snmpa_mib_lib, soft_purge, soft_purge, []}
+ {load_module, snmpa_mib_lib, soft_purge, soft_purge, []},
+
+ {update, snmpm_net_if, soft, soft_purge, soft_purge, []},
+ {update, snmpm_server, soft, soft_purge, soft_purge, [snmpm_net_if]},
+
+ {update, snmpa_net_if, soft, soft_purge, soft_purge,
+ [snmp_conf, snmpa_mpd]},
+ {update, snmpa_agent, soft, soft_purge, soft_purge,
+ [snmpa_acm, snmpa_mpd, snmpa_trap]}
]
}
],
@@ -53,10 +109,58 @@
%% ------D o w n g r a d e ---------------------------------------------------
[
+ {"4.19",
+ [
+ {load_module, snmpa, soft_purge, soft_purge, []},
+ {load_module, snmpm, soft_purge, soft_purge, [snmpm_server]},
+ {load_module, snmpa_usm, soft_purge, soft_purge, []},
+ {load_module, snmpm_usm, soft_purge, soft_purge, []},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {load_module, snmp_pdus, soft_purge, soft_purge, []},
+ {load_module, snmp_conf, soft_purge, soft_purge, []},
+ {load_module, snmpa_conf, soft_purge, soft_purge, [snmp_conf]},
+ {load_module, snmp_misc, soft_purge, soft_purge, []},
+ {load_module, snmp_config, soft_purge, soft_purge, []},
+ {load_module, snmpa_mpd, soft_purge, soft_purge, [snmp_conf]},
+ {load_module, snmpa_trap, soft_purge, soft_purge,
+ [snmpa_mpd, snmp_notification_mib, snmp_target_mib, snmpa_net_if]},
+ {load_module, snmpa_acm, soft_purge, soft_purge,
+ [snmp_conf, snmpa_mpd, snmp_target_mib]},
+ {load_module, snmpa_conf, soft_purge, soft_purge,
+ [snmp_notification_mib]},
+ {load_module, snmp_notification_mib, soft_purge, soft_purge,
+ [snmp_conf, snmp_target_mib]},
+ {load_module, snmp_community_mib, soft_purge, soft_purge, []},
+ {load_module, snmp_target_mib, soft_purge, soft_purge,
+ [snmp_conf]},
+
+ {update, snmpm_net_if, soft, soft_purge, soft_purge, []},
+ {update, snmpm_server, soft, soft_purge, soft_purge, [snmpm_net_if]},
+
+ {update, snmpa_net_if, soft, soft_purge, soft_purge,
+ [snmp_conf, snmpa_mpd]},
+ {update, snmpa_agent, soft, soft_purge, soft_purge,
+ [snmpa_acm, snmpa_mpd, snmpa_trap]}
+ ]
+ },
{"4.18",
[
+ {load_module, snmpa, soft_purge, soft_purge, []},
+ {load_module, snmpm, soft_purge, soft_purge, [snmpm_server]},
+ {load_module, snmpa_usm, soft_purge, soft_purge, []},
+ {load_module, snmpm_usm, soft_purge, soft_purge, []},
{load_module, snmp_misc, soft_purge, soft_purge, []},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {load_module, snmp_pdus, soft_purge, soft_purge, []},
+ {load_module, snmp_conf, soft_purge, soft_purge, []},
+ {load_module, snmpa_conf, soft_purge, soft_purge, [snmp_conf]},
+ {load_module, snmp_config, soft_purge, soft_purge, []},
+ {load_module, snmpa_mpd, soft_purge, soft_purge, [snmp_conf]},
{load_module, snmpa_vacm, soft_purge, soft_purge, []},
+ {load_module, snmpa_trap, soft_purge, soft_purge,
+ [snmpa_mpd, snmp_notification_mib, snmp_target_mib, snmpa_net_if]},
+ {load_module, snmpa_acm, soft_purge, soft_purge,
+ [snmp_conf, snmpa_mpd, snmp_target_mib]},
{load_module, snmpa, soft_purge, soft_purge,
[snmp_community_mib,
snmp_framework_mib,
@@ -64,6 +168,8 @@
snmp_target_mib,
snmp_user_based_sm_mib,
snmp_view_based_acm_mib]},
+ {load_module, snmp_notification_mib, soft_purge, soft_purge,
+ [snmp_conf, snmp_target_mib, snmpa_mib_lib]},
{load_module, snmp_community_mib, soft_purge, soft_purge,
[snmpa_mib_lib]},
{load_module, snmp_framework_mib, soft_purge, soft_purge,
@@ -76,7 +182,15 @@
[snmpa_mib_lib]},
{load_module, snmp_view_based_acm_mib, soft_purge, soft_purge,
[snmpa_mib_lib, snmpa_vacm]},
- {load_module, snmpa_mib_lib, soft_purge, soft_purge, []}
+ {load_module, snmpa_mib_lib, soft_purge, soft_purge, []},
+
+ {update, snmpm_net_if, soft, soft_purge, soft_purge, []},
+ {update, snmpm_server, soft, soft_purge, soft_purge, [snmpm_net_if]},
+
+ {update, snmpa_net_if, soft, soft_purge, soft_purge,
+ [snmp_conf, snmpa_mpd]},
+ {update, snmpa_agent, soft, soft_purge, soft_purge,
+ [snmpa_acm, snmpa_mpd, snmpa_trap]}
]
}
]
diff --git a/lib/snmp/src/manager/snmpm.erl b/lib/snmp/src/manager/snmpm.erl
index 5b6321b4c3..e457d3b47a 100644
--- a/lib/snmp/src/manager/snmpm.erl
+++ b/lib/snmp/src/manager/snmpm.erl
@@ -57,15 +57,16 @@
usm_user_info/3, update_usm_user_info/4,
%%
- %% Basic SNMP API
- sync_get/3, sync_get/4, sync_get/5, sync_get/6,
- async_get/3, async_get/4, async_get/5, async_get/6,
- sync_get_next/3, sync_get_next/4, sync_get_next/5, sync_get_next/6,
- async_get_next/3, async_get_next/4, async_get_next/5, async_get_next/6,
- sync_set/3, sync_set/4, sync_set/5, sync_set/6,
- async_set/3, async_set/4, async_set/5, async_set/6,
- sync_get_bulk/5, sync_get_bulk/6, sync_get_bulk/7, sync_get_bulk/8,
- async_get_bulk/5, async_get_bulk/6, async_get_bulk/7, async_get_bulk/8,
+ %% Basic SNMP API (version "3").
+ sync_get2/3, sync_get2/4,
+ async_get2/3, async_get2/4,
+ sync_get_next2/3, sync_get_next2/4,
+ async_get_next2/3, async_get_next2/4,
+ sync_set2/3, sync_set2/4,
+ async_set2/3, async_set2/4,
+ sync_get_bulk2/5, sync_get_bulk2/6,
+ async_get_bulk2/5, async_get_bulk2/6,
+
cancel_async_request/2,
%%
@@ -91,7 +92,61 @@
-export([format_reason/1, format_reason/2]).
-%% Backward compatibillity exports
+%% Backward compatibility exports (API version "2")
+-export([
+ sync_get/3, sync_get/4, sync_get/5, sync_get/6,
+ async_get/3, async_get/4, async_get/5, async_get/6,
+ sync_get_next/3, sync_get_next/4, sync_get_next/5, sync_get_next/6,
+ async_get_next/3, async_get_next/4, async_get_next/5, async_get_next/6,
+ sync_set/3, sync_set/4, sync_set/5, sync_set/6,
+ async_set/3, async_set/4, async_set/5, async_set/6,
+ sync_get_bulk/5, sync_get_bulk/6, sync_get_bulk/7, sync_get_bulk/8,
+ async_get_bulk/5, async_get_bulk/6, async_get_bulk/7, async_get_bulk/8
+ ]).
+
+%% Backward compatibility exports (API version "1")
+-deprecated({agent_info, 3}).
+-deprecated({update_agent_info, 5}).
+-deprecated({g, 3}).
+-deprecated({g, 4}).
+-deprecated({g, 5}).
+-deprecated({g, 6}).
+-deprecated({g, 7}).
+-deprecated({ag, 3}).
+-deprecated({ag, 4}).
+-deprecated({ag, 5}).
+-deprecated({ag, 6}).
+-deprecated({ag, 7}).
+-deprecated({gn, 3}).
+-deprecated({gn, 4}).
+-deprecated({gn, 5}).
+-deprecated({gn, 6}).
+-deprecated({gn, 7}).
+-deprecated({agn, 3}).
+-deprecated({agn, 4}).
+-deprecated({agn, 5}).
+-deprecated({agn, 6}).
+-deprecated({agn, 7}).
+-deprecated({gb, 5}).
+-deprecated({gb, 6}).
+-deprecated({gb, 7}).
+-deprecated({gb, 8}).
+-deprecated({gb, 9}).
+-deprecated({agb, 5}).
+-deprecated({agb, 6}).
+-deprecated({agb, 7}).
+-deprecated({agb, 8}).
+-deprecated({agb, 9}).
+-deprecated({s, 3}).
+-deprecated({s, 4}).
+-deprecated({s, 5}).
+-deprecated({s, 6}).
+-deprecated({s, 7}).
+-deprecated({as, 3}).
+-deprecated({as, 4}).
+-deprecated({as, 5}).
+-deprecated({as, 6}).
+-deprecated({as, 7}).
-export([
agent_info/3, update_agent_info/5,
g/3, g/4, g/5, g/6, g/7,
@@ -108,12 +163,12 @@
-export([start_link/3, snmpm_start_verify/2, snmpm_start_verify/3]).
--include("snmp_debug.hrl").
+-include_lib("snmp/src/misc/snmp_debug.hrl").
+-include_lib("snmp/include/snmp_types.hrl").
-include("snmpm_atl.hrl").
--include("snmp_types.hrl").
+-include("snmpm_internal.hrl").
-define(DEFAULT_AGENT_PORT, 161).
--define(DEFAULT_CONTEXT, "").
%% This function is called when the snmp application
@@ -332,23 +387,23 @@ register_agent(UserId, TargetName, Config)
is_list(Config)) ->
do_register_agent(UserId, TargetName, [{reg_type, target_name} | Config]);
-%% Backward compatibillity
+%% Backward compatibility
%% Note that the agent engine id is a mandatory config option,
%% so this function *will* fail!
register_agent(UserId, Addr, Port) when is_integer(Port) ->
register_agent(UserId, Addr, Port, []);
-%% Backward compatibillity
+%% Backward compatibility
register_agent(UserId, Addr, Config) when is_list(Config) ->
register_agent(UserId, Addr, ?DEFAULT_AGENT_PORT, Config).
-%% Backward compatibillity
+%% Backward compatibility
%% Note that the agent engine id is a mandatory config option,
%% so this function *will* fail!
register_agent(UserId, Addr) ->
register_agent(UserId, Addr, ?DEFAULT_AGENT_PORT, []).
-%% Backward compatibillity
+%% Backward compatibility
register_agent(UserId, Addr, Port, Config0) ->
case lists:keymember(target_name, 1, Config0) of
false ->
@@ -368,7 +423,7 @@ register_agent(UserId, Addr, Port, Config0) ->
unregister_agent(UserId, TargetName) when is_list(TargetName) ->
snmpm_config:unregister_agent(UserId, TargetName);
-%% Backward compatibillity functions
+%% Backward compatibility functions
unregister_agent(UserId, Addr) ->
unregister_agent(UserId, Addr, ?DEFAULT_AGENT_PORT).
@@ -383,7 +438,7 @@ unregister_agent(UserId, Addr, Port) ->
agent_info(TargetName, Item) ->
snmpm_config:agent_info(TargetName, Item).
-%% Backward compatibillity
+%% Backward compatibility
agent_info(Addr, Port, Item) ->
case target_name(Addr, Port) of
{ok, TargetName} ->
@@ -393,24 +448,12 @@ agent_info(Addr, Port, Item) ->
end.
update_agent_info(UserId, TargetName, Item, Val) ->
-%% p("update_agent_info -> entry with"
-%% "~n UserId: ~p"
-%% "~n TargetName: ~p"
-%% "~n Item: ~p"
-%% "~n Val: ~p", [UserId, TargetName, Item, Val]),
snmpm_config:update_agent_info(UserId, TargetName, Item, Val).
-%% Backward compatibillity functions
+%% Backward compatibility functions
update_agent_info(UserId, Addr, Port, Item, Val) ->
-%% p("update_agent_info -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n Port: ~p"
-%% "~n Item: ~p"
-%% "~n Val: ~p", [UserId, Addr, Port, Item, Val]),
case target_name(Addr, Port) of
{ok, TargetName} ->
-%% p("update_agent_info -> TargetName: ~p", [TargetName]),
update_agent_info(UserId, TargetName, Item, Val);
Error ->
Error
@@ -472,94 +515,54 @@ which_usm_users(EngineID) when is_list(EngineID) ->
%% --- synchroneous get-request ---
%%
+sync_get2(UserId, TargetName, Oids) ->
+ sync_get2(UserId, TargetName, Oids, []).
+
+sync_get2(UserId, TargetName, Oids, SendOpts)
+ when is_list(Oids) andalso is_list(SendOpts) ->
+ snmpm_server:sync_get2(UserId, TargetName, Oids, SendOpts).
+
+%% <BACKWARD-COMPAT>
sync_get(UserId, TargetName, Oids) ->
-%% p("sync_get -> entry with"
-%% "~n UserId: ~p"
-%% "~n TargetName: ~p"
-%% "~n Oids: ~p", [UserId, TargetName, Oids]),
- sync_get(UserId, TargetName, ?DEFAULT_CONTEXT, Oids).
-
-sync_get(UserId, TargetName, Context, Oids) when is_list(Oids) ->
-%% p("sync_get -> entry with"
-%% "~n UserId: ~p"
-%% "~n TargetName: ~p"
-%% "~n Context: ~p"
-%% "~n Oids: ~p", [UserId, TargetName, Context, Oids]),
- snmpm_server:sync_get(UserId, TargetName, Context, Oids);
-
-sync_get(UserId, TargetName, Oids, Timeout) when is_integer(Timeout) ->
-%% p("sync_get -> entry with"
-%% "~n UserId: ~p"
-%% "~n TargetName: ~p"
-%% "~n Oids: ~p"
-%% "~n Timeout: ~p", [UserId, TargetName, Oids, Timeout]),
- sync_get(UserId, TargetName, ?DEFAULT_CONTEXT, Oids, Timeout).
+ sync_get2(UserId, TargetName, Oids).
+
+sync_get(UserId, TargetName, Oids, Timeout)
+ when is_list(Oids) andalso is_integer(Timeout) ->
+ SendOpts = [{timeout, Timeout}],
+ sync_get2(UserId, TargetName, Oids, SendOpts);
+sync_get(UserId, TargetName, Context, [OH|_] = Oids)
+ when is_list(Context) andalso is_list(OH) ->
+ SendOpts = [{context, Context}],
+ sync_get2(UserId, TargetName, Oids, SendOpts).
sync_get(UserId, TargetName, Context, Oids, Timeout) ->
-%% p("sync_get -> entry with"
-%% "~n UserId: ~p"
-%% "~n TargetName: ~p"
-%% "~n Context: ~p"
-%% "~n Oids: ~p"
-%% "~n Timeout: ~p", [UserId, TargetName, Context, Oids, Timeout]),
- snmpm_server:sync_get(UserId, TargetName, Context, Oids, Timeout).
+ SendOpts = [{context, Context}, {timeout, Timeout}],
+ sync_get2(UserId, TargetName, Oids, SendOpts).
sync_get(UserId, TargetName, Context, Oids, Timeout, ExtraInfo) ->
-%% p("sync_get -> entry with"
-%% "~n UserId: ~p"
-%% "~n TargetName: ~p"
-%% "~n Context: ~p"
-%% "~n Oids: ~p"
-%% "~n Timeout: ~p"
-%% "~n ExtraInfo: ~p",
-%% [UserId, TargetName, Context, Oids, Timeout, ExtraInfo]),
- snmpm_server:sync_get(UserId, TargetName, Context, Oids, Timeout,
- ExtraInfo).
+ SendOpts = [{context, Context}, {timeout, Timeout}, {extra, ExtraInfo}],
+ sync_get2(UserId, TargetName, Oids, SendOpts).
+%% </BACKWARD-COMPAT>
+%% <DEPRECATED>
g(UserId, Addr, Oids) ->
-%% p("g -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n Oids: ~p", [UserId, Addr, Oids]),
g(UserId, Addr, ?DEFAULT_AGENT_PORT, Oids).
g(UserId, Addr, CtxName, Oids) when is_list(CtxName) andalso is_list(Oids) ->
-%% p("g -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n CtxName: ~p"
-%% "~n Oids: ~p", [UserId, Addr, CtxName, Oids]),
g(UserId, Addr, ?DEFAULT_AGENT_PORT, CtxName, Oids);
g(UserId, Addr, Port, Oids) when is_integer(Port) andalso is_list(Oids) ->
-%% p("g -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n Port: ~p"
-%% "~n Oids: ~p", [UserId, Addr, Port, Oids]),
g(UserId, Addr, Port, ?DEFAULT_CONTEXT, Oids);
g(UserId, Addr, Oids, Timeout)
when is_list(Oids) andalso is_integer(Timeout) ->
-%% p("g -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n Oids: ~p"
-%% "~n Timeout: ~p", [UserId, Addr, Oids, Timeout]),
g(UserId, Addr, ?DEFAULT_AGENT_PORT, Oids, Timeout).
g(UserId, Addr, Port, CtxName, Oids)
when is_integer(Port) andalso is_list(CtxName) andalso is_list(Oids) ->
-%% p("g -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n Port: ~p"
-%% "~n Context: ~p"
-%% "~n Oids: ~p", [UserId, Addr, Port, CtxName, Oids]),
case target_name(Addr, Port) of
{ok, TargetName} ->
-%% p("g -> TargetName: ~p", [TargetName]),
sync_get(UserId, TargetName, CtxName, Oids);
Error ->
Error
@@ -567,59 +570,28 @@ g(UserId, Addr, Port, CtxName, Oids)
g(UserId, Addr, Port, Oids, Timeout)
when is_integer(Port) andalso is_list(Oids) andalso is_integer(Timeout) ->
-%% p("g -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n Oids: ~p"
-%% "~n Timeout: ~p",
-%% [UserId, Addr, Oids, Timeout]),
g(UserId, Addr, Port, ?DEFAULT_CONTEXT, Oids, Timeout);
g(UserId, Addr, CtxName, Oids, Timeout)
when is_list(CtxName) andalso is_list(Oids) andalso is_integer(Timeout) ->
-%% p("g -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n CtxName: ~p"
-%% "~n Oids: ~p"
-%% "~n Timeout: ~p",
-%% [UserId, Addr, CtxName, Oids, Timeout]),
g(UserId, Addr, ?DEFAULT_AGENT_PORT, CtxName, Oids, Timeout).
g(UserId, Addr, Port, CtxName, Oids, Timeout) ->
-%% p("g -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n Port: ~p"
-%% "~n CtxName: ~p"
-%% "~n Oids: ~p"
-%% "~n Timeout: ~p",
-%% [UserId, Addr, Port, CtxName, Oids, Timeout]),
case target_name(Addr, Port) of
{ok, TargetName} ->
-%% p("g -> TargetName: ~p", [TargetName]),
sync_get(UserId, TargetName, CtxName, Oids, Timeout);
Error ->
Error
end.
g(UserId, Addr, Port, CtxName, Oids, Timeout, ExtraInfo) ->
-%% p("g -> entry with"
-%% "~n UserId: ~p"
-%% "~n Addr: ~p"
-%% "~n Port: ~p"
-%% "~n CtxName: ~p"
-%% "~n Oids: ~p"
-%% "~n Timeout: ~p"
-%% "~n ExtraInfo: ~p",
-%% [UserId, Addr, Port, CtxName, Oids, Timeout, ExtraInfo]),
case target_name(Addr, Port) of
{ok, TargetName} ->
-%% p("g -> TargetName: ~p", [TargetName]),
sync_get(UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo);
Error ->
Error
end.
+%% </DEPRECATED>
@@ -629,23 +601,36 @@ g(UserId, Addr, Port, CtxName, Oids, Timeout, ExtraInfo) ->
%% through a call to handle_pdu/5
%%
-async_get(UserId, TargetName, Oids) ->
- async_get(UserId, TargetName, ?DEFAULT_CONTEXT, Oids).
+async_get2(UserId, TargetName, Oids) ->
+ async_get2(UserId, TargetName, Oids, []).
+
+async_get2(UserId, TargetName, Oids, SendOpts)
+ when is_list(Oids) andalso is_list(SendOpts) ->
+ snmpm_server:async_get2(UserId, TargetName, Oids, SendOpts).
-async_get(UserId, TargetName, Context, Oids) when is_list(Oids) ->
- snmpm_server:async_get(UserId, TargetName, Context, Oids);
+%% <BACKWARD-COMPAT>
+async_get(UserId, TargetName, Oids) ->
+ async_get2(UserId, TargetName, Oids).
async_get(UserId, TargetName, Oids, Expire) when is_integer(Expire) ->
- async_get(UserId, TargetName, ?DEFAULT_CONTEXT, Oids, Expire).
+ SendOpts = [{timeout, Expire}],
+ async_get2(UserId, TargetName, Oids, SendOpts);
+async_get(UserId, TargetName, Context, Oids)
+ when is_list(Context) andalso is_list(Oids) ->
+ SendOpts = [{context, Context}],
+ async_get2(UserId, TargetName, Oids, SendOpts).
async_get(UserId, TargetName, Context, Oids, Expire) ->
- snmpm_server:async_get(UserId, TargetName, Context, Oids, Expire).
+ SendOpts = [{timeout, Expire}, {context, Context}],
+ async_get2(UserId, TargetName, Oids, SendOpts).
async_get(UserId, TargetName, Context, Oids, Expire, ExtraInfo) ->
- snmpm_server:async_get(UserId, TargetName, Context, Oids, Expire,
- ExtraInfo).
+ SendOpts = [{timeout, Expire}, {context, Context}, {extra, ExtraInfo}],
+ async_get2(UserId, TargetName, Oids, SendOpts).
+%% </BACKWARD-COMPAT>
+%% <DEPRECATED>
ag(UserId, Addr, Oids) ->
ag(UserId, Addr, ?DEFAULT_AGENT_PORT, Oids).
@@ -690,31 +675,44 @@ ag(UserId, Addr, Port, CtxName, Oids, Expire, ExtraInfo) ->
Error ->
Error
end.
+%% </DEPRECATED>
%% --- synchroneous get_next-request ---
%%
-sync_get_next(UserId, TargetName, Oids) ->
- sync_get_next(UserId, TargetName, ?DEFAULT_CONTEXT, Oids).
+sync_get_next2(UserId, TargetName, Oids) ->
+ sync_get_next2(UserId, TargetName, Oids, []).
-sync_get_next(UserId, TargetName, Context, Oids)
- when is_list(Context) andalso is_list(Oids) ->
- snmpm_server:sync_get_next(UserId, TargetName, Context, Oids);
+sync_get_next2(UserId, TargetName, Oids, SendOpts)
+ when is_list(Oids) andalso is_list(SendOpts) ->
+ snmpm_server:sync_get_next2(UserId, TargetName, Oids, SendOpts).
+
+%% <BACKWARD-COMPAT>
+sync_get_next(UserId, TargetName, Oids) ->
+ sync_get_next2(UserId, TargetName, Oids).
sync_get_next(UserId, TargetName, Oids, Timeout)
when is_list(Oids) andalso is_integer(Timeout) ->
- sync_get_next(UserId, TargetName, ?DEFAULT_CONTEXT, Oids, Timeout).
+ SendOpts = [{timeout, Timeout}],
+ sync_get_next2(UserId, TargetName, Oids, SendOpts);
+sync_get_next(UserId, TargetName, Context, Oids)
+ when is_list(Context) andalso is_list(Oids) ->
+ SendOpts = [{context, Context}],
+ sync_get_next2(UserId, TargetName, Oids, SendOpts).
sync_get_next(UserId, TargetName, Context, Oids, Timeout) ->
- snmpm_server:sync_get_next(UserId, TargetName, Context, Oids, Timeout).
+ SendOpts = [{timeout, Timeout}, {context, Context}],
+ sync_get_next2(UserId, TargetName, Oids, SendOpts).
sync_get_next(UserId, TargetName, Context, Oids, Timeout, ExtraInfo) ->
- snmpm_server:sync_get_next(UserId, TargetName, Context, Oids, Timeout,
- ExtraInfo).
+ SendOpts = [{timeout, Timeout}, {context, Context}, {extra, ExtraInfo}],
+ sync_get_next2(UserId, TargetName, Oids, SendOpts).
+%% </BACKWARD-COMPAT>
+%% <DEPRECATED>
gn(UserId, Addr, Oids) ->
gn(UserId, Addr, ?DEFAULT_AGENT_PORT, Oids).
@@ -759,30 +757,44 @@ gn(UserId, Addr, Port, CtxName, Oids, Timeout, ExtraInfo) ->
Error ->
Error
end.
+%% </DEPRECATED>
%% --- asynchroneous get_next-request ---
%%
+async_get_next2(UserId, TargetName, Oids) ->
+ async_get_next2(UserId, TargetName, Oids, []).
+
+async_get_next2(UserId, TargetName, Oids, SendOpts)
+ when is_list(Oids) andalso is_list(SendOpts) ->
+ snmpm_server:async_get_next2(UserId, TargetName, Oids, SendOpts).
+
+%% <BACKWARD-COMPAT>
async_get_next(UserId, TargetName, Oids) ->
- async_get_next(UserId, TargetName, ?DEFAULT_CONTEXT, Oids).
+ async_get_next2(UserId, TargetName, Oids).
+async_get_next(UserId, TargetName, Oids, Expire)
+ when is_list(Oids) andalso is_integer(Expire) ->
+ SendOpts = [{timeout, Expire}],
+ async_get_next2(UserId, TargetName, Oids, SendOpts);
async_get_next(UserId, TargetName, Context, Oids)
when is_list(Context) andalso is_list(Oids) ->
- snmpm_server:async_get_next(UserId, TargetName, Context, Oids);
+ SendOpts = [{context, Context}],
+ async_get_next2(UserId, TargetName, Oids, SendOpts).
-async_get_next(UserId, TargetName, Oids, Timeout)
- when is_list(Oids) andalso is_integer(Timeout) ->
- async_get_next(UserId, TargetName, ?DEFAULT_CONTEXT, Oids, Timeout).
+async_get_next(UserId, TargetName, Context, Oids, Expire) ->
+ SendOpts = [{timeout, Expire}, {context, Context}],
+ async_get_next2(UserId, TargetName, Oids, SendOpts).
-async_get_next(UserId, TargetName, Context, Oids, Timeout) ->
- snmpm_server:async_get_next(UserId, TargetName, Context, Oids, Timeout).
+async_get_next(UserId, TargetName, Context, Oids, Expire, ExtraInfo) ->
+ SendOpts = [{timeout, Expire}, {context, Context}, {extra, ExtraInfo}],
+ async_get_next2(UserId, TargetName, Oids, SendOpts).
+%% </BACKWARD-COMPAT>
-async_get_next(UserId, TargetName, Context, Oids, Timeout, ExtraInfo) ->
- snmpm_server:async_get_next(UserId, TargetName, Context, Oids, Timeout,
- ExtraInfo).
+%% <DEPRECATED>
agn(UserId, Addr, Oids) ->
agn(UserId, Addr, ?DEFAULT_AGENT_PORT, Oids).
@@ -828,31 +840,44 @@ agn(UserId, Addr, Port, CtxName, Oids, Expire, ExtraInfo) ->
Error ->
Error
end.
+%% </DEPRECATED>
%% --- synchroneous set-request ---
%%
-sync_set(UserId, TargetName, VarsAndVals) ->
- sync_set(UserId, TargetName, ?DEFAULT_CONTEXT, VarsAndVals).
+sync_set2(UserId, TargetName, VarsAndVals) ->
+ sync_set2(UserId, TargetName, VarsAndVals, []).
-sync_set(UserId, TargetName, Context, VarsAndVals)
- when is_list(Context) andalso is_list(VarsAndVals) ->
- snmpm_server:sync_set(UserId, TargetName, Context, VarsAndVals);
+sync_set2(UserId, TargetName, VarsAndVals, SendOpts)
+ when is_list(VarsAndVals) andalso is_list(SendOpts) ->
+ snmpm_server:sync_set2(UserId, TargetName, VarsAndVals, SendOpts).
+
+%% <BACKWARD-COMPAT>
+sync_set(UserId, TargetName, VarsAndVals) ->
+ sync_set2(UserId, TargetName, VarsAndVals).
sync_set(UserId, TargetName, VarsAndVals, Timeout)
when is_list(VarsAndVals) andalso is_integer(Timeout) ->
- sync_set(UserId, TargetName, ?DEFAULT_CONTEXT, VarsAndVals, Timeout).
+ SendOpts = [{timeout, Timeout}],
+ sync_set2(UserId, TargetName, VarsAndVals, SendOpts);
+sync_set(UserId, TargetName, Context, VarsAndVals)
+ when is_list(Context) andalso is_list(VarsAndVals) ->
+ SendOpts = [{context, Context}],
+ sync_set2(UserId, TargetName, VarsAndVals, SendOpts).
sync_set(UserId, TargetName, Context, VarsAndVals, Timeout) ->
- snmpm_server:sync_set(UserId, TargetName, Context, VarsAndVals, Timeout).
+ SendOpts = [{timeout, Timeout}, {context, Context}],
+ sync_set2(UserId, TargetName, VarsAndVals, SendOpts).
sync_set(UserId, TargetName, Context, VarsAndVals, Timeout, ExtraInfo) ->
- snmpm_server:sync_set(UserId, TargetName, Context, VarsAndVals, Timeout,
- ExtraInfo).
+ SendOpts = [{timeout, Timeout}, {context, Context}, {extra, ExtraInfo}],
+ sync_set2(UserId, TargetName, VarsAndVals, SendOpts).
+%% </BACKWARD-COMPAT>
+%% <DEPRECATED>
s(UserId, Addr, VarsAndVals) ->
s(UserId, Addr, ?DEFAULT_AGENT_PORT, VarsAndVals).
@@ -906,31 +931,44 @@ s(UserId, Addr, Port, CtxName, VarsAndVals, Timeout, ExtraInfo) ->
Error ->
Error
end.
+%% </DEPRECATED>
%% --- asynchroneous set-request ---
%%
-async_set(UserId, TargetName, VarsAndVals) ->
- async_set(UserId, TargetName, ?DEFAULT_CONTEXT, VarsAndVals).
+async_set2(UserId, TargetName, VarsAndVals) ->
+ async_set2(UserId, TargetName, VarsAndVals, []).
-async_set(UserId, TargetName, Context, VarsAndVals)
- when is_list(Context) andalso is_list(VarsAndVals) ->
- snmpm_server:async_set(UserId, TargetName, Context, VarsAndVals);
+async_set2(UserId, TargetName, VarsAndVals, SendOpts)
+ when is_list(VarsAndVals) andalso is_list(SendOpts) ->
+ snmpm_server:async_set2(UserId, TargetName, VarsAndVals, SendOpts).
+
+%% <BACKWARD-COMPAT>
+async_set(UserId, TargetName, VarsAndVals) ->
+ async_set2(UserId, TargetName, VarsAndVals).
async_set(UserId, TargetName, VarsAndVals, Expire)
when is_list(VarsAndVals) andalso is_integer(Expire) ->
- async_set(UserId, TargetName, ?DEFAULT_CONTEXT, VarsAndVals, Expire).
+ SendOpts = [{timeout, Expire}],
+ async_set2(UserId, TargetName, VarsAndVals, SendOpts);
+async_set(UserId, TargetName, Context, VarsAndVals)
+ when is_list(Context) andalso is_list(VarsAndVals) ->
+ SendOpts = [{context, Context}],
+ async_set2(UserId, TargetName, VarsAndVals, SendOpts).
async_set(UserId, TargetName, Context, VarsAndVals, Expire) ->
- snmpm_server:async_set(UserId, TargetName, Context, VarsAndVals, Expire).
+ SendOpts = [{timeout, Expire}, {context, Context}],
+ async_set2(UserId, TargetName, VarsAndVals, SendOpts).
async_set(UserId, TargetName, Context, VarsAndVals, Expire, ExtraInfo) ->
- snmpm_server:async_set(UserId, TargetName, Context, VarsAndVals, Expire,
- ExtraInfo).
+ SendOpts = [{timeout, Expire}, {context, Context}, {extra, ExtraInfo}],
+ async_set2(UserId, TargetName, VarsAndVals, SendOpts).
+%% </BACKWARD-COMPAT>
+%% <DEPRECATED>
as(UserId, Addr, VarsAndVals) ->
as(UserId, Addr, ?DEFAULT_AGENT_PORT, VarsAndVals).
@@ -984,44 +1022,77 @@ as(UserId, Addr, Port, CtxName, VarsAndVals, Expire, ExtraInfo) ->
Error ->
Error
end.
-
-
+%% </DEPRECATED>
%% --- synchroneous get-bulk ---
%%
-sync_get_bulk(UserId, TargetName, NonRep, MaxRep, Oids) ->
- sync_get_bulk(UserId, TargetName, NonRep, MaxRep, ?DEFAULT_CONTEXT, Oids).
+sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids) ->
+ sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, []).
-sync_get_bulk(UserId, TargetName, NonRep, MaxRep, Context, Oids)
+sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts)
when is_integer(NonRep) andalso
is_integer(MaxRep) andalso
- is_list(Context) andalso
- is_list(Oids) ->
- snmpm_server:sync_get_bulk(UserId, TargetName,
- NonRep, MaxRep,
- Context, Oids);
+ is_list(Oids) andalso
+ is_list(SendOpts) ->
+ %% p("sync_get_bulk -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n TargetName: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n Oids: ~p"
+ %% "~n SendOpts: ~p",
+ %% [UserId, TargetName, NonRep, MaxRep, Oids, SendOpts]),
+ snmpm_server:sync_get_bulk2(UserId, TargetName,
+ NonRep, MaxRep, Oids, SendOpts).
+
+%% <BACKWARD-COMPAT>
+sync_get_bulk(UserId, TargetName, NonRep, MaxRep, Oids) ->
+ sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids).
sync_get_bulk(UserId, TargetName, NonRep, MaxRep, Oids, Timeout)
when is_integer(NonRep) andalso
is_integer(MaxRep) andalso
is_list(Oids) andalso
is_integer(Timeout) ->
- sync_get_bulk(UserId, TargetName, NonRep, MaxRep,
- ?DEFAULT_CONTEXT, Oids, Timeout).
+ SendOpts = [{timeout, Timeout}],
+ sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts);
+sync_get_bulk(UserId, TargetName, NonRep, MaxRep, Context, Oids)
+ when is_integer(NonRep) andalso
+ is_integer(MaxRep) andalso
+ is_list(Context) andalso
+ is_list(Oids) ->
+ %% p("sync_get_bulk -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n TargetName: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n Context: ~p"
+ %% "~n Oids: ~p", [UserId, TargetName, NonRep, MaxRep, Context, Oids]),
+ SendOpts = [{context, Context}],
+ sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts).
sync_get_bulk(UserId, TargetName, NonRep, MaxRep, Context, Oids, Timeout) ->
- snmpm_server:sync_get_bulk(UserId, TargetName, NonRep, MaxRep,
- Context, Oids, Timeout).
+ SendOpts = [{timeout, Timeout}, {context, Context}],
+ sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts).
sync_get_bulk(UserId, TargetName, NonRep, MaxRep, Context, Oids, Timeout,
ExtraInfo) ->
- snmpm_server:sync_get_bulk(UserId, TargetName, NonRep, MaxRep,
- Context, Oids, Timeout, ExtraInfo).
+ SendOpts = [{timeout, Timeout}, {context, Context}, {extra, ExtraInfo}],
+ sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts).
+%% </BACKWARD-COMPAT>
+%% <DEPRECATED>
gb(UserId, Addr, NonRep, MaxRep, Oids) ->
+ %% p("gb -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n Addr: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n Oids: ~p",
+ %% [UserId, Addr, NonRep, MaxRep, Oids]),
gb(UserId, Addr, ?DEFAULT_AGENT_PORT, NonRep, MaxRep, Oids).
gb(UserId, Addr, Port, NonRep, MaxRep, Oids)
@@ -1029,6 +1100,14 @@ gb(UserId, Addr, Port, NonRep, MaxRep, Oids)
is_integer(NonRep) andalso
is_integer(MaxRep) andalso
is_list(Oids) ->
+ %% p("gb -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n Addr: ~p"
+ %% "~n Port: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n Oids: ~p",
+ %% [UserId, Addr, Port, NonRep, MaxRep, Oids]),
gb(UserId, Addr, Port, NonRep, MaxRep, ?DEFAULT_CONTEXT, Oids);
gb(UserId, Addr, NonRep, MaxRep, CtxName, Oids)
@@ -1036,6 +1115,14 @@ gb(UserId, Addr, NonRep, MaxRep, CtxName, Oids)
is_integer(MaxRep) andalso
is_list(CtxName) andalso
is_list(Oids) ->
+ %% p("gb -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n Addr: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n CtxName: ~p"
+ %% "~n Oids: ~p",
+ %% [UserId, Addr, NonRep, MaxRep, CtxName, Oids]),
gb(UserId, Addr, ?DEFAULT_AGENT_PORT, NonRep, MaxRep, CtxName, Oids);
gb(UserId, Addr, NonRep, MaxRep, Oids, Timeout)
@@ -1043,6 +1130,14 @@ gb(UserId, Addr, NonRep, MaxRep, Oids, Timeout)
is_integer(MaxRep) andalso
is_list(Oids) andalso
is_integer(Timeout) ->
+ %% p("gb -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n Addr: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n Oids: ~p"
+ %% "~n Timeout: ~p",
+ %% [UserId, Addr, NonRep, MaxRep, Oids, Timeout]),
gb(UserId, Addr, ?DEFAULT_AGENT_PORT, NonRep, MaxRep, Oids, Timeout).
gb(UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids)
@@ -1051,8 +1146,18 @@ gb(UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids)
is_integer(MaxRep) andalso
is_list(CtxName) andalso
is_list(Oids) ->
+ %% p("gb -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n Addr: ~p"
+ %% "~n Port: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n CtxName: ~p"
+ %% "~n Oids: ~p",
+ %% [UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids]),
case target_name(Addr, Port) of
{ok, TargetName} ->
+ %% p("gb -> TargetName: ~p", [TargetName]),
sync_get_bulk(UserId, TargetName, NonRep, MaxRep, CtxName, Oids);
Error ->
Error
@@ -1064,6 +1169,15 @@ gb(UserId, Addr, Port, NonRep, MaxRep, Oids, Timeout)
is_integer(MaxRep) andalso
is_list(Oids) andalso
is_integer(Timeout) ->
+ %% p("gb -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n Addr: ~p"
+ %% "~n Port: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n Oids: ~p"
+ %% "~n Timeout: ~p",
+ %% [UserId, Addr, Port, NonRep, MaxRep, Oids, Timeout]),
gb(UserId, Addr, Port, NonRep, MaxRep, ?DEFAULT_CONTEXT, Oids, Timeout);
gb(UserId, Addr, NonRep, MaxRep, CtxName, Oids, Timeout)
@@ -1072,10 +1186,29 @@ gb(UserId, Addr, NonRep, MaxRep, CtxName, Oids, Timeout)
is_list(CtxName) andalso
is_list(Oids) andalso
is_integer(Timeout) ->
+ %% p("gb -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n Addr: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n CtxName: ~p"
+ %% "~n Oids: ~p"
+ %% "~n Timeout: ~p",
+ %% [UserId, Addr, NonRep, MaxRep, CtxName, Oids, Timeout]),
gb(UserId, Addr, ?DEFAULT_AGENT_PORT, NonRep, MaxRep, CtxName, Oids,
Timeout).
gb(UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids, Timeout) ->
+ %% p("gb -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n Addr: ~p"
+ %% "~n Port: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n CtxName: ~p"
+ %% "~n Oids: ~p"
+ %% "~n Timeout: ~p",
+ %% [UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids, Timeout]),
case target_name(Addr, Port) of
{ok, TargetName} ->
sync_get_bulk(UserId, TargetName,
@@ -1085,6 +1218,17 @@ gb(UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids, Timeout) ->
end.
gb(UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids, Timeout, ExtraInfo) ->
+ %% p("gb -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n Addr: ~p"
+ %% "~n Port: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n CtxName: ~p"
+ %% "~n Oids: ~p"
+ %% "~n Timeout: ~p"
+ %% "~n ExtraInfo: ~p",
+ %% [UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids, Timeout, ExtraInfo]),
case target_name(Addr, Port) of
{ok, TargetName} ->
sync_get_bulk(UserId, TargetName,
@@ -1092,42 +1236,55 @@ gb(UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids, Timeout, ExtraInfo) ->
Error ->
Error
end.
+%% </DEPRECATED>
%% --- asynchroneous get-bulk ---
%%
-async_get_bulk(UserId, TargetName, NonRep, MaxRep, Oids) ->
- async_get_bulk(UserId, TargetName, NonRep, MaxRep, ?DEFAULT_CONTEXT, Oids).
+async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids) ->
+ async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, []).
-async_get_bulk(UserId, TargetName, NonRep, MaxRep, Context, Oids)
+async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts)
when is_integer(NonRep) andalso
is_integer(MaxRep) andalso
- is_list(Context) andalso
- is_list(Oids) ->
- snmpm_server:async_get_bulk(UserId, TargetName,
- NonRep, MaxRep, Context, Oids);
+ is_list(Oids) andalso
+ is_list(SendOpts) ->
+ snmpm_server:async_get_bulk2(UserId, TargetName,
+ NonRep, MaxRep, Oids, SendOpts).
+
+%% <BACKWARD-COMPAT>
+async_get_bulk(UserId, TargetName, NonRep, MaxRep, Oids) ->
+ async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids).
async_get_bulk(UserId, TargetName, NonRep, MaxRep, Oids, Expire)
when is_integer(NonRep) andalso
is_integer(MaxRep) andalso
is_list(Oids) andalso
is_integer(Expire) ->
- async_get_bulk(UserId, TargetName,
- NonRep, MaxRep, ?DEFAULT_CONTEXT, Oids, Expire).
+ SendOpts = [{timeout, Expire}],
+ async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts);
+async_get_bulk(UserId, TargetName, NonRep, MaxRep, Context, Oids)
+ when is_integer(NonRep) andalso
+ is_integer(MaxRep) andalso
+ is_list(Context) andalso
+ is_list(Oids) ->
+ SendOpts = [{context, Context}],
+ async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts).
async_get_bulk(UserId, TargetName, NonRep, MaxRep, Context, Oids, Expire) ->
- snmpm_server:async_get_bulk(UserId, TargetName,
- NonRep, MaxRep, Context, Oids, Expire).
+ SendOpts = [{timeout, Expire}, {context, Context}],
+ async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts).
async_get_bulk(UserId, TargetName, NonRep, MaxRep, Context, Oids, Expire,
ExtraInfo) ->
- snmpm_server:async_get_bulk(UserId, TargetName,
- NonRep, MaxRep,
- Context, Oids, Expire, ExtraInfo).
+ SendOpts = [{timeout, Expire}, {context, Context}, {extra, ExtraInfo}],
+ async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts).
+%% </BACKWARD-COMPAT>
+%% <DEPRECATED>
agb(UserId, Addr, NonRep, MaxRep, Oids) ->
agb(UserId, Addr, ?DEFAULT_AGENT_PORT, NonRep, MaxRep, Oids).
@@ -1200,6 +1357,7 @@ agb(UserId, Addr, Port, NonRep, MaxRep, CtxName, Oids, Expire, ExtraInfo) ->
Error ->
Error
end.
+%% </DEPRECATED>
cancel_async_request(UserId, ReqId) ->
@@ -1207,7 +1365,7 @@ cancel_async_request(UserId, ReqId) ->
%%%-----------------------------------------------------------------
-%%% Audit Trail Log functions (for backward compatibillity)
+%%% Audit Trail Log functions (for backward compatibility)
%%%-----------------------------------------------------------------
log_to_txt(LogDir, Mibs) ->
OutFile = "snmpm_log.txt",
diff --git a/lib/snmp/src/manager/snmpm_internal.hrl b/lib/snmp/src/manager/snmpm_internal.hrl
index 5d9b32e3f6..53ad41c6b0 100644
--- a/lib/snmp/src/manager/snmpm_internal.hrl
+++ b/lib/snmp/src/manager/snmpm_internal.hrl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2006-2009. All Rights Reserved.
+%% Copyright Ericsson AB 2006-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -20,6 +20,11 @@
-ifndef(snmpm_internal).
-define(snmpm_internal, true).
+-define(DEFAULT_CONTEXT, "").
+-define(SNMPM_EXTRA_INFO_TAG, snmpm_extra_info_tag).
+-define(DEFAULT_EXTRA_INFO, {?SNMPM_EXTRA_INFO_TAG}).
+
+
-include_lib("snmp/src/app/snmp_internal.hrl").
-define(snmpm_info(F, A), ?snmp_info("manager", F, A)).
diff --git a/lib/snmp/src/manager/snmpm_net_if.erl b/lib/snmp/src/manager/snmpm_net_if.erl
index 07156dacd9..3d248fff57 100644
--- a/lib/snmp/src/manager/snmpm_net_if.erl
+++ b/lib/snmp/src/manager/snmpm_net_if.erl
@@ -99,7 +99,7 @@ stop(Pid) ->
call(Pid, stop).
send_pdu(Pid, Pdu, Vsn, MsgData, Addr, Port) ->
- send_pdu(Pid, Pdu, Vsn, MsgData, Addr, Port, undefined).
+ send_pdu(Pid, Pdu, Vsn, MsgData, Addr, Port, ?DEFAULT_EXTRA_INFO).
send_pdu(Pid, Pdu, Vsn, MsgData, Addr, Port, ExtraInfo)
when is_record(Pdu, pdu) ->
@@ -380,13 +380,14 @@ handle_call(Req, From, State) ->
%% {noreply, State, Timeout} |
%% {stop, Reason, State} (terminate/2 is called)
%%--------------------------------------------------------------------
-handle_cast({send_pdu, Pdu, Vsn, MsgData, Addr, Port, _ExtraInfo}, State) ->
+handle_cast({send_pdu, Pdu, Vsn, MsgData, Addr, Port, ExtraInfo}, State) ->
?vlog("received send_pdu message with"
"~n Pdu: ~p"
"~n Vsn: ~p"
"~n MsgData: ~p"
"~n Addr: ~p"
"~n Port: ~p", [Pdu, Vsn, MsgData, Addr, Port]),
+ maybe_process_extra_info(ExtraInfo),
maybe_handle_send_pdu(Pdu, Vsn, MsgData, Addr, Port, State),
{noreply, State};
@@ -999,6 +1000,19 @@ pdu_type_of(TrapPdu) when is_record(TrapPdu, trappdu) ->
%% -------------------------------------------------------------------
+%% At this point this function is used during testing
+maybe_process_extra_info(?DEFAULT_EXTRA_INFO) ->
+ ok;
+maybe_process_extra_info({?SNMPM_EXTRA_INFO_TAG, Fun})
+ when is_function(Fun, 0) ->
+ (catch Fun()),
+ ok;
+maybe_process_extra_info(_ExtraInfo) ->
+ ok.
+
+
+%% -------------------------------------------------------------------
+
t() ->
{A,B,C} = erlang:now(),
A*1000000000+B*1000+(C div 1000).
diff --git a/lib/snmp/src/manager/snmpm_server.erl b/lib/snmp/src/manager/snmpm_server.erl
index d64b5b1d53..b8d7cf6375 100644
--- a/lib/snmp/src/manager/snmpm_server.erl
+++ b/lib/snmp/src/manager/snmpm_server.erl
@@ -32,14 +32,14 @@
register_user/4, register_user_monitor/4, unregister_user/1,
- sync_get/4, sync_get/5, sync_get/6,
- async_get/4, async_get/5, async_get/6,
- sync_get_next/4, sync_get_next/5, sync_get_next/6,
- async_get_next/4, async_get_next/5, async_get_next/6,
- sync_get_bulk/6, sync_get_bulk/7, sync_get_bulk/8,
- async_get_bulk/6, async_get_bulk/7, async_get_bulk/8,
- sync_set/4, sync_set/5, sync_set/6,
- async_set/4, async_set/5, async_set/6,
+ sync_get2/4,
+ async_get2/4,
+ sync_get_next2/4,
+ async_get_next2/4,
+ sync_get_bulk2/6,
+ async_get_bulk2/6,
+ sync_set2/4,
+ async_set2/4,
cancel_async_request/2,
%% discovery/2, discovery/3, discovery/4, discovery/5, discovery/6,
@@ -55,6 +55,20 @@
]).
+%% <BACKWARD-COMPAT>
+-export([sync_get/4, sync_get/5, sync_get/6,
+ async_get/4, async_get/5, async_get/6,
+ sync_get_next/4, sync_get_next/5, sync_get_next/6,
+ async_get_next/4, async_get_next/5, async_get_next/6,
+ sync_get_bulk/6, sync_get_bulk/7, sync_get_bulk/8,
+ async_get_bulk/6, async_get_bulk/7, async_get_bulk/8,
+ sync_set/4, sync_set/5, sync_set/6,
+ async_set/4, async_set/5, async_set/6
+ ]).
+%% </BACKWARD-COMPAT>
+
+
+
%% Internal exports
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
code_change/3, terminate/2]).
@@ -75,13 +89,39 @@
-define(SERVER, ?MODULE).
--define(SYNC_GET_TIMEOUT, 5000).
--define(SYNC_SET_TIMEOUT, 5000).
--define(DEFAULT_ASYNC_EXPIRE, 5000).
--define(EXTRA_INFO, undefined).
-
--define(SNMP_AGENT_PORT, 161).
-
+-define(DEFAULT_SYNC_TIMEOUT, timer:seconds(5)).
+-define(DEFAULT_SYNC_GET_TIMEOUT, ?DEFAULT_SYNC_TIMEOUT).
+-define(DEFAULT_SYNC_GET_NEXT_TIMEOUT, ?DEFAULT_SYNC_TIMEOUT).
+-define(DEFAULT_SYNC_GET_BULK_TIMEOUT, ?DEFAULT_SYNC_TIMEOUT).
+-define(DEFAULT_SYNC_SET_TIMEOUT, ?DEFAULT_SYNC_TIMEOUT).
+
+-define(DEFAULT_ASYNC_TIMEOUT, timer:seconds(5)).
+-define(DEFAULT_ASYNC_GET_TIMEOUT, ?DEFAULT_ASYNC_TIMEOUT).
+-define(DEFAULT_ASYNC_GET_NEXT_TIMEOUT, ?DEFAULT_ASYNC_TIMEOUT).
+-define(DEFAULT_ASYNC_GET_BULK_TIMEOUT, ?DEFAULT_ASYNC_TIMEOUT).
+-define(DEFAULT_ASYNC_SET_TIMEOUT, ?DEFAULT_ASYNC_TIMEOUT).
+
+-define(SNMP_AGENT_PORT, 161).
+
+-define(SYNC_GET_TIMEOUT(SendOpts),
+ get_opt(timeout, ?DEFAULT_SYNC_GET_TIMEOUT, SendOpts)).
+-define(SYNC_GET_NEXT_TIMEOUT(SendOpts),
+ get_opt(timeout, ?DEFAULT_SYNC_GET_NEXT_TIMEOUT, SendOpts)).
+-define(SYNC_GET_BULK_TIMEOUT(SendOpts),
+ get_opt(timeout, ?DEFAULT_SYNC_GET_BULK_TIMEOUT, SendOpts)).
+-define(SYNC_SET_TIMEOUT(SendOpts),
+ get_opt(timeout, ?DEFAULT_SYNC_SET_TIMEOUT, SendOpts)).
+
+-define(ASYNC_GET_TIMEOUT(SendOpts),
+ get_opt(timeout, ?DEFAULT_ASYNC_GET_TIMEOUT, SendOpts)).
+-define(ASYNC_GET_NEXT_TIMEOUT(SendOpts),
+ get_opt(timeout, ?DEFAULT_ASYNC_GET_NEXT_TIMEOUT, SendOpts)).
+-define(ASYNC_GET_BULK_TIMEOUT(SendOpts),
+ get_opt(timeout, ?DEFAULT_ASYNC_GET_BULK_TIMEOUT, SendOpts)).
+-define(ASYNC_SET_TIMEOUT(SendOpts),
+ get_opt(timeout, ?DEFAULT_ASYNC_SET_TIMEOUT, SendOpts)).
+
+-define(GET_EXTRA(SendOpts), get_opt(extra, ?DEFAULT_EXTRA_INFO, SendOpts)).
-ifdef(snmp_debug).
-define(GS_START_LINK(Args),
@@ -192,82 +232,140 @@ unregister_user(UserId) ->
%% -- [sync] get --
+%% The reason why we have a sync_get2 is to simplify backward
+%% compatibillity.
+
+%% sync_get2(UserId, TargetName, Oids) ->
+%% sync_get2(UserId, TargetName, Oids, []).
+sync_get2(UserId, TargetName, Oids, Opts) ->
+ call({sync_get, self(), UserId, TargetName, Oids, Opts}).
+
+
+%% <BACKWARD-COMPAT>
sync_get(UserId, TargetName, CtxName, Oids) ->
sync_get(UserId, TargetName, CtxName, Oids,
- ?SYNC_GET_TIMEOUT).
+ ?DEFAULT_SYNC_GET_TIMEOUT).
sync_get(UserId, TargetName, CtxName, Oids, Timeout) ->
- sync_get(UserId, TargetName, CtxName, Oids, Timeout, ?EXTRA_INFO).
+ sync_get(UserId, TargetName, CtxName, Oids, Timeout, ?DEFAULT_EXTRA_INFO).
sync_get(UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo)
when is_list(TargetName) andalso
is_list(CtxName) andalso
is_list(Oids) andalso
is_integer(Timeout) ->
- call({sync_get, self(), UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo}).
+ Opts = [{context, CtxName}, {timeout, Timeout}, {extra, ExtraInfo}],
+ sync_get2(UserId, TargetName, Oids, Opts).
+%% </BACKWARD-COMPAT>
+
+
%% -- [async] get --
+%% async_get2(UserId, TargetName, Oids) ->
+%% async_get2(UserId, TargetName, Oids, []).
+async_get2(UserId, TargetName, Oids, SendOpts) ->
+ call({async_get, self(), UserId, TargetName, Oids, SendOpts}).
+
+
+%% <BACKWARD-COMPAT>
async_get(UserId, TargetName, CtxName, Oids) ->
async_get(UserId, TargetName, CtxName, Oids,
- ?DEFAULT_ASYNC_EXPIRE, ?EXTRA_INFO).
+ ?DEFAULT_ASYNC_GET_TIMEOUT, ?DEFAULT_EXTRA_INFO).
async_get(UserId, TargetName, CtxName, Oids, Expire) ->
- async_get(UserId, TargetName, CtxName, Oids, Expire, ?EXTRA_INFO).
+ async_get(UserId, TargetName, CtxName, Oids, Expire, ?DEFAULT_EXTRA_INFO).
async_get(UserId, TargetName, CtxName, Oids, Expire, ExtraInfo)
when (is_list(TargetName) andalso
is_list(CtxName) andalso
is_list(Oids) andalso
is_integer(Expire) andalso (Expire >= 0)) ->
- call({async_get, self(), UserId, TargetName, CtxName, Oids, Expire,
- ExtraInfo}).
+ SendOpts = [{context, CtxName}, {expire, Expire}, {extra, ExtraInfo}],
+ async_get2(UserId, TargetName, Oids, SendOpts).
+%% </BACKWARD-COMPAT>
+
+
%% -- [sync] get-next --
+%% sync_get_next2(UserId, TargetName, Oids) ->
+%% sync_get_next2(UserId, TargetName, Oids, []).
+sync_get_next2(UserId, TargetName, Oids, SendOpts) ->
+ call({sync_get_next, self(), UserId, TargetName, Oids, SendOpts}).
+
+
+%% <BACKWARD-COMPAT>
sync_get_next(UserId, TargetName, CtxName, Oids) ->
- sync_get_next(UserId, TargetName, CtxName, Oids, ?SYNC_GET_TIMEOUT,
- ?EXTRA_INFO).
+ sync_get_next(UserId, TargetName, CtxName, Oids,
+ ?DEFAULT_SYNC_GET_TIMEOUT, ?DEFAULT_EXTRA_INFO).
sync_get_next(UserId, TargetName, CtxName, Oids, Timeout) ->
- sync_get_next(UserId, TargetName, CtxName, Oids, Timeout, ?EXTRA_INFO).
+ sync_get_next(UserId, TargetName, CtxName, Oids, Timeout,
+ ?DEFAULT_EXTRA_INFO).
sync_get_next(UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo)
when is_list(TargetName) andalso
is_list(CtxName) andalso
is_list(Oids) andalso
is_integer(Timeout) ->
- call({sync_get_next, self(), UserId, TargetName, CtxName, Oids, Timeout,
- ExtraInfo}).
+ SendOpts = [{context, CtxName}, {timeout, Timeout}, {extra, ExtraInfo}],
+ sync_get_next2(UserId, TargetName, Oids, SendOpts).
+%% <BACKWARD-COMPAT>
+
+
%% -- [async] get-next --
+%% async_get_next2(UserId, TargetName, Oids) ->
+%% async_get_next2(UserId, TargetName, Oids, []).
+async_get_next2(UserId, TargetName, Oids, SendOpts) ->
+ call({async_get_next, self(), UserId, TargetName, Oids, SendOpts}).
+
+
async_get_next(UserId, TargetName, CtxName, Oids) ->
async_get_next(UserId, TargetName, CtxName, Oids,
- ?DEFAULT_ASYNC_EXPIRE, ?EXTRA_INFO).
+ ?DEFAULT_ASYNC_GET_NEXT_TIMEOUT, ?DEFAULT_EXTRA_INFO).
async_get_next(UserId, TargetName, CtxName, Oids, Expire) ->
- async_get_next(UserId, TargetName, CtxName, Oids, Expire, ?EXTRA_INFO).
+ async_get_next(UserId, TargetName, CtxName, Oids, Expire,
+ ?DEFAULT_EXTRA_INFO).
async_get_next(UserId, TargetName, CtxName, Oids, Expire, ExtraInfo)
when (is_list(TargetName) andalso
is_list(CtxName) andalso
is_list(Oids) andalso
is_integer(Expire) andalso (Expire >= 0)) ->
- call({async_get_next, self(), UserId, TargetName, CtxName, Oids,
- Expire, ExtraInfo}).
+ SendOpts = [{context, CtxName}, {expire, Expire}, {extra, ExtraInfo}],
+ async_get_next2(UserId, TargetName, Oids, SendOpts).
+
+
%% -- [sync] get-bulk --
+%% sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids) ->
+%% sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, []).
+sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts) ->
+ %% p("sync_get_bulk2 -> entry with"
+ %% "~n UserId: ~p"
+ %% "~n TargetName: ~p"
+ %% "~n NonRep: ~p"
+ %% "~n MaxRep: ~p"
+ %% "~n Oids: ~p"
+ %% "~n SendOpts: ~p",
+ %% [UserId, TargetName, NonRep, MaxRep, Oids, SendOpts]),
+ call({sync_get_bulk, self(), UserId, TargetName,
+ NonRep, MaxRep, Oids, SendOpts}).
+
sync_get_bulk(UserId, TargetName, NonRep, MaxRep, CtxName, Oids) ->
sync_get_bulk(UserId, TargetName,
NonRep, MaxRep, CtxName, Oids,
- ?SYNC_GET_TIMEOUT, ?EXTRA_INFO).
+ ?DEFAULT_SYNC_GET_TIMEOUT, ?DEFAULT_EXTRA_INFO).
sync_get_bulk(UserId, TargetName, NonRep, MaxRep, CtxName, Oids, Timeout) ->
sync_get_bulk(UserId, TargetName,
NonRep, MaxRep, CtxName, Oids,
- Timeout, ?EXTRA_INFO).
+ Timeout, ?DEFAULT_EXTRA_INFO).
sync_get_bulk(UserId, TargetName, NonRep, MaxRep, CtxName, Oids, Timeout,
ExtraInfo)
@@ -277,20 +375,28 @@ sync_get_bulk(UserId, TargetName, NonRep, MaxRep, CtxName, Oids, Timeout,
is_list(CtxName) andalso
is_list(Oids) andalso
is_integer(Timeout) ->
- call({sync_get_bulk, self(), UserId, TargetName,
- NonRep, MaxRep, CtxName, Oids, Timeout, ExtraInfo}).
+ SendOpts = [{context, CtxName}, {timeout, Timeout}, {extra, ExtraInfo}],
+ sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts).
+
%% -- [async] get-bulk --
+%% async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids) ->
+%% async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, []).
+async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts) ->
+ call({async_get_bulk, self(), UserId, TargetName, NonRep, MaxRep,
+ Oids, SendOpts}).
+
+
async_get_bulk(UserId, TargetName, NonRep, MaxRep, CtxName, Oids) ->
async_get_bulk(UserId, TargetName,
NonRep, MaxRep, CtxName, Oids,
- ?DEFAULT_ASYNC_EXPIRE, ?EXTRA_INFO).
+ ?DEFAULT_ASYNC_GET_BULK_TIMEOUT, ?DEFAULT_EXTRA_INFO).
async_get_bulk(UserId, TargetName, NonRep, MaxRep, CtxName, Oids, Expire) ->
async_get_bulk(UserId, TargetName,
NonRep, MaxRep, CtxName, Oids,
- Expire, ?EXTRA_INFO).
+ Expire, ?DEFAULT_EXTRA_INFO).
async_get_bulk(UserId, TargetName, NonRep, MaxRep, CtxName, Oids, Expire,
ExtraInfo)
@@ -300,45 +406,61 @@ async_get_bulk(UserId, TargetName, NonRep, MaxRep, CtxName, Oids, Expire,
is_list(CtxName) andalso
is_list(Oids) andalso
is_integer(Expire) ->
- call({async_get_bulk, self(), UserId, TargetName,
- NonRep, MaxRep, CtxName, Oids, Expire, ExtraInfo}).
+ SendOpts = [{context, CtxName}, {expire, Expire}, {extra, ExtraInfo}],
+ async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts).
+
+
%% -- [sync] set --
%% VarsAndValues is: {PlainOid, o|s|i, Value} (unknown mibs) | {Oid, Value}
+%% sync_set2(UserId, TargetName, VarsAndVals) ->
+%% sync_set2(UserId, TargetName, VarsAndVals, []).
+sync_set2(UserId, TargetName, VarsAndVals, SendOpts) ->
+ call({sync_set, self(), UserId, TargetName, VarsAndVals, SendOpts}).
+
+
sync_set(UserId, TargetName, CtxName, VarsAndVals) ->
sync_set(UserId, TargetName, CtxName, VarsAndVals,
- ?SYNC_SET_TIMEOUT, ?EXTRA_INFO).
+ ?DEFAULT_SYNC_SET_TIMEOUT, ?DEFAULT_EXTRA_INFO).
sync_set(UserId, TargetName, CtxName, VarsAndVals, Timeout) ->
sync_set(UserId, TargetName, CtxName, VarsAndVals,
- Timeout, ?EXTRA_INFO).
+ Timeout, ?DEFAULT_EXTRA_INFO).
sync_set(UserId, TargetName, CtxName, VarsAndVals, Timeout, ExtraInfo)
when is_list(TargetName) andalso
is_list(CtxName) andalso
is_list(VarsAndVals) andalso
is_integer(Timeout) ->
- call({sync_set, self(), UserId, TargetName,
- CtxName, VarsAndVals, Timeout, ExtraInfo}).
+ SendOpts = [{context, CtxName}, {timeout, Timeout}, {extra, ExtraInfo}],
+ sync_set2(UserId, TargetName, VarsAndVals, SendOpts).
+
+
%% -- [async] set --
+%% async_set2(UserId, TargetName, VarsAndVals) ->
+%% async_set2(UserId, TargetName, VarsAndVals, []).
+async_set2(UserId, TargetName, VarsAndVals, SendOpts) ->
+ call({async_set, self(), UserId, TargetName, VarsAndVals, SendOpts}).
+
+
async_set(UserId, TargetName, CtxName, VarsAndVals) ->
async_set(UserId, TargetName, CtxName, VarsAndVals,
- ?DEFAULT_ASYNC_EXPIRE, ?EXTRA_INFO).
+ ?DEFAULT_ASYNC_SET_TIMEOUT, ?DEFAULT_EXTRA_INFO).
async_set(UserId, TargetName, CtxName, VarsAndVals, Expire) ->
async_set(UserId, TargetName, CtxName, VarsAndVals,
- Expire, ?EXTRA_INFO).
+ Expire, ?DEFAULT_EXTRA_INFO).
async_set(UserId, TargetName, CtxName, VarsAndVals, Expire, ExtraInfo)
when (is_list(TargetName) andalso
is_list(CtxName) andalso
is_list(VarsAndVals) andalso
is_integer(Expire) andalso (Expire >= 0)) ->
- call({async_set, self(), UserId, TargetName,
- CtxName, VarsAndVals, Expire, ExtraInfo}).
+ SendOpts = [{context, CtxName}, {expire, Expire}, {extra, ExtraInfo}],
+ async_set2(UserId, TargetName, VarsAndVals, SendOpts).
cancel_async_request(UserId, ReqId) ->
@@ -571,9 +693,26 @@ handle_call({unregister_user, UserId}, _From, State) ->
%% We will reply to this request later, when the reply comes in from the
%% agent, or when the timeout hits (unless we get an error now).
-handle_call({sync_get, Pid, UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo},
+handle_call({sync_get, Pid, UserId, TargetName, Oids, SendOpts},
+ From, State) ->
+ ?vlog("[~p,~p] received sync_get request for: "
+ "~n ~p", [UserId, TargetName, Oids]),
+ case (catch handle_sync_get(Pid,
+ UserId, TargetName, Oids, SendOpts,
+ From, State)) of
+ ok ->
+ {noreply, State};
+ Error ->
+ {reply, Error, State}
+ end;
+
+%% <BACKWARD-COMPAT>
+%% The only case where this would be called is during code upgrade
+handle_call({sync_get,
+ Pid, UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo},
From, State) ->
- ?vlog("received sync_get [~p] request", [CtxName]),
+ ?vlog("[~p,~p,~p] received sync_get request for: "
+ "~n ~p", [UserId, TargetName, CtxName, Oids]),
case (catch handle_sync_get(Pid,
UserId, TargetName, CtxName, Oids,
Timeout, ExtraInfo, From, State)) of
@@ -582,10 +721,30 @@ handle_call({sync_get, Pid, UserId, TargetName, CtxName, Oids, Timeout, ExtraInf
Error ->
{reply, Error, State}
end;
+%% </BACKWARD-COMPAT>
+
+
+handle_call({sync_get_next, Pid, UserId, TargetName, Oids, SendOpts},
+ From, State) ->
+ ?vlog("[~p,~p] received sync_get_next request for: "
+ "~n ~p", [UserId, TargetName, SendOpts]),
+ case (catch handle_sync_get_next(Pid,
+ UserId, TargetName, Oids, SendOpts,
+ From, State)) of
+ ok ->
+ {noreply, State};
+ Error ->
+ {reply, Error, State}
+ end;
-handle_call({sync_get_next, Pid, UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo}, From, State) ->
- ?vlog("received sync_get_next [~p] request", [CtxName]),
+%% <BACKWARD-COMPAT>
+%% The only case where this would be called is during code upgrade
+handle_call({sync_get_next,
+ Pid, UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo},
+ From, State) ->
+ ?vlog("[~p,~p,~p] received sync_get_next request for"
+ "~n ~p", [UserId, TargetName, CtxName, Oids]),
case (catch handle_sync_get_next(Pid,
UserId, TargetName, CtxName, Oids,
Timeout, ExtraInfo, From, State)) of
@@ -594,13 +753,31 @@ handle_call({sync_get_next, Pid, UserId, TargetName, CtxName, Oids, Timeout, Ext
Error ->
{reply, Error, State}
end;
+%% </BACKWARD-COMPAT>
%% Check agent version? This op not in v1
+handle_call({sync_get_bulk,
+ Pid, UserId, TargetName, NonRep, MaxRep, Oids, SendOpts},
+ From, State) ->
+ ?vlog("[~p,~p] received sync_get_bulk request for: "
+ "~n ~p", [UserId, TargetName, Oids]),
+ case (catch handle_sync_get_bulk(Pid,
+ UserId, TargetName, NonRep, MaxRep, Oids,
+ SendOpts, From, State)) of
+ ok ->
+ {noreply, State};
+ Error ->
+ {reply, Error, State}
+ end;
+
+%% <BACKWARD-COMPAT>
+%% The only case where this would be called is during code upgrade
handle_call({sync_get_bulk, Pid, UserId, TargetName,
NonRep, MaxRep, CtxName, Oids, Timeout, ExtraInfo},
From, State) ->
- ?vlog("received sync_get_bulk [~p] request", [CtxName]),
+ ?vlog("[~p,~p] received sync_get_bulk request for: ~p"
+ "~n ~p", [UserId, TargetName, CtxName, Oids]),
case (catch handle_sync_get_bulk(Pid,
UserId, TargetName, CtxName,
NonRep, MaxRep, Oids,
@@ -610,12 +787,31 @@ handle_call({sync_get_bulk, Pid, UserId, TargetName,
Error ->
{reply, Error, State}
end;
+%% </BACKWARD-COMPAT>
+
+
+handle_call({sync_set,
+ Pid, UserId, TargetName, VarsAndVals, SendOpts},
+ From, State) ->
+ ?vlog("[~p,~p] received sync_set request for: "
+ "~n ~p", [UserId, TargetName, VarsAndVals]),
+ case (catch handle_sync_set(Pid,
+ UserId, TargetName, VarsAndVals, SendOpts,
+ From, State)) of
+ ok ->
+ {noreply, State};
+ Error ->
+ {reply, Error, State}
+ end;
+%% <BACKWARD-COMPAT>
+%% The only case where this would be called is during code upgrade
handle_call({sync_set, Pid, UserId, TargetName,
CtxName, VarsAndVals, Timeout, ExtraInfo},
From, State) ->
- ?vlog("received sync_set [~p] request", [CtxName]),
+ ?vlog("[~p,~p,~p] received sync_set request for: "
+ "~n ~p", [UserId, TargetName, CtxName, VarsAndVals]),
case (catch handle_sync_set(Pid,
UserId, TargetName, CtxName, VarsAndVals,
Timeout, ExtraInfo, From, State)) of
@@ -624,45 +820,105 @@ handle_call({sync_set, Pid, UserId, TargetName,
Error ->
{reply, Error, State}
end;
+%% </BACKWARD-COMPAT>
+handle_call({async_get, Pid, UserId, TargetName, Oids, SendOpts},
+ _From, State) ->
+ ?vlog("[~p,~p] received async_get request for: "
+ "~n ~p", [UserId, TargetName, Oids]),
+ Reply = (catch handle_async_get(Pid,
+ UserId, TargetName, Oids, SendOpts,
+ State)),
+ {reply, Reply, State};
+
+
+%% <BACKWARD-COMPAT>
+%% The only case where this would be called is during code upgrade
handle_call({async_get, Pid, UserId, TargetName,
CtxName, Oids, Expire, ExtraInfo},
_From, State) ->
- ?vlog("received async_get [~p] request", [CtxName]),
+ ?vlog("[~p,~p,~p] received async_get request for: "
+ "~n ~p", [UserId, TargetName, CtxName, Oids]),
Reply = (catch handle_async_get(Pid, UserId, TargetName, CtxName, Oids,
Expire, ExtraInfo, State)),
{reply, Reply, State};
+%% </BACKWARD-COMPAT>
+
+
+handle_call({async_get_next, Pid, UserId, TargetName, Oids, SendOpts},
+ _From, State) ->
+ ?vlog("[~p,~p] received async_get_next request for: "
+ "~n ~p", [UserId, TargetName, Oids]),
+ Reply = (catch handle_async_get_next(Pid,
+ UserId, TargetName, Oids, SendOpts,
+ State)),
+ {reply, Reply, State};
+%% <BACKWARD-COMPAT>
+%% The only case where this would be called is during code upgrade
handle_call({async_get_next, Pid, UserId, TargetName,
CtxName, Oids, Expire, ExtraInfo},
_From, State) ->
- ?vlog("received async_get_next [~p] request", [CtxName]),
+ ?vlog("[~p,~p,~p] received async_get_next request for: ",
+ [UserId, TargetName, CtxName, Oids]),
Reply = (catch handle_async_get_next(Pid, UserId, TargetName, CtxName,
Oids, Expire, ExtraInfo, State)),
{reply, Reply, State};
+%% </BACKWARD-COMPAT>
%% Check agent version? This op not in v1
+handle_call({async_get_bulk,
+ Pid, UserId, TargetName, NonRep, MaxRep, Oids, SendOpts},
+ _From, State) ->
+ ?vlog("[~p,~p] received async_get_bulk request for: "
+ "~n ~p", [UserId, TargetName, Oids]),
+ Reply = (catch handle_async_get_bulk(Pid,
+ UserId, TargetName,
+ NonRep, MaxRep, Oids, SendOpts,
+ State)),
+ {reply, Reply, State};
+
+
+%% <BACKWARD-COMPAT>
+%% The only case where this would be called is during code upgrade
handle_call({async_get_bulk, Pid, UserId, TargetName,
NonRep, MaxRep, CtxName, Oids, Expire, ExtraInfo},
_From, State) ->
- ?vlog("received async_get_bulk [~p] request", [CtxName]),
+ ?vlog("[~p,~p,~p] received async_get_bulk request for: "
+ "~n ~p", [UserId, TargetName, CtxName, Oids]),
Reply = (catch handle_async_get_bulk(Pid,
UserId, TargetName, CtxName,
NonRep, MaxRep, Oids,
Expire, ExtraInfo, State)),
{reply, Reply, State};
+%% </BACKWARD-COMPAT>
+
+
+handle_call({async_set,
+ Pid, UserId, TargetName, VarsAndVals, SendOpts},
+ _From, State) ->
+ ?vlog("[~p,~p] received async_set request for: "
+ "~n ~p", [UserId, TargetName, VarsAndVals]),
+ Reply = (catch handle_async_set(Pid,
+ UserId, TargetName, VarsAndVals, SendOpts,
+ State)),
+ {reply, Reply, State};
+%% <BACKWARD-COMPAT>
+%% The only case where this would be called is during code upgrade
handle_call({async_set, Pid, UserId, TargetName,
CtxName, VarsAndVals, Expire, ExtraInfo},
_From, State) ->
- ?vlog("received async_set [~p] request", [CtxName]),
+ ?vlog("[~p,~p,~p] received async_set request for: "
+ "~n ~p", [UserId, TargetName, CtxName, VarsAndVals]),
Reply = (catch handle_async_set(Pid, UserId, TargetName, CtxName,
VarsAndVals, Expire, ExtraInfo, State)),
{reply, Reply, State};
+%% </BACKWARD-COMPAT>
handle_call({cancel_async_request, UserId, ReqId}, _From, State) ->
@@ -901,36 +1157,46 @@ terminate(Reason, #state{gct = GCT}) ->
handle_sync_get(Pid, UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo,
From, State) ->
+ SendOpts =
+ [
+ {context, CtxName},
+ {timeout, Timeout},
+ {extra, ExtraInfo}
+ ],
+ handle_sync_get(Pid, UserId, TargetName, Oids, SendOpts, From, State).
+
+handle_sync_get(Pid, UserId, TargetName, Oids, SendOpts, From, State) ->
?vtrace("handle_sync_get -> entry with"
"~n Pid: ~p"
"~n UserId: ~p"
"~n TargetName: ~p"
- "~n CtxName: ~p"
"~n Oids: ~p"
- "~n Timeout: ~p"
+ "~n SendOpts: ~p"
"~n From: ~p",
- [Pid, UserId, TargetName, CtxName, Oids, Timeout, From]),
- case agent_data(TargetName, CtxName) of
+ [Pid, UserId, TargetName, Oids, SendOpts, From]),
+ case agent_data(TargetName, SendOpts) of
{ok, RegType, Addr, Port, Vsn, MsgData} ->
?vtrace("handle_sync_get -> send a ~p message", [Vsn]),
- ReqId = send_get_request(Oids, Vsn, MsgData, Addr, Port,
- ExtraInfo, State),
+ Extra = ?GET_EXTRA(SendOpts),
+ ReqId = send_get_request(Oids, Vsn, MsgData,
+ Addr, Port, Extra, State),
?vdebug("handle_sync_get -> ReqId: ~p", [ReqId]),
- Msg = {sync_timeout, ReqId, From},
- Ref = erlang:send_after(Timeout, self(), Msg),
- MonRef = erlang:monitor(process, Pid),
+ Msg = {sync_timeout, ReqId, From},
+ Timeout = ?SYNC_GET_TIMEOUT(SendOpts),
+ Ref = erlang:send_after(Timeout, self(), Msg),
+ MonRef = erlang:monitor(process, Pid),
?vtrace("handle_sync_get -> MonRef: ~p", [MonRef]),
- Req = #request{id = ReqId,
- user_id = UserId,
- reg_type = RegType,
- target = TargetName,
- addr = Addr,
- port = Port,
- type = get,
- data = MsgData,
- ref = Ref,
- mon = MonRef,
- from = From},
+ Req = #request{id = ReqId,
+ user_id = UserId,
+ reg_type = RegType,
+ target = TargetName,
+ addr = Addr,
+ port = Port,
+ type = get,
+ data = MsgData,
+ ref = Ref,
+ mon = MonRef,
+ from = From},
ets:insert(snmpm_request_table, Req),
ok;
Error ->
@@ -940,39 +1206,49 @@ handle_sync_get(Pid, UserId, TargetName, CtxName, Oids, Timeout, ExtraInfo,
Error
end.
-
handle_sync_get_next(Pid, UserId, TargetName, CtxName, Oids, Timeout,
ExtraInfo, From, State) ->
+ SendOpts =
+ [
+ {context, CtxName},
+ {timeout, Timeout},
+ {extra, ExtraInfo}
+ ],
+ handle_sync_get_next(Pid, UserId, TargetName, Oids, SendOpts, From, State).
+
+handle_sync_get_next(Pid, UserId, TargetName, Oids, SendOpts,
+ From, State) ->
?vtrace("handle_sync_get_next -> entry with"
"~n Pid: ~p"
"~n UserId: ~p"
"~n TargetName: ~p"
- "~n CtxName: ~p"
"~n Oids: ~p"
- "~n Timeout: ~p"
+ "~n SendOpts: ~p"
"~n From: ~p",
- [Pid, UserId, TargetName, CtxName, Oids, Timeout, From]),
- case agent_data(TargetName, CtxName) of
+ [Pid, UserId, TargetName, Oids, SendOpts, From]),
+ case agent_data(TargetName, SendOpts) of
{ok, RegType, Addr, Port, Vsn, MsgData} ->
?vtrace("handle_sync_get_next -> send a ~p message", [Vsn]),
- ReqId = send_get_next_request(Oids, Vsn, MsgData,
- Addr, Port, ExtraInfo, State),
+ Extra = ?GET_EXTRA(SendOpts),
+ ReqId = send_get_next_request(Oids, Vsn, MsgData,
+ Addr, Port, Extra, State),
?vdebug("handle_sync_get_next -> ReqId: ~p", [ReqId]),
- Msg = {sync_timeout, ReqId, From},
- Ref = erlang:send_after(Timeout, self(), Msg),
- MonRef = erlang:monitor(process, Pid),
+ Msg = {sync_timeout, ReqId, From},
+ Timeout = ?SYNC_GET_NEXT_TIMEOUT(SendOpts),
+ Ref = erlang:send_after(Timeout, self(), Msg),
+ MonRef = erlang:monitor(process, Pid),
?vtrace("handle_sync_get_next -> MonRef: ~p", [MonRef]),
- Req = #request{id = ReqId,
- user_id = UserId,
- reg_type = RegType,
- target = TargetName,
- addr = Addr,
- port = Port,
- type = get_next,
- data = MsgData,
- ref = Ref,
- mon = MonRef,
- from = From},
+ Req = #request{id = ReqId,
+ user_id = UserId,
+ reg_type = RegType,
+ target = TargetName,
+ addr = Addr,
+ port = Port,
+ type = get_next,
+ data = MsgData,
+ ref = Ref,
+ mon = MonRef,
+ from = From},
ets:insert(snmpm_request_table, Req),
ok;
@@ -987,39 +1263,50 @@ handle_sync_get_next(Pid, UserId, TargetName, CtxName, Oids, Timeout,
handle_sync_get_bulk(Pid, UserId, TargetName, CtxName,
NonRep, MaxRep, Oids, Timeout,
ExtraInfo, From, State) ->
+ SendOpts =
+ [
+ {context, CtxName},
+ {timeout, Timeout},
+ {extra, ExtraInfo}
+ ],
+ handle_sync_get_bulk(Pid, UserId, TargetName, NonRep, MaxRep, Oids,
+ SendOpts, From, State).
+
+handle_sync_get_bulk(Pid, UserId, TargetName, NonRep, MaxRep, Oids, SendOpts,
+ From, State) ->
?vtrace("handle_sync_get_bulk -> entry with"
"~n Pid: ~p"
"~n UserId: ~p"
"~n TargetName: ~p"
- "~n CtxName: ~p"
"~n NonRep: ~p"
"~n MaxRep: ~p"
"~n Oids: ~p"
- "~n Timeout: ~p"
+ "~n SendOpts: ~p"
"~n From: ~p",
- [Pid, UserId, TargetName, CtxName, NonRep, MaxRep, Oids,
- Timeout, From]),
- case agent_data(TargetName, CtxName) of
+ [Pid, UserId, TargetName, NonRep, MaxRep, Oids, SendOpts, From]),
+ case agent_data(TargetName, SendOpts) of
{ok, RegType, Addr, Port, Vsn, MsgData} ->
?vtrace("handle_sync_get_bulk -> send a ~p message", [Vsn]),
- ReqId = send_get_bulk_request(Oids, Vsn, MsgData, Addr, Port,
- NonRep, MaxRep, ExtraInfo, State),
+ Extra = ?GET_EXTRA(SendOpts),
+ ReqId = send_get_bulk_request(Oids, Vsn, MsgData, Addr, Port,
+ NonRep, MaxRep, Extra, State),
?vdebug("handle_sync_get_bulk -> ReqId: ~p", [ReqId]),
- Msg = {sync_timeout, ReqId, From},
- Ref = erlang:send_after(Timeout, self(), Msg),
- MonRef = erlang:monitor(process, Pid),
+ Msg = {sync_timeout, ReqId, From},
+ Timeout = ?SYNC_GET_BULK_TIMEOUT(SendOpts),
+ Ref = erlang:send_after(Timeout, self(), Msg),
+ MonRef = erlang:monitor(process, Pid),
?vtrace("handle_sync_get_bulk -> MonRef: ~p", [MonRef]),
- Req = #request{id = ReqId,
- user_id = UserId,
- reg_type = RegType,
- target = TargetName,
- addr = Addr,
- port = Port,
- type = get_bulk,
- data = MsgData,
- ref = Ref,
- mon = MonRef,
- from = From},
+ Req = #request{id = ReqId,
+ user_id = UserId,
+ reg_type = RegType,
+ target = TargetName,
+ addr = Addr,
+ port = Port,
+ type = get_bulk,
+ data = MsgData,
+ ref = Ref,
+ mon = MonRef,
+ from = From},
ets:insert(snmpm_request_table, Req),
ok;
@@ -1033,36 +1320,47 @@ handle_sync_get_bulk(Pid, UserId, TargetName, CtxName,
handle_sync_set(Pid, UserId, TargetName, CtxName, VarsAndVals, Timeout,
ExtraInfo, From, State) ->
+ SendOpts =
+ [
+ {context, CtxName},
+ {timeout, Timeout},
+ {extra, ExtraInfo}
+ ],
+ handle_sync_set(Pid, UserId, TargetName, VarsAndVals, SendOpts,
+ From, State).
+
+handle_sync_set(Pid, UserId, TargetName, VarsAndVals, SendOpts, From, State) ->
?vtrace("handle_sync_set -> entry with"
"~n Pid: ~p"
"~n UserId: ~p"
"~n TargetName: ~p"
- "~n CtxName: ~p"
"~n VarsAndVals: ~p"
- "~n Timeout: ~p"
+ "~n SendOpts: ~p"
"~n From: ~p",
- [Pid, UserId, TargetName, CtxName, VarsAndVals, Timeout, From]),
- case agent_data(TargetName, CtxName) of
+ [Pid, UserId, TargetName, VarsAndVals, From]),
+ case agent_data(TargetName, SendOpts) of
{ok, RegType, Addr, Port, Vsn, MsgData} ->
?vtrace("handle_sync_set -> send a ~p message", [Vsn]),
- ReqId = send_set_request(VarsAndVals, Vsn, MsgData,
- Addr, Port, ExtraInfo, State),
+ Extra = ?GET_EXTRA(SendOpts),
+ ReqId = send_set_request(VarsAndVals, Vsn, MsgData,
+ Addr, Port, Extra, State),
?vdebug("handle_sync_set -> ReqId: ~p", [ReqId]),
- Msg = {sync_timeout, ReqId, From},
- Ref = erlang:send_after(Timeout, self(), Msg),
- MonRef = erlang:monitor(process, Pid),
+ Msg = {sync_timeout, ReqId, From},
+ Timeout = ?SYNC_SET_TIMEOUT(SendOpts),
+ Ref = erlang:send_after(Timeout, self(), Msg),
+ MonRef = erlang:monitor(process, Pid),
?vtrace("handle_sync_set -> MonRef: ~p", [MonRef]),
- Req = #request{id = ReqId,
- user_id = UserId,
- reg_type = RegType,
- target = TargetName,
- addr = Addr,
- port = Port,
- type = set,
- data = MsgData,
- ref = Ref,
- mon = MonRef,
- from = From},
+ Req = #request{id = ReqId,
+ user_id = UserId,
+ reg_type = RegType,
+ target = TargetName,
+ addr = Addr,
+ port = Port,
+ type = set,
+ data = MsgData,
+ ref = Ref,
+ mon = MonRef,
+ from = From},
ets:insert(snmpm_request_table, Req),
ok;
@@ -1076,20 +1374,30 @@ handle_sync_set(Pid, UserId, TargetName, CtxName, VarsAndVals, Timeout,
handle_async_get(Pid, UserId, TargetName, CtxName, Oids, Expire, ExtraInfo,
State) ->
+ SendOpts =
+ [
+ {context, CtxName},
+ {timeout, Expire},
+ {extra, ExtraInfo}
+ ],
+ handle_async_get(Pid, UserId, TargetName, Oids, SendOpts, State).
+
+handle_async_get(Pid, UserId, TargetName, Oids, SendOpts, State) ->
?vtrace("handle_async_get -> entry with"
"~n Pid: ~p"
"~n UserId: ~p"
"~n TargetName: ~p"
- "~n CtxName: ~p"
"~n Oids: ~p"
- "~n Expire: ~p",
- [Pid, UserId, TargetName, CtxName, Oids, Expire]),
- case agent_data(TargetName, CtxName) of
+ "~n SendOpts: ~p",
+ [Pid, UserId, TargetName, Oids, SendOpts]),
+ case agent_data(TargetName, SendOpts) of
{ok, RegType, Addr, Port, Vsn, MsgData} ->
?vtrace("handle_async_get -> send a ~p message", [Vsn]),
+ Extra = ?GET_EXTRA(SendOpts),
ReqId = send_get_request(Oids, Vsn, MsgData, Addr, Port,
- ExtraInfo, State),
+ Extra, State),
?vdebug("handle_async_get -> ReqId: ~p", [ReqId]),
+ Expire = ?ASYNC_GET_TIMEOUT(SendOpts),
Req = #request{id = ReqId,
user_id = UserId,
reg_type = RegType,
@@ -1114,20 +1422,30 @@ handle_async_get(Pid, UserId, TargetName, CtxName, Oids, Expire, ExtraInfo,
handle_async_get_next(Pid, UserId, TargetName, CtxName, Oids, Expire,
ExtraInfo, State) ->
+ SendOpts =
+ [
+ {context, CtxName},
+ {timeout, Expire},
+ {extra, ExtraInfo}
+ ],
+ handle_async_get_next(Pid, UserId, TargetName, Oids, SendOpts, State).
+
+handle_async_get_next(Pid, UserId, TargetName, Oids, SendOpts, State) ->
?vtrace("handle_async_get_next -> entry with"
"~n Pid: ~p"
"~n UserId: ~p"
"~n TargetName: ~p"
- "~n CtxName: ~p"
"~n Oids: ~p"
- "~n Expire: ~p",
- [Pid, UserId, TargetName, CtxName, Oids, Expire]),
- case agent_data(TargetName, CtxName) of
+ "~n SendOpts: ~p",
+ [Pid, UserId, TargetName, Oids, SendOpts]),
+ case agent_data(TargetName, SendOpts) of
{ok, RegType, Addr, Port, Vsn, MsgData} ->
?vtrace("handle_async_get_next -> send a ~p message", [Vsn]),
+ Extra = ?GET_EXTRA(SendOpts),
ReqId = send_get_next_request(Oids, Vsn, MsgData,
- Addr, Port, ExtraInfo, State),
+ Addr, Port, Extra, State),
?vdebug("handle_async_get_next -> ReqId: ~p", [ReqId]),
+ Expire = ?ASYNC_GET_NEXT_TIMEOUT(SendOpts),
Req = #request{id = ReqId,
user_id = UserId,
reg_type = RegType,
@@ -1153,22 +1471,36 @@ handle_async_get_next(Pid, UserId, TargetName, CtxName, Oids, Expire,
handle_async_get_bulk(Pid, UserId, TargetName, CtxName,
NonRep, MaxRep, Oids, Expire,
ExtraInfo, State) ->
+ SendOpts =
+ [
+ {context, CtxName},
+ {timeout, Expire},
+ {extra, ExtraInfo}
+ ],
+ handle_async_get_bulk(Pid,
+ UserId, TargetName, NonRep, MaxRep, Oids, SendOpts,
+ State).
+
+handle_async_get_bulk(Pid,
+ UserId, TargetName, NonRep, MaxRep, Oids, SendOpts,
+ State) ->
?vtrace("handle_async_get_bulk -> entry with"
"~n Pid: ~p"
"~n UserId: ~p"
"~n TargetName: ~p"
- "~n CtxName: ~p"
"~n NonRep: ~p"
"~n MaxRep: ~p"
"~n Oids: ~p"
- "~n Expire: ~p",
- [Pid, UserId, TargetName, CtxName, NonRep, MaxRep, Oids, Expire]),
- case agent_data(TargetName, CtxName) of
+ "~n SendOpts: ~p",
+ [Pid, UserId, TargetName, NonRep, MaxRep, Oids, SendOpts]),
+ case agent_data(TargetName, SendOpts) of
{ok, RegType, Addr, Port, Vsn, MsgData} ->
?vtrace("handle_async_get_bulk -> send a ~p message", [Vsn]),
+ Extra = ?GET_EXTRA(SendOpts),
ReqId = send_get_bulk_request(Oids, Vsn, MsgData, Addr, Port,
- NonRep, MaxRep, ExtraInfo, State),
+ NonRep, MaxRep, Extra, State),
?vdebug("handle_async_get_bulk -> ReqId: ~p", [ReqId]),
+ Expire = ?ASYNC_GET_BULK_TIMEOUT(SendOpts),
Req = #request{id = ReqId,
user_id = UserId,
reg_type = RegType,
@@ -1192,20 +1524,30 @@ handle_async_get_bulk(Pid, UserId, TargetName, CtxName,
handle_async_set(Pid, UserId, TargetName, CtxName, VarsAndVals, Expire,
ExtraInfo, State) ->
+ SendOpts =
+ [
+ {context, CtxName},
+ {timeout, Expire},
+ {extra, ExtraInfo}
+ ],
+ handle_async_set(Pid, UserId, TargetName, VarsAndVals, SendOpts, State).
+
+handle_async_set(Pid, UserId, TargetName, VarsAndVals, SendOpts, State) ->
?vtrace("handle_async_set -> entry with"
"~n Pid: ~p"
"~n UserId: ~p"
"~n TargetName: ~p"
- "~n CtxName: ~p"
"~n VarsAndVals: ~p"
- "~n Expire: ~p",
- [Pid, UserId, TargetName, CtxName, VarsAndVals, Expire]),
- case agent_data(TargetName, CtxName) of
+ "~n SendOpts: ~p",
+ [Pid, UserId, TargetName, VarsAndVals, SendOpts]),
+ case agent_data(TargetName, SendOpts) of
{ok, RegType, Addr, Port, Vsn, MsgData} ->
?vtrace("handle_async_set -> send a ~p message", [Vsn]),
+ Extra = ?GET_EXTRA(SendOpts),
ReqId = send_set_request(VarsAndVals, Vsn, MsgData,
- Addr, Port, ExtraInfo, State),
+ Addr, Port, Extra, State),
?vdebug("handle_async_set -> ReqId: ~p", [ReqId]),
+ Expire = ?ASYNC_SET_TIMEOUT(SendOpts),
Req = #request{id = ReqId,
user_id = UserId,
reg_type = RegType,
@@ -2798,10 +3140,7 @@ request_id() ->
%%----------------------------------------------------------------------
-agent_data(TargetName, CtxName) ->
- agent_data(TargetName, CtxName, []).
-
-agent_data(TargetName, CtxName, Config) ->
+agent_data(TargetName, SendOpts) ->
case snmpm_config:agent_info(TargetName, all) of
{ok, Info} ->
Version = agent_data_item(version, Info),
@@ -2813,15 +3152,18 @@ agent_data(TargetName, CtxName, Config) ->
DefSecLevel = agent_data_item(sec_level, Info),
EngineId = agent_data_item(engine_id, Info),
+ CtxName = agent_data_item(context,
+ SendOpts,
+ ?DEFAULT_CONTEXT),
SecModel = agent_data_item(sec_model,
- Config,
+ SendOpts,
DefSecModel),
SecName = agent_data_item(sec_name,
- Config,
+ SendOpts,
DefSecName),
SecLevel = agent_data_item(sec_level,
- Config,
+ SendOpts,
DefSecLevel),
{SecModel, SecName, mk_sec_level_flag(SecLevel),
@@ -2831,10 +3173,10 @@ agent_data(TargetName, CtxName, Config) ->
DefSecModel = agent_data_item(sec_model, Info),
Comm = agent_data_item(community,
- Config,
+ SendOpts,
DefComm),
SecModel = agent_data_item(sec_model,
- Config,
+ SendOpts,
DefSecModel),
{Comm, SecModel}
@@ -3003,6 +3345,12 @@ default_agent_config() ->
%%----------------------------------------------------------------------
+get_opt(Key, Default, Opts) ->
+ proplists:get_value(Key, Opts, Default).
+
+
+%%----------------------------------------------------------------------
+
is_started(#state{net_if = _Pid, net_if_mod = _Mod}) ->
%% Mod:is_started(Pid) and snmpm_config:is_started().
case snmpm_config:is_started() of
diff --git a/lib/snmp/src/manager/snmpm_usm.erl b/lib/snmp/src/manager/snmpm_usm.erl
index 449127844a..ef2070a90e 100644
--- a/lib/snmp/src/manager/snmpm_usm.erl
+++ b/lib/snmp/src/manager/snmpm_usm.erl
@@ -476,14 +476,19 @@ set_engine_latest_time(SnmpEngineID, EngineTime) ->
%%-----------------------------------------------------------------
%% Utility functions
%%-----------------------------------------------------------------
+-spec error(term()) -> no_return().
error(Reason) ->
throw({error, Reason}).
+-spec error(term(), term()) -> no_return().
error(Reason, ErrorInfo) ->
throw({error, Reason, ErrorInfo}).
+-spec error(term(), term(), term()) -> no_return().
error(Variable, Oid, SecName) ->
error(Variable, Oid, SecName, []).
+
+-spec error(term(), term(), term(), [term()]) -> no_return().
error(Variable, Oid, SecName, Opts) ->
Val = inc(Variable),
ErrorInfo = {#varbind{oid = Oid,
diff --git a/lib/snmp/src/misc/snmp_conf.erl b/lib/snmp/src/misc/snmp_conf.erl
index 4d2f5d8f92..cb5b3bbfbd 100644
--- a/lib/snmp/src/misc/snmp_conf.erl
+++ b/lib/snmp/src/misc/snmp_conf.erl
@@ -37,7 +37,13 @@
check_timer/1,
- check_ip/1, check_taddress/1,
+ check_domain/1,
+ check_tdomain/1,
+ mk_tdomain/1,
+ which_domain/1,
+ check_ip/1, check_ip/2,
+ check_taddress/1, check_taddress/2,
+ mk_taddress/3,
check_packet_size/1,
@@ -52,8 +58,10 @@
-define(SNMP_USE_V3, true).
--include("snmp_types.hrl").
--include("SNMP-FRAMEWORK-MIB.hrl").
+-include_lib("snmp/include/snmp_types.hrl").
+-include_lib("snmp/include/SNMP-FRAMEWORK-MIB.hrl").
+-include_lib("snmp/include/TRANSPORT-ADDRESS-MIB.hrl").
+-include_lib("snmp/include/SNMPv2-TM.hrl").
-define(VMODULE,"CONF").
-include("snmp_verbosity.hrl").
@@ -338,15 +346,96 @@ check_sec_level(BadSecLevel) ->
%% ---------
-check_taddress(X) when is_list(X) andalso (length(X) =:= 6) ->
+check_tdomain(TDomain) ->
+ SupportedTDomains =
+ [
+ ?snmpUDPDomain,
+ ?transportDomainUdpIpv4,
+ ?transportDomainUdpIpv6
+ ],
+ AllTDomains =
+ [
+ ?transportDomainUdpIpv4,
+ ?transportDomainUdpIpv6,
+ ?transportDomainUdpIpv4z,
+ ?transportDomainUdpIpv6z,
+ ?transportDomainTcpIpv4,
+ ?transportDomainTcpIpv6,
+ ?transportDomainTcpIpv4z,
+ ?transportDomainTcpIpv6z,
+ ?transportDomainSctpIpv4,
+ ?transportDomainSctpIpv6,
+ ?transportDomainSctpIpv4z,
+ ?transportDomainSctpIpv6z,
+ ?transportDomainLocal,
+ ?transportDomainUdpDns,
+ ?transportDomainTcpDns,
+ ?transportDomainSctpDns
+ ],
+ case lists:member(TDomain, SupportedTDomains) of
+ true ->
+ ok;
+ false ->
+ case lists:member(TDomain, AllTDomains) of
+ true ->
+ error({unsupported_tdomain, TDomain});
+ false ->
+ error({unknown_tdomain, TDomain})
+ end
+ end.
+
+
+%% ---------
+
+mk_tdomain(snmpUDPDomain) ->
+ ?snmpUDPDomain;
+mk_tdomain(transportDomainUdpIpv4) ->
+ ?transportDomainUdpIpv4;
+mk_tdomain(transportDomainUdpIpv6) ->
+ ?transportDomainUdpIpv6;
+mk_tdomain(BadDomain) ->
+ error({bad_domain, BadDomain}).
+
+
+%% ---------
+
+check_taddress(X) ->
+ check_taddress(snmpUDPDomain, X).
+
+check_taddress(?snmpUDPDomain, X) ->
+ check_taddress(transportDomainUdpIpv4, X);
+check_taddress(snmpUDPDomain, X) ->
+ check_taddress(transportDomainUdpIpv4, X);
+
+check_taddress(?transportDomainUdpIpv4, X) ->
+ check_taddress(transportDomainUdpIpv4, X);
+check_taddress(transportDomainUdpIpv4, X)
+ when is_list(X) andalso (length(X) =:= 6) ->
case (catch all_integer(X)) of
true ->
ok;
false ->
error({invalid_taddress, X})
end;
-check_taddress(X) ->
- error({invalid_taddress, X}).
+check_taddress(transportDomainUdpIpv4, X) ->
+ error({invalid_taddress, X});
+
+check_taddress(?transportDomainUdpIpv6, X) ->
+ check_taddress(transportDomainUdpIpv6, X);
+check_taddress(transportDomainUdpIpv6, X)
+ when is_list(X) andalso (length(X) =:= 10) ->
+ case (catch all_integer(X)) of
+ true ->
+ ok;
+ false ->
+ error({invalid_taddress, X})
+ end;
+check_taddress(transportDomainUdpIpv6, X) ->
+ error({invalid_taddress, X});
+
+check_taddress(BadDomain, _X) ->
+ error({invalid_tdomain, BadDomain}).
+
%% ---------
@@ -385,15 +474,115 @@ do_check_timer(WaitFor, Factor, Incr, Retry) ->
%% ---------
-check_ip(X) when is_list(X) andalso (length(X) =:= 4) ->
+check_domain(Domain) ->
+ SupportedDomains =
+ [
+ snmpUDPDomain,
+ transportDomainUdpIpv4,
+ transportDomainUdpIpv6
+ ],
+ AllDomains =
+ [
+ transportDomainUdpIpv4,
+ transportDomainUdpIpv6,
+ transportDomainUdpIpv4z,
+ transportDomainUdpIpv6z,
+ transportDomainTcpIpv4,
+ transportDomainTcpIpv6,
+ transportDomainTcpIpv4z,
+ transportDomainTcpIpv6z,
+ transportDomainSctpIpv4,
+ transportDomainSctpIpv6,
+ transportDomainSctpIpv4z,
+ transportDomainSctpIpv6z,
+ transportDomainLocal,
+ transportDomainUdpDns,
+ transportDomainTcpDns,
+ transportDomainSctpDns
+ ],
+ case lists:member(Domain, SupportedDomains) of
+ true ->
+ ok;
+ false ->
+ case lists:member(Domain, AllDomains) of
+ true ->
+ error({unsupported_domain, Domain});
+ false ->
+ error({unknown_domain, Domain})
+ end
+ end.
+
+
+%% ---------
+
+%% The values of Ip and Port has both been checked at this
+%% point, so we dont need to do that again.
+mk_taddress(snmpUDPDomain, Ip, Port) ->
+ mk_taddress(transportDomainUdpIpv4, Ip, Port);
+mk_taddress(transportDomainUdpIpv4, Ip, Port) when is_list(Ip) ->
+ Ip ++ [Port div 256, Port rem 256];
+mk_taddress(transportDomainUdpIpv4 = Domain, Ip, Port) when is_tuple(Ip) ->
+ mk_taddress(Domain, tuple_to_list(Ip), Port);
+mk_taddress(transportDomainUdpIpv6, Ip, Port) when is_list(Ip) ->
+ Ip ++ [Port div 256, Port rem 256];
+mk_taddress(transportDomainUdpIpv6 = Domain, Ip, Port) when is_tuple(Ip) ->
+ mk_taddress(Domain, tuple_to_list(Ip), Port);
+
+%% These are just for convenience
+mk_taddress(?snmpUDPDomain, Ip, Port) ->
+ mk_taddress(snmpUDPDomain, Ip, Port);
+mk_taddress(?transportDomainUdpIpv4, Ip, Port) ->
+ mk_taddress(transportDomainUdpIpv4, Ip, Port);
+mk_taddress(?transportDomainUdpIpv6, Ip, Port) ->
+ mk_taddress(transportDomainUdpIpv6, Ip, Port);
+
+%% Bad domain
+mk_taddress(BadDomain, _Ip, _Port) ->
+ error({bad_domain, BadDomain}).
+
+
+%% ---------
+
+which_domain(Ip) when is_list(Ip) andalso (length(Ip) =:= 4) ->
+ transportDomainUdpIpv4;
+which_domain(Ip) when is_tuple(Ip) andalso (size(Ip) =:= 4) ->
+ transportDomainUdpIpv4;
+which_domain(Ip) when is_list(Ip) andalso (length(Ip) =:= 8) ->
+ transportDomainUdpIpv6;
+which_domain(Ip) when is_tuple(Ip) andalso (size(Ip) =:= 8) ->
+ transportDomainUdpIpv6.
+
+
+%% ---------
+
+check_ip(X) ->
+ check_ip(snmpUDPDomain, X).
+
+check_ip(snmpUDPDomain, X) ->
+ check_ip(transportDomainUdpIpv4, X);
+check_ip(transportDomainUdpIpv4, X) when is_list(X) andalso (length(X) =:= 4) ->
case (catch all_integer(X)) of
true ->
ok;
false ->
error({invalid_ip_address, X})
end;
-check_ip(X) ->
- error({invalid_ip_address, X}).
+check_ip(transportDomainUdpIpv4, X) ->
+ error({invalid_ip_address, X});
+
+check_ip(transportDomainUdpIpv6, X) when is_list(X) andalso (length(X) =:= 8) ->
+ case (catch all_integer(X)) of
+ true ->
+ ok;
+ false ->
+ error({invalid_ip_address, X})
+ end;
+check_ip(transportDomainUdpIpv6, X) ->
+ error({invalid_ip_address, X});
+
+check_ip(BadDomain, _X) ->
+ error({invalid_domain, BadDomain}).
+
%% ---------
diff --git a/lib/snmp/src/misc/snmp_config.erl b/lib/snmp/src/misc/snmp_config.erl
index 25350e08cb..813942225e 100644
--- a/lib/snmp/src/misc/snmp_config.erl
+++ b/lib/snmp/src/misc/snmp_config.erl
@@ -491,6 +491,9 @@ config_agent_snmp(Dir, Vsns) ->
Host = host(),
AgentIP = ask("5. IP address for the agent (only used as id ~n"
" when sending traps)", Host, fun verify_address/1),
+ %% We intentionally skip TDomain...
+ %% If the user wish to use IPv6, the user must create an dummy entry here
+ %% and then manually edit these entries later.
ManagerIP = ask("6. IP address for the manager (only this manager ~n"
" will have access to the agent, traps are sent ~n"
" to this one)", Host, fun verify_address/1),
@@ -1062,9 +1065,19 @@ verify_sec_type(ST) -> {error, "invalid security type: " ++ ST}.
verify_address(A) ->
- case (catch snmp_misc:ip(A)) of
+ verify_address(A, snmpUDPDomain).
+
+verify_address(A, snmpUDPDomain = _Domain) ->
+ do_verify_address(A, inet);
+verify_address(A, transportDomainUdpIpv4 = _Domain) ->
+ do_verify_address(A, inet);
+verify_address(A, transportDomainUdpIpv6 = _Domain) ->
+ do_verify_address(A, inet6).
+
+do_verify_address(A, Family) ->
+ case (catch snmp_misc:ip(A, Family)) of
{ok, IP} ->
- {ok, tuple_to_list(IP)};
+ {ok, tuple_to_list(IP)};
{error, _} ->
{error, "invalid address: " ++ A};
_E ->
@@ -1721,10 +1734,12 @@ write_agent_snmp_target_addr_conf(Dir, ManagerIp, UDP,
Hdr = header() ++ Comment,
F = fun(v1 = Vsn, Acc) ->
[{mk_ip(ManagerIp, Vsn),
+ snmp_target_mib:default_domain(),
ManagerIp, UDP, Timeout, RetryCount,
"std_trap", mk_param(Vsn), "", [], 2048}| Acc];
(v2 = Vsn, Acc) ->
[{mk_ip(ManagerIp, Vsn),
+ snmp_target_mib:default_domain(),
ManagerIp, UDP, Timeout, RetryCount,
"std_trap", mk_param(Vsn), "", [], 2048},
{lists:flatten(io_lib:format("~s.2",[mk_ip(ManagerIp, Vsn)])),
@@ -1732,6 +1747,7 @@ write_agent_snmp_target_addr_conf(Dir, ManagerIp, UDP,
"std_inform", mk_param(Vsn), "", [], 2048}| Acc];
(v3 = Vsn, Acc) ->
[{mk_ip(ManagerIp, Vsn),
+ snmp_target_mib:default_domain(),
ManagerIp, UDP, Timeout, RetryCount,
"std_trap", mk_param(Vsn), "", [], 2048},
{lists:flatten(io_lib:format("~s.3",[mk_ip(ManagerIp, Vsn)])),
diff --git a/lib/snmp/src/misc/snmp_log.erl b/lib/snmp/src/misc/snmp_log.erl
index f9aa911817..7930e37c66 100644
--- a/lib/snmp/src/misc/snmp_log.erl
+++ b/lib/snmp/src/misc/snmp_log.erl
@@ -266,9 +266,6 @@ validate_loop(eof, _Log, _Validatior, _PrevTS, _PrevSN) ->
ok;
validate_loop({error, _} = Error, _Log, _Validator, _PrevTS, _PrevSN) ->
Error;
-validate_loop({corrupt_log_file, _} = Reason,
- _Log, _Validator, _PrevTS, _PrevSN) ->
- {error, Reason};
validate_loop({Cont, Terms}, Log, Validator, PrevTS, PrevSN) ->
?vtrace("validate_loop -> entry with"
"~n Terms: ~p"
@@ -508,8 +505,6 @@ loop(eof, _Log, _Write) ->
ok;
loop({error, _} = Error, _Log, _Write) ->
Error;
-loop({corrupt_log_file, _} = Reason, _Log, _Write) ->
- {error, Reason};
loop({Cont, Terms}, Log, Write) ->
case (catch lists:foreach(Write, Terms)) of
{'EXIT', Reason} ->
diff --git a/lib/snmp/src/misc/snmp_misc.erl b/lib/snmp/src/misc/snmp_misc.erl
index 1b535743a4..6adef06ab9 100644
--- a/lib/snmp/src/misc/snmp_misc.erl
+++ b/lib/snmp/src/misc/snmp_misc.erl
@@ -40,7 +40,7 @@
get_option/2,
get_option/3,
get_sec_level/1,
- ip/1,
+ ip/1, ip/2,
is_auth/1,
is_BitString/1,
is_oid/1,
@@ -347,10 +347,15 @@ bits_to_int([Kibble|Ks],Kibbles,Res) ->
%%----------------------------------------------------------------------
-%% Returns: {ok, {int(),int(),int(),int()}} | {error, Reason}
+%% Returns: {ok, {int(),int(),int(),int()}} |
+%% {ok, {int(),int(),int(),int()},int(),int(),int(),int()} |
+%% {error, Reason}
%%----------------------------------------------------------------------
ip(Host) ->
- inet:getaddr(Host, inet).
+ ip(Host, inet).
+
+ip(Host, Family) ->
+ inet:getaddr(Host, Family).
ensure_trailing_dir_delimiter([]) -> "/";
ensure_trailing_dir_delimiter(DirSuggestion) ->
diff --git a/lib/snmp/src/misc/snmp_pdus.erl b/lib/snmp/src/misc/snmp_pdus.erl
index dc8900c8cd..82618a0b86 100644
--- a/lib/snmp/src/misc/snmp_pdus.erl
+++ b/lib/snmp/src/misc/snmp_pdus.erl
@@ -269,24 +269,35 @@ dec_value([64 | Bytes]) ->
{Value, Rest} = dec_oct_str_notag(Bytes),
{{'IpAddress', Value}, Rest};
dec_value([65 | Bytes]) ->
+ %% Counter32 is an unsigned 32 but is actually encoded as
+ %% a signed integer 32 (INTEGER).
{Value, Rest} = dec_integer_notag(Bytes),
- if Value >= 0, Value =< 4294967295 ->
- {{'Counter32', Value}, Rest};
- true ->
- exit({error, {bad_counter32, Value}})
- end;
+ Value2 =
+ if
+ (Value >= 0) andalso (Value =< 16#ffffffff) ->
+ %% We accept value above 16#7fffffff
+ %% in order to be backward bug-compatible
+ Value;
+ (Value < 0) ->
+ 16#ffffffff + Value + 1;
+ true ->
+ exit({error, {bad_counter32, Value}})
+ end,
+ {{'Counter32', Value2}, Rest};
dec_value([66 | Bytes]) ->
{Value, Rest} = dec_integer_notag(Bytes),
- if Value >= 0, Value =< 4294967295 ->
+ if
+ (Value >= 0) andalso (Value =< 4294967295) ->
{{'Unsigned32', Value}, Rest};
- true ->
+ true ->
exit({error, {bad_unsigned32, Value}})
end;
dec_value([67 | Bytes]) ->
{Value, Rest} = dec_integer_notag(Bytes),
- if Value >= 0, Value =< 4294967295 ->
+ if
+ (Value >= 0) andalso (Value =< 4294967295) ->
{{'TimeTicks', Value}, Rest};
- true ->
+ true ->
exit({error, {bad_timeticks, Value}})
end;
dec_value([68 | Bytes]) ->
@@ -642,6 +653,21 @@ enc_value(_Type, endOfMibView) ->
[130,0];
enc_value('NULL', _Val) ->
[5,0];
+enc_value('Counter32', Val) ->
+ Val2 =
+ if
+ Val > 16#ffffffff ->
+ exit({error, {bad_counter32, Val}});
+ Val >= 16#80000000 ->
+ (Val band 16#7fffffff) - 16#80000000;
+ Val >= 0 ->
+ Val;
+ true ->
+ exit({error, {bad_counter32, Val}})
+ end,
+ Bytes2 = enc_integer_notag(Val2),
+ Len2 = elength(length(Bytes2)),
+ lists:append([65 | Len2],Bytes2);
enc_value('Counter64', Val) ->
Val2 =
if
diff --git a/lib/snmp/test/Makefile b/lib/snmp/test/Makefile
index b7975024b4..0e9c73081d 100644
--- a/lib/snmp/test/Makefile
+++ b/lib/snmp/test/Makefile
@@ -145,9 +145,12 @@ endif
# ----------------------------------------------------
EBIN = .
-ERL_COMPILE_FLAGS += -I../src \
+ERL_COMPILE_FLAGS += -I../../snmp/src/app \
+ -I../../snmp/src/misc \
+ -I../../snmp/src/agent \
+ -I../../snmp/src/manager \
-I$(ERL_TOP)/lib/test_server/include \
- -I../include \
+ -I../../snmp/include \
-Dsnmp_test_data=snmp_test_data \
-Dversion=\"$(VSN)$(PRE_VSN)\" \
+'{parse_transform,sys_pre_attributes}' \
diff --git a/lib/snmp/test/snmp_agent_test.erl b/lib/snmp/test/snmp_agent_test.erl
index 692d29fda0..acf62f5646 100644
--- a/lib/snmp/test/snmp_agent_test.erl
+++ b/lib/snmp/test/snmp_agent_test.erl
@@ -81,13 +81,12 @@
case get(vsn) of
v1 -> V1;
v2 -> V2;
- _ -> V3
+ _ -> V3
end).
all() ->
- Reqs = [mnesia, distribution, {local_slave_nodes, 2},
- {time, 360}],
+ %% Reqs = [mnesia, distribution, {local_slave_nodes, 2}, {time, 360}],
Conf1 = [{group, all_tcs}],
Conf2 = [{group, tickets2}],
Conf1 ++ Conf2.
@@ -95,67 +94,138 @@ all() ->
groups() ->
[{all_tcs, [], cases()},
{mib_storage, [],
- [{group, mib_storage_ets}, {group, mib_storage_dets},
+ [
+ {group, mib_storage_ets},
+ {group, mib_storage_dets},
{group, mib_storage_mnesia},
{group, mib_storage_size_check_ets},
{group, mib_storage_size_check_dets},
{group, mib_storage_size_check_mnesia},
{group, mib_storage_varm_dets},
- {group, mib_storage_varm_mnesia}]},
- {mib_storage_ets, [], mib_storage_ets_cases()},
- {mib_storage_dets, [], mib_storage_dets_cases()},
- {mib_storage_mnesia, [], mib_storage_mnesia_cases()},
- {mib_storage_size_check_ets, [],
- mse_size_check_cases()},
- {mib_storage_size_check_dets, [],
- msd_size_check_cases()},
- {mib_storage_size_check_mnesia, [],
- msm_size_check_cases()},
- {mib_storage_varm_dets, [],
- varm_mib_storage_dets_cases()},
- {mib_storage_varm_mnesia, [],
- varm_mib_storage_mnesia_cases()},
- {misc, [], misc_cases()}, {test_v1, [], v1_cases()},
- {test_v2, [], v2_cases()},
- {test_v1_v2, [], v1_v2_cases()},
- {test_v3, [], v3_cases()},
- {test_multi_threaded, [], mt_cases()},
- {multiple_reqs, [], mul_cases()},
- {multiple_reqs_2, [], mul_cases_2()},
- {v2_inform, [], [v2_inform_i]},
+ {group, mib_storage_varm_mnesia}
+ ]
+ },
+ {mib_storage_ets, [], mib_storage_ets_cases()},
+ {mib_storage_dets, [], mib_storage_dets_cases()},
+ {mib_storage_mnesia, [], mib_storage_mnesia_cases()},
+ {mib_storage_size_check_ets, [], mse_size_check_cases()},
+ {mib_storage_size_check_dets, [], msd_size_check_cases()},
+ {mib_storage_size_check_mnesia, [], msm_size_check_cases()},
+ {mib_storage_varm_dets, [], varm_mib_storage_dets_cases()},
+ {mib_storage_varm_mnesia, [], varm_mib_storage_mnesia_cases()},
+ {misc, [], misc_cases()},
+ {test_v1, [], v1_cases()},
+ {test_v2, [], v2_cases()},
+ {test_v1_v2, [], v1_v2_cases()},
+ {test_v3, [], v3_cases()},
+ {test_multi_threaded, [], mt_cases()},
+ {multiple_reqs, [], mul_cases()},
+ {multiple_reqs_2, [], mul_cases_2()},
+ {v2_inform, [],
+ [
+ v2_inform_i
+ ]
+ },
{v3_security, [],
- [v3_crypto_basic, v3_md5_auth, v3_sha_auth,
- v3_des_priv]},
+ [
+ v3_crypto_basic,
+ v3_md5_auth,
+ v3_sha_auth,
+ v3_des_priv
+ ]
+ },
{standard_mibs, [],
- [snmp_standard_mib, snmp_community_mib,
- snmp_framework_mib, snmp_target_mib,
- snmp_notification_mib, snmp_view_based_acm_mib]},
+ [
+ snmp_standard_mib,
+ snmp_community_mib,
+ snmp_framework_mib,
+ snmp_target_mib,
+ snmp_notification_mib,
+ snmp_view_based_acm_mib
+ ]
+ },
{standard_mibs_2, [],
- [snmpv2_mib_2, snmp_community_mib_2,
- snmp_framework_mib_2, snmp_target_mib_2,
- snmp_notification_mib_2, snmp_view_based_acm_mib_2]},
+ [
+ snmpv2_mib_2,
+ snmp_community_mib_2,
+ snmp_framework_mib_2,
+ snmp_target_mib_2,
+ snmp_notification_mib_2,
+ snmp_view_based_acm_mib_2
+ ]
+ },
{standard_mibs_3, [],
- [snmpv2_mib_3, snmp_framework_mib_3, snmp_mpd_mib_3,
- snmp_target_mib_3, snmp_notification_mib_3,
- snmp_view_based_acm_mib_3, snmp_user_based_sm_mib_3]},
+ [
+ snmpv2_mib_3,
+ snmp_framework_mib_3,
+ snmp_mpd_mib_3,
+ snmp_target_mib_3,
+ snmp_notification_mib_3,
+ snmp_view_based_acm_mib_3,
+ snmp_user_based_sm_mib_3
+ ]
+ },
{reported_bugs, [],
- [otp_1128, otp_1129, otp_1131, otp_1162, otp_1222,
- otp_1298, otp_1331, otp_1338, otp_1342, otp_2776,
- otp_2979, otp_3187, otp_3725]},
+ [
+ otp_1128,
+ otp_1129,
+ otp_1131,
+ otp_1162,
+ otp_1222,
+ otp_1298,
+ otp_1331,
+ otp_1338,
+ otp_1342,
+ otp_2776,
+ otp_2979,
+ otp_3187,
+ otp_3725
+ ]
+ },
{reported_bugs_2, [],
- [otp_1128_2, otp_1129_2, otp_1131_2, otp_1162_2,
- otp_1222_2, otp_1298_2, otp_1331_2, otp_1338_2,
- otp_1342_2, otp_2776_2, otp_2979_2, otp_3187_2]},
+ [
+ otp_1128_2,
+ otp_1129_2,
+ otp_1131_2,
+ otp_1162_2,
+ otp_1222_2,
+ otp_1298_2,
+ otp_1331_2,
+ otp_1338_2,
+ otp_1342_2,
+ otp_2776_2,
+ otp_2979_2,
+ otp_3187_2
+ ]
+ },
{reported_bugs_3, [],
- [otp_1128_3, otp_1129_3, otp_1131_3, otp_1162_3,
- otp_1222_3, otp_1298_3, otp_1331_3, otp_1338_3,
- otp_1342_3, otp_2776_3, otp_2979_3, otp_3187_3,
- otp_3542]},
- {tickets1, [], [{group, otp_4394}, {group, otp_7157}]},
+ [
+ otp_1128_3,
+ otp_1129_3,
+ otp_1131_3,
+ otp_1162_3,
+ otp_1222_3,
+ otp_1298_3,
+ otp_1331_3,
+ otp_1338_3,
+ otp_1342_3,
+ otp_2776_3,
+ otp_2979_3,
+ otp_3187_3,
+ otp_3542
+ ]
+ },
+ {tickets1, [],
+ [
+ {group, otp_4394},
+ {group, otp_7157}
+ ]
+ },
{tickets2, [], [otp8395]},
{otp_4394, [], [otp_4394_test]},
- {otp_7157, [],
- begin Reqs = [], Conf = [otp_7157_test], Conf end}].
+ {otp_7157, [], [otp_7157_test]
+ }
+ ].
init_per_group(all_tcs, Config) ->
init_all(Config);
@@ -378,17 +448,29 @@ end_per_testcase2(_Case, Config) ->
cases() ->
-case ?OSTYPE() of
- vxworks ->
- [{group, misc}, {group, test_v1}, {group, test_v2},
- {group, test_v1_v2}, {group, test_multi_threaded},
- {group, mib_storage}, {group, tickets1}];
- _Else ->
- [{group, misc}, {group, test_v1}, {group, test_v2},
- {group, test_v1_v2}, {group, test_v3},
- {group, test_multi_threaded}, {group, mib_storage},
- {group, tickets1}]
-end.
+ case ?OSTYPE() of
+ vxworks ->
+ [
+ {group, misc},
+ {group, test_v1},
+ {group, test_v2},
+ {group, test_v1_v2},
+ {group, test_multi_threaded},
+ {group, mib_storage},
+ {group, tickets1}
+ ];
+ _Else ->
+ [
+ {group, misc},
+ {group, test_v1},
+ {group, test_v2},
+ {group, test_v1_v2},
+ {group, test_v3},
+ {group, test_multi_threaded},
+ {group, mib_storage},
+ {group, tickets1}
+ ]
+ end.
%%%-----------------------------------------------------------------
@@ -1071,11 +1153,29 @@ app_dir(App) ->
%v1_cases() -> [loop_mib];
v1_cases() ->
-[simple, db_notify_client, v1_processing, big, big2,
- loop_mib, api, subagent, mnesia, {group, multiple_reqs},
- sa_register, v1_trap, sa_error, next_across_sa, undo,
- {group, reported_bugs}, {group, standard_mibs},
- sparse_table, cnt_64, opaque, change_target_addr_config].
+ [
+ simple,
+ db_notify_client,
+ v1_processing,
+ big,
+ big2,
+ loop_mib,
+ api,
+ subagent,
+ mnesia,
+ {group, multiple_reqs},
+ sa_register,
+ v1_trap,
+ sa_error,
+ next_across_sa,
+ undo,
+ {group, reported_bugs},
+ {group, standard_mibs},
+ sparse_table,
+ cnt_64,
+ opaque,
+ change_target_addr_config
+ ].
init_v1(Config) when is_list(Config) ->
?line SaNode = ?config(snmp_sa, Config),
@@ -1094,12 +1194,31 @@ finish_v1(Config) when is_list(Config) ->
v2_cases() ->
-[simple_2, v2_processing, big_2, big2_2, loop_mib_2,
- api_2, subagent_2, mnesia_2, {group, multiple_reqs_2},
- sa_register_2, v2_trap, {group, v2_inform}, sa_error_2,
- next_across_sa_2, undo_2, {group, reported_bugs_2},
- {group, standard_mibs_2}, v2_types, implied,
- sparse_table_2, cnt_64_2, opaque_2, v2_caps].
+ [
+ simple_2,
+ v2_processing,
+ big_2,
+ big2_2,
+ loop_mib_2,
+ api_2,
+ subagent_2,
+ mnesia_2,
+ {group, multiple_reqs_2},
+ sa_register_2,
+ v2_trap,
+ {group, v2_inform},
+ sa_error_2,
+ next_across_sa_2,
+ undo_2,
+ {group, reported_bugs_2},
+ {group, standard_mibs_2},
+ v2_types,
+ implied,
+ sparse_table_2,
+ cnt_64_2,
+ opaque_2,
+ v2_caps
+ ].
init_v2(Config) when is_list(Config) ->
SaNode = ?config(snmp_sa, Config),
@@ -1118,7 +1237,7 @@ finish_v2(Config) when is_list(Config) ->
v1_v2_cases() ->
-[simple_bi].
+ [simple_bi].
init_v1_v2(Config) when is_list(Config) ->
SaNode = ?config(snmp_sa, Config),
@@ -1137,13 +1256,32 @@ finish_v1_v2(Config) when is_list(Config) ->
v3_cases() ->
-[simple_3, v3_processing, big_3, big2_3, api_3,
- subagent_3, mnesia_3, loop_mib_3, multiple_reqs_3,
- sa_register_3, v3_trap, v3_inform, sa_error_3,
- next_across_sa_3, undo_3, {group, reported_bugs_3},
- {group, standard_mibs_3}, {group, v3_security},
- v2_types_3, implied_3, sparse_table_3, cnt_64_3,
- opaque_3, v2_caps_3].
+ [
+ simple_3,
+ v3_processing,
+ big_3,
+ big2_3,
+ api_3,
+ subagent_3,
+ mnesia_3,
+ loop_mib_3,
+ multiple_reqs_3,
+ sa_register_3,
+ v3_trap,
+ v3_inform,
+ sa_error_3,
+ next_across_sa_3,
+ undo_3,
+ {group, reported_bugs_3},
+ {group, standard_mibs_3},
+ {group, v3_security},
+ v2_types_3,
+ implied_3,
+ sparse_table_3,
+ cnt_64_3,
+ opaque_3,
+ v2_caps_3
+ ].
init_v3(Config) when is_list(Config) ->
%% Make sure crypto works, otherwise start_agent will fail
diff --git a/lib/snmp/test/snmp_agent_test_lib.erl b/lib/snmp/test/snmp_agent_test_lib.erl
index 9e89aa889c..3ae2409997 100644
--- a/lib/snmp/test/snmp_agent_test_lib.erl
+++ b/lib/snmp/test/snmp_agent_test_lib.erl
@@ -1311,10 +1311,12 @@ rewrite_target_addr_conf(Dir, NewPort) ->
"~n NewPort: ~p", [NewPort]),
TAFile = filename:join(Dir, "target_addr.conf"),
case file:read_file_info(TAFile) of
- {ok, _} -> ok;
- {error, R} -> ?ERR("failure reading file info of "
- "target address config file: ~p",[R]),
- ok
+ {ok, _} ->
+ ok;
+ {error, R} ->
+ ?ERR("failure reading file info of "
+ "target address config file: ~p",[R]),
+ ok
end,
?line [TrapAddr|Addrs] =
@@ -1335,8 +1337,9 @@ rewrite_target_addr_conf(Dir, NewPort) ->
rewrite_target_addr_conf_check(O) ->
{ok,O}.
-rewrite_target_addr_conf2(NewPort,{Name,Ip,_Port,Timeout,Retry,
- "std_trap",EngineId}) ->
+rewrite_target_addr_conf2(NewPort,
+ {Name, Ip, _Port, Timeout, Retry,
+ "std_trap", EngineId}) ->
?LOG("rewrite_target_addr_conf2 -> entry with std_trap",[]),
{Name,Ip,NewPort,Timeout,Retry,"std_trap",EngineId};
rewrite_target_addr_conf2(_NewPort,O) ->
diff --git a/lib/snmp/test/snmp_manager_test.erl b/lib/snmp/test/snmp_manager_test.erl
index 50836db731..6bd62df655 100644
--- a/lib/snmp/test/snmp_manager_test.erl
+++ b/lib/snmp/test/snmp_manager_test.erl
@@ -37,13 +37,16 @@
-include_lib("snmp/include/snmp_types.hrl").
-include_lib("snmp/include/STANDARD-MIB.hrl").
+-include_lib("snmp/src/manager/snmpm_internal.hrl").
%%----------------------------------------------------------------------
%% External exports
%%----------------------------------------------------------------------
-export([
- all/0,groups/0,init_per_group/2,end_per_group/2,
+ all/0,
+ groups/0,
+ init_per_group/2, end_per_group/2,
init_per_testcase/2, end_per_testcase/2,
@@ -54,49 +57,45 @@
notify_started01/1,
notify_started02/1,
-
register_user1/1,
-
register_agent1/1,
register_agent2/1,
-
info/1,
-
-
-
simple_sync_get1/1,
simple_sync_get2/1,
+ simple_sync_get3/1,
simple_async_get1/1,
simple_async_get2/1,
-
+ simple_async_get3/1,
simple_sync_get_next1/1,
simple_sync_get_next2/1,
+ simple_sync_get_next3/1,
simple_async_get_next1/1,
simple_async_get_next2/1,
-
+ simple_async_get_next3/1,
simple_sync_set1/1,
simple_sync_set2/1,
+ simple_sync_set3/1,
simple_async_set1/1,
simple_async_set2/1,
-
+ simple_async_set3/1,
simple_sync_get_bulk1/1,
simple_sync_get_bulk2/1,
+ simple_sync_get_bulk3/1,
simple_async_get_bulk1/1,
simple_async_get_bulk2/1,
-
+ simple_async_get_bulk3/1,
misc_async1/1,
misc_async2/1,
discovery/1,
-
-
trap1/1,
trap2/1,
@@ -109,8 +108,6 @@
report/1,
-
-
otp8015_1/1,
otp8395_1/1
@@ -220,7 +217,7 @@ init_per_testcase2(Case, Config) ->
Conf2.
init_per_testcase3(Case, Config) ->
- OldApiCases =
+ ApiCases01 =
[
simple_sync_get1,
simple_async_get1,
@@ -232,7 +229,7 @@ init_per_testcase3(Case, Config) ->
simple_async_get_bulk1,
misc_async1
],
- NewApiCases =
+ ApiCases02 =
[
simple_sync_get2,
simple_async_get2,
@@ -245,6 +242,17 @@ init_per_testcase3(Case, Config) ->
misc_async2,
otp8395_1
],
+ ApiCases03 =
+ [
+ simple_sync_get3,
+ simple_async_get3,
+ simple_sync_get_next3,
+ simple_async_get_next3,
+ simple_sync_set3,
+ simple_async_set3,
+ simple_sync_get_bulk3,
+ simple_async_get_bulk3
+ ],
Cases =
[
trap1,
@@ -256,8 +264,9 @@ init_per_testcase3(Case, Config) ->
inform_swarm,
report
] ++
- OldApiCases ++
- NewApiCases,
+ ApiCases01 ++
+ ApiCases02 ++
+ ApiCases03,
case lists:member(Case, Cases) of
true ->
NoAutoInformCases = [inform1, inform2, inform3, inform_swarm],
@@ -279,7 +288,7 @@ init_per_testcase3(Case, Config) ->
Conf2 = init_agent(Conf1),
Conf3 = init_manager(AutoInform, Conf2),
Conf4 = init_mgr_user(Conf3),
- case lists:member(Case, NewApiCases) of
+ case lists:member(Case, ApiCases02 ++ ApiCases03) of
true ->
init_mgr_user_data2(Conf4);
false ->
@@ -301,7 +310,7 @@ end_per_testcase(Case, Config) when is_list(Config) ->
Conf2.
end_per_testcase2(Case, Config) ->
- OldApiCases =
+ ApiCases01 =
[
simple_sync_get1,
simple_async_get1,
@@ -313,7 +322,7 @@ end_per_testcase2(Case, Config) ->
simple_async_get_bulk1,
misc_async1
],
- NewApiCases =
+ ApiCases02 =
[
simple_sync_get2,
simple_async_get2,
@@ -326,6 +335,17 @@ end_per_testcase2(Case, Config) ->
misc_async2,
otp8395_1
],
+ ApiCases03 =
+ [
+ simple_sync_get3,
+ simple_async_get3,
+ simple_sync_get_next3,
+ simple_async_get_next3,
+ simple_sync_set3,
+ simple_async_set3,
+ simple_sync_get_bulk3,
+ simple_async_get_bulk3
+ ],
Cases =
[
trap1,
@@ -337,11 +357,12 @@ end_per_testcase2(Case, Config) ->
inform_swarm,
report
] ++
- OldApiCases ++
- NewApiCases,
+ ApiCases01 ++
+ ApiCases02 ++
+ ApiCases03,
case lists:member(Case, Cases) of
true ->
- Conf1 = case lists:member(Case, NewApiCases) of
+ Conf1 = case lists:member(Case, ApiCases02 ++ ApiCases03) of
true ->
fin_mgr_user_data2(Config);
false ->
@@ -360,42 +381,129 @@ end_per_testcase2(Case, Config) ->
%%======================================================================
all() ->
-[{group, start_and_stop_tests}, {group, misc_tests},
- {group, user_tests}, {group, agent_tests},
- {group, request_tests}, {group, event_tests}, discovery,
- {group, tickets}].
+ [
+ {group, start_and_stop_tests},
+ {group, misc_tests},
+ {group, user_tests},
+ {group, agent_tests},
+ {group, request_tests},
+ {group, event_tests},
+ discovery,
+ {group, tickets}
+ ].
groups() ->
- [{start_and_stop_tests, [],
- [simple_start_and_stop1, simple_start_and_stop2,
- simple_start_and_monitor_crash1,
- simple_start_and_monitor_crash2, notify_started01,
- notify_started02]},
- {misc_tests, [], [info]},
- {user_tests, [], [register_user1]},
- {agent_tests, [], [register_agent1, register_agent2]},
- {request_tests, [],
- [{group, get_tests}, {group, get_next_tests},
- {group, set_tests}, {group, bulk_tests},
- {group, misc_request_tests}]},
- {get_tests, [],
- [simple_sync_get1, simple_sync_get2, simple_async_get1,
- simple_async_get2]},
- {get_next_tests, [],
- [simple_sync_get_next1, simple_sync_get_next2,
- simple_async_get_next1, simple_async_get_next2]},
- {set_tests, [],
- [simple_sync_set1, simple_sync_set2, simple_async_set1,
- simple_async_set2]},
- {bulk_tests, [],
- [simple_sync_get_bulk1, simple_sync_get_bulk2,
- simple_async_get_bulk1, simple_async_get_bulk2]},
- {misc_request_tests, [], [misc_async1, misc_async2]},
- {event_tests, [],
- [trap1, trap2, inform1, inform2, inform3, inform4,
- inform_swarm, report]},
- {tickets, [], [{group, otp8015}, {group, otp8395}]},
- {otp8015, [], [otp8015_1]}, {otp8395, [], [otp8395_1]}].
+ [
+ {start_and_stop_tests, [],
+ [
+ simple_start_and_stop1,
+ simple_start_and_stop2,
+ simple_start_and_monitor_crash1,
+ simple_start_and_monitor_crash2,
+ notify_started01,
+ notify_started02
+ ]
+ },
+ {misc_tests, [],
+ [
+ info
+ ]
+ },
+ {user_tests, [],
+ [
+ register_user1
+ ]
+ },
+ {agent_tests, [],
+ [
+ register_agent1,
+ register_agent2
+ ]
+ },
+ {request_tests, [],
+ [
+ {group, get_tests},
+ {group, get_next_tests},
+ {group, set_tests},
+ {group, bulk_tests},
+ {group, misc_request_tests}
+ ]
+ },
+ {get_tests, [],
+ [
+ simple_sync_get1,
+ simple_sync_get2,
+ simple_sync_get3,
+ simple_async_get1,
+ simple_async_get2,
+ simple_async_get3
+ ]
+ },
+ {get_next_tests, [],
+ [
+ simple_sync_get_next1,
+ simple_sync_get_next2,
+ simple_sync_get_next3,
+ simple_async_get_next1,
+ simple_async_get_next2,
+ simple_async_get_next3
+ ]
+ },
+ {set_tests, [],
+ [
+ simple_sync_set1,
+ simple_sync_set2,
+ simple_sync_set3,
+ simple_async_set1,
+ simple_async_set2,
+ simple_async_set3
+ ]
+ },
+ {bulk_tests, [],
+ [
+ simple_sync_get_bulk1,
+ simple_sync_get_bulk2,
+ simple_sync_get_bulk3,
+ simple_async_get_bulk1,
+ simple_async_get_bulk2,
+ simple_async_get_bulk3
+ ]
+ },
+ {misc_request_tests, [],
+ [
+ misc_async1,
+ misc_async2
+ ]
+ },
+ {event_tests, [],
+ [
+ trap1,
+ trap2,
+ inform1,
+ inform2,
+ inform3,
+ inform4,
+ inform_swarm,
+ report
+ ]
+ },
+ {tickets, [],
+ [
+ {group, otp8015},
+ {group, otp8395}
+ ]
+ },
+ {otp8015, [],
+ [
+ otp8015_1
+ ]
+ },
+ {otp8395, [],
+ [
+ otp8395_1
+ ]
+ }
+ ].
init_per_group(_GroupName, Config) ->
Config.
@@ -404,21 +512,6 @@ end_per_group(_GroupName, Config) ->
Config.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
%%======================================================================
%% Test functions
%%======================================================================
@@ -1319,15 +1412,15 @@ simple_sync_get1(Config) when is_list(Config) ->
p("issue get-request without loading the mib"),
Oids1 = [?sysObjectID_instance, ?sysDescr_instance, ?sysUpTime_instance],
- ?line ok = do_simple_get(Node, Addr, Port, Oids1),
+ ?line ok = do_simple_sync_get(Node, Addr, Port, Oids1),
p("issue get-request after first loading the mibs"),
?line ok = mgr_user_load_mib(Node, std_mib()),
Oids2 = [[sysObjectID, 0], [sysDescr, 0], [sysUpTime, 0]],
- ?line ok = do_simple_get(Node, Addr, Port, Oids2),
+ ?line ok = do_simple_sync_get(Node, Addr, Port, Oids2),
ok.
-do_simple_get(Node, Addr, Port, Oids) ->
+do_simple_sync_get(Node, Addr, Port, Oids) ->
?line {ok, Reply, Rem} = mgr_user_sync_get(Node, Addr, Port, Oids),
?DBG("~n Reply: ~p"
@@ -1360,14 +1453,22 @@ do_simple_get(Node, Addr, Port, Oids) ->
%%======================================================================
-simple_sync_get2(doc) -> ["Simple sync get-request - New style (TargetName)"];
+simple_sync_get2(doc) ->
+ ["Simple sync get-request - Version 2 API (TargetName)"];
simple_sync_get2(suite) -> [];
simple_sync_get2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
put(tname, ssg2),
- do_simple_get(Config).
+ do_simple_sync_get2(Config).
-do_simple_get(Config) ->
+do_simple_sync_get2(Config) ->
+ Get = fun(Node, TargetName, Oids) ->
+ mgr_user_sync_get(Node, TargetName, Oids)
+ end,
+ PostVerify = fun() -> ok end,
+ do_simple_sync_get2(Config, Get, PostVerify).
+
+do_simple_sync_get2(Config, Get, PostVerify) ->
p("starting with Config: ~p~n", [Config]),
Node = ?config(manager_node, Config),
@@ -1375,20 +1476,21 @@ do_simple_get(Config) ->
p("issue get-request without loading the mib"),
Oids1 = [?sysObjectID_instance, ?sysDescr_instance, ?sysUpTime_instance],
- ?line ok = do_simple_get(Node, TargetName, Oids1),
+ ?line ok = do_simple_sync_get2(Node, TargetName, Oids1, Get, PostVerify),
p("issue get-request after first loading the mibs"),
?line ok = mgr_user_load_mib(Node, std_mib()),
Oids2 = [[sysObjectID, 0], [sysDescr, 0], [sysUpTime, 0]],
- ?line ok = do_simple_get(Node, TargetName, Oids2),
+ ?line ok = do_simple_sync_get2(Node, TargetName, Oids2, Get, PostVerify),
ok.
-
-do_simple_get(Node, TargetName, Oids) ->
- ?line {ok, Reply, Rem} = mgr_user_sync_get(Node, TargetName, Oids),
+
+do_simple_sync_get2(Node, TargetName, Oids, Get, PostVerify)
+ when is_function(Get, 3) andalso is_function(PostVerify, 0) ->
+ ?line {ok, Reply, Rem} = Get(Node, TargetName, Oids),
?DBG("~n Reply: ~p"
"~n Rem: ~w", [Reply, Rem]),
-
+
%% verify that the operation actually worked:
%% The order should be the same, so no need to seach
?line ok = case Reply of
@@ -1403,7 +1505,7 @@ do_simple_get(Node, TargetName, Oids) ->
"~n SysDescr: ~s"
"~n SysUpTime: ~w",
[SysObjectID, SysDescr, SysUpTime]),
- ok;
+ PostVerify();
{noError, 0, Vbs} ->
p("unexpected varbinds: ~n~p", [Vbs]),
{error, {unexpected_vbs, Vbs}};
@@ -1416,6 +1518,38 @@ do_simple_get(Node, TargetName, Oids) ->
%%======================================================================
+simple_sync_get3(doc) ->
+ ["Simple sync get-request - Version 3 API (TargetName and send-opts)"];
+simple_sync_get3(suite) -> [];
+simple_sync_get3(Config) when is_list(Config) ->
+ process_flag(trap_exit, true),
+ put(tname, ssg3),
+ do_simple_sync_get3(Config).
+
+do_simple_sync_get3(Config) ->
+ Self = self(),
+ Msg = simple_sync_get3,
+ Fun = fun() -> Self ! Msg end,
+ Extra = {?SNMPM_EXTRA_INFO_TAG, Fun},
+ SendOpts =
+ [
+ {extra, Extra}
+ ],
+ Get = fun(Node, TargetName, Oids) ->
+ mgr_user_sync_get2(Node, TargetName, Oids, SendOpts)
+ end,
+ PostVerify =
+ fun() ->
+ receive
+ Msg ->
+ ok
+ end
+ end,
+ do_simple_sync_get2(Config, Get, PostVerify).
+
+
+%%======================================================================
+
simple_async_get1(doc) -> ["Simple (async) get-request - "
"Old style (Addr & Port)"];
simple_async_get1(suite) -> [];
@@ -1435,40 +1569,41 @@ simple_async_get1(Config) when is_list(Config) ->
?line ok = agent_load_mib(AgentNode, Test2Mib),
Exec = fun(Data) ->
- async_g_exec1(MgrNode, Addr, Port, Data)
+ async_g_exec1(MgrNode, Addr, Port, Data)
end,
- Requests = [
- { 1,
- [?sysObjectID_instance],
- Exec,
- fun(X) -> sag_verify(X, [?sysObjectID_instance]) end},
- { 2,
- [?sysDescr_instance, ?sysUpTime_instance],
- Exec,
- fun(X) ->
- sag_verify(X, [?sysObjectID_instance,
- ?sysUpTime_instance])
- end},
- { 3,
- [[sysObjectID, 0], [sysDescr, 0], [sysUpTime, 0]],
- Exec,
- fun(X) ->
- sag_verify(X, [?sysObjectID_instance,
- ?sysDescr_instance,
- ?sysUpTime_instance])
- end},
- { 4,
- [?sysObjectID_instance,
- ?sysDescr_instance,
- ?sysUpTime_instance],
- Exec,
- fun(X) ->
- sag_verify(X, [?sysObjectID_instance,
- ?sysDescr_instance,
- ?sysUpTime_instance])
- end}
- ],
+ Requests =
+ [
+ { 1,
+ [?sysObjectID_instance],
+ Exec,
+ fun(X) -> sag_verify(X, [?sysObjectID_instance]) end },
+ { 2,
+ [?sysDescr_instance, ?sysUpTime_instance],
+ Exec,
+ fun(X) ->
+ sag_verify(X, [?sysObjectID_instance,
+ ?sysUpTime_instance])
+ end },
+ { 3,
+ [[sysObjectID, 0], [sysDescr, 0], [sysUpTime, 0]],
+ Exec,
+ fun(X) ->
+ sag_verify(X, [?sysObjectID_instance,
+ ?sysDescr_instance,
+ ?sysUpTime_instance])
+ end },
+ { 4,
+ [?sysObjectID_instance,
+ ?sysDescr_instance,
+ ?sysUpTime_instance],
+ Exec,
+ fun(X) ->
+ sag_verify(X, [?sysObjectID_instance,
+ ?sysDescr_instance,
+ ?sysUpTime_instance])
+ end }
+ ],
p("manager info when starting test: ~n~p", [mgr_info(MgrNode)]),
p("agent info when starting test: ~n~p", [agent_info(AgentNode)]),
@@ -1516,66 +1651,76 @@ sag_verify_vbs([Vb|_], [E|_]) ->
%%======================================================================
-simple_async_get2(doc) -> ["Simple (async) get-request - "
- "New style (TargetName)"];
+simple_async_get2(doc) ->
+ ["Simple (async) get-request - Version 2 API (TargetName)"];
simple_async_get2(suite) -> [];
simple_async_get2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
put(tname, sag2),
p("starting with Config: ~p~n", [Config]),
-
MgrNode = ?config(manager_node, Config),
AgentNode = ?config(agent_node, Config),
TargetName = ?config(manager_agent_target_name, Config),
+ Get = fun(Oids) -> async_g_exec2(MgrNode, TargetName, Oids) end,
+ PostVerify = fun(Res) -> Res end,
+ do_simple_async_sync_get2(Config, MgrNode, AgentNode, Get, PostVerify).
+do_simple_async_sync_get2(Config, MgrNode, AgentNode, Get, PostVerify) ->
?line ok = mgr_user_load_mib(MgrNode, std_mib()),
Test2Mib = test2_mib(Config),
?line ok = mgr_user_load_mib(MgrNode, Test2Mib),
?line ok = agent_load_mib(AgentNode, Test2Mib),
-
- Exec = fun(Data) ->
- async_g_exec2(MgrNode, TargetName, Data)
- end,
-
- Requests = [
- { 1,
- [?sysObjectID_instance],
- Exec,
- fun(X) -> sag_verify(X, [?sysObjectID_instance]) end},
- { 2,
- [?sysDescr_instance, ?sysUpTime_instance],
- Exec,
- fun(X) ->
- sag_verify(X, [?sysObjectID_instance,
- ?sysUpTime_instance])
- end},
- { 3,
- [[sysObjectID, 0], [sysDescr, 0], [sysUpTime, 0]],
- Exec,
- fun(X) ->
- sag_verify(X, [?sysObjectID_instance,
- ?sysDescr_instance,
- ?sysUpTime_instance])
- end},
- { 4,
- [?sysObjectID_instance,
- ?sysDescr_instance,
- ?sysUpTime_instance],
- Exec,
- fun(X) ->
- sag_verify(X, [?sysObjectID_instance,
- ?sysDescr_instance,
- ?sysUpTime_instance])
- end}
- ],
+ do_simple_async_sync_get2(fun() -> mgr_info(MgrNode) end,
+ fun() -> agent_info(AgentNode) end,
+ Get, PostVerify).
+
+do_simple_async_sync_get2(MgrInfo, AgentInfo, Get, PostVerify)
+ when is_function(MgrInfo, 0) andalso
+ is_function(AgentInfo, 0) andalso
+ is_function(Get, 1) andalso
+ is_function(PostVerify, 1) ->
+ Requests =
+ [
+ { 1,
+ [?sysObjectID_instance],
+ Get,
+ fun(X) ->
+ PostVerify(sag_verify(X, [?sysObjectID_instance])) end},
+ { 2,
+ [?sysDescr_instance, ?sysUpTime_instance],
+ Get,
+ fun(X) ->
+ PostVerify(sag_verify(X, [?sysObjectID_instance,
+ ?sysUpTime_instance]))
+ end},
+ { 3,
+ [[sysObjectID, 0], [sysDescr, 0], [sysUpTime, 0]],
+ Get,
+ fun(X) ->
+ PostVerify(sag_verify(X, [?sysObjectID_instance,
+ ?sysDescr_instance,
+ ?sysUpTime_instance]))
+
+ end},
+ { 4,
+ [?sysObjectID_instance,
+ ?sysDescr_instance,
+ ?sysUpTime_instance],
+ Get,
+ fun(X) ->
+ PostVerify(sag_verify(X, [?sysObjectID_instance,
+ ?sysDescr_instance,
+ ?sysUpTime_instance]))
+ end}
+ ],
- p("manager info when starting test: ~n~p", [mgr_info(MgrNode)]),
- p("agent info when starting test: ~n~p", [agent_info(AgentNode)]),
+ p("manager info when starting test: ~n~p", [MgrInfo()]),
+ p("agent info when starting test: ~n~p", [AgentInfo()]),
?line ok = async_exec(Requests, []),
- p("manager info when ending test: ~n~p", [mgr_info(MgrNode)]),
- p("agent info when ending test: ~n~p", [agent_info(AgentNode)]),
+ p("manager info when ending test: ~n~p", [MgrInfo()]),
+ p("agent info when ending test: ~n~p", [AgentInfo()]),
ok.
@@ -1585,6 +1730,36 @@ async_g_exec2(Node, TargetName, Oids) ->
%%======================================================================
+simple_async_get3(doc) ->
+ ["Simple (async) get-request - Version 3 API (TargetName and send-opts)"];
+simple_async_get3(suite) -> [];
+simple_async_get3(Config) when is_list(Config) ->
+ process_flag(trap_exit, true),
+ put(tname, sag3),
+ p("starting with Config: ~p~n", [Config]),
+ MgrNode = ?config(manager_node, Config),
+ AgentNode = ?config(agent_node, Config),
+ TargetName = ?config(manager_agent_target_name, Config),
+ Self = self(),
+ Msg = simple_async_get3,
+ Fun = fun() -> Self ! Msg end,
+ Extra = {?SNMPM_EXTRA_INFO_TAG, Fun},
+ SendOpts =
+ [
+ {extra, Extra}
+ ],
+ Get = fun(Oids) -> async_g_exec3(MgrNode, TargetName, Oids, SendOpts) end,
+ PostVerify = fun(ok) -> receive Msg -> ok end;
+ (Error) -> Error
+ end,
+ do_simple_async_sync_get2(Config, MgrNode, AgentNode, Get, PostVerify).
+
+async_g_exec3(Node, TargetName, Oids, SendOpts) ->
+ mgr_user_async_get2(Node, TargetName, Oids, SendOpts).
+
+
+%%======================================================================
+
simple_sync_get_next1(doc) -> ["Simple (sync) get_next-request - "
"Old style (Addr & Port)"];
simple_sync_get_next1(suite) -> [];
@@ -1722,23 +1897,33 @@ check_ssgn_vbs([Vb|_], [E|_]) ->
%%======================================================================
-simple_sync_get_next2(doc) -> ["Simple (sync) get_next-request - "
- "New style (TargetName)"];
+simple_sync_get_next2(doc) ->
+ ["Simple (sync) get_next-request - Version 2 API (TargetName)"];
simple_sync_get_next2(suite) -> [];
simple_sync_get_next2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
- put(tname, ssgn),
+ put(tname, ssgn2),
p("starting with Config: ~p~n", [Config]),
- MgrNode = ?config(manager_node, Config),
- AgentNode = ?config(agent_node, Config),
+ GetNext = fun(Node, TargetName, Oids) ->
+ mgr_user_sync_get_next(Node, TargetName, Oids)
+ end,
+ PostVerify = fun(Res) -> Res end,
+ do_simple_sync_get_next2(Config, GetNext, PostVerify).
+
+do_simple_sync_get_next2(Config, GetNext, PostVerify)
+ when is_function(GetNext, 3) andalso is_function(PostVerify, 1) ->
+
+ MgrNode = ?config(manager_node, Config),
+ AgentNode = ?config(agent_node, Config),
TargetName = ?config(manager_agent_target_name, Config),
%% -- 1 --
Oids01 = [[1,3,7,1]],
VF01 = fun(X) -> verify_ssgn_reply1(X, [{[1,3,7,1],endOfMibView}]) end,
?line ok = do_simple_get_next(1,
- MgrNode, TargetName, Oids01, VF01),
+ MgrNode, TargetName, Oids01, VF01,
+ GetNext, PostVerify),
?line ok = mgr_user_load_mib(MgrNode, std_mib()),
@@ -1748,7 +1933,8 @@ simple_sync_get_next2(Config) when is_list(Config) ->
verify_ssgn_reply1(X, [?sysDescr_instance, endOfMibView])
end,
?line ok = do_simple_get_next(2,
- MgrNode, TargetName, Oids02, VF02),
+ MgrNode, TargetName, Oids02, VF02,
+ GetNext, PostVerify),
Test2Mib = test2_mib(Config),
?line ok = mgr_user_load_mib(MgrNode, Test2Mib),
@@ -1761,7 +1947,8 @@ simple_sync_get_next2(Config) when is_list(Config) ->
verify_ssgn_reply1(X, [{fl([TCnt2,2]), 100}])
end,
?line ok = do_simple_get_next(3,
- MgrNode, TargetName, Oids03, VF03),
+ MgrNode, TargetName, Oids03, VF03,
+ GetNext, PostVerify),
%% -- 4 --
Oids04 = [[TCnt2, 2]],
@@ -1769,7 +1956,8 @@ simple_sync_get_next2(Config) when is_list(Config) ->
verify_ssgn_reply1(X, [{fl([TCnt2,2]), endOfMibView}])
end,
?line ok = do_simple_get_next(4,
- MgrNode, TargetName, Oids04, VF04),
+ MgrNode, TargetName, Oids04, VF04,
+ GetNext, PostVerify),
%% -- 5 --
?line {ok, [TGenErr1|_]} = mgr_user_name_to_oid(MgrNode, tGenErr1),
@@ -1778,7 +1966,8 @@ simple_sync_get_next2(Config) when is_list(Config) ->
verify_ssgn_reply2(X, {genErr, 1, [TGenErr1]})
end,
?line ok = do_simple_get_next(5,
- MgrNode, TargetName, Oids05, VF05),
+ MgrNode, TargetName, Oids05, VF05,
+ GetNext, PostVerify),
%% -- 6 --
?line {ok, [TGenErr2|_]} = mgr_user_name_to_oid(MgrNode, tGenErr2),
@@ -1787,7 +1976,8 @@ simple_sync_get_next2(Config) when is_list(Config) ->
verify_ssgn_reply2(X, {genErr, 1, [TGenErr2]})
end,
?line ok = do_simple_get_next(6,
- MgrNode, TargetName, Oids06, VF06),
+ MgrNode, TargetName, Oids06, VF06,
+ GetNext, PostVerify),
%% -- 7 --
?line {ok, [TGenErr3|_]} = mgr_user_name_to_oid(MgrNode, tGenErr3),
@@ -1797,7 +1987,8 @@ simple_sync_get_next2(Config) when is_list(Config) ->
[?sysDescr, TGenErr3]})
end,
?line ok = do_simple_get_next(7,
- MgrNode, TargetName, Oids07, VF07),
+ MgrNode, TargetName, Oids07, VF07,
+ GetNext, PostVerify),
%% -- 8 --
?line {ok, [TTooBig|_]} = mgr_user_name_to_oid(MgrNode, tTooBig),
@@ -1806,18 +1997,19 @@ simple_sync_get_next2(Config) when is_list(Config) ->
verify_ssgn_reply2(X, {tooBig, 0, []})
end,
?line ok = do_simple_get_next(8,
- MgrNode, TargetName, Oids08, VF08),
+ MgrNode, TargetName, Oids08, VF08,
+ GetNext, PostVerify),
ok.
-do_simple_get_next(N, Node, TargetName, Oids, Verify) ->
+do_simple_get_next(N, Node, TargetName, Oids, Verify, GetNext, PostVerify) ->
p("issue get-next command ~w", [N]),
- case mgr_user_sync_get_next(Node, TargetName, Oids) of
+ case GetNext(Node, TargetName, Oids) of
{ok, Reply, Rem} ->
?DBG("get-next ok:"
"~n Reply: ~p"
"~n Rem: ~w", [Reply, Rem]),
- Verify(Reply);
+ PostVerify(Verify(Reply));
Error ->
{error, {unexpected_reply, Error}}
@@ -1826,6 +2018,33 @@ do_simple_get_next(N, Node, TargetName, Oids, Verify) ->
%%======================================================================
+simple_sync_get_next3(doc) ->
+ ["Simple (sync) get_next-request - "
+ "Version 3 API (TargetName with send-opts)"];
+simple_sync_get_next3(suite) -> [];
+simple_sync_get_next3(Config) when is_list(Config) ->
+ process_flag(trap_exit, true),
+ put(tname, ssgn3),
+ p("starting with Config: ~p~n", [Config]),
+ Self = self(),
+ Msg = simple_sync_get_next3,
+ Fun = fun() -> Self ! Msg end,
+ Extra = {?SNMPM_EXTRA_INFO_TAG, Fun},
+ SendOpts =
+ [
+ {extra, Extra}
+ ],
+ GetNext = fun(Node, TargetName, Oids) ->
+ mgr_user_sync_get_next2(Node, TargetName, Oids, SendOpts)
+ end,
+ PostVerify = fun(ok) -> receive Msg -> ok end;
+ (Error) -> Error
+ end,
+ do_simple_sync_get_next2(Config, GetNext, PostVerify).
+
+
+%%======================================================================
+
simple_async_get_next1(doc) -> ["Simple (async) get_next-request - "
"Old style (Addr & Port)"];
simple_async_get_next1(suite) -> [];
@@ -1923,8 +2142,8 @@ async_gn_exec1(Node, Addr, Port, Oids) ->
%%======================================================================
-simple_async_get_next2(doc) -> ["Simple (async) get_next-request - "
- "New style (TargetName)"];
+simple_async_get_next2(doc) ->
+ ["Simple (async) get_next-request - Version 2 API (TargetName)"];
simple_async_get_next2(suite) -> [];
simple_async_get_next2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
@@ -1939,11 +2158,14 @@ simple_async_get_next2(Config) when is_list(Config) ->
Test2Mib = test2_mib(Config),
?line ok = mgr_user_load_mib(MgrNode, Test2Mib),
?line ok = agent_load_mib(AgentNode, Test2Mib),
-
- Exec = fun(X) ->
- async_gn_exec2(MgrNode, TargetName, X)
- end,
-
+ GetNext = fun(Oids) ->
+ async_gn_exec2(MgrNode, TargetName, Oids)
+ end,
+ PostVerify = fun(Res) -> Res end,
+ do_simple_async_get_next2(MgrNode, AgentNode, GetNext, PostVerify).
+
+do_simple_async_get_next2(MgrNode, AgentNode, GetNext, PostVerify)
+ when is_function(GetNext, 1) andalso is_function(PostVerify, 1) ->
?line {ok, [TCnt2|_]} = mgr_user_name_to_oid(MgrNode, tCnt2),
?line {ok, [TGenErr1|_]} = mgr_user_name_to_oid(MgrNode, tGenErr1),
?line {ok, [TGenErr2|_]} = mgr_user_name_to_oid(MgrNode, tGenErr2),
@@ -1954,51 +2176,60 @@ simple_async_get_next2(Config) when is_list(Config) ->
[
{1,
[[1,3,7,1]],
- Exec,
+ GetNext,
fun(X) ->
- verify_ssgn_reply1(X, [{[1,3,7,1], endOfMibView}])
+ PostVerify(
+ verify_ssgn_reply1(X, [{[1,3,7,1], endOfMibView}]))
+
end},
{2,
[[sysDescr], [1,3,7,1]],
- Exec,
+ GetNext,
fun(X) ->
- verify_ssgn_reply1(X, [?sysDescr_instance, endOfMibView])
+ PostVerify(
+ verify_ssgn_reply1(X, [?sysDescr_instance, endOfMibView]))
end},
{3,
[[TCnt2, 1]],
- Exec,
+ GetNext,
fun(X) ->
- verify_ssgn_reply1(X, [{fl([TCnt2,2]), 100}])
+ PostVerify(
+ verify_ssgn_reply1(X, [{fl([TCnt2,2]), 100}]))
end},
{4,
[[TCnt2, 2]],
- Exec,
+ GetNext,
fun(X) ->
- verify_ssgn_reply1(X, [{fl([TCnt2,2]), endOfMibView}])
+ PostVerify(
+ verify_ssgn_reply1(X, [{fl([TCnt2,2]), endOfMibView}]))
end},
{5,
[TGenErr1],
- Exec,
+ GetNext,
fun(X) ->
- verify_ssgn_reply2(X, {genErr, 1, [TGenErr1]})
+ PostVerify(
+ verify_ssgn_reply2(X, {genErr, 1, [TGenErr1]}))
end},
{6,
[TGenErr2],
- Exec,
+ GetNext,
fun(X) ->
- verify_ssgn_reply2(X, {genErr, 1, [TGenErr2]})
+ PostVerify(
+ verify_ssgn_reply2(X, {genErr, 1, [TGenErr2]}))
end},
{7,
[[sysDescr], TGenErr3],
- Exec,
+ GetNext,
fun(X) ->
- verify_ssgn_reply2(X, {genErr, 2, [TGenErr3]})
+ PostVerify(
+ verify_ssgn_reply2(X, {genErr, 2, [TGenErr3]}))
end},
{8,
[TTooBig],
- Exec,
+ GetNext,
fun(X) ->
- verify_ssgn_reply2(X, {tooBig, 0, []})
+ PostVerify(
+ verify_ssgn_reply2(X, {tooBig, 0, []}))
end}
],
@@ -2019,6 +2250,48 @@ async_gn_exec2(Node, TargetName, Oids) ->
%%======================================================================
+simple_async_get_next3(doc) ->
+ ["Simple (async) get_next-request - "
+ "Version 3 API (TargetName with send-opts)"];
+simple_async_get_next3(suite) -> [];
+simple_async_get_next3(Config) when is_list(Config) ->
+ process_flag(trap_exit, true),
+ put(tname, ssgn2),
+ p("starting with Config: ~p~n", [Config]),
+
+ MgrNode = ?config(manager_node, Config),
+ AgentNode = ?config(agent_node, Config),
+ TargetName = ?config(manager_agent_target_name, Config),
+
+ ?line ok = mgr_user_load_mib(MgrNode, std_mib()),
+ Test2Mib = test2_mib(Config),
+ ?line ok = mgr_user_load_mib(MgrNode, Test2Mib),
+ ?line ok = agent_load_mib(AgentNode, Test2Mib),
+
+ Self = self(),
+ Msg = simple_async_get_next3,
+ Fun = fun() -> Self ! Msg end,
+ Extra = {?SNMPM_EXTRA_INFO_TAG, Fun},
+ SendOpts =
+ [
+ {extra, Extra}
+ ],
+
+ GetNext = fun(Oids) ->
+ async_gn_exec3(MgrNode, TargetName, Oids, SendOpts)
+ end,
+ PostVerify = fun(ok) -> receive Msg -> ok end;
+ (Error) -> Error
+ end,
+
+ do_simple_async_get_next2(MgrNode, AgentNode, GetNext, PostVerify).
+
+async_gn_exec3(Node, TargetName, Oids, SendOpts) ->
+ mgr_user_async_get_next2(Node, TargetName, Oids, SendOpts).
+
+
+%%======================================================================
+
simple_sync_set1(doc) -> ["Simple (sync) set-request - "
"Old style (Addr & Port)"];
simple_sync_set1(suite) -> [];
@@ -2088,14 +2361,25 @@ value_of_vavs([{_Oid, Val}|VAVs], Acc) ->
%%======================================================================
-simple_sync_set2(doc) -> ["Simple (sync) set-request - New style (TargetName)"];
+simple_sync_set2(doc) ->
+ ["Simple (sync) set-request - Version 2 API (TargetName)"];
simple_sync_set2(suite) -> [];
simple_sync_set2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
put(tname, sss2),
p("starting with Config: ~p~n", [Config]),
- Node = ?config(manager_node, Config),
+ Set = fun(Node, TargetName, VAVs) ->
+ mgr_user_sync_set(Node, TargetName, VAVs)
+ end,
+ PostVerify = fun() -> ok end,
+
+ do_simple_sync_set2(Config, Set, PostVerify).
+
+do_simple_sync_set2(Config, Set, PostVerify)
+ when is_function(Set, 3) andalso is_function(PostVerify, 0) ->
+
+ Node = ?config(manager_node, Config),
TargetName = ?config(manager_agent_target_name, Config),
p("issue set-request without loading the mib"),
@@ -2105,7 +2389,7 @@ simple_sync_set2(Config) when is_list(Config) ->
{?sysName_instance, s, Val11},
{?sysLocation_instance, s, Val12}
],
- ?line ok = do_simple_set2(Node, TargetName, VAVs1),
+ ?line ok = do_simple_set2(Node, TargetName, VAVs1, Set, PostVerify),
p("issue set-request after first loading the mibs"),
?line ok = mgr_user_load_mib(Node, std_mib()),
@@ -2115,12 +2399,12 @@ simple_sync_set2(Config) when is_list(Config) ->
{[sysName, 0], Val21},
{[sysLocation, 0], Val22}
],
- ?line ok = do_simple_set2(Node, TargetName, VAVs2),
+ ?line ok = do_simple_set2(Node, TargetName, VAVs2, Set, PostVerify),
ok.
-do_simple_set2(Node, TargetName, VAVs) ->
+do_simple_set2(Node, TargetName, VAVs, Set, PostVerify) ->
[SysName, SysLoc] = value_of_vavs(VAVs),
- ?line {ok, Reply, Rem} = mgr_user_sync_set(Node, TargetName, VAVs),
+ ?line {ok, Reply, Rem} = Set(Node, TargetName, VAVs),
?DBG("~n Reply: ~p"
"~n Rem: ~w", [Reply, Rem]),
@@ -2133,7 +2417,7 @@ do_simple_set2(Node, TargetName, VAVs) ->
value = SysName},
#varbind{oid = ?sysLocation_instance,
value = SysLoc}]} ->
- ok;
+ PostVerify();
{noError, 0, Vbs} ->
{error, {unexpected_vbs, Vbs}};
Else ->
@@ -2145,6 +2429,33 @@ do_simple_set2(Node, TargetName, VAVs) ->
%%======================================================================
+simple_sync_set3(doc) ->
+ ["Simple (sync) set-request - Version 3 API (TargetName with send-opts)"];
+simple_sync_set3(suite) -> [];
+simple_sync_set3(Config) when is_list(Config) ->
+ process_flag(trap_exit, true),
+ put(tname, sss3),
+ p("starting with Config: ~p~n", [Config]),
+
+ Self = self(),
+ Msg = simple_sync_set3,
+ Fun = fun() -> Self ! Msg end,
+ Extra = {?SNMPM_EXTRA_INFO_TAG, Fun},
+ SendOpts =
+ [
+ {extra, Extra}
+ ],
+
+ Set = fun(Node, TargetName, VAVs) ->
+ mgr_user_sync_set2(Node, TargetName, VAVs, SendOpts)
+ end,
+ PostVerify = fun() -> receive Msg -> ok end end,
+
+ do_simple_sync_set2(Config, Set, PostVerify).
+
+
+%%======================================================================
+
simple_async_set1(doc) -> ["Simple (async) set-request - "
"Old style (Addr & Port)"];
simple_async_set1(suite) -> [];
@@ -2237,8 +2548,8 @@ sas_verify_vbs([Vb|_], [E|_]) ->
%%======================================================================
-simple_async_set2(doc) -> ["Simple (async) set-request - "
- "New style (TargetName)"];
+simple_async_set2(doc) ->
+ ["Simple (async) set-request - Version 2 API (TargetName)"];
simple_async_set2(suite) -> [];
simple_async_set2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
@@ -2254,31 +2565,40 @@ simple_async_set2(Config) when is_list(Config) ->
?line ok = mgr_user_load_mib(MgrNode, Test2Mib),
?line ok = agent_load_mib(AgentNode, Test2Mib),
- Exec = fun(X) ->
- async_s_exec2(MgrNode, TargetName, X)
- end,
+ Set =
+ fun(Oids) ->
+ async_s_exec2(MgrNode, TargetName, Oids)
+ end,
+ PostVerify = fun(Res) -> Res end,
+
+ do_simple_async_set2(MgrNode, AgentNode, Set, PostVerify).
+do_simple_async_set2(MgrNode, AgentNode, Set, PostVerify) ->
Requests =
[
{1,
[{?sysName_instance, s, "Arne Anka"}],
- Exec,
+ Set,
fun(X) ->
- sas_verify(X, [?sysName_instance])
+ PostVerify(sas_verify(X, [?sysName_instance]))
end},
{2,
[{?sysLocation_instance, s, "Stockholm"},
{?sysName_instance, s, "Arne Anka"}],
- Exec,
+ Set,
fun(X) ->
- sas_verify(X, [?sysLocation_instance, ?sysName_instance])
+ PostVerify(sas_verify(X,
+ [?sysLocation_instance,
+ ?sysName_instance]))
end},
{3,
[{[sysName, 0], "Gothenburg"},
{[sysLocation, 0], "Sune Anka"}],
- Exec,
+ Set,
fun(X) ->
- sas_verify(X, [?sysName_instance, ?sysLocation_instance])
+ PostVerify(sas_verify(X,
+ [?sysName_instance,
+ ?sysLocation_instance]))
end}
],
@@ -2299,6 +2619,48 @@ async_s_exec2(Node, TargetName, VAVs) ->
%%======================================================================
+simple_async_set3(doc) ->
+ ["Simple (async) set-request - Version 3 API (TargetName with send-opts)"];
+simple_async_set3(suite) -> [];
+simple_async_set3(Config) when is_list(Config) ->
+ process_flag(trap_exit, true),
+ put(tname, sas3),
+ p("starting with Config: ~p~n", [Config]),
+
+ MgrNode = ?config(manager_node, Config),
+ AgentNode = ?config(agent_node, Config),
+ TargetName = ?config(manager_agent_target_name, Config),
+
+ ?line ok = mgr_user_load_mib(MgrNode, std_mib()),
+ Test2Mib = test2_mib(Config),
+ ?line ok = mgr_user_load_mib(MgrNode, Test2Mib),
+ ?line ok = agent_load_mib(AgentNode, Test2Mib),
+
+ Self = self(),
+ Msg = simple_async_set3,
+ Fun = fun() -> Self ! Msg end,
+ Extra = {?SNMPM_EXTRA_INFO_TAG, Fun},
+ SendOpts =
+ [
+ {extra, Extra}
+ ],
+
+ Set =
+ fun(Oids) ->
+ async_s_exec3(MgrNode, TargetName, Oids, SendOpts)
+ end,
+ PostVerify = fun(ok) -> receive Msg -> ok end;
+ (Res) -> Res
+ end,
+
+ do_simple_async_set2(MgrNode, AgentNode, Set, PostVerify).
+
+async_s_exec3(Node, TargetName, VAVs, SendOpts) ->
+ mgr_user_async_set2(Node, TargetName, VAVs, SendOpts).
+
+
+%%======================================================================
+
simple_sync_get_bulk1(doc) -> ["Simple (sync) get_bulk-request - "
"Old style (Addr & Port)"];
simple_sync_get_bulk1(suite) -> [];
@@ -2470,8 +2832,8 @@ check_ssgb_vbs([R|_], [E|_]) ->
%%======================================================================
-simple_sync_get_bulk2(doc) -> ["Simple (sync) get_bulk-request - "
- "New style (TargetName)"];
+simple_sync_get_bulk2(doc) ->
+ ["Simple (sync) get_bulk-request - Version 2 API (TargetName)"];
simple_sync_get_bulk2(suite) -> [];
simple_sync_get_bulk2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
@@ -2482,20 +2844,33 @@ simple_sync_get_bulk2(Config) when is_list(Config) ->
AgentNode = ?config(agent_node, Config),
TargetName = ?config(manager_agent_target_name, Config),
+ GetBulk =
+ fun(NonRep, MaxRep, Oids) ->
+ mgr_user_sync_get_bulk(MgrNode, TargetName,
+ NonRep, MaxRep, Oids)
+ end,
+ PostVerify = fun(Res) -> Res end,
+
+ do_simple_sync_get_bulk2(Config, MgrNode, AgentNode, GetBulk, PostVerify).
+
+do_simple_sync_get_bulk2(Config, MgrNode, AgentNode, GetBulk, PostVerify) ->
%% -- 1 --
?line ok = do_simple_get_bulk2(1,
- MgrNode, TargetName, 1, 1, [],
- fun verify_ssgb_reply1/1),
+ 1, 1, [],
+ fun verify_ssgb_reply1/1,
+ GetBulk, PostVerify),
%% -- 2 --
?line ok = do_simple_get_bulk2(2,
- MgrNode, TargetName, -1, 1, [],
- fun verify_ssgb_reply1/1),
+ -1, 1, [],
+ fun verify_ssgb_reply1/1,
+ GetBulk, PostVerify),
%% -- 3 --
?line ok = do_simple_get_bulk2(3,
- MgrNode, TargetName, -1, -1, [],
- fun verify_ssgb_reply1/1),
+ -1, -1, [],
+ fun verify_ssgb_reply1/1,
+ GetBulk, PostVerify),
?line ok = mgr_user_load_mib(MgrNode, std_mib()),
%% -- 4 --
@@ -2503,13 +2878,13 @@ simple_sync_get_bulk2(Config) when is_list(Config) ->
verify_ssgb_reply2(X, [?sysDescr_instance, endOfMibView])
end,
?line ok = do_simple_get_bulk2(4,
- MgrNode, TargetName,
- 2, 0, [[sysDescr],[1,3,7,1]], VF04),
+ 2, 0, [[sysDescr],[1,3,7,1]], VF04,
+ GetBulk, PostVerify),
%% -- 5 --
?line ok = do_simple_get_bulk2(5,
- MgrNode, TargetName,
- 1, 2, [[sysDescr],[1,3,7,1]], VF04),
+ 1, 2, [[sysDescr],[1,3,7,1]], VF04,
+ GetBulk, PostVerify),
%% -- 6 --
VF06 = fun(X) ->
@@ -2518,8 +2893,8 @@ simple_sync_get_bulk2(Config) when is_list(Config) ->
?sysObjectID_instance, endOfMibView])
end,
?line ok = do_simple_get_bulk2(6,
- MgrNode, TargetName,
- 0, 2, [[sysDescr],[1,3,7,1]], VF06),
+ 0, 2, [[sysDescr],[1,3,7,1]], VF06,
+ GetBulk, PostVerify),
%% -- 7 --
VF07 = fun(X) ->
@@ -2529,10 +2904,10 @@ simple_sync_get_bulk2(Config) when is_list(Config) ->
?sysObjectID_instance, endOfMibView])
end,
?line ok = do_simple_get_bulk2(7,
- MgrNode, TargetName,
2, 2,
[[sysDescr],[1,3,7,1],[sysDescr],[1,3,7,1]],
- VF07),
+ VF07,
+ GetBulk, PostVerify),
Test2Mib = test2_mib(Config),
?line ok = mgr_user_load_mib(MgrNode, Test2Mib),
@@ -2545,17 +2920,17 @@ simple_sync_get_bulk2(Config) when is_list(Config) ->
?sysDescr_instance])
end,
?line ok = do_simple_get_bulk2(8,
- MgrNode, TargetName,
1, 2,
[[sysDescr],[sysDescr],[tTooBig]],
- VF08),
+ VF08,
+ GetBulk, PostVerify),
%% -- 9 --
?line ok = do_simple_get_bulk2(9,
- MgrNode, TargetName,
1, 12,
[[tDescr2], [sysDescr]],
- fun verify_ssgb_reply1/1),
+ fun verify_ssgb_reply1/1,
+ GetBulk, PostVerify),
%% -- 10 --
VF10 = fun(X) ->
@@ -2566,13 +2941,13 @@ simple_sync_get_bulk2(Config) when is_list(Config) ->
{?sysDescr, 'NULL'}])
end,
?line ok = do_simple_get_bulk2(10,
- MgrNode, TargetName,
2, 2,
[[sysDescr],
[sysObjectID],
[tGenErr1],
[sysDescr]],
- VF10),
+ VF10,
+ GetBulk, PostVerify),
%% -- 11 --
?line {ok, [TCnt2|_]} = mgr_user_name_to_oid(MgrNode, tCnt2),
@@ -2583,20 +2958,25 @@ simple_sync_get_bulk2(Config) when is_list(Config) ->
{fl([TCnt2,2]), endOfMibView}])
end,
?line ok = do_simple_get_bulk2(11,
- MgrNode, TargetName,
0, 2,
- [[TCnt2, 1]], VF11),
+ [[TCnt2, 1]], VF11,
+ GetBulk, PostVerify),
ok.
-do_simple_get_bulk2(N, Node, TargetName, NonRep, MaxRep, Oids, Verify) ->
+do_simple_get_bulk2(N,
+ NonRep, MaxRep, Oids,
+ Verify, GetBulk, PostVerify)
+ when is_function(Verify, 1) andalso
+ is_function(GetBulk, 3) andalso
+ is_function(PostVerify) ->
p("issue get-bulk command ~w", [N]),
- case mgr_user_sync_get_bulk(Node, TargetName, NonRep, MaxRep, Oids) of
+ case GetBulk(NonRep, MaxRep, Oids) of
{ok, Reply, Rem} ->
?DBG("get-bulk ok:"
"~n Reply: ~p"
"~n Rem: ~w", [Reply, Rem]),
- Verify(Reply);
+ PostVerify(Verify(Reply));
Error ->
{error, {unexpected_reply, Error}}
@@ -2605,6 +2985,42 @@ do_simple_get_bulk2(N, Node, TargetName, NonRep, MaxRep, Oids, Verify) ->
%%======================================================================
+simple_sync_get_bulk3(doc) ->
+ ["Simple (sync) get_bulk-request - "
+ "Version 3 API (TargetName with send-opts)"];
+simple_sync_get_bulk3(suite) -> [];
+simple_sync_get_bulk3(Config) when is_list(Config) ->
+ process_flag(trap_exit, true),
+ put(tname, ssgb3),
+ p("starting with Config: ~p~n", [Config]),
+
+ MgrNode = ?config(manager_node, Config),
+ AgentNode = ?config(agent_node, Config),
+ TargetName = ?config(manager_agent_target_name, Config),
+
+ Self = self(),
+ Msg = simple_async_set3,
+ Fun = fun() -> Self ! Msg end,
+ Extra = {?SNMPM_EXTRA_INFO_TAG, Fun},
+ SendOpts =
+ [
+ {extra, Extra}
+ ],
+
+ GetBulk =
+ fun(NonRep, MaxRep, Oids) ->
+ mgr_user_sync_get_bulk2(MgrNode, TargetName,
+ NonRep, MaxRep, Oids, SendOpts)
+ end,
+ PostVerify = fun(ok) -> receive Msg -> ok end;
+ (Res) -> Res
+ end,
+
+ do_simple_sync_get_bulk2(Config, MgrNode, AgentNode, GetBulk, PostVerify).
+
+
+%%======================================================================
+
simple_async_get_bulk1(doc) -> ["Simple (async) get_bulk-request - "
"Old style (Addr & Port)"];
simple_async_get_bulk1(suite) -> [];
@@ -2748,8 +3164,8 @@ async_gb_exec1(Node, Addr, Port, {NR, MR, Oids}) ->
%%======================================================================
-simple_async_get_bulk2(doc) -> ["Simple (async) get_bulk-request - "
- "New style (TargetName)"];
+simple_async_get_bulk2(doc) ->
+ ["Simple (async) get_bulk-request - Version 2 API (TargetName)"];
simple_async_get_bulk2(suite) -> [];
simple_async_get_bulk2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
@@ -2765,111 +3181,122 @@ simple_async_get_bulk2(Config) when is_list(Config) ->
?line ok = mgr_user_load_mib(MgrNode, Test2Mib),
?line ok = agent_load_mib(AgentNode, Test2Mib),
- Exec = fun(Data) ->
- async_gb_exec2(MgrNode, TargetName, Data)
- end,
+ GetBulk =
+ fun(Data) ->
+ async_gb_exec2(MgrNode, TargetName, Data)
+ end,
+ PostVerify = fun(Res) -> Res end,
+ do_simple_async_get_bulk2(MgrNode, AgentNode, GetBulk, PostVerify).
+
+do_simple_async_get_bulk2(MgrNode, AgentNode, GetBulk, PostVerify) ->
%% We re-use the verification functions from the ssgb test-case
VF04 = fun(X) ->
- verify_ssgb_reply2(X, [?sysDescr_instance, endOfMibView])
+ PostVerify(
+ verify_ssgb_reply2(X, [?sysDescr_instance, endOfMibView]))
end,
VF06 = fun(X) ->
- verify_ssgb_reply2(X,
- [?sysDescr_instance, endOfMibView,
- ?sysObjectID_instance, endOfMibView])
+ PostVerify(
+ verify_ssgb_reply2(X,
+ [?sysDescr_instance, endOfMibView,
+ ?sysObjectID_instance, endOfMibView]))
end,
VF07 = fun(X) ->
- verify_ssgb_reply2(X,
- [?sysDescr_instance, endOfMibView,
- ?sysDescr_instance, endOfMibView,
- ?sysObjectID_instance, endOfMibView])
+ PostVerify(
+ verify_ssgb_reply2(X,
+ [?sysDescr_instance, endOfMibView,
+ ?sysDescr_instance, endOfMibView,
+ ?sysObjectID_instance, endOfMibView]))
end,
VF08 = fun(X) ->
- verify_ssgb_reply2(X,
- [?sysDescr_instance,
- ?sysDescr_instance])
+ PostVerify(
+ verify_ssgb_reply2(X,
+ [?sysDescr_instance,
+ ?sysDescr_instance]))
end,
VF10 = fun(X) ->
- verify_ssgb_reply3(X,
- [{?sysDescr, 'NULL'},
- {?sysObjectID, 'NULL'},
- {?tGenErr1, 'NULL'},
- {?sysDescr, 'NULL'}])
+ PostVerify(
+ verify_ssgb_reply3(X,
+ [{?sysDescr, 'NULL'},
+ {?sysObjectID, 'NULL'},
+ {?tGenErr1, 'NULL'},
+ {?sysDescr, 'NULL'}]))
end,
?line {ok, [TCnt2|_]} = mgr_user_name_to_oid(MgrNode, tCnt2),
VF11 = fun(X) ->
- verify_ssgb_reply2(X,
- [{fl([TCnt2,2]), 100},
- {fl([TCnt2,2]), endOfMibView}])
+ PostVerify(
+ verify_ssgb_reply2(X,
+ [{fl([TCnt2,2]), 100},
+ {fl([TCnt2,2]), endOfMibView}]))
end,
Requests = [
{ 1,
{1, 1, []},
- Exec,
- fun verify_ssgb_reply1/1},
+ GetBulk,
+ fun(X) -> PostVerify(verify_ssgb_reply1(X)) end},
{ 2,
{-1, 1, []},
- Exec,
- fun verify_ssgb_reply1/1},
+ GetBulk,
+ fun(X) -> PostVerify(verify_ssgb_reply1(X)) end},
{ 3,
{-1, -1, []},
- Exec,
- fun verify_ssgb_reply1/1},
+ GetBulk,
+ fun(X) -> PostVerify(verify_ssgb_reply1(X)) end},
{ 4,
{2, 0, [[sysDescr],[1,3,7,1]]},
- Exec,
+ GetBulk,
VF04},
{ 5,
{1, 2, [[sysDescr],[1,3,7,1]]},
- Exec,
+ GetBulk,
VF04},
{ 6,
{0, 2, [[sysDescr],[1,3,7,1]]},
- Exec,
+ GetBulk,
VF06},
{ 7,
{2, 2, [[sysDescr],[1,3,7,1],[sysDescr],[1,3,7,1]]},
- Exec,
+ GetBulk,
VF07},
{ 8,
{1, 2, [[sysDescr],[sysDescr],[tTooBig]]},
- Exec,
+ GetBulk,
VF08},
{ 9,
{1, 12, [[tDescr2], [sysDescr]]},
- Exec,
- fun verify_ssgb_reply1/1},
+ GetBulk,
+ fun(X) -> PostVerify(verify_ssgb_reply1(X)) end},
{10,
{2, 2, [[sysDescr],[sysObjectID], [tGenErr1],[sysDescr]]},
- Exec,
+ GetBulk,
VF10},
{11,
{0, 2, [[TCnt2, 1]]},
- Exec,
+ GetBulk,
VF11},
{12,
{2, 0, [[sysDescr],[1,3,7,1]]},
- Exec,
+ GetBulk,
VF04},
{13,
{1, 12, [[tDescr2], [sysDescr]]},
- Exec,
- fun verify_ssgb_reply1/1},
+ GetBulk,
+ fun(X) -> PostVerify(verify_ssgb_reply1(X)) end},
{14,
{2, 2, [[sysDescr],[sysObjectID],[tGenErr1],[sysDescr]]},
- Exec,
+ GetBulk,
VF10},
{15,
{0, 2, [[TCnt2, 1]]},
- Exec,
+ GetBulk,
VF11},
{16,
{2, 2, [[sysDescr],[1,3,7,1],[sysDescr],[1,3,7,1]]},
- Exec,
+ GetBulk,
VF07},
{17,
{2, 2, [[sysDescr],[sysObjectID], [tGenErr1],[sysDescr]]},
- Exec,
+ GetBulk,
VF10}
],
@@ -2890,6 +3317,49 @@ async_gb_exec2(Node, TargetName, {NR, MR, Oids}) ->
%%======================================================================
+simple_async_get_bulk3(doc) ->
+ ["Simple (async) get_bulk-request - "
+ "Version 3 API (TargetName with send-opts)"];
+simple_async_get_bulk3(suite) -> [];
+simple_async_get_bulk3(Config) when is_list(Config) ->
+ process_flag(trap_exit, true),
+ put(tname, sagb3),
+ p("starting with Config: ~p~n", [Config]),
+
+ MgrNode = ?config(manager_node, Config),
+ AgentNode = ?config(agent_node, Config),
+ TargetName = ?config(manager_agent_target_name, Config),
+
+ ?line ok = mgr_user_load_mib(MgrNode, std_mib()),
+ Test2Mib = test2_mib(Config),
+ ?line ok = mgr_user_load_mib(MgrNode, Test2Mib),
+ ?line ok = agent_load_mib(AgentNode, Test2Mib),
+
+ Self = self(),
+ Msg = simple_async_get_bulk3,
+ Fun = fun() -> Self ! Msg end,
+ Extra = {?SNMPM_EXTRA_INFO_TAG, Fun},
+ SendOpts =
+ [
+ {extra, Extra}
+ ],
+
+ GetBulk =
+ fun(Data) ->
+ async_gb_exec3(MgrNode, TargetName, Data, SendOpts)
+ end,
+ PostVerify = fun(ok) -> receive Msg -> ok end;
+ (Res) -> Res
+ end,
+
+ do_simple_async_get_bulk2(MgrNode, AgentNode, GetBulk, PostVerify).
+
+async_gb_exec3(Node, TargetName, {NR, MR, Oids}, SendOpts) ->
+ mgr_user_async_get_bulk2(Node, TargetName, NR, MR, Oids, SendOpts).
+
+
+%%======================================================================
+
misc_async1(doc) -> ["Misc (async) request(s) - "
"Old style (Addr & Port)"];
misc_async1(suite) -> [];
@@ -3079,8 +3549,8 @@ misc_async1(Config) when is_list(Config) ->
%%======================================================================
-misc_async2(doc) -> ["Misc (async) request(s) - "
- "New style (TargetName)"];
+misc_async2(doc) ->
+ ["Misc (async) request(s) - Version 2 API (TargetName)"];
misc_async2(suite) -> [];
misc_async2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
@@ -4440,7 +4910,7 @@ otp8395_1(suite) -> [];
otp8395_1(Config) when is_list(Config) ->
process_flag(trap_exit, true),
put(tname, otp8395_1),
- do_simple_get(Config).
+ do_simple_sync_get2(Config).
%%======================================================================
@@ -4986,6 +5456,9 @@ mgr_user_sync_get(Node, Addr_or_TargetName, Oids) ->
mgr_user_sync_get(Node, Addr, Port, Oids) ->
rcall(Node, snmp_manager_user, sync_get, [Addr, Port, Oids]).
+mgr_user_sync_get2(Node, TargetName, Oids, SendOpts) ->
+ rcall(Node, snmp_manager_user, sync_get2, [TargetName, Oids, SendOpts]).
+
%% mgr_user_async_get(Node, Oids) ->
%% mgr_user_async_get(Node, ?LOCALHOST(), ?AGENT_PORT, Oids).
mgr_user_async_get(Node, Addr_or_TargetName, Oids) ->
@@ -4993,6 +5466,9 @@ mgr_user_async_get(Node, Addr_or_TargetName, Oids) ->
mgr_user_async_get(Node, Addr, Port, Oids) ->
rcall(Node, snmp_manager_user, async_get, [Addr, Port, Oids]).
+mgr_user_async_get2(Node, TargetName, Oids, SendOpts) ->
+ rcall(Node, snmp_manager_user, async_get2, [TargetName, Oids, SendOpts]).
+
%% mgr_user_sync_get_next(Node, Oids) ->
%% mgr_user_sync_get_next(Node, ?LOCALHOST(), ?AGENT_PORT, Oids).
mgr_user_sync_get_next(Node, Addr_or_TargetName, Oids) ->
@@ -5000,6 +5476,9 @@ mgr_user_sync_get_next(Node, Addr_or_TargetName, Oids) ->
mgr_user_sync_get_next(Node, Addr, Port, Oids) ->
rcall(Node, snmp_manager_user, sync_get_next, [Addr, Port, Oids]).
+mgr_user_sync_get_next2(Node, TargetName, Oids, SendOpts) ->
+ rcall(Node, snmp_manager_user, sync_get_next2, [TargetName, Oids, SendOpts]).
+
%% mgr_user_async_get_next(Node, Oids) ->
%% mgr_user_async_get_next(Node, ?LOCALHOST(), ?AGENT_PORT, Oids).
mgr_user_async_get_next(Node, Addr_or_TargetName, Oids) ->
@@ -5007,6 +5486,9 @@ mgr_user_async_get_next(Node, Addr_or_TargetName, Oids) ->
mgr_user_async_get_next(Node, Addr, Port, Oids) ->
rcall(Node, snmp_manager_user, async_get_next, [Addr, Port, Oids]).
+mgr_user_async_get_next2(Node, TargetName, Oids, SendOpts) ->
+ rcall(Node, snmp_manager_user, async_get_next2, [TargetName, Oids, SendOpts]).
+
%% mgr_user_sync_set(Node, VAV) ->
%% mgr_user_sync_set(Node, ?LOCALHOST(), ?AGENT_PORT, VAV).
mgr_user_sync_set(Node, Addr_or_TargetName, VAV) ->
@@ -5014,6 +5496,9 @@ mgr_user_sync_set(Node, Addr_or_TargetName, VAV) ->
mgr_user_sync_set(Node, Addr, Port, VAV) ->
rcall(Node, snmp_manager_user, sync_set, [Addr, Port, VAV]).
+mgr_user_sync_set2(Node, TargetName, VAV, SendOpts) ->
+ rcall(Node, snmp_manager_user, sync_set2, [TargetName, VAV, SendOpts]).
+
%% mgr_user_async_set(Node, VAV) ->
%% mgr_user_async_set(Node, ?LOCALHOST(), ?AGENT_PORT, VAV).
mgr_user_async_set(Node, Addr_or_TargetName, VAV) ->
@@ -5021,26 +5506,37 @@ mgr_user_async_set(Node, Addr_or_TargetName, VAV) ->
mgr_user_async_set(Node, Addr, Port, VAV) ->
rcall(Node, snmp_manager_user, async_set, [Addr, Port, VAV]).
+mgr_user_async_set2(Node, TargetName, VAV, SendOpts) ->
+ rcall(Node, snmp_manager_user, async_set2, [TargetName, VAV, SendOpts]).
+
%% mgr_user_sync_get_bulk(Node, NonRep, MaxRep, Oids) ->
%% mgr_user_sync_get_bulk(Node, ?LOCALHOST(), ?AGENT_PORT,
%% NonRep, MaxRep, Oids).
mgr_user_sync_get_bulk(Node, Addr_or_TargetName, NonRep, MaxRep, Oids) ->
rcall(Node, snmp_manager_user, sync_get_bulk,
- [Addr_or_TargetName, NonRep, MaxRep, Oids]).
+ [Addr_or_TargetName, NonRep, MaxRep, Oids]).
mgr_user_sync_get_bulk(Node, Addr, Port, NonRep, MaxRep, Oids) ->
rcall(Node, snmp_manager_user, sync_get_bulk,
[Addr, Port, NonRep, MaxRep, Oids]).
+mgr_user_sync_get_bulk2(Node, TargetName, NonRep, MaxRep, Oids, SendOpts) ->
+ rcall(Node, snmp_manager_user, sync_get_bulk2,
+ [TargetName, NonRep, MaxRep, Oids, SendOpts]).
+
%% mgr_user_async_get_bulk(Node, NonRep, MaxRep, Oids) ->
%% mgr_user_async_get_bulk(Node, ?LOCALHOST(), ?AGENT_PORT,
%% NonRep, MaxRep, Oids).
mgr_user_async_get_bulk(Node, Addr_or_TargetName, NonRep, MaxRep, Oids) ->
rcall(Node, snmp_manager_user, async_get_bulk,
- [Addr_or_TargetName, NonRep, MaxRep, Oids]).
+ [Addr_or_TargetName, NonRep, MaxRep, Oids]).
mgr_user_async_get_bulk(Node, Addr, Port, NonRep, MaxRep, Oids) ->
rcall(Node, snmp_manager_user, async_get_bulk,
[Addr, Port, NonRep, MaxRep, Oids]).
+mgr_user_async_get_bulk2(Node, TargetName, NonRep, MaxRep, Oids, SendOpts) ->
+ rcall(Node, snmp_manager_user, async_get_bulk2,
+ [TargetName, NonRep, MaxRep, Oids, SendOpts]).
+
mgr_user_purify_oid(Node, Oid) ->
rcall(Node, snmp_manager_user, purify_oid, [Oid]).
diff --git a/lib/snmp/test/snmp_manager_user.erl b/lib/snmp/test/snmp_manager_user.erl
index b0e192344d..30b5dd1fc7 100644
--- a/lib/snmp/test/snmp_manager_user.erl
+++ b/lib/snmp/test/snmp_manager_user.erl
@@ -50,14 +50,14 @@
update_agent_info/3, update_agent_info/4,
which_all_agents/0, which_own_agents/0,
load_mib/1, unload_mib/1,
- sync_get/1, sync_get/2, sync_get/3,
- async_get/1, async_get/2, async_get/3,
- sync_get_next/1, sync_get_next/2, sync_get_next/3,
- async_get_next/1, async_get_next/2, async_get_next/3,
- sync_set/1, sync_set/2, sync_set/3,
- async_set/1, async_set/2, async_set/3,
- sync_get_bulk/3, sync_get_bulk/4, sync_get_bulk/5,
- async_get_bulk/3, async_get_bulk/4, async_get_bulk/5,
+ sync_get/1, sync_get/2, sync_get/3, sync_get2/3,
+ async_get/1, async_get/2, async_get/3, async_get2/3,
+ sync_get_next/1, sync_get_next/2, sync_get_next/3, sync_get_next2/3,
+ async_get_next/1, async_get_next/2, async_get_next/3, async_get_next2/3,
+ sync_set/1, sync_set/2, sync_set/3, sync_set2/3,
+ async_set/1, async_set/2, async_set/3, async_set2/3,
+ sync_get_bulk/3, sync_get_bulk/4, sync_get_bulk/5, sync_get_bulk2/5,
+ async_get_bulk/3, async_get_bulk/4, async_get_bulk/5, async_get_bulk2/5,
name_to_oid/1, oid_to_name/1,
purify_oid/1
]).
@@ -171,6 +171,10 @@ sync_get(Addr_or_TargetName, Oids) ->
sync_get(Addr, Port, Oids) ->
call({sync_get, Addr, Port, Oids}).
+sync_get2(TargetName, Oids, SendOpts) ->
+ call({sync_get2, TargetName, Oids, SendOpts}).
+
+
%% --
async_get(Oids) ->
@@ -182,6 +186,9 @@ async_get(Addr_or_TargetName, Oids) ->
async_get(Addr, Port, Oids) ->
call({async_get, Addr, Port, Oids}).
+async_get2(TargetName, Oids, SendOpts) ->
+ call({async_get2, TargetName, Oids, SendOpts}).
+
%% --
sync_get_next(Oids) ->
@@ -193,6 +200,9 @@ sync_get_next(Addr_or_TargetName, Oids) ->
sync_get_next(Addr, Port, Oids) ->
call({sync_get_next, Addr, Port, Oids}).
+sync_get_next2(TargetName, Oids, SendOpts) ->
+ call({sync_get_next2, TargetName, Oids, SendOpts}).
+
%% --
async_get_next(Oids) ->
@@ -204,6 +214,9 @@ async_get_next(Addr_or_TargetName, Oids) ->
async_get_next(Addr, Port, Oids) ->
call({async_get_next, Addr, Port, Oids}).
+async_get_next2(TargetName, Oids, SendOpts) ->
+ call({async_get_next2, TargetName, Oids, SendOpts}).
+
%% --
sync_set(VAV) ->
@@ -215,6 +228,9 @@ sync_set(Addr_or_TargetName, VAV) ->
sync_set(Addr, Port, VAV) ->
call({sync_set, Addr, Port, VAV}).
+sync_set2(TargetName, VAV, SendOpts) ->
+ call({sync_set2, TargetName, VAV, SendOpts}).
+
%% --
async_set(VAV) ->
@@ -226,6 +242,9 @@ async_set(Addr_or_TargetName, VAV) ->
async_set(Addr, Port, VAV) ->
call({async_set, Addr, Port, VAV}).
+async_set2(TargetName, VAV, SendOpts) ->
+ call({async_set2, TargetName, VAV, SendOpts}).
+
%% --
sync_get_bulk(NonRep, MaxRep, Oids) ->
@@ -237,6 +256,9 @@ sync_get_bulk(Addr_or_TargetName, NonRep, MaxRep, Oids) ->
sync_get_bulk(Addr, Port, NonRep, MaxRep, Oids) ->
call({sync_get_bulk, Addr, Port, NonRep, MaxRep, Oids}).
+sync_get_bulk2(TargetName, NonRep, MaxRep, Oids, SendOpts) ->
+ call({sync_get_bulk2, TargetName, NonRep, MaxRep, Oids, SendOpts}).
+
%% --
async_get_bulk(NonRep, MaxRep, Oids) ->
@@ -248,6 +270,9 @@ async_get_bulk(Addr_or_TargetName, NonRep, MaxRep, Oids) ->
async_get_bulk(Addr, Port, NonRep, MaxRep, Oids) ->
call({async_get_bulk, Addr, Port, NonRep, MaxRep, Oids}).
+async_get_bulk2(TargetName, NonRep, MaxRep, Oids, SendOpts) ->
+ call({async_get_bulk2, TargetName, NonRep, MaxRep, Oids, SendOpts}).
+
%% --
name_to_oid(Name) ->
@@ -400,6 +425,16 @@ loop(#state{parent = Parent, id = Id} = S) ->
%% -- (sync) get-request --
%%
+ {{sync_get2, TargetName, Oids, SendOpts}, From, Ref}
+ when is_list(TargetName) ->
+ d("loop -> received sync_get2 request with"
+ "~n TargetName: ~p"
+ "~n Oids: ~p"
+ "~n SendOpts: ~p", [TargetName, Oids, SendOpts]),
+ Res = snmpm:sync_get2(Id, TargetName, Oids, SendOpts),
+ reply(From, Res, Ref),
+ loop(S);
+
%% No agent specified, so send it to all of them
{{sync_get, Oids}, From, Ref} ->
d("loop -> received sync_get request "
@@ -439,6 +474,16 @@ loop(#state{parent = Parent, id = Id} = S) ->
%% -- (async) get-request --
%%
+ {{async_get2, TargetName, Oids, SendOpts}, From, Ref}
+ when is_list(TargetName) ->
+ d("loop -> received async_get2 request with"
+ "~n TargetName: ~p"
+ "~n Oids: ~p"
+ "~n SendOpts: ~p", [TargetName, Oids, SendOpts]),
+ Res = snmpm:async_get2(Id, TargetName, Oids, SendOpts),
+ reply(From, Res, Ref),
+ loop(S);
+
%% No agent specified, so send it to all of them
{{async_get, Oids}, From, Ref} ->
d("loop -> received async_get request"),
@@ -472,6 +517,16 @@ loop(#state{parent = Parent, id = Id} = S) ->
%% -- (sync) get_next-request --
%%
+ {{sync_get_next2, TargetName, Oids, SendOpts}, From, Ref}
+ when is_list(TargetName) ->
+ d("loop -> received sync_get_next2 request with"
+ "~n TargetName: ~p"
+ "~n Oids: ~p"
+ "~n SendOpts: ~p", [TargetName, Oids, SendOpts]),
+ Res = snmpm:sync_get_next2(Id, TargetName, Oids, SendOpts),
+ reply(From, Res, Ref),
+ loop(S);
+
%% No agent specified, so send it to all of them
{{sync_get_next, Oids}, From, Ref} ->
d("loop -> received sync_get_next request"),
@@ -505,6 +560,16 @@ loop(#state{parent = Parent, id = Id} = S) ->
%% -- (async) get_next-request --
%%
+ {{async_get_next2, TargetName, Oids, SendOpts}, From, Ref}
+ when is_list(TargetName) ->
+ d("loop -> received async_get_next2 request with"
+ "~n TargetName: ~p"
+ "~n Oids: ~p"
+ "~n SendOpts: ~p", [TargetName, Oids, SendOpts]),
+ Res = snmpm:async_get_next2(Id, TargetName, Oids, SendOpts),
+ reply(From, Res, Ref),
+ loop(S);
+
%% No agent specified, so send it to all of them
{{async_get_next, Oids}, From, Ref} ->
d("loop -> received async_get_next request"),
@@ -538,6 +603,16 @@ loop(#state{parent = Parent, id = Id} = S) ->
%% -- (sync) set-request --
%%
+ {{sync_set2, TargetName, VAV, SendOpts}, From, Ref}
+ when is_list(TargetName) ->
+ d("loop -> received sync_set2 request with"
+ "~n TargetName: ~p"
+ "~n VAV: ~p"
+ "~n SendOpts: ~p", [TargetName, VAV, SendOpts]),
+ Res = snmpm:sync_set2(Id, TargetName, VAV, SendOpts),
+ reply(From, Res, Ref),
+ loop(S);
+
{{sync_set, VAV}, From, Ref} ->
d("loop -> received sync_set request"),
Res = [snmpm:sync_set(Id, TargetName, VAV) ||
@@ -568,6 +643,16 @@ loop(#state{parent = Parent, id = Id} = S) ->
%% -- (async) set-request --
%%
+ {{async_set2, TargetName, VAV, SendOpts}, From, Ref}
+ when is_list(TargetName) ->
+ d("loop -> received async_set2 request with"
+ "~n TargetName: ~p"
+ "~n VAV: ~p"
+ "~n SendOpts: ~p", [TargetName, VAV, SendOpts]),
+ Res = snmpm:async_set2(Id, TargetName, VAV, SendOpts),
+ reply(From, Res, Ref),
+ loop(S);
+
{{async_set, VAV}, From, Ref} ->
d("loop -> received async_set request"),
Res = [snmpm:async_set(Id, TargetName, VAV) ||
@@ -598,6 +683,20 @@ loop(#state{parent = Parent, id = Id} = S) ->
%% -- (sync) get-bulk-request --
%%
+ {{sync_get_bulk2, TargetName, NonRep, MaxRep, Oids, SendOpts}, From, Ref}
+ when is_list(TargetName) ->
+ d("loop -> received sync_get_bulk request with"
+ "~n TargetName: ~p"
+ "~n NonRep: ~w"
+ "~n MaxRep: ~w"
+ "~n Oids: ~p"
+ "~n SendOpts: ~p",
+ [TargetName, NonRep, MaxRep, Oids, SendOpts]),
+ Res = snmpm:sync_get_bulk2(Id, TargetName,
+ NonRep, MaxRep, Oids, SendOpts),
+ reply(From, Res, Ref),
+ loop(S);
+
%% No agent specified, so send it to all of them
{{sync_get_bulk, NonRep, MaxRep, Oids}, From, Ref} ->
d("loop -> received sync_get_bulk request with"
@@ -645,6 +744,20 @@ loop(#state{parent = Parent, id = Id} = S) ->
%% -- (async) get-bulk-request --
%%
+ {{async_get_bulk2, TargetName, NonRep, MaxRep, Oids, SendOpts},
+ From, Ref} when is_list(TargetName) ->
+ d("loop -> received async_get_bulk2 request with"
+ "~n TargetName: ~p"
+ "~n NonRep: ~w"
+ "~n MaxRep: ~w"
+ "~n Oids: ~p"
+ "~n SendOpts: ~p",
+ [TargetName, NonRep, MaxRep, Oids, SendOpts]),
+ Res = snmpm:async_get_bulk2(Id, TargetName,
+ NonRep, MaxRep, Oids, SendOpts),
+ reply(From, Res, Ref),
+ loop(S);
+
%% No agent specified, so send it to all of them
{{async_get_bulk, NonRep, MaxRep, Oids}, From, Ref} ->
d("loop -> received async_get_bulk request with"
@@ -847,7 +960,11 @@ call(Req, To) when is_integer(To) ->
{error, timeout}
end.
-reply(Pid, Reply, Ref) ->
+reply(Pid, Reply, Ref) ->
+ d("reply -> entry with"
+ "~n Pid: ~p"
+ "~n Reply: ~p"
+ "~n Ref: ~p", [Pid, Reply, Ref]),
Pid ! {Reply, Ref}.
cast(Msg) ->
diff --git a/lib/snmp/test/snmp_pdus_test.erl b/lib/snmp/test/snmp_pdus_test.erl
index ef510ad62e..197797c816 100644
--- a/lib/snmp/test/snmp_pdus_test.erl
+++ b/lib/snmp/test/snmp_pdus_test.erl
@@ -38,6 +38,8 @@
otp7575/1,
otp8563/1,
+ otp9022/1,
+
init_per_testcase/2, end_per_testcase/2
]).
@@ -75,7 +77,7 @@ all() ->
[{group, tickets}].
groups() ->
- [{tickets, [], [otp7575, otp8563]}].
+ [{tickets, [], [otp7575, otp8563, otp9022]}].
init_per_group(_GroupName, Config) ->
Config.
@@ -169,7 +171,56 @@ otp8563(Config) when is_list(Config) ->
Unexpected7 ->
exit({unexpected_encode_result, Unexpected7, Val7})
end,
-
+
+ ok.
+
+
+otp9022(suite) -> [];
+otp9022(doc) -> ["OTP-9022"];
+otp9022(Config) when is_list(Config) ->
+ Val1 = 16#7fffffff,
+ io:format("try encode and decode ~w~n", [Val1]),
+ Enc1 = snmp_pdus:enc_value('Counter32', Val1),
+ {{'Counter32', Val1}, []} = snmp_pdus:dec_value(Enc1),
+
+ Val2 = Val1 + 1,
+ io:format("try encode and decode ~w~n", [Val2]),
+ Enc2 = snmp_pdus:enc_value('Counter32', Val2),
+ {{'Counter32', Val2}, []} = snmp_pdus:dec_value(Enc2),
+
+ Val3 = Val2 + 1,
+ io:format("try encode and decode ~w~n", [Val3]),
+ Enc3 = snmp_pdus:enc_value('Counter32', Val3),
+ {{'Counter32', Val3}, []} = snmp_pdus:dec_value(Enc3),
+
+ Val4 = 16#fffffffe,
+ io:format("try encode and decode ~w~n", [Val4]),
+ Enc4 = snmp_pdus:enc_value('Counter32', Val4),
+ {{'Counter32', Val4}, []} = snmp_pdus:dec_value(Enc4),
+
+ Val5 = Val4 + 1,
+ io:format("try encode and decode ~w~n", [Val5]),
+ Enc5 = snmp_pdus:enc_value('Counter32', Val5),
+ {{'Counter32', Val5}, []} = snmp_pdus:dec_value(Enc5),
+
+ Val6 = 16#ffffffff + 1,
+ io:format("try and fail to encode ~w~n", [Val6]),
+ case (catch snmp_pdus:enc_value('Counter32', Val6)) of
+ {'EXIT', {error, {bad_counter32, Val6}}} ->
+ ok;
+ Unexpected6 ->
+ exit({unexpected_encode_result, Unexpected6, Val6})
+ end,
+
+ Val7 = -1,
+ io:format("try and fail to encode ~w~n", [Val7]),
+ case (catch snmp_pdus:enc_value('Counter32', Val7)) of
+ {'EXIT', {error, {bad_counter32, Val7}}} ->
+ ok;
+ Unexpected7 ->
+ exit({unexpected_encode_result, Unexpected7, Val7})
+ end,
+
ok.
diff --git a/lib/snmp/vsn.mk b/lib/snmp/vsn.mk
index e70c97dcb8..29228fc59b 100644
--- a/lib/snmp/vsn.mk
+++ b/lib/snmp/vsn.mk
@@ -17,6 +17,6 @@
#
# %CopyrightEnd%
-SNMP_VSN = 4.19
+SNMP_VSN = 4.20
PRE_VSN =
APP_VSN = "snmp-$(SNMP_VSN)$(PRE_VSN)"
diff --git a/lib/ssl/doc/src/notes.xml b/lib/ssl/doc/src/notes.xml
index 52ee9c086a..b2d17925fd 100644
--- a/lib/ssl/doc/src/notes.xml
+++ b/lib/ssl/doc/src/notes.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="latin1" ?>
+<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE chapter SYSTEM "chapter.dtd">
<chapter>
@@ -28,59 +28,47 @@
<rev>G</rev>
<file>notes.xml</file>
</header>
- <p>This document describes the changes made to the SSL application.
- </p>
-
- <section><title>SSL 4.1.4</title>
-
+ <p>This document describes the changes made to the SSL application.</p>
+
+ <section>
+ <title>SSL 4.1.5</title>
+
<section><title>Improvements and New Features</title>
- <list>
- <item>
- <p>
- Reduced memory footprint of an ssl connection.</p>
- <p>
- Handshake hashes, premaster secret and "public_key_info"
- does not need to be saved when the connection has been
- established. The own certificate is no longer duplicated
- in the state.</p>
- <p>
- Own Id: OTP-9021</p>
- </item>
- <item>
- <p>
- Add the option {hibernate_after, int()} to ssl:connect
- and ssl:listen</p>
- <p>
- Own Id: OTP-9106</p>
- </item>
- </list>
+ <list>
+ <item>
+ <p>Calling gen_tcp:connect with option {ip, {127,0,0,1}} results in
+ an exit with reason badarg. Neither SSL nor INETS This was not
+ catched, resulting in crashes with incomprehensible reasons.</p>
+ <p>Own Id: OTP-9289 Aux Id: seq11845</p>
+ </item>
+ </list>
</section>
-
-</section>
-
-<section><title>SSL 4.1.3</title>
-
+
+ </section>
+
+ <section>
+ <title>SSL 4.1.3</title>
+
<section><title>Fixed Bugs and Malfunctions</title>
- <list>
- <item>
- <p>
- Fixed error in cache-handling fix from ssl-4.1.2</p>
- <p>
- Own Id: OTP-9018 Aux Id: seq11739 </p>
- </item>
- <item>
- <p>
- Verification of a critical extended_key_usage-extension
- corrected</p>
- <p>
- Own Id: OTP-9029 Aux Id: seq11541 </p>
- </item>
- </list>
+ <list>
+ <item>
+ <p>
+ Fixed error in cache-handling fix from ssl-4.1.2</p>
+ <p>
+ Own Id: OTP-9018 Aux Id: seq11739 </p>
+ </item>
+ <item>
+ <p>Verification of a critical extended_key_usage-extension
+ corrected</p>
+ <p>Own Id: OTP-9029 Aux Id: seq11541 </p>
+ </item>
+ </list>
</section>
-</section>
+ </section>
-<section><title>SSL 4.1.2</title>
+ <section>
+ <title>SSL 4.1.2</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
diff --git a/lib/ssl/src/ssl.appup.src b/lib/ssl/src/ssl.appup.src
index a0ecb4ac6f..cf8867245b 100644
--- a/lib/ssl/src/ssl.appup.src
+++ b/lib/ssl/src/ssl.appup.src
@@ -5,7 +5,7 @@
{"4.1.3", [{restart_application, ssl}]},
{"4.1.2", [{restart_application, ssl}]},
{"4.1.1", [{restart_application, ssl}]},
- {"4.1", [{restart_application, ssl}]},
+ {"4.1", [{restart_application, ssl}]},
{"4.0.1", [{restart_application, ssl}]}
],
[
@@ -13,7 +13,7 @@
{"4.1.3", [{restart_application, ssl}]},
{"4.1.2", [{restart_application, ssl}]},
{"4.1.1", [{restart_application, ssl}]},
- {"4.1", [{restart_application, ssl}]},
+ {"4.1", [{restart_application, ssl}]},
{"4.0.1", [{restart_application, ssl}]}
]}.
diff --git a/lib/ssl/src/ssl.erl b/lib/ssl/src/ssl.erl
index 380c59b058..0ced6707eb 100644
--- a/lib/ssl/src/ssl.erl
+++ b/lib/ssl/src/ssl.erl
@@ -611,8 +611,10 @@ do_new_connect(Address, Port,
catch
exit:{function_clause, _} ->
{error, {eoptions, {cb_info, CbInfo}}};
+ exit:badarg ->
+ {error, {eoptions, {inet_options, UserOpts}}};
exit:{badarg, _} ->
- {error,{eoptions, {inet_options, UserOpts}}}
+ {error, {eoptions, {inet_options, UserOpts}}}
end.
old_connect(Address, Port, Options, Timeout) ->
diff --git a/lib/ssl/src/ssl_manager.erl b/lib/ssl/src/ssl_manager.erl
index f845b1ecc0..5a2d0c9496 100644
--- a/lib/ssl/src/ssl_manager.erl
+++ b/lib/ssl/src/ssl_manager.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2007-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2007-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -57,6 +57,7 @@
-define('24H_in_sec', 8640).
-define(SESSION_VALIDATION_INTERVAL, 60000).
-define(CERTIFICATE_CACHE_CLEANUP, 30000).
+-define(CLEAN_SESSION_DB, 60000).
%%====================================================================
%% API
@@ -70,7 +71,8 @@ start_link(Opts) ->
gen_server:start_link({local, ?MODULE}, ?MODULE, [Opts], []).
%%--------------------------------------------------------------------
--spec connection_init(string()| {der, list()}, client | server) -> {ok, reference(), cache_ref()}.
+-spec connection_init(string()| {der, list()}, client | server) ->
+ {ok, reference(), cache_ref()}.
%%
%% Description: Do necessary initializations for a new connection.
%%--------------------------------------------------------------------
@@ -101,7 +103,9 @@ lookup_trusted_cert(Ref, SerialNumber, Issuer) ->
ssl_certificate_db:lookup_trusted_cert(Ref, SerialNumber, Issuer).
%%--------------------------------------------------------------------
-spec issuer_candidate(cert_key() | no_candidate) ->
- {cert_key(), {der_cert(), #'OTPCertificate'{}}} | no_more_candidates.
+ {cert_key(),
+ {der_cert(),
+ #'OTPCertificate'{}}} | no_more_candidates.
%%
%% Description: Return next issuer candidate.
%%--------------------------------------------------------------------
@@ -117,7 +121,8 @@ client_session_id(Host, Port, SslOpts, OwnCert) ->
call({client_session_id, Host, Port, SslOpts, OwnCert}).
%%--------------------------------------------------------------------
--spec server_session_id(host(), port_num(), #ssl_options{}, der_cert()) -> session_id().
+-spec server_session_id(host(), port_num(), #ssl_options{},
+ der_cert()) -> session_id().
%%
%% Description: Select a session id for the server.
%%--------------------------------------------------------------------
@@ -139,7 +144,9 @@ register_session(Port, Session) ->
-spec invalidate_session(port_num(), #session{}) -> ok.
-spec invalidate_session(host(), port_num(), #session{}) -> ok.
%%
-%% Description: Make the session unavilable for reuse.
+%% Description: Make the session unavailable for reuse. After
+%% a the session has been marked "is_resumable = false" for some while
+%% it will be safe to remove the data from the session database.
%%--------------------------------------------------------------------
invalidate_session(Host, Port, Session) ->
cast({invalidate_session, Host, Port, Session}).
@@ -259,23 +266,26 @@ handle_cast({register_session, Port, Session},
{noreply, State};
handle_cast({invalidate_session, Host, Port,
- #session{session_id = ID}},
+ #session{session_id = ID} = Session},
#state{session_cache = Cache,
session_cache_cb = CacheCb} = State) ->
- CacheCb:delete(Cache, {{Host, Port}, ID}),
+ CacheCb:update(Cache, {{Host, Port}, ID}, Session#session{is_resumable = false}),
+ timer:apply_after(?CLEAN_SESSION_DB, CacheCb, delete, {{Host, Port}, ID}),
{noreply, State};
-handle_cast({invalidate_session, Port, #session{session_id = ID}},
+handle_cast({invalidate_session, Port, #session{session_id = ID} = Session},
#state{session_cache = Cache,
session_cache_cb = CacheCb} = State) ->
- CacheCb:delete(Cache, {Port, ID}),
+ CacheCb:update(Cache, {Port, ID}, Session#session{is_resumable = false}),
+ timer:apply_after(?CLEAN_SESSION_DB, CacheCb, delete, {Port, ID}),
{noreply, State};
handle_cast({recache_pem, File, LastWrite, Pid, From},
#state{certificate_db = [_, FileToRefDb, _]} = State0) ->
case ssl_certificate_db:lookup(File, FileToRefDb) of
undefined ->
- {reply, Msg, State} = handle_call({{cache_pem, File, LastWrite}, Pid}, From, State0),
+ {reply, Msg, State} =
+ handle_call({{cache_pem, File, LastWrite}, Pid}, From, State0),
gen_server:reply(From, Msg),
{noreply, State};
_ -> %% Send message to self letting cleanup messages be handled
diff --git a/lib/stdlib/doc/specs/.gitignore b/lib/stdlib/doc/specs/.gitignore
new file mode 100644
index 0000000000..322eebcb06
--- /dev/null
+++ b/lib/stdlib/doc/specs/.gitignore
@@ -0,0 +1 @@
+specs_*.xml
diff --git a/lib/stdlib/doc/src/Makefile b/lib/stdlib/doc/src/Makefile
index b558697d63..16e0a86e3b 100644
--- a/lib/stdlib/doc/src/Makefile
+++ b/lib/stdlib/doc/src/Makefile
@@ -1,7 +1,7 @@
#
# %CopyrightBegin%
#
-# Copyright Ericsson AB 1997-2010. All Rights Reserved.
+# Copyright Ericsson AB 1997-2011. All Rights Reserved.
#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
@@ -125,18 +125,24 @@ HTML_REF_MAN_FILE = $(HTMLDIR)/index.html
TOP_PDF_FILE = $(PDFDIR)/$(APPLICATION)-$(VSN).pdf
+SPECS_FILES = $(XML_REF3_FILES:%.xml=$(SPECDIR)/specs_%.xml)
+
+TOP_SPECS_FILE = specs.xml
+
# ----------------------------------------------------
# FLAGS
# ----------------------------------------------------
XML_FLAGS +=
+SPECS_FLAGS = -I../../include -I../../../kernel/include
+
# ----------------------------------------------------
# Targets
# ----------------------------------------------------
$(HTMLDIR)/%.gif: %.gif
$(INSTALL_DATA) $< $@
-docs: pdf html man
+docs: man pdf html
$(TOP_PDF_FILE): $(XML_FILES)
@@ -155,8 +161,13 @@ clean clean_docs:
rm -f $(MAN3DIR)/*
rm -f $(MAN6DIR)/*
rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo)
+ rm -f $(SPECDIR)/*
rm -f errs core *~
+$(SPECDIR)/specs_erl_id_trans.xml:
+ escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) \
+ -o$(dir $@) -module erl_id_trans
+
# ----------------------------------------------------
# Release Target
# ----------------------------------------------------
diff --git a/lib/stdlib/doc/src/array.xml b/lib/stdlib/doc/src/array.xml
index 5c3ac6a2a9..a79fcd487e 100644
--- a/lib/stdlib/doc/src/array.xml
+++ b/lib/stdlib/doc/src/array.xml
@@ -3,7 +3,7 @@
<erlref>
<header>
<copyright>
- <year>2007</year><year>2009</year>
+ <year>2007</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -82,19 +82,35 @@ the default value cannot be confused with the values of set entries.</p>
%% allow accesses beyond the last set entry
{'EXIT',{badarg,_}} = (catch array:set(18, true, A3)).
{'EXIT',{badarg,_}} = (catch array:get(18, A3)).</pre></description>
-<section><title>DATA TYPES</title><marker id="types"/>
-
-<taglist>
-<tag><c>array()</c></tag>
-<item><marker id="type-array"/>
-<p>A functional, extendible array. The representation is
- not documented and is subject to change without notice. Note that
- arrays cannot be directly compared for equality.</p>
-</item>
-</taglist></section>
+<datatypes>
+ <datatype>
+ <name><marker id="type-array">array()</marker></name>
+ <desc>
+ <p>A functional, extendible array. The representation is
+ not documented and is subject to change without notice. Note that
+ arrays cannot be directly compared for equality.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="array_indx"/>
+ </datatype>
+ <datatype>
+ <name name="array_opts"/>
+ </datatype>
+ <datatype>
+ <name name="array_opt"/>
+ </datatype>
+ <datatype>
+ <name name="indx_pairs"/>
+ </datatype>
+ <datatype>
+ <name name="indx_pair"/>
+ </datatype>
+</datatypes>
+
<funcs>
<func>
-<name>default(Array::array()) -&gt; term()</name>
+<name name="default" arity="1"/>
<fsummary>Get the value used for uninitialized entries.</fsummary>
<desc><marker id="default-1"/>
@@ -104,7 +120,7 @@ the default value cannot be confused with the values of set entries.</p>
<p><em>See also:</em> <seealso marker="#new-2">new/2</seealso>.</p>
</desc></func>
<func>
-<name>fix(Array::array()) -&gt; array()</name>
+<name name="fix" arity="1"/>
<fsummary>Fix the size of the array.</fsummary>
<desc><marker id="fix-1"/>
@@ -114,105 +130,100 @@ the default value cannot be confused with the values of set entries.</p>
<p><em>See also:</em> <seealso marker="#relax-1">relax/1</seealso>.</p>
</desc></func>
<func>
-<name>foldl(Function, InitialAcc::term(), Array::array()) -&gt; term()</name>
+<name name="foldl" arity="3"/>
<fsummary>Fold the elements of the array using the given function and
initial accumulator value.</fsummary>
-<type>
-<v>Function = (Index::integer(), Value::term(), Acc::term()) -&gt; term()</v></type>
<desc><marker id="foldl-3"/>
-
<p>Fold the elements of the array using the given function and
initial accumulator value. The elements are visited in order from the
- lowest index to the highest. If <c>Function</c> is not a function, the
+ lowest index to the highest. If <c><anno>Function</anno></c> is not a function, the
call fails with reason <c>badarg</c>.
</p>
<p><em>See also:</em> <seealso marker="#foldr-3">foldr/3</seealso>, <seealso marker="#map-2">map/2</seealso>, <seealso marker="#sparse_foldl-3">sparse_foldl/3</seealso>.</p>
</desc></func>
<func>
-<name>foldr(Function, InitialAcc::term(), Array::array()) -&gt; term()</name>
+<name name="foldr" arity="3"/>
<fsummary>Fold the elements of the array right-to-left using the given
function and initial accumulator value.</fsummary>
-<type>
-<v>Function = (Index::integer(), Value::term(), Acc::term()) -&gt; term()</v></type>
<desc><marker id="foldr-3"/>
<p>Fold the elements of the array right-to-left using the given
function and initial accumulator value. The elements are visited in
- order from the highest index to the lowest. If <c>Function</c> is not a
+ order from the highest index to the lowest. If <c><anno>Function</anno></c> is not a
function, the call fails with reason <c>badarg</c>.
</p>
<p><em>See also:</em> <seealso marker="#foldl-3">foldl/3</seealso>, <seealso marker="#map-2">map/2</seealso>.</p>
</desc></func>
<func>
-<name>from_list(List::list()) -&gt; array()</name>
+<name name="from_list" arity="1"/>
<fsummary>Equivalent to from_list(List, undefined).
</fsummary>
<desc><marker id="from_list-1"/>
-<p>Equivalent to <seealso marker="#from_list-2">from_list(List, undefined)</seealso>.</p>
+<p>Equivalent to <seealso marker="#from_list-2">from_list(<anno>List</anno>, undefined)</seealso>.</p>
</desc></func>
<func>
-<name>from_list(List::list(), Default::term()) -&gt; array()</name>
+<name name="from_list" arity="2"/>
<fsummary>Convert a list to an extendible array.</fsummary>
<desc><marker id="from_list-2"/>
-<p>Convert a list to an extendible array. <c>Default</c> is used as the value
- for uninitialized entries of the array. If <c>List</c> is not a proper list,
+<p>Convert a list to an extendible array. <c><anno>Default</anno></c> is used as the value
+ for uninitialized entries of the array. If <c><anno>List</anno></c> is not a proper list,
the call fails with reason <c>badarg</c>.
</p>
<p><em>See also:</em> <seealso marker="#new-2">new/2</seealso>, <seealso marker="#to_list-1">to_list/1</seealso>.</p>
</desc></func>
<func>
-<name>from_orddict(Orddict::list()) -&gt; array()</name>
+<name name="from_orddict" arity="1"/>
<fsummary>Equivalent to from_orddict(Orddict, undefined).
</fsummary>
<desc><marker id="from_orddict-1"/>
-<p>Equivalent to <seealso marker="#from_orddict-2">from_orddict(Orddict, undefined)</seealso>.</p>
+<p>Equivalent to <seealso marker="#from_orddict-2">from_orddict(<anno>Orddict</anno>, undefined)</seealso>.</p>
</desc></func>
<func>
-<name>from_orddict(List::list(), Default::term()) -&gt; array()</name>
+<name name="from_orddict" arity="2"/>
<fsummary>Convert an ordered list of pairs {Index, Value} to a
corresponding extendible array.</fsummary>
<desc><marker id="from_orddict-2"/>
<p>Convert an ordered list of pairs <c>{Index, Value}</c> to a
- corresponding extendible array. <c>Default</c> is used as the value for
- uninitialized entries of the array. If <c>List</c> is not a proper,
+ corresponding extendible array. <c><anno>Default</anno></c> is used as the value for
+ uninitialized entries of the array. If <c><anno>Orddict</anno></c> is not a proper,
ordered list of pairs whose first elements are nonnegative
integers, the call fails with reason <c>badarg</c>.
</p>
<p><em>See also:</em> <seealso marker="#new-2">new/2</seealso>, <seealso marker="#to_orddict-1">to_orddict/1</seealso>.</p>
</desc></func>
<func>
-<name>get(I::integer(), Array::array()) -&gt; term()</name>
+<name name="get" arity="2"/>
<fsummary>Get the value of entry I.</fsummary>
<desc><marker id="get-2"/>
-<p>Get the value of entry <c>I</c>. If <c>I</c> is not a nonnegative
- integer, or if the array has fixed size and <c>I</c> is larger than the
+<p>Get the value of entry <c><anno>I</anno></c>. If <c><anno>I</anno></c> is not a nonnegative
+ integer, or if the array has fixed size and <c><anno>I</anno></c> is larger than the
maximum index, the call fails with reason <c>badarg</c>.</p>
<p>If the array does not have fixed size, this function will return the
- default value for any index <c>I</c> greater than <c>size(Array)-1</c>.</p>
+ default value for any index <c><anno>I</anno></c> greater than <c>size(<anno>Array</anno>)-1</c>.</p>
<p><em>See also:</em> <seealso marker="#set-3">set/3</seealso>.</p>
</desc></func>
<func>
-<name>is_array(X::term()) -&gt; bool()</name>
+<name name="is_array" arity="1"/>
<fsummary>Returns true if X appears to be an array, otherwise false.</fsummary>
<desc><marker id="is_array-1"/>
-<p>Returns <c>true</c> if <c>X</c> appears to be an array, otherwise <c>false</c>.
- Note that the check is only shallow; there is no guarantee that <c>X</c>
+<p>Returns <c>true</c> if <c><anno>X</anno></c> appears to be an array, otherwise <c>false</c>.
+ Note that the check is only shallow; there is no guarantee that <c><anno>X</anno></c>
is a well-formed array representation even if this function returns
<c>true</c>.</p>
</desc></func>
<func>
-<name>is_fix(Array::array()) -&gt; bool()</name>
+<name name="is_fix" arity="1"/>
<fsummary>Check if the array has fixed size.</fsummary>
<desc><marker id="is_fix-1"/>
@@ -222,20 +233,18 @@ the default value cannot be confused with the values of set entries.</p>
<p><em>See also:</em> <seealso marker="#fix-1">fix/1</seealso>.</p>
</desc></func>
<func>
-<name>map(Function, Array::array()) -&gt; array()</name>
+<name name="map" arity="2"/>
<fsummary>Map the given function onto each element of the array.</fsummary>
-<type>
-<v>Function = (Index::integer(), Value::term()) -&gt; term()</v></type>
<desc><marker id="map-2"/>
<p>Map the given function onto each element of the array. The
elements are visited in order from the lowest index to the highest.
- If <c>Function</c> is not a function, the call fails with reason <c>badarg</c>.
+ If <c><anno>Function</anno></c> is not a function, the call fails with reason <c>badarg</c>.
</p>
<p><em>See also:</em> <seealso marker="#foldl-3">foldl/3</seealso>, <seealso marker="#foldr-3">foldr/3</seealso>, <seealso marker="#sparse_map-2">sparse_map/2</seealso>.</p>
</desc></func>
<func>
-<name>new() -&gt; array()</name>
+<name name="new" arity="0"/>
<fsummary>Create a new, extendible array with initial size zero.</fsummary>
<desc><marker id="new-0"/>
@@ -244,7 +253,7 @@ the default value cannot be confused with the values of set entries.</p>
<p><em>See also:</em> <seealso marker="#new-1">new/1</seealso>, <seealso marker="#new-2">new/2</seealso>.</p>
</desc></func>
<func>
-<name>new(Options::term()) -&gt; array()</name>
+<name name="new" arity="1"/>
<fsummary>Create a new array according to the given options.</fsummary>
<desc><marker id="new-1"/>
@@ -253,10 +262,10 @@ the default value cannot be confused with the values of set entries.</p>
the array is extendible and has initial size zero. Array indices
start at 0.</p>
- <p><c>Options</c> is a single term or a list of terms, selected from the
+ <p><c><anno>Options</anno></c> is a single term or a list of terms, selected from the
following:
</p><taglist>
- <tag><c>N::integer()</c> or <c>{size, N::integer()}</c></tag>
+ <tag><c>N::integer() >= 0</c> or <c>{size, N::integer() >= 0}</c></tag>
<item><p>Specifies the initial size of the array; this also implies
<c>{fixed, true}</c>. If <c>N</c> is not a nonnegative integer, the call
fails with reason <c>badarg</c>.</p></item>
@@ -283,19 +292,19 @@ cannot be changed once the array has been created.</p>
<p><em>See also:</em> <seealso marker="#fix-1">fix/1</seealso>, <seealso marker="#from_list-2">from_list/2</seealso>, <seealso marker="#get-2">get/2</seealso>, <seealso marker="#new-0">new/0</seealso>, <seealso marker="#new-2">new/2</seealso>, <seealso marker="#set-3">set/3</seealso>.</p>
</desc></func>
<func>
-<name>new(Size::integer(), Options::term()) -&gt; array()</name>
+<name name="new" arity="2"/>
<fsummary>Create a new array according to the given size and options.</fsummary>
<desc><marker id="new-2"/>
<p>Create a new array according to the given size and options. If
- <c>Size</c> is not a nonnegative integer, the call fails with reason
+ <c><anno>Size</anno></c> is not a nonnegative integer, the call fails with reason
<c>badarg</c>. By default, the array has fixed size. Note that any size
- specifications in <c>Options</c> will override the <c>Size</c> parameter.</p>
+ specifications in <c><anno>Options</anno></c> will override the <c><anno>Size</anno></c> parameter.</p>
- <p>If <c>Options</c> is a list, this is simply equivalent to <c>new([{size,
- Size} | Options]</c>, otherwise it is equivalent to <c>new([{size, Size} |
- [Options]]</c>. However, using this function directly is more efficient.</p>
+ <p>If <c><anno>Options</anno></c> is a list, this is simply equivalent to <c>new([{size,
+ <anno>Size</anno>} | <anno>Options</anno>]</c>, otherwise it is equivalent to <c>new([{size, <anno>Size</anno>} |
+ [<anno>Options</anno>]]</c>. However, using this function directly is more efficient.</p>
<p>Example:
</p><pre> array:new(100, {default,0})</pre><p> creates a fixed-size array of size
@@ -304,7 +313,7 @@ cannot be changed once the array has been created.</p>
<p><em>See also:</em> <seealso marker="#new-1">new/1</seealso>.</p>
</desc></func>
<func>
-<name>relax(Array::array()) -&gt; array()</name>
+<name name="relax" arity="1"/>
<fsummary>Make the array resizable.</fsummary>
<desc><marker id="relax-1"/>
@@ -313,24 +322,24 @@ cannot be changed once the array has been created.</p>
<p><em>See also:</em> <seealso marker="#fix-1">fix/1</seealso>.</p>
</desc></func>
<func>
-<name>reset(I::integer(), Array::array()) -&gt; array()</name>
+<name name="reset" arity="2"/>
<fsummary>Reset entry I to the default value for the array.</fsummary>
<desc><marker id="reset-2"/>
-<p>Reset entry <c>I</c> to the default value for the array.
- If the value of entry <c>I</c> is the default value the array will be
+<p>Reset entry <c><anno>I</anno></c> to the default value for the array.
+ If the value of entry <c><anno>I</anno></c> is the default value the array will be
returned unchanged. Reset will never change size of the array.
Shrinking can be done explicitly by calling <seealso marker="#resize-2">resize/2</seealso>.</p>
- <p>If <c>I</c> is not a nonnegative integer, or if the array has fixed size
- and <c>I</c> is larger than the maximum index, the call fails with reason
+ <p>If <c><anno>I</anno></c> is not a nonnegative integer, or if the array has fixed size
+ and <c><anno>I</anno></c> is larger than the maximum index, the call fails with reason
<c>badarg</c>; cf. <seealso marker="#set-3">set/3</seealso>
</p>
<p><em>See also:</em> <seealso marker="#new-2">new/2</seealso>, <seealso marker="#set-3">set/3</seealso>.</p>
</desc></func>
<func>
-<name>resize(Array::array()) -&gt; array()</name>
+<name name="resize" arity="1"/>
<fsummary>Change the size of the array to that reported by sparse_size/1.</fsummary>
<desc><marker id="resize-1"/>
@@ -340,90 +349,84 @@ cannot be changed once the array has been created.</p>
<p><em>See also:</em> <seealso marker="#resize-2">resize/2</seealso>, <seealso marker="#sparse_size-1">sparse_size/1</seealso>.</p>
</desc></func>
<func>
-<name>resize(Size::integer(), Array::array()) -&gt; array()</name>
+<name name="resize" arity="2"/>
<fsummary>Change the size of the array.</fsummary>
<desc><marker id="resize-2"/>
-<p>Change the size of the array. If <c>Size</c> is not a nonnegative
+<p>Change the size of the array. If <c><anno>Size</anno></c> is not a nonnegative
integer, the call fails with reason <c>badarg</c>. If the given array has
fixed size, the resulting array will also have fixed size.</p>
</desc></func>
<func>
-<name>set(I::integer(), Value::term(), Array::array()) -&gt; array()</name>
+<name name="set" arity="3"/>
<fsummary>Set entry I of the array to Value.</fsummary>
<desc><marker id="set-3"/>
-<p>Set entry <c>I</c> of the array to <c>Value</c>. If <c>I</c> is not a
- nonnegative integer, or if the array has fixed size and <c>I</c> is larger
+<p>Set entry <c><anno>I</anno></c> of the array to <c><anno>Value</anno></c>. If <c><anno>I</anno></c> is not a
+ nonnegative integer, or if the array has fixed size and <c><anno>I</anno></c> is larger
than the maximum index, the call fails with reason <c>badarg</c>.</p>
- <p>If the array does not have fixed size, and <c>I</c> is greater than
- <c>size(Array)-1</c>, the array will grow to size <c>I+1</c>.
+ <p>If the array does not have fixed size, and <c><anno>I</anno></c> is greater than
+ <c>size(<anno>Array</anno>)-1</c>, the array will grow to size <c><anno>I</anno>+1</c>.
</p>
<p><em>See also:</em> <seealso marker="#get-2">get/2</seealso>, <seealso marker="#reset-2">reset/2</seealso>.</p>
</desc></func>
<func>
-<name>size(Array::array()) -&gt; integer()</name>
+<name name="size" arity="1"/>
<fsummary>Get the number of entries in the array.</fsummary>
<desc><marker id="size-1"/>
<p>Get the number of entries in the array. Entries are numbered
- from 0 to <c>size(Array)-1</c>; hence, this is also the index of the first
+ from 0 to <c>size(<anno>Array</anno>)-1</c>; hence, this is also the index of the first
entry that is guaranteed to not have been previously set.</p>
<p><em>See also:</em> <seealso marker="#set-3">set/3</seealso>, <seealso marker="#sparse_size-1">sparse_size/1</seealso>.</p>
</desc></func>
<func>
-<name>sparse_foldl(Function, InitialAcc::term(), Array::array()) -&gt; term()</name>
+<name name="sparse_foldl" arity="3"/>
<fsummary>Fold the elements of the array using the given function and
initial accumulator value, skipping default-valued entries.</fsummary>
-<type>
-<v>Function = (Index::integer(), Value::term(), Acc::term()) -&gt; term()</v></type>
<desc><marker id="sparse_foldl-3"/>
<p>Fold the elements of the array using the given function and
initial accumulator value, skipping default-valued entries. The
elements are visited in order from the lowest index to the highest.
- If <c>Function</c> is not a function, the call fails with reason <c>badarg</c>.
+ If <c><anno>Function</anno></c> is not a function, the call fails with reason <c>badarg</c>.
</p>
<p><em>See also:</em> <seealso marker="#foldl-3">foldl/3</seealso>, <seealso marker="#sparse_foldr-3">sparse_foldr/3</seealso>.</p>
</desc></func>
<func>
-<name>sparse_foldr(Function, InitialAcc::term(), Array::array()) -&gt; term()</name>
+<name name="sparse_foldr" arity="3"/>
<fsummary>Fold the elements of the array right-to-left using the given
function and initial accumulator value, skipping default-valued
entries.</fsummary>
-<type>
-<v>Function = (Index::integer(), Value::term(), Acc::term()) -&gt; term()</v></type>
<desc><marker id="sparse_foldr-3"/>
<p>Fold the elements of the array right-to-left using the given
function and initial accumulator value, skipping default-valued
entries. The elements are visited in order from the highest index to
- the lowest. If <c>Function</c> is not a function, the call fails with
+ the lowest. If <c><anno>Function</anno></c> is not a function, the call fails with
reason <c>badarg</c>.
</p>
<p><em>See also:</em> <seealso marker="#foldr-3">foldr/3</seealso>, <seealso marker="#sparse_foldl-3">sparse_foldl/3</seealso>.</p>
</desc></func>
<func>
-<name>sparse_map(Function, Array::array()) -&gt; array()</name>
+<name name="sparse_map" arity="2"/>
<fsummary>Map the given function onto each element of the array, skipping
default-valued entries.</fsummary>
-<type>
-<v>Function = (Index::integer(), Value::term()) -&gt; term()</v></type>
<desc><marker id="sparse_map-2"/>
<p>Map the given function onto each element of the array, skipping
default-valued entries. The elements are visited in order from the
- lowest index to the highest. If <c>Function</c> is not a function, the
+ lowest index to the highest. If <c><anno>Function</anno></c> is not a function, the
call fails with reason <c>badarg</c>.
</p>
<p><em>See also:</em> <seealso marker="#map-2">map/2</seealso>.</p>
</desc></func>
<func>
-<name>sparse_size(A::array()) -&gt; integer()</name>
+<name name="sparse_size" arity="1"/>
<fsummary>Get the number of entries in the array up until the last
non-default valued entry.</fsummary>
@@ -436,7 +439,7 @@ cannot be changed once the array has been created.</p>
<p><em>See also:</em> <seealso marker="#resize-1">resize/1</seealso>, <seealso marker="#size-1">size/1</seealso>.</p>
</desc></func>
<func>
-<name>sparse_to_list(Array::array()) -&gt; list()</name>
+<name name="sparse_to_list" arity="1"/>
<fsummary>Converts the array to a list, skipping default-valued entries.</fsummary>
<desc><marker id="sparse_to_list-1"/>
@@ -446,7 +449,7 @@ cannot be changed once the array has been created.</p>
<p><em>See also:</em> <seealso marker="#to_list-1">to_list/1</seealso>.</p>
</desc></func>
<func>
-<name>sparse_to_orddict(Array::array()) -&gt; [{Index::integer(), Value::term()}]</name>
+<name name="sparse_to_orddict" arity="1"/>
<fsummary>Convert the array to an ordered list of pairs {Index, Value},
skipping default-valued entries.</fsummary>
@@ -458,7 +461,7 @@ cannot be changed once the array has been created.</p>
<p><em>See also:</em> <seealso marker="#to_orddict-1">to_orddict/1</seealso>.</p>
</desc></func>
<func>
-<name>to_list(Array::array()) -&gt; list()</name>
+<name name="to_list" arity="1"/>
<fsummary>Converts the array to a list.</fsummary>
<desc><marker id="to_list-1"/>
@@ -468,7 +471,7 @@ cannot be changed once the array has been created.</p>
<p><em>See also:</em> <seealso marker="#from_list-2">from_list/2</seealso>, <seealso marker="#sparse_to_list-1">sparse_to_list/1</seealso>.</p>
</desc></func>
<func>
-<name>to_orddict(Array::array()) -&gt; [{Index::integer(), Value::term()}]</name>
+<name name="to_orddict" arity="1"/>
<fsummary>Convert the array to an ordered list of pairs {Index, Value}.</fsummary>
<desc><marker id="to_orddict-1"/>
diff --git a/lib/stdlib/doc/src/base64.xml b/lib/stdlib/doc/src/base64.xml
index d3fd7a843b..bfe8494a73 100644
--- a/lib/stdlib/doc/src/base64.xml
+++ b/lib/stdlib/doc/src/base64.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2007</year><year>2009</year>
+ <year>2007</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -33,32 +33,33 @@
<description>
<p>Implements base 64 encode and decode, see RFC2045. </p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="ascii_string"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>encode(Data) -> Base64 </name>
- <name>encode_to_string(Data) -> Base64String</name>
+ <name name="encode" arity="1"/>
+ <name name="encode_to_string" arity="1"/>
<fsummary>Encodes data into base64. </fsummary>
- <type>
- <v>Data = string() | binary()</v>
- <v>Base64 = binary()</v>
- <v>Base64String = string()</v>
- </type>
+ <type variable="Data"/>
+ <type variable="Base64" name_i="1"/>
+ <type variable="Base64String"/>
<desc>
<p>Encodes a plain ASCII string into base64. The result will
be 33% larger than the data.</p>
</desc>
</func>
<func>
- <name>decode(Base64) -> Data</name>
- <name>decode_to_string(Base64) -> DataString</name>
- <name>mime_decode(Base64) -> Data</name>
- <name>mime_decode_to_string(Base64) -> DataString</name>
+ <name name="decode" arity="1"/>
+ <name name="decode_to_string" arity="1"/>
+ <name name="mime_decode" arity="1"/>
+ <name name="mime_decode_to_string" arity="1"/>
<fsummary>Decodes a base64 encoded string to data. </fsummary>
- <type>
- <v>Base64 = string() | binary()</v>
- <v>Data = binary()</v>
- <v>DataString = string()</v>
- </type>
+ <type variable="Base64" name_i="1"/>
+ <type variable="Data" name_i="1"/>
+ <type variable="DataString" name_i="2"/>
<desc>
<p>Decodes a base64 encoded string to plain ASCII. See RFC4648.
<c>mime_decode/1</c> and <c>mime_decode_to_string/1</c>
diff --git a/lib/stdlib/doc/src/beam_lib.xml b/lib/stdlib/doc/src/beam_lib.xml
index adc411e272..013e94c393 100644
--- a/lib/stdlib/doc/src/beam_lib.xml
+++ b/lib/stdlib/doc/src/beam_lib.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2000</year><year>2010</year>
+ <year>2000</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -154,70 +154,78 @@
</section>
</section>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-beam() -> Module | Filename | binary()
- Module = atom()
- Filename = string() | atom()</code>
- <p>Each of the functions described below accept either the module
- name, the filename, or a binary containing the beam module.</p>
- <code type="none">
-chunkdata() = {ChunkId, DataB} | {ChunkName, DataT}
- ChunkId = chunkid()
- DataB = binary()
- {ChunkName, DataT} =
- {abstract_code, AbstractCode}
- | {attributes, [{Attribute, [AttributeValue]}]}
- | {compile_info, [{InfoKey, [InfoValue]}]}
- | {exports, [{Function, Arity}]}
- | {labeled_exports, [{Function, Arity, Label}]}
- | {imports, [{Module, Function, Arity}]}
- | {indexed_imports, [{Index, Module, Function, Arity}]}
- | {locals, [{Function, Arity}]}]}
- | {labeled_locals, [{Function, Arity, Label}]}]}
- | {atoms, [{integer(), atom()}]}
- AbstractCode = {AbstVersion, Forms} | no_abstract_code
- AbstVersion = atom()
- Attribute = atom()
- AttributeValue = term()
- Module = Function = atom()
- Arity = int()
- Label = int()</code>
- <p>It is not checked that the forms conform to the abstract format
- indicated by <c>AbstVersion</c>. <c>no_abstract_code</c> means
- that the <c>"Abst"</c> chunk is present, but empty.</p>
- <p>The list of attributes is sorted on <c>Attribute</c>, and each
- attribute name occurs once in the list. The attribute values
- occur in the same order as in the file. The lists of functions
- are also sorted.</p>
- <code type="none">
-chunkid() = "Abst" | "Attr" | "CInf"
- | "ExpT" | "ImpT" | "LocT"
- | "Atom"
+ <datatypes>
+ <datatype>
+ <name name="beam"/>
+ <desc>
+ <p>Each of the functions described below accept either the
+ module name, the filename, or a binary containing the beam
+ module.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="chunkdata"/>
+ <desc>
+ <p>The list of attributes is sorted on <c>Attribute</c>
+ (in attrib_entry()), and each
+ attribute name occurs once in the list. The attribute values
+ occur in the same order as in the file. The lists of functions
+ are also sorted.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="chunkid"/>
+ <desc>
+ <p>"Abst" | "Attr" | "CInf" | "ExpT" | "ImpT" | "LocT" | "Atom"</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="dataB"/>
+ </datatype>
+ <datatype>
+ <name name="abst_code"/>
+ <desc>
+ <p>It is not checked that the forms conform to the abstract format
+ indicated by <c><anno>AbstVersion</anno></c>. <c>no_abstract_code</c> means
+ that the <c>"Abst"</c> chunk is present, but empty.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="forms"/>
+ </datatype>
+ <datatype>
+ <name name="compinfo_entry"/>
+ </datatype>
+ <datatype>
+ <name name="attrib_entry"/>
+ </datatype>
+ <datatype>
+ <name name="labeled_entry"/>
+ </datatype>
+ <datatype>
+ <name name="index"/>
+ </datatype>
+ <datatype>
+ <name name="label"/>
+ </datatype>
+ <datatype>
+ <name name="chunkref"/>
+ </datatype>
+ <datatype>
+ <name name="chunkname"/>
+ </datatype>
+ <datatype>
+ <name name="chnk_rsn"/>
+ </datatype>
+ <datatype>
+ <name name="info_rsn"/>
+ </datatype>
+ </datatypes>
-chunkname() = abstract_code | attributes | compile_info
- | exports | labeled_exports
- | imports | indexed_imports
- | locals | labeled_locals
- | atoms
-
-chunkref() = chunkname() | chunkid()</code>
- </section>
<funcs>
<func>
- <name>chunks(Beam, [ChunkRef]) -> {ok, {Module, [ChunkData]}} | {error, beam_lib, Reason}</name>
+ <name name="chunks" arity="2"/>
<fsummary>Read selected chunks from a BEAM file or binary</fsummary>
- <type>
- <v>Beam = beam()</v>
- <v>ChunkRef = chunkref()</v>
- <v>Module = atom()</v>
- <v>ChunkData = chunkdata()</v>
- <v>Reason = {unknown_chunk, Filename, atom()}</v>
- <v>&nbsp;&nbsp;| {key_missing_or_invalid, Filename, abstract_code}</v>
- <v>&nbsp;&nbsp;| Reason1 -- see info/1</v>
- <v>&nbsp;Filename = string()</v>
- </type>
<desc>
<p>Reads chunk data for selected chunks refs. The order of
the returned list of chunk data is determined by the order
@@ -225,43 +233,26 @@ chunkref() = chunkname() | chunkid()</code>
</desc>
</func>
<func>
- <name>chunks(Beam, [ChunkRef], [Option]) -> {ok, {Module, [ChunkResult]}} | {error, beam_lib, Reason}</name>
+ <name name="chunks" arity="3"/>
<fsummary>Read selected chunks from a BEAM file or binary</fsummary>
- <type>
- <v>Beam = beam()</v>
- <v>ChunkRef = chunkref()</v>
- <v>Module = atom()</v>
- <v>Option = allow_missing_chunks</v>
- <v>ChunkResult = {chunkref(), ChunkContents} | {chunkref(), missing_chunk}</v>
- <v>Reason = {missing_chunk, Filename, atom()}</v>
- <v>&nbsp;&nbsp;| {key_missing_or_invalid, Filename, abstract_code}</v>
- <v>&nbsp;&nbsp;| Reason1 -- see info/1</v>
- <v>&nbsp;Filename = string()</v>
- </type>
<desc>
<p>Reads chunk data for selected chunks refs. The order of
the returned list of chunk data is determined by the order
of the list of chunks references.</p>
- <p>By default, if any requested chunk is missing in <c>Beam</c>,
+ <p>By default, if any requested chunk is missing in <c><anno>Beam</anno></c>,
an <c>error</c> tuple is returned.
However, if the option <c>allow_missing_chunks</c> has been given,
a result will be returned even if chunks are missing.
In the result list, any missing chunks will be represented as
- <c>{ChunkRef,missing_chunk}</c>.
+ <c>{<anno>ChunkRef</anno>,missing_chunk}</c>.
Note, however, that if the <c>"Atom"</c> chunk if missing, that is
considered a fatal error and the return value will be an <c>error</c>
tuple.</p>
</desc>
</func>
<func>
- <name>version(Beam) -> {ok, {Module, [Version]}} | {error, beam_lib, Reason}</name>
+ <name name="version" arity="1"/>
<fsummary>Read the BEAM file's module version</fsummary>
- <type>
- <v>Beam = beam()</v>
- <v>Module = atom()</v>
- <v>Version = term()</v>
- <v>Reason -- see chunks/2</v>
- </type>
<desc>
<p>Returns the module version(s). A version is defined by
the module attribute <c>-vsn(Vsn)</c>. If this attribute is
@@ -282,51 +273,30 @@ chunkref() = chunkname() | chunkid()</code>
</desc>
</func>
<func>
- <name>md5(Beam) -> {ok, {Module, MD5}} | {error, beam_lib, Reason}</name>
+ <name name="md5" arity="1"/>
<fsummary>Read the BEAM file's module version</fsummary>
- <type>
- <v>Beam = beam()</v>
- <v>Module = atom()</v>
- <v>MD5 = binary()</v>
- <v>Reason -- see chunks/2</v>
- </type>
<desc>
<p>Calculates an MD5 redundancy check for the code of the module
(compilation date and other attributes are not included).</p>
</desc>
</func>
<func>
- <name>info(Beam) -> [{Item, Info}] | {error, beam_lib, Reason1}</name>
+ <name name="info" arity="1"/>
<fsummary>Information about a BEAM file</fsummary>
- <type>
- <v>Beam = beam()</v>
- <v>Item, Info -- see below</v>
- <v>Reason1 = {chunk_too_big, Filename, ChunkId, ChunkSize, FileSize}</v>
- <v>&nbsp;&nbsp;| {invalid_beam_file, Filename, Pos}</v>
- <v>&nbsp;&nbsp;| {invalid_chunk, Filename, ChunkId}</v>
- <v>&nbsp;&nbsp;| {missing_chunk, Filename, ChunkId}</v>
- <v>&nbsp;&nbsp;| {not_a_beam_file, Filename}</v>
- <v>&nbsp;&nbsp;| {file_error, Filename, Posix}</v>
- <v>&nbsp;Filename = string()</v>
- <v>&nbsp;ChunkId = chunkid()</v>
- <v>&nbsp;ChunkSize = FileSize = int()</v>
- <v>&nbsp;Pos = int()</v>
- <v>&nbsp;Posix = posix() -- see file(3)</v>
- </type>
<desc>
<p>Returns a list containing some information about a BEAM file
as tuples <c>{Item, Info}</c>:</p>
<taglist>
- <tag><c>{file, Filename} | {binary, Binary}</c></tag>
+ <tag><c>{file, <anno>Filename</anno>} | {binary, <anno>Binary</anno>}</c></tag>
<item>
<p>The name (string) of the BEAM file, or the binary from
which the information was extracted.</p>
</item>
- <tag><c>{module, Module}</c></tag>
+ <tag><c>{module, <anno>Module</anno>}</c></tag>
<item>
<p>The name (atom) of the module.</p>
</item>
- <tag><c>{chunks, [{ChunkId, Pos, Size}]}</c></tag>
+ <tag><c>{chunks, [{<anno>ChunkId</anno>, <anno>Pos</anno>, <anno>Size</anno>}]}</c></tag>
<item>
<p>For each chunk, the identifier (string) and the position
and size of the chunk data, in bytes.</p>
@@ -335,17 +305,9 @@ chunkref() = chunkname() | chunkid()</code>
</desc>
</func>
<func>
- <name>cmp(Beam1, Beam2) -> ok | {error, beam_lib, Reason}</name>
+ <name name="cmp" arity="2"/>
<fsummary>Compare two BEAM files</fsummary>
- <type>
- <v>Beam1 = Beam2 = beam()</v>
- <v>Reason = {modules_different, Module1, Module2}</v>
- <v>&nbsp;&nbsp;| {chunks_different, ChunkId}</v>
- <v>&nbsp;&nbsp;| different_chunks</v>
- <v>&nbsp;&nbsp;| Reason1 -- see info/1</v>
- <v>&nbsp;Module1 = Module2 = atom()</v>
- <v>&nbsp;ChunkId = chunkid()</v>
- </type>
+ <type name="cmp_rsn"/>
<desc>
<p>Compares the contents of two BEAM files. If the module names
are the same, and all chunks except for the <c>"CInf"</c> chunk
@@ -356,34 +318,23 @@ chunkref() = chunkname() | chunkid()</code>
</desc>
</func>
<func>
- <name>cmp_dirs(Dir1, Dir2) -> {Only1, Only2, Different} | {error, beam_lib, Reason1}</name>
+ <name name="cmp_dirs" arity="2"/>
<fsummary>Compare the BEAM files in two directories</fsummary>
- <type>
- <v>Dir1 = Dir2 = string() | atom()</v>
- <v>Different = [{Filename1, Filename2}]</v>
- <v>Only1 = Only2 = [Filename]</v>
- <v>Filename = Filename1 = Filename2 = string()</v>
- <v>Reason1 = {not_a_directory, term()} | -- see info/1</v>
- </type>
<desc>
<p>The <c>cmp_dirs/2</c> function compares the BEAM files in
two directories. Only files with extension <c>".beam"</c> are
- compared. BEAM files that exist in directory <c>Dir1</c>
- (<c>Dir2</c>) only are returned in <c>Only1</c>
- (<c>Only2</c>). BEAM files that exist on both directories but
+ compared. BEAM files that exist in directory <c><anno>Dir1</anno></c>
+ (<c><anno>Dir2</anno></c>) only are returned in <c><anno>Only1</anno></c>
+ (<c><anno>Only2</anno></c>). BEAM files that exist on both directories but
are considered different by <c>cmp/2</c> are returned as
- pairs {<c>Filename1</c>, <c>Filename2</c>} where
- <c>Filename1</c> (<c>Filename2</c>) exists in directory
- <c>Dir1</c> (<c>Dir2</c>).</p>
+ pairs {<c><anno>Filename1</anno></c>, <c><anno>Filename2</anno></c>} where
+ <c><anno>Filename1</anno></c> (<c><anno>Filename2</anno></c>) exists in directory
+ <c><anno>Dir1</anno></c> (<c><anno>Dir2</anno></c>).</p>
</desc>
</func>
<func>
- <name>diff_dirs(Dir1, Dir2) -> ok | {error, beam_lib, Reason1}</name>
+ <name name="diff_dirs" arity="2"/>
<fsummary>Compare the BEAM files in two directories</fsummary>
- <type>
- <v>Dir1 = Dir2 = string() | atom()</v>
- <v>Reason1 = {not_a_directory, term()} | -- see info/1</v>
- </type>
<desc>
<p>The <c>diff_dirs/2</c> function compares the BEAM files in
two directories the way <c>cmp_dirs/2</c> does, but names of
@@ -392,13 +343,8 @@ chunkref() = chunkname() | chunkid()</code>
</desc>
</func>
<func>
- <name>strip(Beam1) -> {ok, {Module, Beam2}} | {error, beam_lib, Reason1}</name>
+ <name name="strip" arity="1"/>
<fsummary>Removes chunks not needed by the loader from a BEAM file</fsummary>
- <type>
- <v>Beam1 = Beam2 = beam()</v>
- <v>Module = atom()</v>
- <v>Reason1 -- see info/1</v>
- </type>
<desc>
<p>The <c>strip/1</c> function removes all chunks from a BEAM
file except those needed by the loader. In particular,
@@ -406,15 +352,8 @@ chunkref() = chunkname() | chunkid()</code>
</desc>
</func>
<func>
- <name>strip_files(Files) -> {ok, [{Module, Beam2}]} | {error, beam_lib, Reason1}</name>
+ <name name="strip_files" arity="1"/>
<fsummary>Removes chunks not needed by the loader from BEAM files</fsummary>
- <type>
- <v>Files = [Beam1]</v>
- <v>&nbsp;Beam1 = beam()</v>
- <v>Module = atom()</v>
- <v>Beam2 = beam()</v>
- <v>Reason1 -- see info/1</v>
- </type>
<desc>
<p>The <c>strip_files/1</c> function removes all chunks except
those needed by the loader from BEAM files. In particular,
@@ -424,30 +363,20 @@ chunkref() = chunkname() | chunkid()</code>
</desc>
</func>
<func>
- <name>strip_release(Dir) -> {ok, [{Module, Filename]}} | {error, beam_lib, Reason1}</name>
+ <name name="strip_release" arity="1"/>
<fsummary>Removes chunks not needed by the loader from all BEAM files of a release</fsummary>
- <type>
- <v>Dir = string() | atom()</v>
- <v>Module = atom()</v>
- <v>Filename = string()</v>
- <v>Reason1 = {not_a_directory, term()} | -- see info/1</v>
- </type>
<desc>
<p>The <c>strip_release/1</c> function removes all chunks
except those needed by the loader from the BEAM files of a
- release. <c>Dir</c> should be the installation root
+ release. <c><anno>Dir</anno></c> should be the installation root
directory. For example, the current OTP release can be
stripped with the call
<c>beam_lib:strip_release(code:root_dir())</c>.</p>
</desc>
</func>
<func>
- <name>format_error(Reason) -> Chars</name>
+ <name name="format_error" arity="1"/>
<fsummary>Return an English description of a BEAM read error reply</fsummary>
- <type>
- <v>Reason -- see other functions</v>
- <v>Chars = [char() | Chars]</v>
- </type>
<desc>
<p>Given the error returned by any function in this module,
the function <c>format_error</c> returns a descriptive string
@@ -456,12 +385,11 @@ chunkref() = chunkname() | chunkid()</code>
</desc>
</func>
<func>
- <name>crypto_key_fun(CryptoKeyFun) -> ok | {error, Reason}</name>
+ <name name="crypto_key_fun" arity="1"/>
<fsummary>Register a fun that provides a crypto key</fsummary>
- <type>
- <v>CryptoKeyFun = fun() -- see below</v>
- <v>Reason = badfun | exists | term()</v>
- </type>
+ <type name="crypto_fun"/>
+ <type name="crypto_fun_arg"/>
+ <type name="mode"/>
<desc>
<p>The <c>crypto_key_fun/1</c> function registers a unary fun
that will be called if <c>beam_lib</c> needs to read an
@@ -495,11 +423,8 @@ chunkref() = chunkname() | chunkid()</code>
</desc>
</func>
<func>
- <name>clear_crypto_key_fun() -> {ok, Result}</name>
+ <name name="clear_crypto_key_fun" arity="0"/>
<fsummary>Unregister the current crypto key fun</fsummary>
- <type>
- <v>Result = undefined | term()</v>
- </type>
<desc>
<p>Unregisters the crypto key fun and terminates the process
holding it, started by <c>crypto_key_fun/1</c>.</p>
diff --git a/lib/stdlib/doc/src/binary.xml b/lib/stdlib/doc/src/binary.xml
index c81023862e..88ce77e0d0 100644
--- a/lib/stdlib/doc/src/binary.xml
+++ b/lib/stdlib/doc/src/binary.xml
@@ -5,7 +5,7 @@
<header>
<copyright>
<year>2009</year>
- <year>2010</year>
+ <year>2011</year>
<holder>Ericsson AB, All Rights Reserved</holder>
</copyright>
<legalnotice>
@@ -53,37 +53,35 @@
module.
</p>
</note>
-
-
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
- cp()
- - Opaque data-type representing a compiled search-pattern. Guaranteed to be a tuple()
- to allow programs to distinguish it from non precompiled search patterns.
- </code>
- <code type="none">
- part() = {Start,Length}
- Start = int()
- Length = int()
- - A representaion of a part (or range) in a binary. Start is a
+ <datatypes>
+ <datatype>
+ <name name="cp"/>
+ <desc><p>Opaque data-type representing a compiled
+ search-pattern. Guaranteed to be a tuple() to allow programs to
+ distinguish it from non precompiled search patterns.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="part"/>
+ <desc><p>A representaion of a part (or range) in a binary. Start is a
zero-based offset into a binary() and Length is the length of
that part. As input to functions in this module, a reverse
part specification is allowed, constructed with a negative
Length, so that the part of the binary begins at Start +
Length and is -Length long. This is useful for referencing the
last N bytes of a binary as {size(Binary), -N}. The functions
- in this module always return part()'s with positive Length.
- </code>
- </section>
+ in this module always return part()'s with positive Length.</p>
+ </desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>at(Subject, Pos) -> int()</name>
+ <name>at(Subject, Pos) -> byte()</name>
<fsummary>Returns the byte at a specific position in a binary</fsummary>
<type>
<v>Subject = binary()</v>
- <v>Pos = int() >= 0</v>
+ <v>Pos = integer() >= 0</v>
</type>
<desc>
@@ -95,7 +93,7 @@
</desc>
</func>
<func>
- <name>bin_to_list(Subject) -> list()</name>
+ <name>bin_to_list(Subject) -> [byte()]</name>
<fsummary>Convert a binary to a list of integers</fsummary>
<type>
<v>Subject = binary()</v>
@@ -105,7 +103,7 @@
</desc>
</func>
<func>
- <name>bin_to_list(Subject, PosLen) -> list()</name>
+ <name>bin_to_list(Subject, PosLen) -> [byte()]</name>
<fsummary>Convert a binary to a list of integers</fsummary>
<type>
<v>Subject = binary()</v>
@@ -113,7 +111,7 @@
</type>
<desc>
- <p>Converts <c>Subject</c> to a list of <c>int()</c>s, each representing
+ <p>Converts <c>Subject</c> to a list of <c>byte()</c>s, each representing
the value of one byte. The <c>part()</c> denotes which part of the
<c>binary()</c> to convert. Example:</p>
@@ -126,12 +124,12 @@
</desc>
</func>
<func>
- <name>bin_to_list(Subject, Pos, Len) -> list()</name>
+ <name>bin_to_list(Subject, Pos, Len) -> [byte()]</name>
<fsummary>Convert a binary to a list of integers</fsummary>
<type>
<v>Subject = binary()</v>
- <v>Pos = int()</v>
- <v>Len = int()</v>
+ <v>Pos = integer() >= 0</v>
+ <v>Len = integer() >= 0</v>
</type>
<desc>
<p>The same as<c> bin_to_list(Subject,{Pos,Len})</c>.</p>
@@ -185,7 +183,7 @@
<fsummary>Duplicates a binary N times and creates a new</fsummary>
<type>
<v>Subject = binary()</v>
- <v>N = int() >= 0</v>
+ <v>N = integer() >= 0</v>
</type>
<desc>
<p>Creates a binary with the content of <c>Subject</c> duplicated <c>N</c> times.</p>
@@ -211,7 +209,7 @@
<fsummary>Decode a whole binary into an integer of arbitrary size</fsummary>
<type>
<v>Subject = binary()</v>
- <v>Unsigned = int() >= 0</v>
+ <v>Unsigned = integer() >= 0</v>
</type>
<desc>
<p>The same as <c>decode_unsigned(Subject,big)</c>.</p>
@@ -223,12 +221,12 @@
<type>
<v>Subject = binary()</v>
<v>Endianess = big | little</v>
- <v>Unsigned = int() >= 0</v>
+ <v>Unsigned = integer() >= 0</v>
</type>
<desc>
<p>Converts the binary digit representation, in big or little
- endian, of a positive integer in <c>Subject</c> to an Erlang <c>int()</c>.</p>
+ endian, of a positive integer in <c>Subject</c> to an Erlang <c>integer()</c>.</p>
<p>Example:</p>
@@ -242,7 +240,7 @@
<name>encode_unsigned(Unsigned) -> binary()</name>
<fsummary>Encodes an unsigned integer into the minimal binary</fsummary>
<type>
- <v>Unsigned = int() >= 0</v>
+ <v>Unsigned = integer() >= 0</v>
</type>
<desc>
<p>The same as <c>encode_unsigned(Unsigned,big)</c>.</p>
@@ -252,7 +250,7 @@
<name>encode_unsigned(Unsigned,Endianess) -> binary()</name>
<fsummary>Encodes an unsigned integer into the minimal binary</fsummary>
<type>
- <v>Unsigned = int() >= 0</v>
+ <v>Unsigned = integer() >= 0</v>
<v>Endianess = big | little</v>
</type>
<desc>
@@ -270,7 +268,7 @@
</desc>
</func>
<func>
- <name>first(Subject) -> int()</name>
+ <name>first(Subject) -> byte()</name>
<fsummary>Returns the first byte of a binary</fsummary>
<type>
<v>Subject = binary()</v>
@@ -283,7 +281,7 @@
</desc>
</func>
<func>
- <name>last(Subject) -> int()</name>
+ <name>last(Subject) -> byte()</name>
<fsummary>Returns the last byte of a binary</fsummary>
<type>
<v>Subject = binary()</v>
@@ -306,7 +304,7 @@
</desc>
</func>
<func>
- <name>longest_common_prefix(Binaries) -> int()</name>
+ <name>longest_common_prefix(Binaries) -> integer() >= 0</name>
<fsummary>Returns length of longest common prefix for a set of binaries</fsummary>
<type>
<v>Binaries = [ binary() ]</v>
@@ -327,7 +325,7 @@
</desc>
</func>
<func>
- <name>longest_common_suffix(Binaries) -> int()</name>
+ <name>longest_common_suffix(Binaries) -> integer() >= 0</name>
<fsummary>Returns length of longest common suffix for a set of binaries</fsummary>
<type>
<v>Binaries = [ binary() ]</v>
@@ -450,7 +448,7 @@
[{1,4}]
</code>
- <p>The result shows that &lt;&lt;bcde"&gt;&gt; is selected instead of the
+ <p>The result shows that &lt;&lt;"bcde"&gt;&gt; is selected instead of the
shorter match &lt;&lt;"bc"&gt;&gt; (which would have given raise to one
more match,&lt;&lt;"de"&gt;&gt;). This corresponds to the behavior of posix
regular expressions (and programs like awk), but is not
@@ -506,15 +504,15 @@
<fsummary>Extracts a part of a binary</fsummary>
<type>
<v>Subject = binary()</v>
- <v>Pos = int()</v>
- <v>Len = int()</v>
+ <v>Pos = integer() >= 0</v>
+ <v>Len = integer() >= 0</v>
</type>
<desc>
<p>The same as <c>part(Subject, {Pos, Len})</c>.</p>
</desc>
</func>
<func>
- <name>referenced_byte_size(binary()) -> int()</name>
+ <name>referenced_byte_size(binary()) -> integer() >= 0</name>
<fsummary>Determines the size of the actual binary pointed out by a sub-binary</fsummary>
<desc>
@@ -581,42 +579,28 @@ store(Binary, GBSet) ->
</desc>
</func>
<func>
- <name>replace(Subject,Pattern,Replacement) -> Result</name>
+ <name name="replace" arity="3"/>
<fsummary>Replaces bytes in a binary according to a pattern</fsummary>
- <type>
- <v>Subject = binary()</v>
- <v>Pattern = binary() | [ binary() ] | cp()</v>
- <v>Replacement = binary()</v>
- <v>Result = binary()</v>
- </type>
<desc>
- <p>The same as <c>replace(Subject,Pattern,Replacement,[])</c>.</p>
+ <p>The same as <c>replace(<anno>Subject</anno>,<anno>Pattern</anno>,<anno>Replacement</anno>,[])</c>.</p>
</desc>
</func>
<func>
- <name>replace(Subject,Pattern,Replacement,Options) -> Result</name>
+ <name name="replace" arity="4"/>
<fsummary>Replaces bytes in a binary according to a pattern</fsummary>
- <type>
- <v>Subject = binary()</v>
- <v>Pattern = binary() | [ binary() ] | cp()</v>
- <v>Replacement = binary()</v>
- <v>Result = binary()</v>
- <v>Options = [ Option ]</v>
- <v>Option = global | {scope, part()} | {insert_replaced, InsPos}</v>
- <v>InsPos = OnePos | [ OnePos ]</v>
- <v>OnePos = int() =&lt; byte_size(Replacement)</v>
- </type>
+ <type_desc variable="OnePos">An integer() =&lt; byte_size(<anno>Replacement</anno>)
+ </type_desc>
<desc>
<p>Constructs a new binary by replacing the parts in
- <c>Subject</c> matching <c>Pattern</c> with the content of
- <c>Replacement</c>.</p>
+ <c><anno>Subject</anno></c> matching <c><anno>Pattern</anno></c> with the content of
+ <c><anno>Replacement</anno></c>.</p>
- <p>If the matching sub-part of <c>Subject</c> giving raise to the
+ <p>If the matching sub-part of <c><anno>Subject</anno></c> giving raise to the
replacement is to be inserted in the result, the option
- <c>{insert_replaced, InsPos}</c> will insert the matching part into
- <c>Replacement</c> at the given position (or positions) before actually
- inserting <c>Replacement</c> into the <c>Subject</c>. Example:</p>
+ <c>{insert_replaced, <anno>InsPos</anno>}</c> will insert the matching part into
+ <c><anno>Replacement</anno></c> at the given position (or positions) before actually
+ inserting <c><anno>Replacement</anno></c> into the <c><anno>Subject</anno></c>. Example:</p>
<code>
1> binary:replace(&lt;&lt;"abcde"&gt;&gt;,&lt;&lt;"b"&gt;&gt;,&lt;&lt;"[]"&gt;&gt;,[{insert_replaced,1}]).
@@ -632,42 +616,30 @@ store(Binary, GBSet) ->
&lt;&lt;"a[b-b]c[d-d]e"&gt;&gt;
</code>
- <p>If any position given in <c>InsPos</c> is greater than the size of the replacement binary, a <c>badarg</c> exception is raised.</p>
+ <p>If any position given in <c><anno>InsPos</anno></c> is greater than the size of the replacement binary, a <c>badarg</c> exception is raised.</p>
<p>The options <c>global</c> and <c>{scope, part()}</c> work as for <seealso marker="#split-3">split/3</seealso>. The return type is always a <c>binary()</c>.</p>
- <p>For a description of <c>Pattern</c>, see <seealso marker="#compile_pattern-1">compile_pattern/1</seealso>.</p>
+ <p>For a description of <c><anno>Pattern</anno></c>, see <seealso marker="#compile_pattern-1">compile_pattern/1</seealso>.</p>
</desc>
</func>
<func>
- <name>split(Subject,Pattern) -> Parts</name>
+ <name name="split" arity="2"/>
<fsummary>Splits a binary according to a pattern</fsummary>
- <type>
- <v>Subject = binary()</v>
- <v>Pattern = binary() | [ binary() ] | cp()</v>
- <v>Parts = [ binary() ]</v>
- </type>
<desc>
- <p>The same as <c>split(Subject, Pattern, [])</c>.</p>
+ <p>The same as <c>split(<anno>Subject</anno>, <anno>Pattern</anno>, [])</c>.</p>
</desc>
</func>
<func>
- <name>split(Subject,Pattern,Options) -> Parts</name>
+ <name name="split" arity="3"/>
<fsummary>Splits a binary according to a pattern</fsummary>
- <type>
- <v>Subject = binary()</v>
- <v>Pattern = binary() | [ binary() ] | cp()</v>
- <v>Parts = [ binary() ]</v>
- <v>Options = [ Option ]</v>
- <v>Option = {scope, part()} | trim | global</v>
- </type>
<desc>
- <p>Splits Binary into a list of binaries based on Pattern. If
+ <p>Splits <c><anno>Subject</anno></c> into a list of binaries based on <c><anno>Pattern</anno></c>. If
the option global is not given, only the first occurrence of
- Pattern in Subject will give rise to a split.</p>
+ <c><anno>Pattern</anno></c> in <c><anno>Subject</anno></c> will give rise to a split.</p>
- <p>The parts of Pattern actually found in Subject are not included in the result.</p>
+ <p>The parts of <c><anno>Pattern</anno></c> actually found in <c><anno>Subject</anno></c> are not included in the result.</p>
<p>Example:</p>
@@ -696,7 +668,7 @@ store(Binary, GBSet) ->
<tag>global</tag>
- <item><p>Repeats the split until the <c>Subject</c> is
+ <item><p>Repeats the split until the <c><anno>Subject</anno></c> is
exhausted. Conceptually the global option makes split work on
the positions returned by <seealso marker="#matches-3">matches/3</seealso>,
while it normally
@@ -716,12 +688,12 @@ store(Binary, GBSet) ->
</code>
<p>The return type is always a list of binaries that are all
- referencing <c>Subject</c>. This means that the data in <c>Subject</c> is not
- actually copied to new binaries and that <c>Subject</c> cannot be
+ referencing <c><anno>Subject</anno></c>. This means that the data in <c><anno>Subject</anno></c> is not
+ actually copied to new binaries and that <c><anno>Subject</anno></c> cannot be
garbage collected until the results of the split are no longer
referenced.</p>
- <p>For a description of <c>Pattern</c>, see <seealso marker="#compile_pattern-1">compile_pattern/1</seealso>.</p>
+ <p>For a description of <c><anno>Pattern</anno></c>, see <seealso marker="#compile_pattern-1">compile_pattern/1</seealso>.</p>
</desc>
</func>
diff --git a/lib/stdlib/doc/src/c.xml b/lib/stdlib/doc/src/c.xml
index 19e3ac1f08..ddae388a1b 100644
--- a/lib/stdlib/doc/src/c.xml
+++ b/lib/stdlib/doc/src/c.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -39,43 +39,33 @@
</description>
<funcs>
<func>
- <name>bt(Pid) -> void()</name>
+ <name name="bt" arity="1"/>
<fsummary>Stack backtrace for a process</fsummary>
- <type>
- <v>Pid = pid()</v>
- </type>
<desc>
<p>Stack backtrace for a process. Equivalent to
- <c>erlang:process_display(Pid, backtrace)</c>.</p>
+ <c>erlang:process_display(<anno>Pid</anno>, backtrace)</c>.</p>
</desc>
</func>
<func>
- <name>c(File) -> {ok, Module} | error</name>
- <name>c(File, Options) -> {ok, Module} | error</name>
+ <name name="c" arity="1"/>
+ <name name="c" arity="2"/>
<fsummary>Compile and load code in a file</fsummary>
- <type>
- <v>File = name() -- see filename(3)</v>
- <v>Options = [Opt] -- see compile:file/2</v>
- </type>
<desc>
<p><c>c/1,2</c> compiles and then purges and loads the code for
- a file. <c>Options</c> defaults to []. Compilation is
+ a file. <c><anno>Options</anno></c> defaults to []. Compilation is
equivalent to:</p>
<code type="none">
-compile:file(File, Options ++ [report_errors, report_warnings])</code>
+compile:file(<anno>File</anno>, <anno>Options</anno> ++ [report_errors, report_warnings])</code>
<p>Note that purging the code means that any processes
lingering in old code for the module are killed without
warning. See <c>code/3</c> for more information.</p>
</desc>
</func>
<func>
- <name>cd(Dir) -> void()</name>
+ <name name="cd" arity="1"/>
<fsummary>Change working directory</fsummary>
- <type>
- <v>Dir = name() -- see filename(3)</v>
- </type>
<desc>
- <p>Changes working directory to <c>Dir</c>, which may be a
+ <p>Changes working directory to <c><anno>Dir</anno></c>, which may be a
relative name, and then prints the name of the new working
directory.</p>
<pre>
@@ -84,14 +74,14 @@ compile:file(File, Options ++ [report_errors, report_warnings])</code>
</desc>
</func>
<func>
- <name>flush() -> void()</name>
+ <name name="flush" arity="0"/>
<fsummary>Flush any messages sent to the shell</fsummary>
<desc>
<p>Flushes any messages sent to the shell.</p>
</desc>
</func>
<func>
- <name>help() -> void()</name>
+ <name name="help" arity="0"/>
<fsummary>Help information</fsummary>
<desc>
<p>Displays help information: all valid shell internal commands,
@@ -99,8 +89,8 @@ compile:file(File, Options ++ [report_errors, report_warnings])</code>
</desc>
</func>
<func>
- <name>i() -> void()</name>
- <name>ni() -> void()</name>
+ <name name="i" arity="0"/>
+ <name name="ni" arity="0"/>
<fsummary>Information about the system</fsummary>
<desc>
<p><c>i/0</c> displays information about the system, listing
@@ -109,26 +99,20 @@ compile:file(File, Options ++ [report_errors, report_warnings])</code>
</desc>
</func>
<func>
- <name>i(X, Y, Z) -> void()</name>
+ <name name="i" arity="3"/>
<fsummary>Information about pid &lt;X.Y.Z&gt;</fsummary>
- <type>
- <v>X = Y = Z = int()</v>
- </type>
<desc>
<p>Displays information about a process, Equivalent to
- <c>process_info(pid(X, Y, Z))</c>, but location transparent.</p>
+ <c>process_info(pid(<anno>X</anno>, <anno>Y</anno>, <anno>Z</anno>))</c>, but location transparent.</p>
</desc>
</func>
<func>
- <name>l(Module) -> void()</name>
+ <name name="l" arity="1"/>
<fsummary>Load or reload module</fsummary>
- <type>
- <v>Module = atom()</v>
- </type>
<desc>
<p>Purges and loads, or reloads, a module by calling
- <c>code:purge(Module)</c> followed by
- <c>code:load_file(Module)</c>.</p>
+ <c>code:purge(<anno>Module</anno>)</c> followed by
+ <c>code:load_file(<anno>Module</anno>)</c>.</p>
<p>Note that purging the code means that any processes
lingering in old code for the module are killed without
warning. See <c>code/3</c> for more information.</p>
@@ -136,35 +120,33 @@ compile:file(File, Options ++ [report_errors, report_warnings])</code>
</func>
<func>
<name>lc(Files) -> ok</name>
- <fsummary>Compile a list of files</fsummary>
<type>
<v>Files = [File]</v>
- <v>&nbsp;File = name() -- see filename(3)</v>
+ <v>File = <seealso marker="file#type-filename">file:filename()
+ </seealso></v>
</type>
+ <fsummary>Compile a list of files</fsummary>
<desc>
<p>Compiles a list of files by calling <c>compile:file(File, [report_errors, report_warnings])</c> for each <c>File</c>
in <c>Files</c>.</p>
</desc>
</func>
<func>
- <name>ls() -> void()</name>
+ <name name="ls" arity="0"/>
<fsummary>List files in the current directory</fsummary>
<desc>
<p>Lists files in the current directory.</p>
</desc>
</func>
<func>
- <name>ls(Dir) -> void()</name>
+ <name name="ls" arity="1"/>
<fsummary>List files in a directory</fsummary>
- <type>
- <v>Dir = name() -- see filename(3)</v>
- </type>
<desc>
- <p>Lists files in directory <c>Dir</c>.</p>
+ <p>Lists files in directory <c><anno>Dir</anno></c>.</p>
</desc>
</func>
<func>
- <name>m() -> void()</name>
+ <name name="m" arity="0"/>
<fsummary>Which modules are loaded</fsummary>
<desc>
<p>Displays information about the loaded modules, including
@@ -172,84 +154,67 @@ compile:file(File, Options ++ [report_errors, report_warnings])</code>
</desc>
</func>
<func>
- <name>m(Module) -> void()</name>
+ <name name="m" arity="1"/>
<fsummary>Information about a module</fsummary>
- <type>
- <v>Module = atom()</v>
- </type>
<desc>
- <p>Displays information about <c>Module</c>.</p>
+ <p>Displays information about <c><anno>Module</anno></c>.</p>
</desc>
</func>
<func>
- <name>memory() -> [{Type, Size}]</name>
+ <name name="memory" arity="0"/>
<fsummary>Memory allocation information</fsummary>
- <type>
- <v>Type, Size -- see erlang:memory/0</v>
- </type>
<desc>
<p>Memory allocation information. Equivalent to
- <c>erlang:memory/0</c>.</p>
+ <seealso marker="erts:erlang#memory/0"><c>erlang:memory/0</c>
+ </seealso>.</p>
</desc>
</func>
<func>
- <name>memory(Type) -> Size</name>
- <name>memory([Type]) -> [{Type, Size}]</name>
+ <name name="memory" arity="1" clause_i="1"/>
+ <name name="memory" arity="1" clause_i="2"/>
<fsummary>Memory allocation information</fsummary>
- <type>
- <v>Type, Size -- see erlang:memory/0</v>
- </type>
<desc>
<p>Memory allocation information. Equivalent to
- <c>erlang:memory/1</c>.</p>
+ <seealso marker="erts:erlang#memory/1"><c>erlang:memory/1</c>
+ </seealso>.</p>
</desc>
</func>
<func>
- <name>nc(File) -> {ok, Module} | error</name>
- <name>nc(File, Options) -> {ok, Module} | error</name>
+ <name name="nc" arity="1"/>
+ <name name="nc" arity="2"/>
<fsummary>Compile and load code in a file on all nodes</fsummary>
- <type>
- <v>File = name() -- see filename(3)</v>
- <v>Options = [Opt] -- see compile:file/2</v>
- </type>
<desc>
<p>Compiles and then loads the code for a file on all nodes.
- <c>Options</c> defaults to []. Compilation is equivalent to:</p>
+ <c><anno>Options</anno></c> defaults to []. Compilation is equivalent to:</p>
<code type="none">
-compile:file(File, Opts ++ [report_errors, report_warnings])</code>
+compile:file(<anno>File</anno>, <anno>Options</anno> ++ [report_errors, report_warnings])</code>
</desc>
</func>
<func>
- <name>nl(Module) -> void()</name>
+ <name name="nl" arity="1"/>
<fsummary>Load module on all nodes</fsummary>
- <type>
- <v>Module = atom()</v>
- </type>
<desc>
- <p>Loads <c>Module</c> on all nodes.</p>
+ <p>Loads <c><anno>Module</anno></c> on all nodes.</p>
</desc>
</func>
<func>
- <name>pid(X, Y, Z) -> pid()</name>
+ <name name="pid" arity="3"/>
<fsummary>Convert X,Y,Z to a pid</fsummary>
- <type>
- <v>X = Y = Z = int()</v>
- </type>
<desc>
- <p>Converts <c>X</c>, <c>Y</c>, <c>Z</c> to the pid
+ <p>Converts <c><anno>X</anno></c>, <c><anno>Y</anno></c>, <c><anno>Z</anno></c> to the pid
<c><![CDATA[<X.Y.Z>]]></c>. This function should only be used when
debugging.</p>
</desc>
</func>
<func>
- <name>pwd() -> void()</name>
+ <name name="pwd" arity="0"/>
<fsummary>Print working directory</fsummary>
<desc>
<p>Prints the name of the working directory.</p>
</desc>
</func>
<func>
- <name>q() -> void()</name>
+ <name name="q" arity="0"/>
<fsummary>Quit - shorthand for <c>init:stop()</c></fsummary>
<desc>
<p>This function is shorthand for <c>init:stop()</c>, that is,
@@ -257,8 +222,8 @@ compile:file(File, Opts ++ [report_errors, report_warnings])</code>
</desc>
</func>
<func>
- <name>regs() -> void()</name>
- <name>nregs() -> void()</name>
+ <name name="regs" arity="0"/>
+ <name name="nregs" arity="0"/>
<fsummary>Information about registered processes</fsummary>
<desc>
<p><c>regs/0</c> displays information about all registered
diff --git a/lib/stdlib/doc/src/calendar.xml b/lib/stdlib/doc/src/calendar.xml
index 075c7f9c78..4876b37127 100644
--- a/lib/stdlib/doc/src/calendar.xml
+++ b/lib/stdlib/doc/src/calendar.xml
@@ -73,100 +73,125 @@
week number.</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-date() = {Year, Month, Day}
- Year = int()
- Month = 1..12
- Day = 1..31
-Year cannot be abbreviated. Example: 93 denotes year 93, not 1993.
-Valid range depends on the underlying OS.
-The date tuple must denote a valid date.
+ <datatypes>
+ <datatype>
+ <name name="t_datetime"/>
+ </datatype>
+ <datatype>
+ <name name="t_datetime1970"/>
+ </datatype>
+ <datatype>
+ <name name="t_date"/>
+ </datatype>
+ <datatype>
+ <name name="year"/>
+ <desc><p>Year cannot be abbreviated. Example: 93 denotes year
+ 93, not 1993. Valid range depends on the underlying OS. The
+ date tuple must denote a valid date.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="year1970"/>
+ </datatype>
+ <datatype>
+ <name name="month"/>
+ </datatype>
+ <datatype>
+ <name name="day"/>
+ </datatype>
+ <datatype>
+ <name name="t_time"/>
+ </datatype>
+ <datatype>
+ <name name="hour"/>
+ </datatype>
+ <datatype>
+ <name name="minute"/>
+ </datatype>
+ <datatype>
+ <name name="second"/>
+ </datatype>
+ <datatype>
+ <name name="daynum"/>
+ </datatype>
+ <datatype>
+ <name name="ldom"/>
+ </datatype>
+ <datatype>
+ <name name="t_now"/>
+ <desc><p>See <seealso marker="erts:erlang#now/0">erlang:now/0</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="t_yearweeknum"/>
+ </datatype>
+ <datatype>
+ <name name="weeknum"/>
+ </datatype>
+ </datatypes>
-time() = {Hour, Minute, Second}
- Hour = 0..23
- Minute = Second = 0..59</code>
- </section>
<funcs>
<func>
- <name>date_to_gregorian_days(Date) -> Days</name>
- <name>date_to_gregorian_days(Year, Month, Day) -> Days</name>
+ <name name="date_to_gregorian_days" arity="1"/>
+ <name name="date_to_gregorian_days" arity="3"/>
+ <type variable="Date" name_i="1"/>
+ <type variable="Year"/>
+ <type variable="Month"/>
+ <type variable="Day"/>
<fsummary>Compute the number of days from year 0 up to the given date</fsummary>
- <type>
- <v>Date = date()</v>
- <v>Days = int()</v>
- </type>
<desc>
<p>This function computes the number of gregorian days starting
with year 0 and ending at the given date.</p>
</desc>
</func>
<func>
- <name>datetime_to_gregorian_seconds({Date, Time}) -> Seconds</name>
+ <name name="datetime_to_gregorian_seconds" arity="1"/>
<fsummary>Compute the number of seconds from year 0 up to the given date and time</fsummary>
- <type>
- <v>Date = date()</v>
- <v>Time = time()</v>
- <v>Seconds = int()</v>
- </type>
<desc>
<p>This function computes the number of gregorian seconds
starting with year 0 and ending at the given date and time.</p>
</desc>
</func>
<func>
- <name>day_of_the_week(Date) -> DayNumber</name>
- <name>day_of_the_week(Year, Month, Day) -> DayNumber</name>
+ <name name="day_of_the_week" arity="1"/>
+ <name name="day_of_the_week" arity="3"/>
<fsummary>Compute the day of the week</fsummary>
- <type>
- <v>Date = date()</v>
- <v>DayNumber = 1..7</v>
- </type>
+ <type variable="Date" name_i="1"/>
+ <type variable="Year"/>
+ <type variable="Month"/>
+ <type variable="Day"/>
<desc>
- <p>This function computes the day of the week given <c>Year</c>,
- <c>Month</c> and <c>Day</c>. The return value denotes the day
+ <p>This function computes the day of the week given <c><anno>Year</anno></c>,
+ <c><anno>Month</anno></c> and <c><anno>Day</anno></c>. The return value denotes the day
of the week as <c>1</c>: Monday, <c>2</c>: Tuesday, and so on.</p>
</desc>
</func>
<func>
- <name>gregorian_days_to_date(Days) -> Date</name>
+ <name name="gregorian_days_to_date" arity="1"/>
<fsummary>Compute the date given the number of gregorian days</fsummary>
- <type>
- <v>Days = int()</v>
- <v>Date = date()</v>
- </type>
<desc>
<p>This function computes the date given the number of
gregorian days.</p>
</desc>
</func>
<func>
- <name>gregorian_seconds_to_datetime(Seconds) -> {Date, Time}</name>
+ <name name="gregorian_seconds_to_datetime" arity="1"/>
<fsummary>Compute the date given the number of gregorian days</fsummary>
- <type>
- <v>Seconds = int()</v>
- <v>Date = date()</v>
- <v>Time = time()</v>
- </type>
<desc>
<p>This function computes the date and time from the given
number of gregorian seconds.</p>
</desc>
</func>
<func>
- <name>is_leap_year(Year) -> bool()</name>
+ <name name="is_leap_year" arity="1"/>
<fsummary>Check if a year is a leap year</fsummary>
<desc>
<p>This function checks if a year is a leap year.</p>
</desc>
</func>
<func>
- <name>iso_week_number() -> IsoWeekNumber</name>
+ <name name="iso_week_number" arity="0"/>
<fsummary>Compute the iso week number for the actual date</fsummary>
- <type>
- <v>IsoWeekNumber = {int(), int()}</v>
- </type>
<desc>
<p>This function returns the tuple {Year, WeekNum} representing
the iso week number for the actual date. For determining the
@@ -174,42 +199,34 @@ time() = {Hour, Minute, Second}
</desc>
</func>
<func>
- <name>iso_week_number(Date) -> IsoWeekNumber</name>
+ <name name="iso_week_number" arity="1"/>
<fsummary>Compute the iso week number for the given date</fsummary>
- <type>
- <v>Date = date()</v>
- <v>IsoWeekNumber = {int(), int()}</v>
- </type>
<desc>
<p>This function returns the tuple {Year, WeekNum} representing
the iso week number for the given date.</p>
</desc>
</func>
<func>
- <name>last_day_of_the_month(Year, Month) -> int()</name>
+ <name name="last_day_of_the_month" arity="2"/>
<fsummary>Compute the number of days in a month</fsummary>
<desc>
<p>This function computes the number of days in a month.</p>
</desc>
</func>
<func>
- <name>local_time() -> {Date, Time}</name>
+ <name name="local_time" arity="0"/>
<fsummary>Compute local time</fsummary>
- <type>
- <v>Date = date()</v>
- <v>Time = time()</v>
- </type>
<desc>
<p>This function returns the local time reported by
the underlying operating system.</p>
</desc>
</func>
<func>
- <name>local_time_to_universal_time({Date1, Time1}) -> {Date2, Time2}</name>
+ <name name="local_time_to_universal_time" arity="1"/>
<fsummary>Convert from local time to universal time (deprecated)</fsummary>
<desc>
<p>This function converts from local time to Universal
- Coordinated Time (UTC). <c>Date1</c> must refer to a local
+ Coordinated Time (UTC). <c><anno>DateTime1</anno></c> must refer to a local
date after Jan 1, 1970.</p>
<warning>
<p>This function is deprecated. Use
@@ -222,15 +239,11 @@ time() = {Hour, Minute, Second}
</desc>
</func>
<func>
- <name>local_time_to_universal_time_dst({Date1, Time1}) -> [{Date, Time}]</name>
+ <name name="local_time_to_universal_time_dst" arity="1"/>
<fsummary>Convert from local time to universal time(s)</fsummary>
- <type>
- <v>Date1 = Date = date()</v>
- <v>Time1 = Time = time()</v>
- </type>
<desc>
<p>This function converts from local time to Universal
- Coordinated Time (UTC). <c>Date1</c> must refer to a local
+ Coordinated Time (UTC). <c><anno>DateTime1</anno></c> must refer to a local
date after Jan 1, 1970.</p>
<p>The return value is a list of 0, 1 or 2 possible UTC times:</p>
<taglist>
@@ -258,65 +271,48 @@ time() = {Hour, Minute, Second}
</desc>
</func>
<func>
- <name>now_to_local_time(Now) -> {Date, Time}</name>
+ <name name="now_to_local_time" arity="1"/>
<fsummary>Convert now to local date and time</fsummary>
- <type>
- <v>Now -- see erlang:now/0</v>
- <v>Date = date()</v>
- <v>Time = time()</v>
- </type>
<desc>
<p>This function returns local date and time converted from
the return value from <c>erlang:now()</c>.</p>
</desc>
</func>
<func>
- <name>now_to_universal_time(Now) -> {Date, Time}</name>
- <name>now_to_datetime(Now) -> {Date, Time}</name>
+ <name name="now_to_universal_time" arity="1"/>
+ <name name="now_to_datetime" arity="1"/>
<fsummary>Convert now to date and time</fsummary>
- <type>
- <v>Now -- see erlang:now/0</v>
- <v>Date = date()</v>
- <v>Time = time()</v>
- </type>
<desc>
<p>This function returns Universal Coordinated Time (UTC)
converted from the return value from <c>erlang:now()</c>.</p>
</desc>
</func>
<func>
- <name>seconds_to_daystime(Seconds) -> {Days, Time}</name>
+ <name name="seconds_to_daystime" arity="1"/>
<fsummary>Compute days and time from seconds</fsummary>
- <type>
- <v>Seconds = Days = int()</v>
- <v>Time = time()</v>
- </type>
<desc>
<p>This function transforms a given number of seconds into days,
- hours, minutes, and seconds. The <c>Time</c> part is always
- non-negative, but <c>Days</c> is negative if the argument
- <c>Seconds</c> is.</p>
+ hours, minutes, and seconds. The <c><anno>Time</anno></c> part is always
+ non-negative, but <c><anno>Days</anno></c> is negative if the argument
+ <c><anno>Seconds</anno></c> is.</p>
</desc>
</func>
<func>
- <name>seconds_to_time(Seconds) -> Time</name>
+ <name name="seconds_to_time" arity="1"/>
<fsummary>Compute time from seconds</fsummary>
- <type>
- <v>Seconds = int() &lt; 86400</v>
- <v>Time = time()</v>
- </type>
+ <type name="secs_per_day"/>
<desc>
<p>This function computes the time from the given number of
- seconds. <c>Seconds</c> must be less than the number of
+ seconds. <c><anno>Seconds</anno></c> must be less than the number of
seconds per day (86400).</p>
</desc>
</func>
<func>
- <name>time_difference(T1, T2) -> {Days, Time}</name>
+ <name name="time_difference" arity="2"/>
<fsummary>Compute the difference between two times (deprecated)</fsummary>
<desc>
- <p>This function returns the difference between two <c>{Date, Time}</c> tuples. <c>T2</c> should refer to an epoch later
- than <c>T1</c>.</p>
+ <p>This function returns the difference between two <c>{Date, Time}</c> tuples. <c><anno>T2</anno></c> should refer to an epoch later
+ than <c><anno>T1</anno></c>.</p>
<warning>
<p>This function is obsolete. Use the conversion functions for
gregorian days and seconds instead.</p>
@@ -324,24 +320,17 @@ time() = {Hour, Minute, Second}
</desc>
</func>
<func>
- <name>time_to_seconds(Time) -> Seconds</name>
+ <name name="time_to_seconds" arity="1"/>
<fsummary>Compute the number of seconds since midnight up to the given time</fsummary>
- <type>
- <v>Time = time()</v>
- <v>Seconds = int()</v>
- </type>
+ <type name="secs_per_day"/>
<desc>
<p>This function computes the number of seconds since midnight
up to the specified time.</p>
</desc>
</func>
<func>
- <name>universal_time() -> {Date, Time}</name>
+ <name name="universal_time" arity="0"/>
<fsummary>Compute universal time</fsummary>
- <type>
- <v>Date = date()</v>
- <v>Time = time()</v>
- </type>
<desc>
<p>This function returns the Universal Coordinated Time (UTC)
reported by the underlying operating system. Local time is
@@ -349,25 +338,22 @@ time() = {Hour, Minute, Second}
</desc>
</func>
<func>
- <name>universal_time_to_local_time({Date1, Time1}) -> {Date2, Time2}</name>
+ <name name="universal_time_to_local_time" arity="1"/>
<fsummary>Convert from universal time to local time</fsummary>
- <type>
- <v>Date1 = Date2 = date()</v>
- <v>Time1 = Time2 = time()</v>
- </type>
<desc>
<p>This function converts from Universal Coordinated Time (UTC)
- to local time. <c>Date1</c> must refer to a date after Jan 1,
+ to local time. <c><anno>DateTime</anno></c> must refer to a date after Jan 1,
1970.</p>
</desc>
</func>
<func>
- <name>valid_date(Date) -> bool()</name>
- <name>valid_date(Year, Month, Day) -> bool()</name>
+ <name name="valid_date" arity="1"/>
+ <name name="valid_date" arity="3"/>
+ <type variable="Date" name_i="1"/>
+ <type variable="Year"/>
+ <type variable="Month"/>
+ <type variable="Day"/>
<fsummary>Check if a date is valid</fsummary>
- <type>
- <v>Date = date()</v>
- </type>
<desc>
<p>This function checks if a date is a valid.</p>
</desc>
diff --git a/lib/stdlib/doc/src/dets.xml b/lib/stdlib/doc/src/dets.xml
index b002af6616..2512c84e18 100644
--- a/lib/stdlib/doc/src/dets.xml
+++ b/lib/stdlib/doc/src/dets.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -100,50 +100,99 @@
the process with the error tuple). If given badly formed
arguments, all functions exit the process with a <c>badarg</c>
message.</p>
- <p><em>Types</em></p>
- <pre>
-access() = read | read_write
-auto_save() = infinity | int()
-bindings_cont() = tuple()
-bool() = true | false
-file() = string()
-int() = integer() >= 0
-keypos() = integer() >= 1
-name() = atom() | reference()
-no_slots() = integer() >= 0 | default
-object() = tuple()
-object_cont() = tuple()
-select_cont() = tuple()
-type() = bag | duplicate_bag | set
-version() = 8 | 9 | default </pre>
</description>
+ <datatypes>
+ <datatype>
+ <name name="access"/>
+ </datatype>
+ <datatype>
+ <name name="auto_save"/>
+ </datatype>
+ <datatype>
+ <name name="bindings_cont"/>
+ <desc>
+ <p>Opaque continuation used by <seealso marker="#match/1">
+ <c>match/1</c></seealso> and <seealso marker="#match/3">
+ <c>match/3</c></seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="cont"/>
+ <desc>
+ <p>Opaque continuation used by <seealso marker="#bchunk/2">
+ <c>bchunk/2</c></seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="keypos"/>
+ </datatype>
+ <datatype>
+ <name name="match_spec"/>
+ <desc>
+ <p>Match&nbsp;specifications, see the <seealso
+ marker="erts:match_spec">match specification</seealso>
+ documentation in the ERTS User's Guide and <seealso
+ marker="ms_transform">ms_transform(3).</seealso></p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="no_slots"/>
+ </datatype>
+ <datatype>
+ <name name="object"/>
+ </datatype>
+ <datatype>
+ <name name="object_cont"/>
+ <desc>
+ <p>Opaque continuation used by <seealso marker="#match_object/1">
+ <c>match_object/1</c></seealso> and <seealso marker="#match_object/3">
+ <c>match_object/3</c></seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="pattern"/>
+ <desc>
+ <p>See <seealso marker="ets#match/2">ets:match/2</seealso> for a
+ description of patterns.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="select_cont"/>
+ <desc>
+ <p>Opaque continuation used by <seealso marker="#select/1">
+ <c>select/1</c></seealso> and <seealso marker="#select/3">
+ <c>select/3</c></seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="tab_name"/>
+ </datatype>
+ <datatype>
+ <name name="type"/>
+ </datatype>
+ <datatype>
+ <name name="version"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>all() -> [Name]</name>
+ <name name="all" arity="0"/>
<fsummary>Return a list of the names of all open Dets tables on this node.</fsummary>
- <type>
- <v>Name = name()</v>
- </type>
<desc>
<p>Returns a list of the names of all open tables on this
node.</p>
</desc>
</func>
<func>
- <name>bchunk(Name, Continuation) -> {Continuation2, Data} | '$end_of_table' | {error, Reason}</name>
+ <name name="bchunk" arity="2"/>
<fsummary>Return a chunk of objects stored in a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Continuation = start | cont()</v>
- <v>Continuation2 = cont()</v>
- <v>Data = binary() | tuple()</v>
- </type>
<desc>
<p>Returns a list of objects stored in a table. The exact
representation of the returned objects is not public. The
lists of data can be used for initializing a table by giving
the value <c>bchunk</c> to the <c>format</c> option of the
- <c>init_table/3</c> function. The Mnesia application uses this
+ <seealso marker="#init_table/3"><c>init_table/3</c></seealso>
+ function. The Mnesia application uses this
function for copying open tables.</p>
<p>Unless the table is protected using <c>safe_fixtable/2</c>,
calls to <c>bchunk/2</c> may not work as expected if
@@ -151,24 +200,23 @@ version() = 8 | 9 | default </pre>
<p>The first time <c>bchunk/2</c> is called, an initial
continuation, the atom <c>start</c>, must be provided.</p>
<p>The <c>bchunk/2</c> function returns a tuple
- <c>{Continuation2, Data}</c>, where <c>Data</c> is a list of
- objects. <c>Continuation2</c> is another continuation which is
+ <c>{<anno>Continuation2</anno>, <anno>Data</anno>}</c>,
+ where <c><anno>Data</anno></c> is a list of
+ objects. <c><anno>Continuation2</anno></c> is another continuation
+ which is
to be passed on to a subsequent call to <c>bchunk/2</c>. With
a series of calls to <c>bchunk/2</c> it is possible to extract
all objects of the table.
</p>
<p><c>bchunk/2</c> returns <c>'$end_of_table'</c> when all
- objects have been returned, or <c>{error, Reason}</c> if an
- error occurs.
+ objects have been returned, or <c>{error, <anno>Reason</anno>}</c>
+ if an error occurs.
</p>
</desc>
</func>
<func>
- <name>close(Name) -> ok | {error, Reason} </name>
+ <name name="close" arity="1"/>
<fsummary>Close a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- </type>
<desc>
<p>Closes a table. Only processes that have opened a table are
allowed to close it.
@@ -180,22 +228,16 @@ version() = 8 | 9 | default </pre>
</desc>
</func>
<func>
- <name>delete(Name, Key) -> ok | {error, Reason}</name>
+ <name name="delete" arity="2"/>
<fsummary>Delete all objects with a given key from a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- </type>
<desc>
- <p>Deletes all objects with the key <c>Key</c> from the table
- <c>Name</c>.</p>
+ <p>Deletes all objects with the key <c><anno>Key</anno></c> from
+ the table <c><anno>Name</anno></c>.</p>
</desc>
</func>
<func>
- <name>delete_all_objects(Name) -> ok | {error, Reason}</name>
+ <name name="delete_all_objects" arity="1"/>
<fsummary>Delete all objects from a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- </type>
<desc>
<p>Deletes all objects from a table in almost constant time.
However, if the table if fixed, <c>delete_all_objects(T)</c>
@@ -203,12 +245,8 @@ version() = 8 | 9 | default </pre>
</desc>
</func>
<func>
- <name>delete_object(Name, Object) -> ok | {error, Reason}</name>
+ <name name="delete_object" arity="2"/>
<fsummary>Delete a given object from a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Object = object()</v>
- </type>
<desc>
<p>Deletes all instances of a given object from a table. If a
table is of type <c>bag</c> or <c>duplicate_bag</c>, the
@@ -218,18 +256,15 @@ version() = 8 | 9 | default </pre>
</desc>
</func>
<func>
- <name>first(Name) -> Key | '$end_of_table'</name>
+ <name name="first" arity="1"/>
<fsummary>Return the first key stored in a Dets table.</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Name = name()</v>
- </type>
<desc>
- <p>Returns the first key stored in the table <c>Name</c>
+ <p>Returns the first key stored in the table <c><anno>Name</anno></c>
according to the table's internal order, or
<c>'$end_of_table'</c> if the table is empty.</p>
<p>Unless the table is protected using <c>safe_fixtable/2</c>,
- subsequent calls to <c>next/2</c> may not work as expected if
+ subsequent calls to <seealso marker="#next/2"><c>next/2</c></seealso>
+ may not work as expected if
concurrent updates are made to the table.</p>
<p>Should an error occur, the process is exited with an error
tuple <c>{error, Reason}</c>. The reason for not returning the
@@ -243,107 +278,78 @@ version() = 8 | 9 | default </pre>
</desc>
</func>
<func>
- <name>foldl(Function, Acc0, Name) -> Acc1 | {error, Reason}</name>
- <fsummary>Fold a function over a Dets table.</fsummary>
- <type>
- <v>Function = fun(Object, AccIn) -> AccOut</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>Name = name()</v>
- <v>Object = object()</v>
- </type>
- <desc>
- <p>Calls <c>Function</c> on successive elements of the table
- <c>Name</c> together with an extra argument <c>AccIn</c>. The
- order in which the elements of the table are traversed is
- unspecified. <c>Function</c> must return a new accumulator
- which is passed to the next call. <c>Acc0</c> is returned if
- the table is empty.</p>
- </desc>
- </func>
- <func>
- <name>foldr(Function, Acc0, Name) -> Acc1 | {error, Reason}</name>
+ <name name="foldl" arity="3"/>
+ <name name="foldr" arity="3"/>
<fsummary>Fold a function over a Dets table.</fsummary>
- <type>
- <v>Function = fun(Object, AccIn) -> AccOut</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>Name = name()</v>
- <v>Object = object()</v>
- </type>
<desc>
- <p>Calls <c>Function</c> on successive elements of the table
- <c>Name</c> together with an extra argument <c>AccIn</c>. The
+ <p>Calls <c><anno>Function</anno></c> on successive elements of
+ the table <c><anno>Name</anno></c> together with an extra argument
+ <c>AccIn</c>. The
order in which the elements of the table are traversed is
- unspecified. <c>Function</c> must return a new accumulator
- which is passed to the next call. <c>Acc0</c> is returned if
+ unspecified. <c><anno>Function</anno></c> must return a new
+ accumulator which is passed to the next call.
+ <c><anno>Acc0</anno></c> is returned if
the table is empty.</p>
</desc>
</func>
<func>
- <name>from_ets(Name, EtsTab) -> ok | {error, Reason}</name>
+ <name name="from_ets" arity="2"/>
<fsummary>Replace the objects of a Dets table with the objects of an Ets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>EtsTab = -&nbsp;see ets(3)&nbsp;-</v>
- </type>
<desc>
- <p>Deletes all objects of the table <c>Name</c> and then
- inserts all the objects of the Ets table <c>EtsTab</c>. The
- order in which the objects are inserted is not specified.
+ <p>Deletes all objects of the table <c><anno>Name</anno></c> and then
+ inserts all the objects of the Ets table <c><anno>EtsTab</anno></c>.
+ The order in which the objects are inserted is not specified.
Since <c>ets:safe_fixtable/2</c> is called the Ets table must
be public or owned by the calling process.</p>
</desc>
</func>
<func>
- <name>info(Name) -> InfoList | undefined</name>
+ <name name="info" arity="1"/>
<fsummary>Return information about a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>InfoList = [{Item, Value}]</v>
- </type>
<desc>
- <p>Returns information about the table <c>Name</c> as a list of
- <c>{Item, Value}</c> tuples:</p>
+ <p>Returns information about the table <c><anno>Name</anno></c>
+ as a list of tuples:</p>
<list type="bulleted">
<item>
- <p><c>{file_size, int()}</c>, the size of the file in
+ <p><c>{file_size, integer() >= 0}</c>, the size of the file in
bytes.</p>
</item>
<item>
- <p><c>{filename, file()}</c>, the name of the file
- where objects are stored.</p>
+ <p><c>{filename, <seealso marker="file#type-name">file:name()</seealso>}</c>,
+ the name of the file where objects are stored.</p>
</item>
<item>
- <p><c>{keypos, keypos()}</c>, the position of the
- key.</p>
+ <p><c>{keypos, <seealso marker="#type-keypos">keypos()</seealso>}
+ </c>, the position of the key.</p>
</item>
<item>
- <p><c>{size, int()}</c>, the number of objects stored
+ <p><c>{size, integer() >= 0}</c>, the number of objects stored
in the table.</p>
</item>
<item>
- <p><c>{type, type()}</c>, the type of the table.</p>
+ <p><c>{type, <seealso marker="#type-type">type()</seealso>}</c>,
+ the type of the table.</p>
</item>
</list>
</desc>
</func>
<func>
- <name>info(Name, Item) -> Value | undefined</name>
+ <name name="info" arity="2"/>
<fsummary>Return the information associated with a given item for a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- </type>
<desc>
- <p>Returns the information associated with <c>Item</c> for the
- table <c>Name</c>. In addition to the <c>{Item, Value}</c>
+ <p>Returns the information associated with <c><anno>Item</anno></c>
+ for the table <c><anno>Name</anno></c>.
+ In addition to the <c>{<anno>Item</anno>, <anno>Value</anno>}</c>
pairs defined for <c>info/1</c>, the following items are
allowed:</p>
<list type="bulleted">
<item>
- <p><c>{access, access()}</c>, the access mode.</p>
+ <p><c>{access, <seealso marker="#type-access">access()</seealso>}
+ </c>, the access mode.</p>
</item>
<item>
- <p><c>{auto_save, auto_save()}</c>, the auto save
- interval.</p>
+ <p><c>{auto_save, <seealso marker="#type-auto_save">
+ auto_save()</seealso>}</c>, the auto save interval.</p>
</item>
<item>
<p><c>{bchunk_format, binary()}</c>, an opaque binary
@@ -362,21 +368,22 @@ version() = 8 | 9 | default </pre>
<c>erlang:phash2/1</c> BIF is used.</p>
</item>
<item>
- <p><c>{memory, int()}</c>, the size of the file in
+ <p><c>{memory, integer() >= 0}</c>, the size of the file in
bytes. The same value is associated with the item
<c>file_size</c>.</p>
</item>
<item>
- <p><c>{no_keys, int()}</c>, the number of different
+ <p><c>{no_keys, integer >= 0()}</c>, the number of different
keys stored in the table. Only available for version 9
tables.</p>
</item>
<item>
- <p><c>{no_objects, int()}</c>, the number of objects
+ <p><c>{no_objects, integer >= 0()}</c>, the number of objects
stored in the table.</p>
</item>
<item>
- <p><c>{no_slots, {Min, Used, Max}}</c>, the number of
+ <p><c>{no_slots, {</c>Min<c>, </c>Used<c>, </c>Max<c>}}</c>,
+ the number of
slots of the table. <c>Min</c> is the minimum number of
slots, <c>Used</c> is the number of currently used slots,
and <c>Max</c> is the maximum number of slots. Only
@@ -387,7 +394,7 @@ version() = 8 | 9 | default </pre>
handles requests to the Dets table.</p>
</item>
<item>
- <p><c>{ram_file, bool()}</c>, whether the table is
+ <p><c>{ram_file, boolean()}</c>, whether the table is
kept in RAM.</p>
</item>
<item>
@@ -399,32 +406,28 @@ version() = 8 | 9 | default </pre>
table is not fixed, SafeFixed is the atom <c>false</c>.</p>
</item>
<item>
- <p><c>{version, int()}</c>, the version of the format
- of the table.</p>
+ <p><c>{version, integer()</c>, the version of the format of
+ the table.</p>
</item>
</list>
</desc>
</func>
<func>
- <name>init_table(Name, InitFun [, Options]) -> ok | {error, Reason}</name>
+ <name name="init_table" arity="2"/>
+ <name name="init_table" arity="3"/>
<fsummary>Replace all objects of a Dets table.</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>InitFun = fun(Arg) -> Res</v>
- <v>Arg = read | close</v>
- <v>Res = end_of_input | {[object()], InitFun} | {Data, InitFun} | term()</v>
- <v>Data = binary() | tuple()</v>
- </type>
<desc>
- <p>Replaces the existing objects of the table <c>Name</c> with
- objects created by calling the input function <c>InitFun</c>,
+ <p>Replaces the existing objects of the table <c><anno>Name</anno></c>
+ with objects created by calling the input function
+ <c><anno>InitFun</anno></c>,
see below. The reason for using this function rather than
calling <c>insert/2</c> is that of efficiency. It should be
noted that the input functions are called by the process that
handles requests to the Dets table, not by the calling
process.</p>
<p>When called with the argument <c>read</c> the function
- <c>InitFun</c> is assumed to return <c>end_of_input</c> when
+ <c><anno>InitFun</anno></c> is assumed to return
+ <c>end_of_input</c> when
there is no more input, or <c>{Objects, Fun}</c>, where
<c>Objects</c> is a list of objects and <c>Fun</c> is a new
input function. Any other value Value is returned as an error
@@ -448,7 +451,8 @@ version() = 8 | 9 | default </pre>
item <c>no_slots</c>. See also the <c>min_no_slots</c> option
below.
</p>
- <p>The <c>Options</c> argument is a list of <c>{Key, Val}</c>
+ <p>The <c><anno>Options</anno></c> argument is a list of
+ <c>{Key, Val}</c>
tuples where the following values are allowed:</p>
<list type="bulleted">
<item>
@@ -461,87 +465,68 @@ version() = 8 | 9 | default </pre>
</item>
<item>
<p><c>{format, Format}</c>. Specifies the format of the
- objects returned by the function <c>InitFun</c>. If
+ objects returned by the function <c><anno>InitFun</anno></c>. If
<c>Format</c> is <c>term</c> (the default),
- <c>InitFun</c> is assumed to return a list of tuples. If
- <c>Format</c> is <c>bchunk</c>, <c>InitFun</c> is
- assumed to return <c>Data</c> as returned by
- <c>bchunk/2</c>. This option overrides the
+ <c><anno>InitFun</anno></c> is assumed to return a list of tuples. If
+ <c>Format</c> is <c>bchunk</c>, <c><anno>InitFun</anno></c> is
+ assumed to return <c><anno>Data</anno></c> as returned by
+ <seealso marker="#bchunk/2"><c>bchunk/2</c></seealso>.
+ This option overrides the
<c>min_no_slots</c> option.</p>
</item>
</list>
</desc>
</func>
<func>
- <name>insert(Name, Objects) -> ok | {error, Reason}</name>
+ <name name="insert" arity="2"/>
<fsummary>Insert one or more objects into a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Objects = object() | [object()]</v>
- </type>
<desc>
- <p>Inserts one or more objects into the table <c>Name</c>. If
- there already exists an object with a key matching the key of
+ <p>Inserts one or more objects into the table <c><anno>Name</anno></c>.
+ If there already exists an object with a key matching the key of
some of the given objects and the table type is <c>set</c>,
the old object will be replaced.</p>
</desc>
</func>
<func>
- <name>insert_new(Name, Objects) -> Bool</name>
+ <name name="insert_new" arity="2"/>
<fsummary>Insert one or more objects into a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Objects = object() | [object()]</v>
- <v>Bool = bool()</v>
- </type>
<desc>
- <p>Inserts one or more objects into the table <c>Name</c>. If
- there already exists some object with a key matching the key
+ <p>Inserts one or more objects into the table <c><anno>Name</anno></c>.
+ If there already exists some object with a key matching the key
of any of the given objects the table is not updated and
<c>false</c> is returned, otherwise the objects are inserted
and <c>true</c> returned.</p>
</desc>
</func>
<func>
- <name>is_compatible_bchunk_format(Name, BchunkFormat) -> Bool</name>
+ <name name="is_compatible_bchunk_format" arity="2"/>
<fsummary>Test compatibility of a table's chunk data.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>BchunkFormat = binary()</v>
- <v>Bool = bool()</v>
- </type>
<desc>
<p>Returns <c>true</c> if it would be possible to initialize
- the table <c>Name</c>, using <c>init_table/3</c> with the
+ the table <c><anno>Name</anno></c>, using
+ <seealso marker="#init_table/3"><c>init_table/3</c></seealso>
+ with the
option <c>{format,&nbsp;bchunk}</c>, with objects read with
- <c>bchunk/2</c> from some table <c>T</c> such that calling
+ <seealso marker="#bchunk/2"><c>bchunk/2</c></seealso> from some
+ table <c>T</c> such that calling
<c>info(T,&nbsp;bchunk_format)</c> returns
<c>BchunkFormat</c>.</p>
</desc>
</func>
<func>
- <name>is_dets_file(FileName) -> Bool | {error, Reason}</name>
+ <name name="is_dets_file" arity="1"/>
<fsummary>Test for a Dets table.</fsummary>
- <type>
- <v>FileName = file()</v>
- <v>Bool = bool()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if the file <c>FileName</c> is a Dets
- table, <c>false</c> otherwise.</p>
+ <p>Returns <c>true</c> if the file <c><anno>Filename</anno></c>
+ is a Dets table, <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>lookup(Name, Key) -> [Object] | {error, Reason}</name>
+ <name name="lookup" arity="2"/>
<fsummary>Return all objects with a given key stored in a Dets table.</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Name = name()</v>
- <v>Object = object()</v>
- </type>
<desc>
- <p>Returns a list of all objects with the key <c>Key</c>
- stored in the table <c>Name</c>. For example:</p>
+ <p>Returns a list of all objects with the key <c><anno>Key</anno></c>
+ stored in the table <c><anno>Name</anno></c>. For example:</p>
<pre>
2> <input>dets:open_file(abc, [{type, bag}]).</input>
{ok,abc}
@@ -562,71 +547,57 @@ ok
</desc>
</func>
<func>
- <name>match(Continuation) -> {[Match], Continuation2} | '$end_of_table' | {error, Reason}</name>
+ <name name="match" arity="1"/>
<fsummary>Match a chunk of objects stored in a Dets table and return a list of variable bindings.</fsummary>
- <type>
- <v>Continuation = Continuation2 = bindings_cont()</v>
- <v>Match = [term()]</v>
- </type>
<desc>
<p>Matches some objects stored in a table and returns a
non-empty list of the bindings that match a given pattern in
some unspecified order. The table, the pattern, and the number
of objects that are matched are all defined by
- <c>Continuation</c>, which has been returned by a prior call
- to <c>match/1</c> or <c>match/3</c>.</p>
+ <c><anno>Continuation</anno></c>, which has been returned by a prior
+ call to <c>match/1</c> or <c>match/3</c>.</p>
<p>When all objects of the table have been matched,
<c>'$end_of_table'</c> is returned.</p>
</desc>
</func>
<func>
- <name>match(Name, Pattern) -> [Match] | {error, Reason}</name>
+ <name name="match" arity="2"/>
<fsummary>Match the objects stored in a Dets table and return a list of variable bindings.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Pattern = tuple()</v>
- <v>Match = [term()]</v>
- </type>
<desc>
- <p>Returns for each object of the table <c>Name</c> that
- matches <c>Pattern</c> a list of bindings in some unspecified
- order. See <seealso marker="ets">ets(3)</seealso> for a
+ <p>Returns for each object of the table <c><anno>Name</anno></c> that
+ matches <c><anno>Pattern</anno></c> a list of bindings in some unspecified
+ order. See <seealso marker="ets#match/2">ets:match/2</seealso> for a
description of patterns. If the keypos'th element of
- <c>Pattern</c> is unbound, all objects of the table are
+ <c><anno>Pattern</anno></c> is unbound, all objects of the table are
matched. If the keypos'th element is bound, only the
objects with the right key are matched.</p>
</desc>
</func>
<func>
- <name>match(Name, Pattern, N) -> {[Match], Continuation} | '$end_of_table' | {error, Reason}</name>
+ <name name="match" arity="3"/>
<fsummary>Match the first chunk of objects stored in a Dets table and return a list of variable bindings.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Pattern = tuple()</v>
- <v>N = default | int()</v>
- <v>Match = [term()]</v>
- <v>Continuation = bindings_cont()</v>
- </type>
<desc>
- <p>Matches some or all objects of the table <c>Name</c> and
+ <p>Matches some or all objects of the table <c><anno>Name</anno></c> and
returns a non-empty list of the bindings that match
- <c>Pattern</c> in some unspecified order. See <seealso marker="ets">ets(3)</seealso> for a description of
- patterns.</p>
+ <c><anno>Pattern</anno></c> in some unspecified order.
+ See <seealso marker="ets#match/2">ets:match/2</seealso> for a
+ description of patterns.</p>
<p>A tuple of the bindings and a continuation is returned,
unless the table is empty, in which case
<c>'$end_of_table'</c> is returned. The continuation is to be
used when matching further objects by calling
- <c>match/1</c>.</p>
- <p>If the keypos'th element of <c>Pattern</c> is bound, all
- objects of the table are matched. If the keypos'th element is
- unbound, all objects of the table are matched, <c>N</c>
+ <seealso marker="#match/1"><c>match/1</c></seealso>.</p>
+ <p>If the keypos'th element of <c><anno>Pattern</anno></c> is bound,
+ all objects of the table are matched. If the keypos'th element is
+ unbound, all objects of the table are matched, <c><anno>N</anno></c>
objects at a time, until at least one object matches or the
end of the table has been reached. The default, indicated by
- giving <c>N</c> the value <c>default</c>, is to let the number
+ giving <c><anno>N</anno></c> the value <c>default</c>,
+ is to let the number
of objects vary depending on the sizes of the objects. If
- <c>Name</c> is a version 9 table, all objects with the same
+ <c><anno>Name</anno></c> is a version 9 table, all objects with the same
key are always matched at the same time which implies that
- more than N objects may sometimes be matched.
+ more than <anno>N</anno> objects may sometimes be matched.
</p>
<p>The table should always be protected using
<c>safe_fixtable/2</c> before calling <c>match/3</c>, or
@@ -634,15 +605,11 @@ ok
</desc>
</func>
<func>
- <name>match_delete(Name, Pattern) -> ok | {error, Reason}</name>
+ <name name="match_delete" arity="2"/>
<fsummary>Delete all objects that match a given pattern from a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Pattern = tuple()</v>
- </type>
<desc>
- <p>Deletes all objects that match <c>Pattern</c> from the
- table <c>Name</c>.
+ <p>Deletes all objects that match <c><anno>Pattern</anno></c> from the
+ table <c><anno>Name</anno></c>.
See <seealso marker="ets#match/2">ets:match/2</seealso> for a
description of patterns.</p>
<p>If the keypos'th element of <c>Pattern</c> is bound,
@@ -650,17 +617,13 @@ ok
</desc>
</func>
<func>
- <name>match_object(Continuation) -> {[Object], Continuation2} | '$end_of_table' | {error, Reason}</name>
+ <name name="match_object" arity="1"/>
<fsummary>Match a chunk of objects stored in a Dets table and return a list of objects.</fsummary>
- <type>
- <v>Continuation = Continuation2 = object_cont()</v>
- <v>Object = object()</v>
- </type>
<desc>
<p>Returns a non-empty list of some objects stored in a table
that match a given pattern in some unspecified order. The
table, the pattern, and the number of objects that are matched
- are all defined by <c>Continuation</c>, which has been
+ are all defined by <c><anno>Continuation</anno></c>, which has been
returned by a prior call to <c>match_object/1</c> or
<c>match_object/3</c>.</p>
<p>When all objects of the table have been matched,
@@ -668,20 +631,17 @@ ok
</desc>
</func>
<func>
- <name>match_object(Name, Pattern) -> [Object] | {error, Reason}</name>
+ <name name="match_object" arity="2"/>
<fsummary>Match the objects stored in a Dets table and return a list of objects.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Pattern = tuple()</v>
- <v>Object = object()</v>
- </type>
<desc>
- <p>Returns a list of all objects of the table <c>Name</c> that
- match <c>Pattern</c> in some unspecified order. See <seealso marker="ets">ets(3)</seealso> for a description of patterns.
+ <p>Returns a list of all objects of the table <c><anno>Name</anno></c> that
+ match <c><anno>Pattern</anno></c> in some unspecified order.
+ See <seealso marker="ets#match/2">ets:match/2</seealso> for a
+ description of patterns.
</p>
- <p>If the keypos'th element of <c>Pattern</c> is
+ <p>If the keypos'th element of <c><anno>Pattern</anno></c> is
unbound, all objects of the table are matched. If the
- keypos'th element of <c>Pattern</c> is bound, only the
+ keypos'th element of <c><anno>Pattern</anno></c> is bound, only the
objects with the right key are matched.</p>
<p>Using the <c>match_object</c> functions for traversing all
objects of a table is more efficient than calling
@@ -689,34 +649,28 @@ ok
</desc>
</func>
<func>
- <name>match_object(Name, Pattern, N) -> {[Object], Continuation} | '$end_of_table' | {error, Reason}</name>
+ <name name="match_object" arity="3"/>
<fsummary>Match the first chunk of objects stored in a Dets table and return a list of objects.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Pattern = tuple()</v>
- <v>N = default | int()</v>
- <v>Object = object()</v>
- <v>Continuation = object_cont()</v>
- </type>
<desc>
- <p>Matches some or all objects stored in the table <c>Name</c>
+ <p>Matches some or all objects stored in the table <c><anno>Name</anno></c>
and returns a non-empty list of the objects that match
- <c>Pattern</c> in some unspecified order. See <seealso marker="ets">ets(3)</seealso> for a description of
- patterns.</p>
+ <c><anno>Pattern</anno></c> in some unspecified order.
+ See <seealso marker="ets#match/2">ets:match/2</seealso> for a
+ description of patterns.</p>
<p>A list of objects and a continuation is returned, unless
the table is empty, in which case <c>'$end_of_table'</c>
is returned. The continuation is to be used when matching
further objects by calling <c>match_object/1</c>.</p>
- <p>If the keypos'th element of <c>Pattern</c> is bound, all
+ <p>If the keypos'th element of <c><anno>Pattern</anno></c> is bound, all
objects of the table are matched. If the keypos'th element is
- unbound, all objects of the table are matched, <c>N</c>
+ unbound, all objects of the table are matched, <c><anno>N</anno></c>
objects at a time, until at least one object matches or the
end of the table has been reached. The default, indicated by
- giving <c>N</c> the value <c>default</c>, is to let the number
+ giving <c><anno>N</anno></c> the value <c>default</c>, is to let the number
of objects vary depending on the sizes of the objects. If
- <c>Name</c> is a version 9 table, all matching objects with
+ <c><anno>Name</anno></c> is a version 9 table, all matching objects with
the same key are always returned in the same reply which
- implies that more than N objects may sometimes be returned.
+ implies that more than <anno>N</anno> objects may sometimes be returned.
</p>
<p>The table should always be protected using
<c>safe_fixtable/2</c> before calling <c>match_object/3</c>,
@@ -724,43 +678,31 @@ ok
</desc>
</func>
<func>
- <name>member(Name, Key) -> Bool | {error, Reason}</name>
+ <name name="member" arity="2"/>
<fsummary>Test for occurrence of a key in a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Key = term()</v>
- <v>Bool = bool()</v>
- </type>
<desc>
<p>Works like <c>lookup/2</c>, but does not return the
objects. The function returns <c>true</c> if one or more
- elements of the table has the key <c>Key</c>, <c>false</c>
+ elements of the table has the key <c><anno>Key</anno></c>, <c>false</c>
otherwise.</p>
</desc>
</func>
<func>
- <name>next(Name, Key1) -> Key2 | '$end_of_table'</name>
+ <name name="next" arity="2"/>
<fsummary>Return the next key in a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Key1 = Key2 = term()</v>
- </type>
<desc>
- <p>Returns the key following <c>Key1</c> in the table
- <c>Name</c> according to the table's internal order, or
+ <p>Returns the key following <c><anno>Key1</anno></c> in the table
+ <c><anno>Name</anno></c> according to the table's internal order, or
<c>'$end_of_table'</c> if there is no next key.</p>
<p>Should an error occur, the process is exited with an error
tuple <c>{error, Reason}</c>.</p>
- <p>Use <c>first/1</c> to find the first key in the table.</p>
+ <p>Use <seealso marker="#first/1"><c>first/1</c></seealso> to find
+ the first key in the table.</p>
</desc>
</func>
<func>
- <name>open_file(Filename) -> {ok, Reference} | {error, Reason}</name>
+ <name name="open_file" arity="1"/>
<fsummary>Open an existing Dets table.</fsummary>
- <type>
- <v>FileName = file()</v>
- <v>Reference = reference()</v>
- </type>
<desc>
<p>Opens an existing table. If the table has not been properly
closed, it will be repaired. The returned reference is to be
@@ -769,15 +711,12 @@ ok
</desc>
</func>
<func>
- <name>open_file(Name, Args) -> {ok, Name} | {error, Reason}</name>
+ <name name="open_file" arity="2"/>
<fsummary>Open a Dets table.</fsummary>
- <type>
- <v>Name = atom()</v>
- </type>
<desc>
<p>Opens a table. An empty Dets table is created if no file
exists.</p>
- <p>The atom <c>Name</c> is the name of the table. The table
+ <p>The atom <c><anno>Name</anno></c> is the name of the table. The table
name must be provided in all subsequent operations on the
table. The name can be used by other processes as well, and
several process can share one table.
@@ -786,18 +725,20 @@ ok
name and arguments, then the table will have two users. If one
user closes the table, it still remains open until the second
user closes the table.</p>
- <p>The <c>Args</c> argument is a list of <c>{Key, Val}</c>
+ <p>The <c><anno>Args</anno></c> argument is a list of <c>{Key, Val}</c>
tuples where the following values are allowed:</p>
<list type="bulleted">
<item>
- <p><c>{access, access()}</c>. It is possible to open
+ <p><c>{access, <seealso marker="#type-access">
+ access()</seealso>}</c>. It is possible to open
existing tables in read-only mode. A table which is opened
in read-only mode is not subjected to the automatic file
reparation algorithm if it is later opened after a crash.
The default value is <c>read_write</c>.</p>
</item>
<item>
- <p><c>{auto_save, auto_save()}</c>, the auto save
+ <p><c>{auto_save, <seealso marker="#type-auto_save">
+ auto_save()</seealso>}</c>, the auto save
interval. If the interval is an integer <c>Time</c>, the
table is flushed to disk whenever it is not accessed for
<c>Time</c> milliseconds. A table that has been flushed
@@ -807,15 +748,18 @@ ok
is 180000 (3 minutes).</p>
</item>
<item>
- <p><c>{estimated_no_objects, int()}</c>. Equivalent to the
+ <p><c>{estimated_no_objects, <seealso marker="#type-no_slots">
+ no_slots()</seealso>}</c>. Equivalent to the
<c>min_no_slots</c> option.</p>
</item>
<item>
- <p><c>{file, file()}</c>, the name of the file to be
+ <p><c>{file, <seealso marker="file#type-name">
+ file:name()</seealso>}</c>, the name of the file to be
opened. The default value is the name of the table.</p>
</item>
<item>
- <p><c>{max_no_slots, no_slots()}</c>, the maximum number
+ <p><c>{max_no_slots, <seealso marker="#type-no_slots">
+ no_slots()</seealso>}</c>, the maximum number
of slots that will be used. The default value as well as
the maximal value is 32 M. Note that a higher value may
increase the fragmentation of the table, and conversely,
@@ -824,14 +768,16 @@ ok
9 tables.</p>
</item>
<item>
- <p><c>{min_no_slots, no_slots()}</c>. Application
+ <p><c>{min_no_slots, <seealso marker="#type-no_slots">
+ no_slots()</seealso>}</c>. Application
performance can be enhanced with this flag by specifying,
when the table is created, the estimated number of
different keys that will be stored in the table. The
default value as well as the minimum value is 256.</p>
</item>
<item>
- <p><c>{keypos, keypos()}</c>, the position of the
+ <p><c>{keypos, <seealso marker="#type-keypos">
+ keypos()</seealso>}</c>, the position of the
element of each object to be used as key. The default
value is 1. The ability to explicitly state the key
position is most convenient when we want to store Erlang
@@ -839,7 +785,7 @@ ok
name of the record type.</p>
</item>
<item>
- <p><c>{ram_file, bool()}</c>, whether the table is to
+ <p><c>{ram_file, boolean()}</c>, whether the table is to
be kept in RAM. Keeping the table in RAM may sound like an
anomaly, but can enhance the performance of applications
which open a table, insert a set of objects, and then
@@ -849,7 +795,7 @@ ok
</item>
<item>
<p><c>{repair, Value}</c>. <c>Value</c> can be either
- a <c>bool()</c> or the atom <c>force</c>. The flag
+ a <c>boolean()</c> or the atom <c>force</c>. The flag
specifies whether the Dets server should invoke the
automatic file reparation algorithm. The default is
<c>true</c>. If <c>false</c> is specified, there is no
@@ -868,11 +814,12 @@ ok
already open.</p>
</item>
<item>
- <p><c>{type, type()}</c>, the type of the table. The
- default value is <c>set</c>.</p>
+ <p><c>{type, <seealso marker="#type-type">type()</seealso>}</c>,
+ the type of the table. The default value is <c>set</c>.</p>
</item>
<item>
- <p><c>{version, version()}</c>, the version of the format
+ <p><c>{version, <seealso marker="#type-version">
+ version()</seealso>}</c>, the version of the format
used for the table. The default value is <c>9</c>. Tables
on the format used before OTP R8 can be created by giving
the value <c>8</c>. A version 8 table can be converted to
@@ -883,12 +830,8 @@ ok
</desc>
</func>
<func>
- <name>pid2name(Pid) -> {ok, Name} | undefined</name>
+ <name name="pid2name" arity="1"/>
<fsummary>Return the name of the Dets table handled by a pid.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Pid = pid()</v>
- </type>
<desc>
<p>Returns the name of the table given the pid of a process
that handles requests to a table, or <c>undefined</c> if
@@ -897,12 +840,8 @@ ok
</desc>
</func>
<func>
- <name>repair_continuation(Continuation, MatchSpec) -> Continuation2</name>
+ <name name="repair_continuation" arity="2"/>
<fsummary>Repair a continuation from select/1 or select/3.</fsummary>
- <type>
- <v>Continuation = Continuation2 = select_cont()</v>
- <v>MatchSpec = match_spec()</v>
- </type>
<desc>
<p>This function can be used to restore an opaque continuation
returned by <c>select/3</c> or <c>select/1</c> if the
@@ -932,14 +871,11 @@ ok
</desc>
</func>
<func>
- <name>safe_fixtable(Name, Fix)</name>
+ <name name="safe_fixtable" arity="2"/>
<fsummary>Fix a Dets table for safe traversal.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Fix = bool()</v>
- </type>
<desc>
- <p>If <c>Fix</c> is <c>true</c>, the table <c>Name</c> is
+ <p>If <c><anno>Fix</anno></c> is <c>true</c>, the table
+ <c><anno>Name</anno></c> is
fixed (once more) by the calling process, otherwise the table
is released. The table is also released when a fixing process
terminates.
@@ -961,17 +897,13 @@ ok
</desc>
</func>
<func>
- <name>select(Continuation) -> {Selection, Continuation2} | '$end_of_table' | {error, Reason}</name>
+ <name name="select" arity="1"/>
<fsummary>Apply a match specification to some objects stored in a Dets table.</fsummary>
- <type>
- <v>Continuation = Continuation2 = select_cont()</v>
- <v>Selection = [term()]</v>
- </type>
<desc>
<p>Applies a match specification to some objects stored in a
table and returns a non-empty list of the results. The
table, the match specification, and the number of objects
- that are matched are all defined by <c>Continuation</c>,
+ that are matched are all defined by <c><anno>Continuation</anno></c>,
which has been returned by a prior call to <c>select/1</c>
or <c>select/3</c>.</p>
<p>When all objects of the table have been matched,
@@ -979,20 +911,15 @@ ok
</desc>
</func>
<func>
- <name>select(Name, MatchSpec) -> Selection | {error, Reason}</name>
+ <name name="select" arity="2"/>
<fsummary>Apply a match specification to all objects stored in a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>MatchSpec = match_spec()</v>
- <v>Selection = [term()]</v>
- </type>
<desc>
<p>Returns the results of applying the match specification
- <c>MatchSpec</c> to all or some objects stored in the table
- <c>Name</c>. The order of the objects is not specified. See
+ <c><anno>MatchSpec</anno></c> to all or some objects stored in the table
+ <c><anno>Name</anno></c>. The order of the objects is not specified. See
the ERTS User's Guide for a description of match
specifications.</p>
- <p>If the keypos'th element of <c>MatchSpec</c> is
+ <p>If the keypos'th element of <c><anno>MatchSpec</anno></c> is
unbound, the match specification is applied to all objects of
the table. If the keypos'th element is bound, the match
specification is applied to the objects with the right key(s)
@@ -1004,19 +931,12 @@ ok
</desc>
</func>
<func>
- <name>select(Name, MatchSpec, N) -> {Selection, Continuation} | '$end_of_table' | {error, Reason}</name>
+ <name name="select" arity="3"/>
<fsummary>Apply a match specification to the first chunk of objects stored in a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>MatchSpec = match_spec()</v>
- <v>N = default | int()</v>
- <v>Selection = [term()]</v>
- <v>Continuation = select_cont()</v>
- </type>
<desc>
<p>Returns the results of applying the match specification
- <c>MatchSpec</c> to some or all objects stored in the table
- <c>Name</c>. The order of the objects is not specified. See
+ <c><anno>MatchSpec</anno></c> to some or all objects stored in the table
+ <c><anno>Name</anno></c>. The order of the objects is not specified. See
the ERTS User's Guide for a description of match
specifications.</p>
<p>A tuple of the results of applying the match specification
@@ -1024,18 +944,18 @@ ok
in which case <c>'$end_of_table'</c> is returned. The
continuation is to be used when matching further objects by
calling <c>select/1</c>.</p>
- <p>If the keypos'th element of <c>MatchSpec</c> is bound, the
+ <p>If the keypos'th element of <c><anno>MatchSpec</anno></c> is bound, the
match specification is applied to all objects of the table
with the right key(s). If the keypos'th element of
- <c>MatchSpec</c> is unbound, the match specification is
- applied to all objects of the table, <c>N</c> objects at a
+ <c><anno>MatchSpec</anno></c> is unbound, the match specification is
+ applied to all objects of the table, <c><anno>N</anno></c> objects at a
time, until at least one object matches or the end of the
table has been reached. The default, indicated by giving
- <c>N</c> the value <c>default</c>, is to let the number of
+ <c><anno>N</anno></c> the value <c>default</c>, is to let the number of
objects vary depending on the sizes of the objects. If
- <c>Name</c> is a version 9 table, all objects with the same
+ <c><anno>Name</anno></c> is a version 9 table, all objects with the same
key are always handled at the same time which implies that the
- match specification may be applied to more than N objects.
+ match specification may be applied to more than <anno>N</anno> objects.
</p>
<p>The table should always be protected using
<c>safe_fixtable/2</c> before calling <c>select/3</c>, or
@@ -1043,48 +963,35 @@ ok
</desc>
</func>
<func>
- <name>select_delete(Name, MatchSpec) -> N | {error, Reason}</name>
+ <name name="select_delete" arity="2"/>
<fsummary>Delete all objects that match a given pattern from a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>MatchSpec = match_spec()</v>
- <v>N = int()</v>
- </type>
<desc>
- <p>Deletes each object from the table <c>Name</c> such that
- applying the match specification <c>MatchSpec</c> to the
+ <p>Deletes each object from the table <c><anno>Name</anno></c> such that
+ applying the match specification <c><anno>MatchSpec</anno></c> to the
object returns the value <c>true</c>. See the ERTS
User's Guide for a description of match
specifications. Returns the number of deleted objects.</p>
- <p>If the keypos'th element of <c>MatchSpec</c> is
+ <p>If the keypos'th element of <c><anno>MatchSpec</anno></c> is
bound, the match specification is applied to the objects
with the right key(s) only.</p>
</desc>
</func>
<func>
- <name>slot(Name, I) -> '$end_of_table' | [Object] | {error, Reason}</name>
+ <name name="slot" arity="2"/>
<fsummary>Return the list of objects associated with a slot of a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>I = int()</v>
- <v>Object = object()</v>
- </type>
<desc>
<p>The objects of a table are distributed among slots,
starting with slot <c>0</c> and ending with slot n. This
function returns the list of objects associated with slot
- <c>I</c>. If <c>I</c> is greater than n <c>'$end_of_table'</c>
- is returned.</p>
+ <c><anno>I</anno></c>. If <c><anno>I</anno></c> is greater than n
+ <c>'$end_of_table'</c> is returned.</p>
</desc>
</func>
<func>
- <name>sync(Name) -> ok | {error, Reason}</name>
+ <name name="sync" arity="1"/>
<fsummary>Ensure that all updates made to a Dets table are written to disk.</fsummary>
- <type>
- <v>Name = name()</v>
- </type>
<desc>
- <p>Ensures that all updates made to the table <c>Name</c> are
+ <p>Ensures that all updates made to the table <c><anno>Name</anno></c> are
written to disk. This also applies to tables which have been
opened with the <c>ram_file</c> flag set to <c>true</c>. In
this case, the contents of the RAM file are flushed to
@@ -1095,25 +1002,17 @@ ok
</desc>
</func>
<func>
- <name>table(Name [, Options]) -> QueryHandle</name>
+ <name name="table" arity="1"/>
+ <name name="table" arity="2"/>
<fsummary>Return a QLC query handle.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>QueryHandle = -&nbsp;a query handle, see qlc(3)&nbsp;-</v>
- <v>Options = [Option] | Option</v>
- <v>Option = {n_objects, Limit} | {traverse, TraverseMethod}</v>
- <v>Limit = default | integer() >= 1</v>
- <v>TraverseMethod = first_next | select | {select, MatchSpec}</v>
- <v>MatchSpec = match_spec()</v>
- </type>
<desc>
- <p> <marker id="qlc_table"></marker>
-Returns a QLC (Query List
+ <p><marker id="qlc_table"></marker>
+ Returns a QLC (Query List
Comprehension) query handle. The module <c>qlc</c>
implements a query language aimed mainly at Mnesia but Ets
tables, Dets tables, and lists are also recognized by <c>qlc</c>
as sources of data. Calling <c>dets:table/1,2</c> is the
- means to make the Dets table <c>Name</c> usable to <c>qlc</c>.</p>
+ means to make the Dets table <c><anno>Name</anno></c> usable to <c>qlc</c>.</p>
<p>When there are only simple restrictions on the key position
<c>qlc</c> uses <c>dets:lookup/2</c> to look up the keys, but when
that is not possible the whole table is traversed. The
@@ -1137,7 +1036,8 @@ Returns a QLC (Query List
specification that matches all objects.</p>
</item>
<item>
- <p><c>{select, MatchSpec}</c>. As for <c>select</c>
+ <p><c>{select, <seealso marker="#type-match_spec">
+ match_spec()}</seealso></c>. As for <c>select</c>
the table is traversed by calling <c>dets:select/3</c>
and <c>dets:select/1</c>. The difference is that the
match specification is explicitly given. This is how to
@@ -1166,35 +1066,23 @@ true </pre>
</desc>
</func>
<func>
- <name>to_ets(Name, EtsTab) -> EtsTab | {error, Reason}</name>
+ <name name="to_ets" arity="2"/>
<fsummary>Insert all objects of a Dets table into an Ets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>EtsTab = -&nbsp;see ets(3)&nbsp;-</v>
- </type>
<desc>
- <p>Inserts the objects of the Dets table <c>Name</c> into the
- Ets table <c>EtsTab</c>. The order in which the objects are
+ <p>Inserts the objects of the Dets table <c><anno>Name</anno></c> into the
+ Ets table <c><anno>EtsTab</anno></c>. The order in which the objects are
inserted is not specified. The existing objects of the Ets
table are kept unless overwritten.</p>
</desc>
</func>
<func>
- <name>traverse(Name, Fun) -> Return | {error, Reason}</name>
+ <name name="traverse" arity="2"/>
<fsummary>Apply a function to all or some objects stored in a Dets table.</fsummary>
- <type>
- <v>Fun = fun(Object) -> FunReturn</v>
- <v>FunReturn = continue | {continue, Val} | {done, Value}</v>
- <v>Val = Value = term()</v>
- <v>Name = name()</v>
- <v>Object = object()</v>
- <v>Return = [term()]</v>
- </type>
<desc>
- <p>Applies <c>Fun</c> to each object stored in the table
- <c>Name</c> in some unspecified order. Different actions are
- taken depending on the return value of <c>Fun</c>. The
- following <c>Fun</c> return values are allowed:</p>
+ <p>Applies <c><anno>Fun</anno></c> to each object stored in the table
+ <c><anno>Name</anno></c> in some unspecified order. Different actions are
+ taken depending on the return value of <c><anno>Fun</anno></c>. The
+ following <c><anno>Fun</anno></c> return values are allowed:</p>
<taglist>
<tag><c>continue</c></tag>
<item>
@@ -1206,35 +1094,31 @@ fun(X) -> io:format("~p~n", [X]), continue end. </pre>
</item>
<tag><c>{continue, Val}</c></tag>
<item>
- <p>Continue the traversal and accumulate <c>Val</c>. The
+ <p>Continue the traversal and accumulate <c><anno>Val</anno></c>. The
following function is supplied in order to collect all
objects of a table in a list: </p>
<pre>
fun(X) -> {continue, X} end. </pre>
</item>
- <tag><c>{done, Value}</c></tag>
+ <tag><c>{done, <anno>Value</anno>}</c></tag>
<item>
- <p>Terminate the traversal and return <c>[Value | Acc]</c>.</p>
+ <p>Terminate the traversal and return <c>[<anno>Value</anno> | Acc]</c>.</p>
</item>
</taglist>
- <p>Any other value returned by <c>Fun</c> terminates the
+ <p>Any other value returned by <c><anno>Fun</anno></c> terminates the
traversal and is immediately returned.
</p>
</desc>
</func>
<func>
- <name>update_counter(Name, Key, Increment) -> Result</name>
+ <name name="update_counter" arity="3"/>
<fsummary>Update a counter object stored in a Dets table.</fsummary>
- <type>
- <v>Name = name()</v>
- <v>Key = term()</v>
- <v>Increment = {Pos, Incr} | Incr</v>
- <v>Pos = Incr = Result = integer()</v>
- </type>
<desc>
- <p>Updates the object with key <c>Key</c> stored in the table
- <c>Name</c> of type <c>set</c> by adding <c>Incr</c> to the
- element at the <c>Pos</c>:th position. The new counter value
+ <p>Updates the object with key <c><anno>Key</anno></c> stored in the
+ table <c><anno>Name</anno></c> of type <c>set</c> by adding
+ <c><anno>Incr</anno></c> to the
+ element at the <c><anno>Pos</anno></c>:th position.
+ The new counter value
is returned. If no position is specified, the element directly
following the key is updated.</p>
<p>This functions provides a way of updating a counter,
@@ -1252,4 +1136,3 @@ fun(X) -> {continue, X} end. </pre>
<seealso marker="qlc">qlc(3)</seealso></p>
</section>
</erlref>
-
diff --git a/lib/stdlib/doc/src/dict.xml b/lib/stdlib/doc/src/dict.xml
index 0cc76e0c78..b01acd02bf 100644
--- a/lib/stdlib/doc/src/dict.xml
+++ b/lib/stdlib/doc/src/dict.xml
@@ -39,174 +39,120 @@
they do not compare equal (<c>==</c>).</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-dictionary()
- as returned by new/0</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name><marker id="type-dict">dict()</marker></name>
+ <desc><p>Dictionary as returned by <c>new/0</c>.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>append(Key, Value, Dict1) -> Dict2</name>
+ <name name="append" arity="3"/>
<fsummary>Append a value to keys in a dictionary</fsummary>
- <type>
- <v>Key = Value = term()</v>
- <v>Dict1 = Dict2 = dictionary()</v>
- </type>
<desc>
- <p>This function appends a new <c>Value</c> to the current list
- of values associated with <c>Key</c>.</p>
- </desc>
+ <p>This function appends a new <c><anno>Value</anno></c> to the current list
+ of values associated with <c><anno>Key</anno></c>.</p>
+ </desc>
</func>
<func>
- <name>append_list(Key, ValList, Dict1) -> Dict2</name>
+ <name name="append_list" arity="3"/>
<fsummary>Append new values to keys in a dictionary</fsummary>
- <type>
- <v>ValList = [Value]</v>
- <v>Key = Value = term()</v>
- <v>Dict1 = Dict2 = dictionary()</v>
- </type>
<desc>
- <p>This function appends a list of values <c>ValList</c> to
- the current list of values associated with <c>Key</c>. An
+ <p>This function appends a list of values <c><anno>ValList</anno></c> to
+ the current list of values associated with <c><anno>Key</anno></c>. An
exception is generated if the initial value associated with
- <c>Key</c> is not a list of values.</p>
+ <c><anno>Key</anno></c> is not a list of values.</p>
</desc>
</func>
<func>
- <name>erase(Key, Dict1) -> Dict2</name>
+ <name name="erase" arity="2"/>
<fsummary>Erase a key from a dictionary</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Dict1 = Dict2 = dictionary()</v>
- </type>
<desc>
<p>This function erases all items with a given key from a
dictionary.</p>
</desc>
</func>
<func>
- <name>fetch(Key, Dict) -> Value</name>
+ <name name="fetch" arity="2"/>
<fsummary>Look-up values in a dictionary</fsummary>
- <type>
- <v>Key = Value = term()</v>
- <v>Dict = dictionary()</v>
- </type>
<desc>
- <p>This function returns the value associated with <c>Key</c>
- in the dictionary <c>Dict</c>. <c>fetch</c> assumes that
- the <c>Key</c> is present in the dictionary and an exception
- is generated if <c>Key</c> is not in the dictionary.</p>
+ <p>This function returns the value associated with <c><anno>Key</anno></c>
+ in the dictionary <c><anno>Dict</anno></c>. <c>fetch</c> assumes that
+ the <c><anno>Key</anno></c> is present in the dictionary and an exception
+ is generated if <c><anno>Key</anno></c> is not in the dictionary.</p>
</desc>
</func>
<func>
- <name>fetch_keys(Dict) -> Keys</name>
+ <name name="fetch_keys" arity="1"/>
<fsummary>Return all keys in a dictionary</fsummary>
- <type>
- <v>Dict = dictionary()</v>
- <v>Keys = [term()]</v>
- </type>
<desc>
<p>This function returns a list of all keys in the dictionary.</p>
</desc>
</func>
<func>
- <name>filter(Pred, Dict1) -> Dict2</name>
+ <name name="filter" arity="2"/>
<fsummary>Choose elements which satisfy a predicate</fsummary>
- <type>
- <v>Pred = fun(Key, Value) -> bool()</v>
- <v>&nbsp;Key = Value = term()</v>
- <v>Dict1 = Dict2 = dictionary()</v>
- </type>
<desc>
- <p><c>Dict2</c> is a dictionary of all keys and values in
- <c>Dict1</c> for which <c>Pred(Key, Value)</c> is <c>true</c>.</p>
+ <p><c><anno>Dict2</anno></c> is a dictionary of all keys and values in
+ <c><anno>Dict1</anno></c> for which <c><anno>Pred</anno>(<anno>Key</anno>, <anno>Value</anno>)</c> is <c>true</c>.</p>
</desc>
</func>
<func>
- <name>find(Key, Dict) -> {ok, Value} | error</name>
+ <name name="find" arity="2"/>
<fsummary>Search for a key in a dictionary</fsummary>
- <type>
- <v>Key = Value = term()</v>
- <v>Dict = dictionary()</v>
- </type>
<desc>
<p>This function searches for a key in a dictionary. Returns
- <c>{ok, Value}</c> where <c>Value</c> is the value associated
- with <c>Key</c>, or <c>error</c> if the key is not present in
+ <c>{ok, <anno>Value</anno>}</c> where <c><anno>Value</anno></c> is the value associated
+ with <c><anno>Key</anno></c>, or <c>error</c> if the key is not present in
the dictionary.</p>
</desc>
</func>
<func>
- <name>fold(Fun, Acc0, Dict) -> Acc1</name>
+ <name name="fold" arity="3"/>
<fsummary>Fold a function over a dictionary</fsummary>
- <type>
- <v>Fun = fun(Key, Value, AccIn) -> AccOut</v>
- <v>Key = Value = term()</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>Dict = dictionary()</v>
- </type>
<desc>
- <p>Calls <c>Fun</c> on successive keys and values of
- <c>Dict</c> together with an extra argument <c>Acc</c>
- (short for accumulator). <c>Fun</c> must return a new
- accumulator which is passed to the next call. <c>Acc0</c> is
+ <p>Calls <c><anno>Fun</anno></c> on successive keys and values of
+ <c><anno>Dict</anno></c> together with an extra argument <c>Acc</c>
+ (short for accumulator). <c><anno>Fun</anno></c> must return a new
+ accumulator which is passed to the next call. <c><anno>Acc0</anno></c> is
returned if the list is empty. The evaluation order is
undefined.</p>
</desc>
</func>
<func>
- <name>from_list(List) -> Dict</name>
+ <name name="from_list" arity="1"/>
<fsummary>Convert a list of pairs to a dictionary</fsummary>
- <type>
- <v>List = [{Key, Value}]</v>
- <v>Dict = dictionary()</v>
- </type>
<desc>
- <p>This function converts the <c>Key</c> - <c>Value</c> list
- <c>List</c> to a dictionary.</p>
+ <p>This function converts the <c><anno>Key</anno></c> - <c><anno>Value</anno></c> list
+ <c><anno>List</anno></c> to a dictionary.</p>
</desc>
</func>
<func>
- <name>is_key(Key, Dict) -> bool()</name>
+ <name name="is_key" arity="2"/>
<fsummary>Test if a key is in a dictionary</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Dict = dictionary()</v>
- </type>
<desc>
- <p>This function tests if <c>Key</c> is contained in
- the dictionary <c>Dict</c>.</p>
+ <p>This function tests if <c><anno>Key</anno></c> is contained in
+ the dictionary <c><anno>Dict</anno></c>.</p>
</desc>
</func>
<func>
- <name>map(Fun, Dict1) -> Dict2</name>
+ <name name="map" arity="2"/>
<fsummary>Map a function over a dictionary</fsummary>
- <type>
- <v>Fun = fun(Key, Value1) -> Value2</v>
- <v>&nbsp;Key = Value1 = Value2 = term()</v>
- <v>Dict1 = Dict2 = dictionary()</v>
- </type>
<desc>
- <p><c>map</c> calls <c>Func</c> on successive keys and values
- of <c>Dict</c> to return a new value for each key.
+ <p><c>map</c> calls <c><anno>Fun</anno></c> on successive keys and values
+ of <c><anno>Dict1</anno></c> to return a new value for each key.
The evaluation order is undefined.</p>
</desc>
</func>
<func>
- <name>merge(Fun, Dict1, Dict2) -> Dict3</name>
+ <name name="merge" arity="3"/>
<fsummary>Merge two dictionaries</fsummary>
- <type>
- <v>Fun = fun(Key, Value1, Value2) -> Value</v>
- <v>&nbsp;Key = Value1 = Value2 = Value3 = term()</v>
- <v>Dict1 = Dict2 = Dict3 = dictionary()</v>
- </type>
<desc>
- <p><c>merge</c> merges two dictionaries, <c>Dict1</c> and
- <c>Dict2</c>, to create a new dictionary. All the <c>Key</c>
- - <c>Value</c> pairs from both dictionaries are included in
+ <p><c>merge</c> merges two dictionaries, <c><anno>Dict1</anno></c> and
+ <c><anno>Dict2</anno></c>, to create a new dictionary. All the <c><anno>Key</anno></c>
+ - <c><anno>Value</anno></c> pairs from both dictionaries are included in
the new dictionary. If a key occurs in both dictionaries then
- <c>Fun</c> is called with the key and both values to return a
+ <c><anno>Fun</anno></c> is called with the key and both values to return a
new value. <c>merge</c> could be defined as:</p>
<code type="none">
merge(Fun, D1, D2) ->
@@ -217,75 +163,52 @@ merge(Fun, D1, D2) ->
</desc>
</func>
<func>
- <name>new() -> dictionary()</name>
+ <name name="new" arity="0"/>
<fsummary>Create a dictionary</fsummary>
<desc>
<p>This function creates a new dictionary.</p>
</desc>
</func>
<func>
- <name>size(Dict) -> int()</name>
+ <name name="size" arity="1"/>
<fsummary>Return the number of elements in a dictionary</fsummary>
- <type>
- <v>Dict = dictionary()</v>
- </type>
<desc>
- <p>Returns the number of elements in a <c>Dict</c>.</p>
+ <p>Returns the number of elements in a <c><anno>Dict</anno></c>.</p>
</desc>
</func>
<func>
- <name>store(Key, Value, Dict1) -> Dict2</name>
+ <name name="store" arity="3"/>
<fsummary>Store a value in a dictionary</fsummary>
- <type>
- <v>Key = Value = term()</v>
- <v>Dict1 = Dict2 = dictionary()</v>
- </type>
<desc>
- <p>This function stores a <c>Key</c> - <c>Value</c> pair in a
- dictionary. If the <c>Key</c> already exists in <c>Dict1</c>,
- the associated value is replaced by <c>Value</c>.</p>
+ <p>This function stores a <c><anno>Key</anno></c> - <c><anno>Value</anno></c> pair in a
+ dictionary. If the <c><anno>Key</anno></c> already exists in <c><anno>Dict1</anno></c>,
+ the associated value is replaced by <c><anno>Value</anno></c>.</p>
</desc>
</func>
<func>
- <name>to_list(Dict) -> List</name>
+ <name name="to_list" arity="1"/>
<fsummary>Convert a dictionary to a list of pairs</fsummary>
- <type>
- <v>Dict = dictionary()</v>
- <v>List = [{Key, Value}]</v>
- </type>
<desc>
<p>This function converts the dictionary to a list
representation.</p>
</desc>
</func>
<func>
- <name>update(Key, Fun, Dict1) -> Dict2</name>
+ <name name="update" arity="3"/>
<fsummary>Update a value in a dictionary</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Fun = fun(Value1) -> Value2</v>
- <v>&nbsp;Value1 = Value2 = term()</v>
- <v>Dict1 = Dict2 = dictionary()</v>
- </type>
<desc>
- <p>Update a value in a dictionary by calling <c>Fun</c> on
+ <p>Update a value in a dictionary by calling <c><anno>Fun</anno></c> on
the value to get a new value. An exception is generated if
- <c>Key</c> is not present in the dictionary.</p>
+ <c><anno>Key</anno></c> is not present in the dictionary.</p>
</desc>
</func>
<func>
- <name>update(Key, Fun, Initial, Dict1) -> Dict2</name>
+ <name name="update" arity="4"/>
<fsummary>Update a value in a dictionary</fsummary>
- <type>
- <v>Key = Initial = term()</v>
- <v>Fun = fun(Value1) -> Value2</v>
- <v>&nbsp;Value1 = Value2 = term()</v>
- <v>Dict1 = Dict2 = dictionary()</v>
- </type>
<desc>
- <p>Update a value in a dictionary by calling <c>Fun</c> on
- the value to get a new value. If <c>Key</c> is not present
- in the dictionary then <c>Initial</c> will be stored as
+ <p>Update a value in a dictionary by calling <c><anno>Fun</anno></c> on
+ the value to get a new value. If <c><anno>Key</anno></c> is not present
+ in the dictionary then <c><anno>Initial</anno></c> will be stored as
the first value. For example <c>append/3</c> could be defined
as:</p>
<code type="none">
@@ -294,17 +217,12 @@ append(Key, Val, D) ->
</desc>
</func>
<func>
- <name>update_counter(Key, Increment, Dict1) -> Dict2</name>
+ <name name="update_counter" arity="3"/>
<fsummary>Increment a value in a dictionary</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Increment = number()</v>
- <v>Dict1 = Dict2 = dictionary()</v>
- </type>
<desc>
- <p>Add <c>Increment</c> to the value associated with <c>Key</c>
- and store this value. If <c>Key</c> is not present in
- the dictionary then <c>Increment</c> will be stored as
+ <p>Add <c><anno>Increment</anno></c> to the value associated with <c><anno>Key</anno></c>
+ and store this value. If <c><anno>Key</anno></c> is not present in
+ the dictionary then <c><anno>Increment</anno></c> will be stored as
the first value.</p>
<p>This could be defined as:</p>
<code type="none">
diff --git a/lib/stdlib/doc/src/digraph.xml b/lib/stdlib/doc/src/digraph.xml
index ad256e671f..0afc70ebe0 100644
--- a/lib/stdlib/doc/src/digraph.xml
+++ b/lib/stdlib/doc/src/digraph.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -87,67 +87,79 @@
is a digraph that has no cycles.
</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="d_type"/>
+ </datatype>
+ <datatype>
+ <name name="d_cyclicity"/>
+ </datatype>
+ <datatype>
+ <name name="d_protection"/>
+ </datatype>
+ <datatype>
+ <name><marker id="type-digraph">digraph()</marker></name>
+ <desc><p>A digraph as returned by <c>new/0,1</c>.</p></desc>
+ </datatype>
+ <datatype>
+ <name><marker id="type-edge">edge()</marker></name>
+ </datatype>
+ <datatype>
+ <name name="label"/>
+ </datatype>
+ <datatype>
+ <name><marker id="type-vertex">vertex()</marker></name>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>add_edge(G, E, V1, V2, Label) -> edge() | {error, Reason}</name>
- <name>add_edge(G, V1, V2, Label) -> edge() | {error, Reason}</name>
- <name>add_edge(G, V1, V2) -> edge() | {error, Reason}</name>
+ <name name="add_edge" arity="3"/>
+ <name name="add_edge" arity="4"/>
+ <name name="add_edge" arity="5"/>
<fsummary>Add an edge to a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>E = edge()</v>
- <v>V1 = V2 = vertex()</v>
- <v>Label = label()</v>
- <v>Reason = {bad_edge, Path} | {bad_vertex, V}</v>
- <v>Path = [vertex()]</v>
- </type>
+ <type name="add_edge_err_rsn"/>
<desc>
- <p><c>add_edge/5</c> creates (or modifies) the edge <c>E</c>
- of the digraph <c>G</c>, using <c>Label</c> as the (new)
+ <p><c>add_edge/5</c> creates (or modifies) the edge <c><anno>E</anno></c>
+ of the digraph <c><anno>G</anno></c>, using <c><anno>Label</anno></c> as the (new)
<seealso marker="#label">label</seealso> of the edge. The
edge is <seealso marker="#emanate">emanating</seealso> from
- <c>V1</c> and <seealso marker="#incident">incident</seealso>
- on <c>V2</c>. Returns <c>E</c>.
+ <c><anno>V1</anno></c> and <seealso marker="#incident">incident</seealso>
+ on <c><anno>V2</anno></c>. Returns <c><anno>E</anno></c>.
</p>
- <p><c>add_edge(G,&nbsp;V1,&nbsp;V2,&nbsp;Label)</c> is
+ <p><c>add_edge(<anno>G</anno>,&nbsp;<anno>V1</anno>,&nbsp;<anno>V2</anno>,&nbsp;<anno>Label</anno>)</c> is
equivalent to
- <c>add_edge(G,&nbsp;E,&nbsp;V1,&nbsp;V2,&nbsp;Label)</c>,
- where <c>E</c> is a created edge. The created edge is
+ <c>add_edge(<anno>G</anno>,&nbsp;<anno>E</anno>,&nbsp;<anno>V1</anno>,&nbsp;<anno>V2</anno>,&nbsp;<anno>Label</anno>)</c>,
+ where <c><anno>E</anno></c> is a created edge. The created edge is
represented by the term <c>['$e'&nbsp;|&nbsp;N]</c>, where N
is an integer&nbsp;&gt;=&nbsp;0.
</p>
- <p><c>add_edge(G,&nbsp;V1,&nbsp;V2)</c> is equivalent to
- <c>add_edge(G,&nbsp;V1,&nbsp;V2,&nbsp;[])</c>.
+ <p><c>add_edge(<anno>G</anno>,&nbsp;<anno>V1</anno>,&nbsp;<anno>V2</anno>)</c> is equivalent to
+ <c>add_edge(<anno>G</anno>,&nbsp;<anno>V1</anno>,&nbsp;<anno>V2</anno>,&nbsp;[])</c>.
</p>
<p>If the edge would create a cycle in
an <seealso marker="#acyclic_digraph">acyclic digraph</seealso>,
- then <c>{error,&nbsp;{bad_edge,&nbsp;Path}}</c> is returned. If
- either of <c>V1</c> or <c>V2</c> is not a vertex of the
- digraph <c>G</c>, then
- <c>{error,&nbsp;{bad_vertex,&nbsp;</c>V<c>}}</c> is
- returned, V&nbsp;=&nbsp;<c>V1</c> or
- V&nbsp;=&nbsp;<c>V2</c>.
+ then <c>{error,&nbsp;{bad_edge,&nbsp;<anno>Path</anno>}}</c> is returned. If
+ either of <c><anno>V1</anno></c> or <c><anno>V2</anno></c> is not a vertex of the
+ digraph <c><anno>G</anno></c>, then
+ <c>{error,&nbsp;{bad_vertex,&nbsp;</c><anno>V</anno><c>}}</c> is
+ returned, <anno>V</anno>&nbsp;=&nbsp;<c><anno>V1</anno></c> or
+ <anno>V</anno>&nbsp;=&nbsp;<c><anno>V2</anno></c>.
</p>
</desc>
</func>
<func>
- <name>add_vertex(G, V, Label) -> vertex()</name>
- <name>add_vertex(G, V) -> vertex()</name>
- <name>add_vertex(G) -> vertex()</name>
+ <name name="add_vertex" arity="1"/>
+ <name name="add_vertex" arity="2"/>
+ <name name="add_vertex" arity="3"/>
<fsummary>Add or modify a vertex of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V = vertex()</v>
- <v>Label = label()</v>
- </type>
<desc>
- <p><c>add_vertex/3</c> creates (or modifies) the vertex <c>V</c>
- of the digraph <c>G</c>, using <c>Label</c> as the (new)
+ <p><c>add_vertex/3</c> creates (or modifies) the vertex <c><anno>V</anno></c>
+ of the digraph <c><anno>G</anno></c>, using <c><anno>Label</anno></c> as the (new)
<seealso marker="#label">label</seealso> of the
- vertex. Returns <c>V</c>.
+ vertex. Returns <c><anno>V</anno></c>.
</p>
- <p><c>add_vertex(G,&nbsp;V)</c> is equivalent to
- <c>add_vertex(G,&nbsp;V,&nbsp;[])</c>.
+ <p><c>add_vertex(<anno>G</anno>,&nbsp;<anno>V</anno>)</c> is equivalent to
+ <c>add_vertex(<anno>G</anno>,&nbsp;<anno>V</anno>,&nbsp;[])</c>.
</p>
<p><c>add_vertex/1</c> creates a vertex using the empty list
as label, and returns the created vertex. The created vertex
@@ -157,304 +169,227 @@
</desc>
</func>
<func>
- <name>del_edge(G, E) -> true</name>
+ <name name="del_edge" arity="2"/>
<fsummary>Delete an edge from a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>E = edge()</v>
- </type>
<desc>
- <p>Deletes the edge <c>E</c> from the digraph <c>G</c>.
+ <p>Deletes the edge <c><anno>E</anno></c> from the digraph <c><anno>G</anno></c>.
</p>
</desc>
</func>
<func>
- <name>del_edges(G, Edges) -> true</name>
+ <name name="del_edges" arity="2"/>
<fsummary>Delete edges from a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>Edges = [edge()]</v>
- </type>
<desc>
- <p>Deletes the edges in the list <c>Edges</c> from the digraph
- <c>G</c>.
+ <p>Deletes the edges in the list <c><anno>Edges</anno></c> from the digraph
+ <c><anno>G</anno></c>.
</p>
</desc>
</func>
<func>
- <name>del_path(G, V1, V2) -> true</name>
+ <name name="del_path" arity="3"/>
<fsummary>Delete paths from a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V1 = V2 = vertex()</v>
- </type>
<desc>
- <p>Deletes edges from the digraph <c>G</c> until there are no
+ <p>Deletes edges from the digraph <c><anno>G</anno></c> until there are no
<seealso marker="#path">paths</seealso> from the vertex
- <c>V1</c> to the vertex <c>V2</c>.
+ <c><anno>V1</anno></c> to the vertex <c><anno>V2</anno></c>.
</p>
<p>A sketch of the procedure employed: Find an arbitrary
<seealso marker="#simple_path">simple path</seealso>
- v[1],&nbsp;v[2],&nbsp;...,&nbsp;v[k] from <c>V1</c> to
- <c>V2</c> in <c>G</c>. Remove all edges of
- <c>G</c> <seealso marker="#emanate">emanating</seealso> from v[i]
+ v[1],&nbsp;v[2],&nbsp;...,&nbsp;v[k] from <c><anno>V1</anno></c> to
+ <c><anno>V2</anno></c> in <c><anno>G</anno></c>. Remove all edges of
+ <c><anno>G</anno></c> <seealso marker="#emanate">emanating</seealso> from v[i]
and <seealso marker="#incident">incident</seealso> to v[i+1] for
1&nbsp;&lt;=&nbsp;i&nbsp;&lt;&nbsp;k (including multiple
- edges). Repeat until there is no path between <c>V1</c> and
- <c>V2</c>.
+ edges). Repeat until there is no path between <c><anno>V1</anno></c> and
+ <c><anno>V2</anno></c>.
</p>
</desc>
</func>
<func>
- <name>del_vertex(G, V) -> true</name>
+ <name name="del_vertex" arity="2"/>
<fsummary>Delete a vertex from a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V = vertex()</v>
- </type>
<desc>
- <p>Deletes the vertex <c>V</c> from the digraph <c>G</c>. Any
+ <p>Deletes the vertex <c><anno>V</anno></c> from the digraph <c><anno>G</anno></c>. Any
edges <seealso marker="#emanate">emanating</seealso> from
- <c>V</c> or <seealso marker="#incident">incident</seealso>
- on <c>V</c> are also deleted.
+ <c><anno>V</anno></c> or <seealso marker="#incident">incident</seealso>
+ on <c><anno>V</anno></c> are also deleted.
</p>
</desc>
</func>
<func>
- <name>del_vertices(G, Vertices) -> true</name>
+ <name name="del_vertices" arity="2"/>
<fsummary>Delete vertices from a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
- <p>Deletes the vertices in the list <c>Vertices</c> from the
- digraph <c>G</c>.
+ <p>Deletes the vertices in the list <c><anno>Vertices</anno></c> from the
+ digraph <c><anno>G</anno></c>.
</p>
</desc>
</func>
<func>
- <name>delete(G) -> true</name>
+ <name name="delete" arity="1"/>
<fsummary>Delete a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- </type>
<desc>
- <p>Deletes the digraph <c>G</c>. This call is important
- because digraphs are implemented with <c>Ets</c>. There is
- no garbage collection of <c>Ets</c> tables. The digraph
+ <p>Deletes the digraph <c><anno>G</anno></c>. This call is important
+ because digraphs are implemented with <c>ETS</c>. There is
+ no garbage collection of <c>ETS</c> tables. The digraph
will, however, be deleted if the process that created the
digraph terminates.
</p>
</desc>
</func>
<func>
- <name>edge(G, E) -> {E, V1, V2, Label} | false</name>
+ <name name="edge" arity="2"/>
<fsummary>Return the vertices and the label of an edge of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>E = edge()</v>
- <v>V1 = V2 = vertex()</v>
- <v>Label = label()</v>
- </type>
<desc>
- <p>Returns <c>{E,&nbsp;V1,&nbsp;V2,&nbsp;Label}</c> where
- <c>Label</c> is the <seealso marker="#label">label</seealso>
+ <p>Returns <c>{<anno>E</anno>,&nbsp;<anno>V1</anno>,&nbsp;<anno>V2</anno>,&nbsp;<anno>Label</anno>}</c> where
+ <c><anno>Label</anno></c> is the <seealso marker="#label">label</seealso>
of the edge
- <c>E</c> <seealso marker="#emanate">emanating</seealso> from
- <c>V1</c> and <seealso marker="#incident">incident</seealso> on
- <c>V2</c> of the digraph <c>G</c>.
- If there is no edge <c>E</c> of the
- digraph <c>G</c>, then <c>false</c> is returned.
+ <c><anno>E</anno></c> <seealso marker="#emanate">emanating</seealso> from
+ <c><anno>V1</anno></c> and <seealso marker="#incident">incident</seealso> on
+ <c><anno>V2</anno></c> of the digraph <c><anno>G</anno></c>.
+ If there is no edge <c><anno>E</anno></c> of the
+ digraph <c><anno>G</anno></c>, then <c>false</c> is returned.
</p>
</desc>
</func>
<func>
- <name>edges(G) -> Edges</name>
+ <name name="edges" arity="1"/>
<fsummary>Return all edges of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>Edges = [edge()]</v>
- </type>
<desc>
- <p>Returns a list of all edges of the digraph <c>G</c>, in
+ <p>Returns a list of all edges of the digraph <c><anno>G</anno></c>, in
some unspecified order.
</p>
</desc>
</func>
<func>
- <name>edges(G, V) -> Edges</name>
+ <name name="edges" arity="2"/>
<fsummary>Return the edges emanating from or incident on a vertex of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V = vertex()</v>
- <v>Edges = [edge()]</v>
- </type>
<desc>
<p>Returns a list of all
edges <seealso marker="#emanate">emanating</seealso> from
- or <seealso marker="#incident">incident</seealso> on <c>V</c>
- of the digraph <c>G</c>, in some unspecified order.</p>
+ or <seealso marker="#incident">incident</seealso> on <c><anno>V</anno></c>
+ of the digraph <c><anno>G</anno></c>, in some unspecified order.</p>
</desc>
</func>
<func>
- <name>get_cycle(G, V) -> Vertices | false</name>
+ <name name="get_cycle" arity="2"/>
<fsummary>Find one cycle in a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V1 = V2 = vertex()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>If there is
a <seealso marker="#simple_cycle">simple cycle</seealso> of
length two or more through the vertex
- <c>V</c>, then the cycle is returned as a list
- <c>[V,&nbsp;...,&nbsp;V]</c> of vertices, otherwise if there
+ <c><anno>V</anno></c>, then the cycle is returned as a list
+ <c>[<anno>V</anno>,&nbsp;...,&nbsp;<anno>V</anno>]</c> of vertices, otherwise if there
is a <seealso marker="#loop">loop</seealso> through
- <c>V</c>, then the loop is returned as a list <c>[V]</c>. If
- there are no cycles through <c>V</c>, then <c>false</c> is
+ <c><anno>V</anno></c>, then the loop is returned as a list <c>[<anno>V</anno>]</c>. If
+ there are no cycles through <c><anno>V</anno></c>, then <c>false</c> is
returned.
</p>
<p><c>get_path/3</c> is used for finding a simple cycle
- through <c>V</c>.
+ through <c><anno>V</anno></c>.
</p>
</desc>
</func>
<func>
- <name>get_path(G, V1, V2) -> Vertices | false</name>
+ <name name="get_path" arity="3"/>
<fsummary>Find one path in a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V1 = V2 = vertex()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Tries to find
a <seealso marker="#simple_path">simple path</seealso> from
- the vertex <c>V1</c> to the vertex
- <c>V2</c> of the digraph <c>G</c>. Returns the path as a
- list <c>[V1,&nbsp;...,&nbsp;V2]</c> of vertices, or
- <c>false</c> if no simple path from <c>V1</c> to <c>V2</c>
+ the vertex <c><anno>V1</anno></c> to the vertex
+ <c><anno>V2</anno></c> of the digraph <c><anno>G</anno></c>. Returns the path as a
+ list <c>[<anno>V1</anno>,&nbsp;...,&nbsp;<anno>V2</anno>]</c> of vertices, or
+ <c>false</c> if no simple path from <c><anno>V1</anno></c> to <c><anno>V2</anno></c>
of length one or more exists.
</p>
- <p>The digraph <c>G</c> is traversed in a depth-first manner,
+ <p>The digraph <c><anno>G</anno></c> is traversed in a depth-first manner,
and the first path found is returned.
</p>
</desc>
</func>
<func>
- <name>get_short_cycle(G, V) -> Vertices | false</name>
+ <name name="get_short_cycle" arity="2"/>
<fsummary>Find one short cycle in a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V1 = V2 = vertex()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Tries to find an as short as
possible <seealso marker="#simple_cycle">simple cycle</seealso> through
- the vertex <c>V</c> of the digraph <c>G</c>. Returns the cycle
- as a list <c>[V,&nbsp;...,&nbsp;V]</c> of vertices, or
- <c>false</c> if no simple cycle through <c>V</c> exists.
+ the vertex <c><anno>V</anno></c> of the digraph <c>G</c>. Returns the cycle
+ as a list <c>[<anno>V</anno>,&nbsp;...,&nbsp;<anno>V</anno>]</c> of vertices, or
+ <c>false</c> if no simple cycle through <c><anno>V</anno></c> exists.
Note that a <seealso marker="#loop">loop</seealso> through
- <c>V</c> is returned as the list <c>[V,&nbsp;V]</c>.
+ <c><anno>V</anno></c> is returned as the list <c>[<anno>V</anno>,&nbsp;<anno>V</anno>]</c>.
</p>
<p><c>get_short_path/3</c> is used for finding a simple cycle
- through <c>V</c>.
+ through <c><anno>V</anno></c>.
</p>
</desc>
</func>
<func>
- <name>get_short_path(G, V1, V2) -> Vertices | false</name>
+ <name name="get_short_path" arity="3"/>
<fsummary>Find one short path in a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V1 = V2 = vertex()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Tries to find an as short as
possible <seealso marker="#simple_path">simple path</seealso> from
- the vertex <c>V1</c> to the vertex <c>V2</c> of the digraph <c>G</c>.
- Returns the path as a list <c>[V1,&nbsp;...,&nbsp;V2]</c> of
- vertices, or <c>false</c> if no simple path from <c>V1</c>
- to <c>V2</c> of length one or more exists.
+ the vertex <c><anno>V1</anno></c> to the vertex <c><anno>V2</anno></c> of the digraph <c><anno>G</anno></c>.
+ Returns the path as a list <c>[<anno>V1</anno>,&nbsp;...,&nbsp;<anno>V2</anno>]</c> of
+ vertices, or <c>false</c> if no simple path from <c><anno>V1</anno></c>
+ to <c><anno>V2</anno></c> of length one or more exists.
</p>
- <p>The digraph <c>G</c> is traversed in a breadth-first
+ <p>The digraph <c><anno>G</anno></c> is traversed in a breadth-first
manner, and the first path found is returned.
</p>
</desc>
</func>
<func>
- <name>in_degree(G, V) -> integer()</name>
+ <name name="in_degree" arity="2"/>
<fsummary>Return the in-degree of a vertex of a digraph.</fsummary>
- <type>
- <v>G= digraph()</v>
- <v>V = vertex()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#in_degree">in-degree</seealso> of the vertex
- <c>V</c> of the digraph <c>G</c>.
+ <c><anno>V</anno></c> of the digraph <c><anno>G</anno></c>.
</p>
</desc>
</func>
<func>
- <name>in_edges(G, V) -> Edges</name>
+ <name name="in_edges" arity="2"/>
<fsummary>Return all edges incident on a vertex of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V = vertex()</v>
- <v>Edges = [edge()]</v>
- </type>
<desc>
<p>Returns a list of all
edges <seealso marker="#incident">incident</seealso> on
- <c>V</c> of the digraph <c>G</c>, in some unspecified order.
+ <c><anno>V</anno></c> of the digraph <c><anno>G</anno></c>, in some unspecified order.
</p>
</desc>
</func>
<func>
- <name>in_neighbours(G, V) -> Vertices</name>
+ <name name="in_neighbours" arity="2"/>
<fsummary>Return all in-neighbours of a vertex of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V = vertex()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Returns a list of
all <seealso marker="#in_neighbour">in-neighbours</seealso> of
- <c>V</c> of the digraph <c>G</c>, in some unspecified order.
+ <c><anno>V</anno></c> of the digraph <c><anno>G</anno></c>, in some unspecified order.
</p>
</desc>
</func>
<func>
- <name>info(G) -> InfoList</name>
+ <name name="info" arity="1"/>
<fsummary>Return information about a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>InfoList = [{cyclicity, Cyclicity}, {memory, NoWords}, {protection, Protection}]</v>
- <v>Cyclicity = cyclic | acyclic</v>
- <v>Protection = protected | private</v>
- <v>NoWords = integer() >= 0</v>
- </type>
+ <type name="d_cyclicity"/>
+ <type name="d_protection"/>
<desc>
<p>Returns a list of <c>{Tag, Value}</c> pairs describing the
- digraph <c>G</c>. The following pairs are returned:
+ digraph <c><anno>G</anno></c>. The following pairs are returned:
</p>
<list type="bulleted">
<item>
- <p><c>{cyclicity, Cyclicity}</c>, where <c>Cyclicity</c>
+ <p><c>{cyclicity, <anno>Cyclicity</anno>}</c>, where <c><anno>Cyclicity</anno></c>
is <c>cyclic</c> or <c>acyclic</c>, according to the
options given to <c>new</c>.</p>
</item>
<item>
- <p><c>{memory, NoWords}</c>, where <c>NoWords</c> is
- the number of words allocated to the <c>ets</c> tables.</p>
+ <p><c>{memory, <anno>NoWords</anno>}</c>, where <c><anno>NoWords</anno></c> is
+ the number of words allocated to the <c>ETS</c> tables.</p>
</item>
<item>
- <p><c>{protection, Protection}</c>, where <c>Protection</c>
+ <p><c>{protection, <anno>Protection</anno>}</c>, where <c><anno>Protection</anno></c>
is <c>protected</c> or <c>private</c>, according
to the options given to <c>new</c>.</p>
</item>
@@ -462,7 +397,7 @@
</desc>
</func>
<func>
- <name>new() -> digraph()</name>
+ <name name="new" arity="0"/>
<fsummary>Return a protected empty digraph, where cycles are allowed.</fsummary>
<desc>
<p>Equivalent to <c>new([])</c>.
@@ -470,15 +405,16 @@
</desc>
</func>
<func>
- <name>new(Type) -> digraph()</name>
+ <name name="new" arity="1"/>
<fsummary>Create a new empty digraph.</fsummary>
- <type>
- <v>Type = [cyclic | acyclic | private | protected]</v>
- </type>
+ <type variable="Type"/>
+ <type name="d_type"/>
+ <type name="d_cyclicity"/>
+ <type name="d_protection"/>
<desc>
<p>Returns
an <seealso marker="#empty_digraph">empty digraph</seealso> with
- properties according to the options in <c>Type</c>:</p>
+ properties according to the options in <c><anno>Type</anno></c>:</p>
<taglist>
<tag><c>cyclic</c></tag>
<item>Allow <seealso marker="#cycle">cycles</seealso> in the
@@ -491,101 +427,72 @@
<item>The digraph can be read and modified by the creating
process only.</item>
</taglist>
- <p>If an unrecognized type option <c>T</c> is given or <c>Type</c>
+ <p>If an unrecognized type option <c>T</c> is given or <c><anno>Type</anno></c>
is not a proper list, there will be a <c>badarg</c> exception.
</p>
</desc>
</func>
<func>
- <name>no_edges(G) -> integer() >= 0</name>
+ <name name="no_edges" arity="1"/>
<fsummary>Return the number of edges of the a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- </type>
<desc>
- <p>Returns the number of edges of the digraph <c>G</c>.
+ <p>Returns the number of edges of the digraph <c><anno>G</anno></c>.
</p>
</desc>
</func>
<func>
- <name>no_vertices(G) -> integer() >= 0</name>
+ <name name="no_vertices" arity="1"/>
<fsummary>Return the number of vertices of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- </type>
<desc>
- <p>Returns the number of vertices of the digraph <c>G</c>.
+ <p>Returns the number of vertices of the digraph <c><anno>G</anno></c>.
</p>
</desc>
</func>
<func>
- <name>out_degree(G, V) -> integer()</name>
+ <name name="out_degree" arity="2"/>
<fsummary>Return the out-degree of a vertex of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V = vertex()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#out_degree">out-degree</seealso> of the vertex
- <c>V</c> of the digraph <c>G</c>.
+ <c><anno>V</anno></c> of the digraph <c><anno>G</anno></c>.
</p>
</desc>
</func>
<func>
- <name>out_edges(G, V) -> Edges</name>
+ <name name="out_edges" arity="2"/>
<fsummary>Return all edges emanating from a vertex of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V = vertex()</v>
- <v>Edges = [edge()]</v>
- </type>
<desc>
<p>Returns a list of all
edges <seealso marker="#emanate">emanating</seealso> from
- <c>V</c> of the digraph <c>G</c>, in some unspecified order.
+ <c><anno>V</anno></c> of the digraph <c><anno>G</anno></c>, in some unspecified order.
</p>
</desc>
</func>
<func>
- <name>out_neighbours(G, V) -> Vertices</name>
+ <name name="out_neighbours" arity="2"/>
<fsummary>Return all out-neighbours of a vertex of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V = vertex()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Returns a list of
all <seealso marker="#out_neighbour">out-neighbours</seealso> of
- <c>V</c> of the digraph <c>G</c>, in some unspecified order.
+ <c><anno>V</anno></c> of the digraph <c><anno>G</anno></c>, in some unspecified order.
</p>
</desc>
</func>
<func>
- <name>vertex(G, V) -> {V, Label} | false</name>
+ <name name="vertex" arity="2"/>
<fsummary>Return the label of a vertex of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>V = vertex()</v>
- <v>Label = label()</v>
- </type>
<desc>
- <p>Returns <c>{V,&nbsp;Label}</c> where <c>Label</c> is the
+ <p>Returns <c>{<anno>V</anno>,&nbsp;<anno>Label</anno>}</c> where <c><anno>Label</anno></c> is the
<seealso marker="#label">label</seealso> of the vertex
- <c>V</c> of the digraph <c>G</c>, or <c>false</c> if there
- is no vertex <c>V</c> of the digraph <c>G</c>.
+ <c><anno>V</anno></c> of the digraph <c><anno>G</anno></c>, or <c>false</c> if there
+ is no vertex <c><anno>V</anno></c> of the digraph <c><anno>G</anno></c>.
</p>
</desc>
</func>
<func>
- <name>vertices(G) -> Vertices</name>
+ <name name="vertices" arity="1"/>
<fsummary>Return all vertices of a digraph.</fsummary>
- <type>
- <v>G = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
- <p>Returns a list of all vertices of the digraph <c>G</c>, in
+ <p>Returns a list of all vertices of the digraph <c><anno>G</anno></c>, in
some unspecified order.
</p>
</desc>
diff --git a/lib/stdlib/doc/src/digraph_utils.xml b/lib/stdlib/doc/src/digraph_utils.xml
index 4b137456b3..e44632bfd2 100644
--- a/lib/stdlib/doc/src/digraph_utils.xml
+++ b/lib/stdlib/doc/src/digraph_utils.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2000</year><year>2009</year>
+ <year>2000</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -119,49 +119,43 @@
considering all edges undirected.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name><marker id="type-digraph">digraph()</marker></name>
+ <desc><p>A digraph as returned by <c>digraph:new/0,1</c>.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>arborescence_root(Digraph) -> no | {yes, Root}</name>
+ <name name="arborescence_root" arity="1"/>
<fsummary>Check if a digraph is an arborescence.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Root = vertex()</v>
- </type>
<desc>
-
- <p>Returns <c>{yes, Root}</c> if <c>Root</c> is
+ <p>Returns <c>{yes, <anno>Root</anno>}</c> if <c><anno>Root</anno></c> is
the <seealso marker="#root">root</seealso> of the arborescence
- <c>Digraph</c>, <c>no</c> otherwise.
+ <c><anno>Digraph</anno></c>, <c>no</c> otherwise.
</p>
</desc>
</func>
<func>
- <name>components(Digraph) -> [Component]</name>
+ <name name="components" arity="1"/>
<fsummary>Return the components of a digraph.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Component = [vertex()]</v>
- </type>
<desc>
<p>Returns a list
of <seealso marker="#components">connected components</seealso>.
Each component is represented by its
vertices. The order of the vertices and the order of the
components are arbitrary. Each vertex of the digraph
- <c>Digraph</c> occurs in exactly one component.
+ <c><anno>Digraph</anno></c> occurs in exactly one component.
</p>
</desc>
</func>
<func>
- <name>condensation(Digraph) -> CondensedDigraph</name>
+ <name name="condensation" arity="1"/>
<fsummary>Return a condensed graph of a digraph.</fsummary>
- <type>
- <v>Digraph = CondensedDigraph = digraph()</v>
- </type>
<desc>
<p>Creates a digraph where the vertices are
the <seealso marker="#strong_components">strongly connected
- components</seealso> of <c>Digraph</c> as returned by
+ components</seealso> of <c><anno>Digraph</anno></c> as returned by
<c>strong_components/1</c>. If X and Y are strongly
connected components, and there exist vertices x and y in X
and Y respectively such that there is an
@@ -169,7 +163,7 @@
and <seealso marker="#incident">incident</seealso> on y, then
an edge emanating from X and incident on Y is created.
</p>
- <p>The created digraph has the same type as <c>Digraph</c>.
+ <p>The created digraph has the same type as <c><anno>Digraph</anno></c>.
All vertices and edges have the
default <seealso marker="#label">label</seealso> <c>[]</c>.
</p>
@@ -181,12 +175,8 @@
</desc>
</func>
<func>
- <name>cyclic_strong_components(Digraph) -> [StrongComponent]</name>
+ <name name="cyclic_strong_components" arity="1"/>
<fsummary>Return the cyclic strong components of a digraph.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>StrongComponent = [vertex()]</v>
- </type>
<desc>
<p>Returns a list of <seealso marker="#strong_components">strongly
connected components</seealso>.
@@ -194,67 +184,50 @@
by its vertices. The order of the vertices and the order of
the components are arbitrary. Only vertices that are
included in some <seealso marker="#cycle">cycle</seealso> in
- <c>Digraph</c> are returned, otherwise the returned list is
+ <c><anno>Digraph</anno></c> are returned, otherwise the returned list is
equal to that returned by <c>strong_components/1</c>.
</p>
</desc>
</func>
<func>
- <name>is_acyclic(Digraph) -> bool()</name>
+ <name name="is_acyclic" arity="1"/>
<fsummary>Check if a digraph is acyclic.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- </type>
<desc>
<p>Returns <c>true</c> if and only if the digraph
- <c>Digraph</c> is <seealso marker="#acyclic_digraph">acyclic</seealso>.</p>
+ <c><anno>Digraph</anno></c> is <seealso marker="#acyclic_digraph">acyclic</seealso>.</p>
</desc>
</func>
<func>
- <name>is_arborescence(Digraph) -> bool()</name>
+ <name name="is_arborescence" arity="1"/>
<fsummary>Check if a digraph is an arborescence.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- </type>
<desc>
<p>Returns <c>true</c> if and only if the digraph
- <c>Digraph</c> is
+ <c><anno>Digraph</anno></c> is
an <seealso marker="#arborescence">arborescence</seealso>.</p>
</desc>
</func>
<func>
- <name>is_tree(Digraph) -> bool()</name>
+ <name name="is_tree" arity="1"/>
<fsummary>Check if a digraph is a tree.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- </type>
<desc>
<p>Returns <c>true</c> if and only if the digraph
- <c>Digraph</c> is
+ <c><anno>Digraph</anno></c> is
a <seealso marker="#tree">tree</seealso>.</p>
</desc>
</func>
<func>
- <name>loop_vertices(Digraph) -> Vertices</name>
+ <name name="loop_vertices" arity="1"/>
<fsummary>Return the vertices of a digraph included in some loop.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
- <p>Returns a list of all vertices of <c>Digraph</c> that are
+ <p>Returns a list of all vertices of <c><anno>Digraph</anno></c> that are
included in some <seealso marker="#loop">loop</seealso>.</p>
</desc>
</func>
<func>
- <name>postorder(Digraph) -> Vertices</name>
+ <name name="postorder" arity="1"/>
<fsummary>Return the vertices of a digraph in post-order.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
- <p>Returns all vertices of the digraph <c>Digraph</c>. The
+ <p>Returns all vertices of the digraph <c><anno>Digraph</anno></c>. The
order is given by
a <seealso marker="#depth_first_traversal">depth-first
traversal</seealso> of the digraph, collecting visited
@@ -266,14 +239,10 @@
</desc>
</func>
<func>
- <name>preorder(Digraph) -> Vertices</name>
+ <name name="preorder" arity="1"/>
<fsummary>Return the vertices of a digraph in pre-order.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
- <p>Returns all vertices of the digraph <c>Digraph</c>. The
+ <p>Returns all vertices of the digraph <c><anno>Digraph</anno></c>. The
order is given by
a <seealso marker="#depth_first_traversal">depth-first
traversal</seealso> of the digraph, collecting visited
@@ -281,119 +250,94 @@
</desc>
</func>
<func>
- <name>reachable(Vertices, Digraph) -> Vertices</name>
+ <name name="reachable" arity="2"/>
<fsummary>Return the vertices reachable from some vertices of a digraph.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Returns an unsorted list of digraph vertices such that for
each vertex in the list, there is
- a <seealso marker="#path">path</seealso> in <c>Digraph</c> from some
- vertex of <c>Vertices</c> to the vertex. In particular,
+ a <seealso marker="#path">path</seealso> in <c><anno>Digraph</anno></c> from some
+ vertex of <c><anno>Vertices</anno></c> to the vertex. In particular,
since paths may have length zero, the vertices of
- <c>Vertices</c> are included in the returned list.
+ <c><anno>Vertices</anno></c> are included in the returned list.
</p>
</desc>
</func>
<func>
- <name>reachable_neighbours(Vertices, Digraph) -> Vertices</name>
+ <name name="reachable_neighbours" arity="2"/>
<fsummary>Return the neighbours reachable from some vertices of a digraph.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Returns an unsorted list of digraph vertices such that for
each vertex in the list, there is
- a <seealso marker="#path">path</seealso> in <c>Digraph</c> of length
- one or more from some vertex of <c>Vertices</c> to the
+ a <seealso marker="#path">path</seealso> in <c><anno>Digraph</anno></c> of length
+ one or more from some vertex of <c><anno>Vertices</anno></c> to the
vertex. As a consequence, only those vertices
- of <c>Vertices</c> that are included in
+ of <c><anno>Vertices</anno></c> that are included in
some <seealso marker="#cycle">cycle</seealso> are returned.
</p>
</desc>
</func>
<func>
- <name>reaching(Vertices, Digraph) -> Vertices</name>
+ <name name="reaching" arity="2"/>
<fsummary>Return the vertices that reach some vertices of a digraph.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Returns an unsorted list of digraph vertices such that for
each vertex in the list, there is
a <seealso marker="#path">path</seealso> from the vertex to some
- vertex of <c>Vertices</c>. In particular, since paths may have
- length zero, the vertices of <c>Vertices</c> are included in
+ vertex of <c><anno>Vertices</anno></c>. In particular, since paths may have
+ length zero, the vertices of <c><anno>Vertices</anno></c> are included in
the returned list.
</p>
</desc>
</func>
<func>
- <name>reaching_neighbours(Vertices, Digraph) -> Vertices</name>
+ <name name="reaching_neighbours" arity="2"/>
<fsummary>Return the neighbours that reach some vertices of a digraph.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Returns an unsorted list of digraph vertices such that for
each vertex in the list, there is
a <seealso marker="#path">path</seealso> of length one or more
- from the vertex to some vertex of <c>Vertices</c>. As a consequence,
- only those vertices of <c>Vertices</c> that are included in
+ from the vertex to some vertex of <c><anno>Vertices</anno></c>. As a consequence,
+ only those vertices of <c><anno>Vertices</anno></c> that are included in
some <seealso marker="#cycle">cycle</seealso> are returned.
</p>
</desc>
</func>
<func>
- <name>strong_components(Digraph) -> [StrongComponent]</name>
+ <name name="strong_components" arity="1"/>
<fsummary>Return the strong components of a digraph.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>StrongComponent = [vertex()]</v>
- </type>
<desc>
<p>Returns a list of <seealso marker="#strong_components">strongly
connected components</seealso>.
Each strongly component is represented
by its vertices. The order of the vertices and the order of
the components are arbitrary. Each vertex of the digraph
- <c>Digraph</c> occurs in exactly one strong component.
+ <c><anno>Digraph</anno></c> occurs in exactly one strong component.
</p>
</desc>
</func>
<func>
- <name>subgraph(Digraph, Vertices [, Options]) -> Subgraph</name>
+ <name name="subgraph" arity="2"/>
+ <name name="subgraph" arity="3"/>
<fsummary>Return a subgraph of a digraph.</fsummary>
- <type>
- <v>Digraph = Subgraph = digraph()</v>
- <v>Options = [{type, SubgraphType}, {keep_labels, bool()}]</v>
- <v>SubgraphType = inherit | type()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Creates a maximal <seealso marker="#subgraph">subgraph</seealso> of <c>Digraph</c> having
- as vertices those vertices of <c>Digraph</c> that are
- mentioned in <c>Vertices</c>.
+ as vertices those vertices of <c><anno>Digraph</anno></c> that are
+ mentioned in <c><anno>Vertices</anno></c>.
</p>
<p>If the value of the option <c>type</c> is <c>inherit</c>,
- which is the default, then the type of <c>Digraph</c> is used
+ which is the default, then the type of <c><anno>Digraph</anno></c> is used
for the subgraph as well. Otherwise the option value of <c>type</c>
is used as argument to <c>digraph:new/1</c>.
</p>
<p>If the value of the option <c>keep_labels</c> is <c>true</c>,
which is the default, then
the <seealso marker="#label">labels</seealso> of vertices and edges
- of <c>Digraph</c> are used for the subgraph as well. If the value
+ of <c><anno>Digraph</anno></c> are used for the subgraph as well. If the value
is <c>false</c>, then the default label, <c>[]</c>, is used
for the subgraph's vertices and edges.
</p>
- <p><c>subgraph(Digraph, Vertices)</c> is equivalent to
- <c>subgraph(Digraph, Vertices, [])</c>.
+ <p><c>subgraph(<anno>Digraph</anno>, <anno>Vertices</anno>)</c> is equivalent to
+ <c>subgraph(<anno>Digraph</anno>, <anno>Vertices</anno>, [])</c>.
</p>
<p>There will be a <c>badarg</c> exception if any of the arguments
are invalid.
@@ -401,16 +345,12 @@
</desc>
</func>
<func>
- <name>topsort(Digraph) -> Vertices | false</name>
+ <name name="topsort" arity="1"/>
<fsummary>Return a topological sorting of the vertices of a digraph.</fsummary>
- <type>
- <v>Digraph = digraph()</v>
- <v>Vertices = [vertex()]</v>
- </type>
<desc>
<p>Returns a <seealso marker="#topsort">topological
ordering</seealso> of the vertices of the digraph
- <c>Digraph</c> if such an ordering exists, <c>false</c>
+ <c><anno>Digraph</anno></c> if such an ordering exists, <c>false</c>
otherwise. For each vertex in the returned list, there are
no <seealso marker="#out_neighbour">out-neighbours</seealso>
that occur earlier in the list.</p>
diff --git a/lib/stdlib/doc/src/epp.xml b/lib/stdlib/doc/src/epp.xml
index e6b48b270a..488499581f 100644
--- a/lib/stdlib/doc/src/epp.xml
+++ b/lib/stdlib/doc/src/epp.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -38,65 +38,61 @@
by <c>compile</c> to preprocess macros and include files before
the actual parsing takes place.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="macros"></name>
+ </datatype>
+ <datatype>
+ <name name="epp_handle"></name>
+ <desc><p>Handle to the epp server.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>open(FileName, IncludePath) -> {ok,Epp} | {error, ErrorDescriptor}</name>
- <name>open(FileName, IncludePath, PredefMacros) -> {ok,Epp} | {error, ErrorDescriptor}</name>
+ <name name="open" arity="2"/>
+ <name name="open" arity="3"/>
<fsummary>Open a file for preprocessing</fsummary>
- <type>
- <v>FileName = atom() | string()</v>
- <v>IncludePath = [DirectoryName]</v>
- <v>DirectoryName = atom() | string()</v>
- <v>PredefMacros = [{atom(),term()}]</v>
- <v>Epp = pid() -- handle to the epp server</v>
- <v>ErrorDescriptor = term()</v>
- </type>
<desc>
<p>Opens a file for preprocessing.</p>
</desc>
</func>
<func>
- <name>close(Epp) -> ok</name>
+ <name name="close" arity="1"/>
<fsummary>Close the preprocessing of the file associated with <c>Epp</c></fsummary>
- <type>
- <v>Epp = pid() -- handle to the epp server</v>
- </type>
<desc>
<p>Closes the preprocessing of a file.</p>
</desc>
</func>
<func>
- <name>parse_erl_form(Epp) -> {ok, AbsForm} | {eof, Line} | {error, ErrorInfo}</name>
+ <name name="parse_erl_form" arity="1"/>
<fsummary>Return the next Erlang form from the opened Erlang source file</fsummary>
- <type>
- <v>Epp = pid()</v>
- <v>AbsForm = term()</v>
- <v>Line = integer()</v>
- <v>ErrorInfo = see separate description below.</v>
- </type>
<desc>
<p>Returns the next Erlang form from the opened Erlang source file.
- The tuple <c>{eof, Line}</c> is returned at end-of-file. The first
+ The tuple <c>{eof, <anno>Line</anno>}</c> is returned at end-of-file. The first
form corresponds to an implicit attribute <c>-file(File,1).</c>, where
<c>File</c> is the name of the file.</p>
</desc>
</func>
<func>
- <name>parse_file(FileName,IncludePath,PredefMacro) -> {ok,[Form]} | {error,OpenError}</name>
- <fsummary>Preprocesse and parse an Erlang source file</fsummary>
- <type>
- <v>FileName = atom() | string()</v>
- <v>IncludePath = [DirectoryName]</v>
- <v>DirectoryName = atom() | string()</v>
- <v>PredefMacros = [{atom(),term()}]</v>
- <v>Form = term() -- same as returned by erl_parse:parse_form</v>
- </type>
+ <name name="parse_file" arity="3"/>
+ <fsummary>Preprocess and parse an Erlang source file</fsummary>
<desc>
<p>Preprocesses and parses an Erlang source file.
- Note that the tuple <c>{eof, Line}</c> returned at end-of-file is
+ Note that the tuple <c>{eof, <anno>Line</anno>}</c> returned at end-of-file is
included as a "form".</p>
</desc>
</func>
+ <func>
+ <name name="format_error" arity="1"/>
+ <fsummary>Format an error descriptor</fsummary>
+ <desc>
+ <p>Takes an <c><anno>ErrorDescriptor</anno></c> and returns
+ a string which
+ describes the error or warning. This function is usually
+ called implicitly when processing an <c>ErrorInfo</c>
+ structure (see below).</p>
+ </desc>
+ </func>
</funcs>
<section>
diff --git a/lib/stdlib/doc/src/erl_eval.xml b/lib/stdlib/doc/src/erl_eval.xml
index 62af23c5eb..c95494bf25 100644
--- a/lib/stdlib/doc/src/erl_eval.xml
+++ b/lib/stdlib/doc/src/erl_eval.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -36,63 +36,108 @@
<description>
<p>This module provides an interpreter for Erlang expressions. The
expressions are in the abstract syntax as returned by
- <c>erl_parse</c>, the Erlang parser, or a call to
- <c>io:parse_erl_exprs/2</c>.</p>
+ <seealso marker="erl_parse"><c>erl_parse</c></seealso>,
+ the Erlang parser, or <seealso marker="io">
+ <c>io</c></seealso>.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="bindings"/>
+ </datatype>
+ <datatype>
+ <name name="binding_struct"/>
+ <desc>A binding structure.</desc>
+ </datatype>
+ <datatype>
+ <name name="expression"/>
+ </datatype>
+ <datatype>
+ <name name="expressions"/>
+ <desc><p>As returned by <seealso marker="erl_parse#parse_exprs/1">
+ <c>erl_parse:parse_exprs/1</c></seealso> or
+ <seealso marker="io#parse_erl_exprs/2">
+ <c>io:parse_erl_exprs/2</c></seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="expression_list"/>
+ </datatype>
+ <datatype>
+ <name name="func_spec"/>
+ </datatype>
+ <datatype>
+ <name name="lfun_eval_handler"/>
+ </datatype>
+ <datatype>
+ <name name="lfun_value_handler"/>
+ </datatype>
+ <datatype>
+ <name name="local_function_handler"/>
+ <desc><p>Further described
+ <seealso marker="#local_function_handler">below.</seealso></p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="name"/>
+ </datatype>
+ <datatype>
+ <name name="nlfun_handler"/>
+ </datatype>
+ <datatype>
+ <name name="non_local_function_handler"/>
+ <desc><p>Further described
+ <seealso marker="#non_local_function_handler">below.</seealso></p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="value"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>exprs(Expressions, Bindings) -> {value, Value, NewBindings}</name>
- <name>exprs(Expressions, Bindings, LocalFunctionHandler) -> {value, Value, NewBindings}</name>
- <name>exprs(Expressions, Bindings, LocalFunctionHandler, NonlocalFunctionHandler) -> {value, Value, NewBindings}</name>
+ <name name="exprs" arity="2"/>
+ <name name="exprs" arity="3"/>
+ <name name="exprs" arity="4"/>
<fsummary>Evaluate expressions</fsummary>
- <type>
- <v>Expressions = as returned by erl_parse or io:parse_erl_exprs/2</v>
- <v>Bindings = as returned by bindings/1</v>
- <v>LocalFunctionHandler = {value, Func} | {eval, Func} | none</v>
- <v>NonlocalFunctionHandler = {value, Func} | none</v>
- </type>
<desc>
- <p>Evaluates <c>Expressions</c> with the set of bindings
- <c>Bindings</c>, where <c>Expressions</c> is a sequence of
+ <p>Evaluates <c><anno>Expressions</anno></c> with the set of bindings
+ <c><anno>Bindings</anno></c>, where <c><anno>Expressions</anno></c>
+ is a sequence of
expressions (in abstract syntax) of a type which may be
- returned by <c>io:parse_erl_exprs/2</c>. See below for an
+ returned by <seealso marker="io#parse_erl_exprs/2">
+ <c>io:parse_erl_exprs/2</c></seealso>. See below for an
explanation of how and when to use the arguments
- <c>LocalFunctionHandler</c> and <c>NonlocalFunctionHandler</c>.
+ <c><anno>LocalFunctionHandler</anno></c> and
+ <c><anno>NonLocalFunctionHandler</anno></c>.
</p>
- <p>Returns <c>{value, Value, NewBindings}</c></p>
+ <p>Returns <c>{value, <anno>Value</anno>, <anno>NewBindings</anno>}</c>
+ </p>
</desc>
</func>
<func>
- <name>expr(Expression, Bindings) -> { value, Value, NewBindings }</name>
- <name>expr(Expression, Bindings, LocalFunctionHandler) -> { value, Value, NewBindings }</name>
- <name>expr(Expression, Bindings, LocalFunctionHandler, NonlocalFunctionHandler) -> { value, Value, NewBindings }</name>
- <name>expr(Expression, Bindings, LocalFunctionHandler, NonlocalFunctionHandler, ReturnFormat) -> { value, Value, NewBindings } | Value</name>
+ <name name="expr" arity="2"/>
+ <name name="expr" arity="3"/>
+ <name name="expr" arity="4"/>
+ <name name="expr" arity="5"/>
<fsummary>Evaluate expression</fsummary>
- <type>
- <v>Expression = as returned by io:parse_erl_form/2, for example</v>
- <v>Bindings = as returned by bindings/1</v>
- <v>LocalFunctionHandler = {value, Func} | {eval, Func} | none</v>
- <v>NonlocalFunctionHandler = {value, Func} | none</v>
- <v>ReturnFormat = value | none</v>
- </type>
<desc>
- <p>Evaluates <c>Expression</c> with the set of bindings
- <c>Bindings</c>. <c>Expression</c> is an expression (in
- abstract syntax) of a type which may be returned by
- <c>io:parse_erl_form/2</c>. See below for an explanation of
+ <p>Evaluates <c><anno>Expression</anno></c> with the set of bindings
+ <c><anno>Bindings</anno></c>. <c><anno>Expression</anno></c>
+ is an expression in
+ abstract syntax. See below for an explanation of
how and when to use the arguments
- <c>LocalFunctionHandler</c> and
- <c>NonlocalFunctionHandler</c>.
+ <c><anno>LocalFunctionHandler</anno></c> and
+ <c><anno>NonLocalFunctionHandler</anno></c>.
</p>
- <p>Returns <c>{value, Value, NewBindings}</c> by default. But
- if the <c>ReturnFormat</c> is <c>value</c> only the <c>Value</c>
- is returned.</p>
+ <p>Returns <c>{value, <anno>Value</anno>,
+ <anno>NewBindings</anno>}</c> by default. But if the
+ <c><anno>ReturnFormat</anno></c> is <c>value</c> only
+ the <c><anno>Value</anno></c> is returned.</p>
</desc>
</func>
<func>
- <name>expr_list(ExpressionList, Bindings) -> {ValueList, NewBindings}</name>
- <name>expr_list(ExpressionList, Bindings, LocalFunctionHandler) -> {ValueList, NewBindings}</name>
- <name>expr_list(ExpressionList, Bindings, LocalFunctionHandler, NonlocalFunctionHandler) -> {ValueList, NewBindings}</name>
+ <name name="expr_list" arity="2"/>
+ <name name="expr_list" arity="3"/>
+ <name name="expr_list" arity="4"/>
<fsummary>Evaluate a list of expressions</fsummary>
<desc>
<p>Evaluates a list of expressions in parallel, using the same
@@ -100,18 +145,19 @@
merge the bindings returned from each evaluation. This
function is useful in the <c>LocalFunctionHandler</c>. See below.
</p>
- <p>Returns <c>{ValueList, NewBindings}</c>.</p>
+ <p>Returns <c>{<anno>ValueList</anno>, <anno>NewBindings</anno>}</c>.
+ </p>
</desc>
</func>
<func>
- <name>new_bindings() -> BindingStruct</name>
+ <name name="new_bindings" arity="0"/>
<fsummary>Return a bindings structure</fsummary>
<desc>
<p>Returns an empty binding structure.</p>
</desc>
</func>
<func>
- <name>bindings(BindingStruct) -> Bindings</name>
+ <name name="bindings" arity="1"/>
<fsummary>Return bindings</fsummary>
<desc>
<p>Returns the list of bindings contained in the binding
@@ -119,25 +165,28 @@
</desc>
</func>
<func>
- <name>binding(Name, BindingStruct) -> Binding</name>
+ <name name="binding" arity="2"/>
<fsummary>Return bindings</fsummary>
<desc>
- <p>Returns the binding of <c>Name</c> in <c>BindingStruct</c>.</p>
+ <p>Returns the binding of <c><anno>Name</anno></c>
+ in <c><anno>BindingStruct</anno></c>.</p>
</desc>
</func>
<func>
- <name>add_binding(Name, Value, Bindings) -> BindingStruct</name>
+ <name name="add_binding" arity="3"/>
<fsummary>Add a binding</fsummary>
<desc>
- <p>Adds the binding <c>Name = Value</c> to <c>Bindings</c>.
+ <p>Adds the binding <c><anno>Name</anno> = <anno>Value</anno></c>
+ to <c><anno>BindingStruct</anno></c>.
Returns an updated binding structure.</p>
</desc>
</func>
<func>
- <name>del_binding(Name, Bindings) -> BindingStruct</name>
+ <name name="del_binding" arity="2"/>
<fsummary>Delete a binding</fsummary>
<desc>
- <p>Removes the binding of <c>Name</c> in <c>Bindings</c>.
+ <p>Removes the binding of <c><anno>Name</anno></c>
+ in <c><anno>BindingStruct</anno></c>.
Returns an updated binding structure.</p>
</desc>
</func>
@@ -145,7 +194,8 @@
<section>
<title>Local Function Handler</title>
- <p>During evaluation of a function, no calls can be made to local
+ <p><marker id="local_function_handler"></marker>
+ During evaluation of a function, no calls can be made to local
functions. An undefined function error would be
generated. However, the optional argument
<c>LocalFunctionHandler</c> may be used to define a function
@@ -191,7 +241,8 @@ Func(Name, Arguments, Bindings) </code>
<section>
<title>Non-local Function Handler</title>
- <p>The optional argument <c>NonlocalFunctionHandler</c> may be
+ <p><marker id="non_local_function_handler"></marker>
+ The optional argument <c>NonlocalFunctionHandler</c> may be
used to define a function which is called in the following
cases: a functional object (fun) is called; a built-in function
is called; a function is called using the M:F syntax, where M
diff --git a/lib/stdlib/doc/src/erl_expand_records.xml b/lib/stdlib/doc/src/erl_expand_records.xml
index c93248493f..8ead438b31 100644
--- a/lib/stdlib/doc/src/erl_expand_records.xml
+++ b/lib/stdlib/doc/src/erl_expand_records.xml
@@ -39,12 +39,8 @@
</description>
<funcs>
<func>
- <name>module(AbsForms, CompileOptions) -> AbsForms</name>
+ <name name="module" arity="2"/>
<fsummary>Expand all records in a module</fsummary>
- <type>
- <v>AbsForms = [term()]</v>
- <v>CompileOptions = [term()]</v>
- </type>
<desc>
<p>Expands all records in a module. The returned module has no
references to records, neither attributes nor code.</p>
diff --git a/lib/stdlib/doc/src/erl_id_trans.xml b/lib/stdlib/doc/src/erl_id_trans.xml
index cfb18ec131..18cc2460f9 100644
--- a/lib/stdlib/doc/src/erl_id_trans.xml
+++ b/lib/stdlib/doc/src/erl_id_trans.xml
@@ -5,7 +5,7 @@
<header>
<copyright>
<year>1996</year>
- <year>2010</year>
+ <year>2011</year>
<holder>Ericsson AB, All Rights Reserved</holder>
</copyright>
<legalnotice>
@@ -48,8 +48,8 @@
<name>parse_transform(Forms, Options) -> Forms</name>
<fsummary>Transform Erlang forms</fsummary>
<type>
- <v>Forms = [erlang_form()]</v>
- <v>Options = [compiler_options()]</v>
+ <v>Forms = [<seealso marker="erl_parse#type-abstract_form">erl_parse:abstract_form()</seealso>]</v>
+ <v>Options = [<seealso marker="compile#type-option">compile:option()</seealso>]</v>
</type>
<desc>
<p>Performs an identity transformation on Erlang forms, as an example.</p>
diff --git a/lib/stdlib/doc/src/erl_internal.xml b/lib/stdlib/doc/src/erl_internal.xml
index 732d77c3ae..b8d5ad73b3 100644
--- a/lib/stdlib/doc/src/erl_internal.xml
+++ b/lib/stdlib/doc/src/erl_internal.xml
@@ -42,112 +42,75 @@
</description>
<funcs>
<func>
- <name>bif(Name, Arity) -> bool()</name>
+ <name name="bif" arity="2"/>
<fsummary>Test for an Erlang BIF</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>Arity = integer()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Name/Arity</c> is an Erlang BIF
+ <p>Returns <c>true</c> if <c><anno>Name</anno>/<anno>Arity</anno></c> is an Erlang BIF
which is automatically recognized by the compiler, otherwise
<c>false</c>.</p>
</desc>
</func>
<func>
- <name>guard_bif(Name, Arity) -> bool()</name>
+ <name name="guard_bif" arity="2"/>
<fsummary>Test for an Erlang BIF allowed in guards</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>Arity = integer()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Name/Arity</c> is an Erlang BIF
+ <p>Returns <c>true</c> if <c><anno>Name</anno>/<anno>Arity</anno></c> is an Erlang BIF
which is allowed in guards, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>type_test(Name, Arity) -> bool()</name>
+ <name name="type_test" arity="2"/>
<fsummary>Test for a valid type test</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>Arity = integer()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Name/Arity</c> is a valid Erlang
+ <p>Returns <c>true</c> if <c><anno>Name</anno>/<anno>Arity</anno></c> is a valid Erlang
type test, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>arith_op(OpName, Arity) -> bool()</name>
+ <name name="arith_op" arity="2"/>
<fsummary>Test for an arithmetic operator</fsummary>
- <type>
- <v>OpName = atom()</v>
- <v>Arity = integer()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>OpName/Arity</c> is an arithmetic
+ <p>Returns <c>true</c> if <c><anno>OpName</anno>/<anno>Arity</anno></c> is an arithmetic
operator, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>bool_op(OpName, Arity) -> bool()</name>
+ <name name="bool_op" arity="2"/>
<fsummary>Test for a Boolean operator</fsummary>
- <type>
- <v>OpName = atom()</v>
- <v>Arity = integer()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>OpName/Arity</c> is a Boolean
+ <p>Returns <c>true</c> if <c><anno>OpName</anno>/<anno>Arity</anno></c> is a Boolean
operator, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>comp_op(OpName, Arity) -> bool()</name>
+ <name name="comp_op" arity="2"/>
<fsummary>Test for a comparison operator</fsummary>
- <type>
- <v>OpName = atom()</v>
- <v>Arity = integer()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>OpName/Arity</c> is a comparison
+ <p>Returns <c>true</c> if <c><anno>OpName</anno>/<anno>Arity</anno></c> is a comparison
operator, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>list_op(OpName, Arity) -> bool()</name>
+ <name name="list_op" arity="2"/>
<fsummary>Test for a list operator</fsummary>
- <type>
- <v>OpName = atom()</v>
- <v>Arity = integer()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>OpName/Arity</c> is a list
+ <p>Returns <c>true</c> if <c><anno>OpName</anno>/<anno>Arity</anno></c> is a list
operator, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>send_op(OpName, Arity) -> bool()</name>
+ <name name="send_op" arity="2"/>
<fsummary>Test for a send operator</fsummary>
- <type>
- <v>OpName = atom()</v>
- <v>Arity = integer()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>OpName/Arity</c> is a send
+ <p>Returns <c>true</c> if <c><anno>OpName</anno>/<anno>Arity</anno></c> is a send
operator, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>op_type(OpName, Arity) -> Type</name>
+ <name name="op_type" arity="2"/>
<fsummary>Return operator type</fsummary>
- <type>
- <v>OpName = atom()</v>
- <v>Arity = integer()</v>
- <v>Type = arith | bool | comp | list | send</v>
- </type>
<desc>
- <p>Returns the <c>Type</c> of operator that <c>OpName/Arity</c>
+ <p>Returns the <c><anno>Type</anno></c> of operator that <c><anno>OpName</anno>/<anno>Arity</anno></c>
belongs to,
or generates a <c>function_clause</c> error if it is not an
operator at all.</p>
diff --git a/lib/stdlib/doc/src/erl_lint.xml b/lib/stdlib/doc/src/erl_lint.xml
index 8639d678fa..b7fbdd8799 100644
--- a/lib/stdlib/doc/src/erl_lint.xml
+++ b/lib/stdlib/doc/src/erl_lint.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -60,29 +60,30 @@
functions separately unless you have written your own Erlang
compiler.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="error_info"/>
+ </datatype>
+ <datatype>
+ <name name="error_description"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>module(AbsForms) -> {ok,Warnings} | {error,Errors,Warnings}</name>
- <name>module(AbsForms, FileName) -> {ok,Warnings} | {error,Errors,Warnings}</name>
- <name>module(AbsForms, FileName, CompileOptions) -> {ok,Warnings} | {error,Errors,Warnings}</name>
+ <name name="module" arity="1"/>
+ <name name="module" arity="2"/>
+ <name name="module" arity="3"/>
<fsummary>Check a module for errors</fsummary>
- <type>
- <v>AbsForms = [term()]</v>
- <v>FileName = FileName2 = atom() | string()</v>
- <v>Warnings = Errors = [{Filename2,[ErrorInfo]}]</v>
- <v>ErrorInfo = see separate description below.</v>
- <v>CompileOptions = [term()]</v>
- </type>
<desc>
<p>This function checks all the forms in a module for errors.
It returns:
</p>
<taglist>
- <tag><c>{ok,Warnings}</c></tag>
+ <tag><c>{ok,<anno>Warnings</anno>}</c></tag>
<item>
<p>There were no errors in the module.</p>
</item>
- <tag><c>{error,Errors,Warnings}</c></tag>
+ <tag><c>{error,<anno>Errors</anno>,<anno>Warnings</anno>}</c></tag>
<item>
<p>There were errors in the module.</p>
</item>
@@ -93,14 +94,14 @@
elements of <c>Options</c> that control the warnings are
only described in <seealso marker="compiler:compile#erl_lint_options">compile(3)</seealso>.
</p>
- <p>The <c>AbsForms</c> of a module which comes from a file
+ <p>The <c><anno>AbsForms</anno></c> of a module which comes from a file
that is read through <c>epp</c>, the Erlang pre-processor,
can come from many files. This means that any references to
errors must include the file name (see <seealso marker="epp">epp(3)</seealso>, or parser <seealso marker="erl_parse">erl_parse(3)</seealso>).
The warnings and errors returned have the following format:
</p>
<code type="none">
- [{FileName2,[ErrorInfo]}] </code>
+ [{<anno>FileName2</anno>,[<anno>ErrorInfo</anno>]}] </code>
<p>The errors and warnings are listed in the order in which
they are encountered in the forms. This means that the
errors from one file may be split into different entries in
@@ -108,27 +109,20 @@
</desc>
</func>
<func>
- <name>is_guard_test(Expr) -> bool()</name>
+ <name name="is_guard_test" arity="1"/>
<fsummary>Test for a guard test</fsummary>
- <type>
- <v>Expr = term()</v>
- </type>
<desc>
- <p>This function tests if <c>Expr</c> is a legal guard test.
- <c>Expr</c> is an Erlang term representing the abstract form
+ <p>This function tests if <c><anno>Expr</anno></c> is a legal guard test.
+ <c><anno>Expr</anno></c> is an Erlang term representing the abstract form
for the expression. <c>erl_parse:parse_exprs(Tokens)</c> can
- be used to generate a list of <c>Expr</c>.</p>
+ be used to generate a list of <c><anno>Expr</anno></c>.</p>
</desc>
</func>
<func>
- <name>format_error(ErrorDescriptor) -> Chars</name>
+ <name name="format_error" arity="1"/>
<fsummary>Format an error descriptor</fsummary>
- <type>
- <v>ErrorDescriptor = errordesc()</v>
- <v>Chars = [char() | Chars]</v>
- </type>
<desc>
- <p>Takes an <c>ErrorDescriptor</c> and returns a string which
+ <p>Takes an <c><anno>ErrorDescriptor</anno></c> and returns a string which
describes the error or warning. This function is usually
called implicitly when processing an <c>ErrorInfo</c>
structure (see below).</p>
diff --git a/lib/stdlib/doc/src/erl_parse.xml b/lib/stdlib/doc/src/erl_parse.xml
index 18b592deea..bafc2e0746 100644
--- a/lib/stdlib/doc/src/erl_parse.xml
+++ b/lib/stdlib/doc/src/erl_parse.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -36,31 +36,51 @@
<description>
<p>This module is the basic Erlang parser which converts tokens into
the abstract form of either forms (i.e., top-level constructs),
- expressions, or terms. The Abstract Format is described in the ERTS
- User's Guide.
+ expressions, or terms. The Abstract Format is described in the
+ <seealso marker="erts:absform">ERTS User's Guide</seealso>.
Note that a token list must end with the <em>dot</em> token in order
to be acceptable to the parse functions (see <seealso marker="erl_scan">erl_scan(3)</seealso>).</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="abstract_clause"></name>
+ <desc><p>Parse tree for Erlang clause.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="abstract_expr"></name>
+ <desc><p>Parse tree for Erlang expression.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="abstract_form"></name>
+ <desc><p>Parse tree for Erlang form.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="error_description"></name>
+ </datatype>
+ <datatype>
+ <name name="error_info"></name>
+ </datatype>
+ <datatype>
+ <name name="token"></name>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>parse_form(Tokens) -> {ok, AbsForm} | {error, ErrorInfo}</name>
+ <name name="parse_form" arity="1"/>
<fsummary>Parse an Erlang form</fsummary>
- <type>
- <v>Tokens = [Token]</v>
- <v>Token = {Tag,Line} | {Tag,Line,term()}</v>
- <v>Tag = atom()</v>
- <v>AbsForm = term()</v>
- <v>ErrorInfo = see section Error Information below.</v>
- </type>
<desc>
- <p>This function parses <c>Tokens</c> as if it were a form. It returns:</p>
+ <p>This function parses <c><anno>Tokens</anno></c> as if it were
+ a form. It returns:</p>
<taglist>
- <tag><c>{ok, AbsForm}</c></tag>
+ <tag><c>{ok, <anno>AbsForm</anno>}</c></tag>
<item>
- <p>The parsing was successful. <c>AbsForm</c> is the
+ <p>The parsing was successful. <c><anno>AbsForm</anno></c> is the
abstract form of the parsed form.</p>
</item>
- <tag><c>{error, ErrorInfo}</c></tag>
+ <tag><c>{error, <anno>ErrorInfo</anno>}</c></tag>
<item>
<p>An error occurred.</p>
</item>
@@ -68,25 +88,18 @@
</desc>
</func>
<func>
- <name>parse_exprs(Tokens) -> {ok, Expr_list} | {error, ErrorInfo}</name>
+ <name name="parse_exprs" arity="1"/>
<fsummary>Parse Erlang expressions</fsummary>
- <type>
- <v>Tokens = [Token]</v>
- <v>Token = {Tag,Line} | {Tag,Line,term()}</v>
- <v>Tag = atom()</v>
- <v>Expr_list = [AbsExpr]</v>
- <v>AbsExpr = term()</v>
- <v>ErrorInfo = see section Error Information below.</v>
- </type>
<desc>
- <p>This function parses <c>Tokens</c> as if it were a list of expressions. It returns:</p>
+ <p>This function parses <c><anno>Tokens</anno></c> as if it were
+ a list of expressions. It returns:</p>
<taglist>
- <tag><c>{ok, Expr_list}</c></tag>
+ <tag><c>{ok, <anno>ExprList</anno>}</c></tag>
<item>
- <p>The parsing was successful. <c>Expr_list</c> is a
+ <p>The parsing was successful. <c><anno>ExprList</anno></c> is a
list of the abstract forms of the parsed expressions.</p>
</item>
- <tag><c>{error, ErrorInfo}</c></tag>
+ <tag><c>{error, <anno>ErrorInfo</anno>}</c></tag>
<item>
<p>An error occurred.</p>
</item>
@@ -94,21 +107,15 @@
</desc>
</func>
<func>
- <name>parse_term(Tokens) -> {ok, Term} | {error, ErrorInfo}</name>
+ <name name="parse_term" arity="1"/>
<fsummary>Parse an Erlang term</fsummary>
- <type>
- <v>Tokens = [Token]</v>
- <v>Token = {Tag,Line} | {Tag,Line,term()}</v>
- <v>Tag = atom()</v>
- <v>Term = term()</v>
- <v>ErrorInfo = see section Error Information below.</v>
- </type>
<desc>
- <p>This function parses <c>Tokens</c> as if it were a term. It returns:</p>
+ <p>This function parses <c><anno>Tokens</anno></c> as if it were
+ a term. It returns:</p>
<taglist>
- <tag><c>{ok, Term}</c></tag>
+ <tag><c>{ok, <anno>Term</anno>}</c></tag>
<item>
- <p>The parsing was successful. <c>Term</c> is
+ <p>The parsing was successful. <c><anno>Term</anno></c> is
the Erlang term corresponding to the token list.</p>
</item>
<tag><c>{error, ErrorInfo}</c></tag>
@@ -122,7 +129,8 @@
<name>format_error(ErrorDescriptor) -> Chars</name>
<fsummary>Format an error descriptor</fsummary>
<type>
- <v>ErrorDescriptor = errordesc()</v>
+ <v>ErrorDescriptor = <seealso
+ marker="#type-error_info">error_description()</seealso></v>
<v>Chars = [char() | Chars]</v>
</type>
<desc>
@@ -133,44 +141,32 @@
</desc>
</func>
<func>
- <name>tokens(AbsTerm) -> Tokens</name>
- <name>tokens(AbsTerm, MoreTokens) -> Tokens</name>
+ <name name="tokens" arity="1"/>
+ <name name="tokens" arity="2"/>
<fsummary>Generate a list of tokens for an expression</fsummary>
- <type>
- <v>Tokens = MoreTokens = [Token]</v>
- <v>Token = {Tag,Line} | {Tag,Line,term()}</v>
- <v>Tag = atom()</v>
- <v>AbsTerm = term()</v>
- <v>ErrorInfo = see section Error Information below.</v>
- </type>
<desc>
<p>This function generates a list of tokens representing the abstract
- form <c>AbsTerm</c> of an expression. Optionally, it appends
- <c>Moretokens</c>.</p>
+ form <c><anno>AbsTerm</anno></c> of an expression. Optionally, it
+ appends <c><anno>MoreTokens</anno></c>.</p>
</desc>
</func>
<func>
- <name>normalise(AbsTerm) -> Data</name>
+ <name name="normalise" arity="1"/>
<fsummary>Convert abstract form to an Erlang term</fsummary>
- <type>
- <v>AbsTerm = Data = term()</v>
- </type>
<desc>
- <p>Converts the abstract form <c>AbsTerm</c> of a term into a
+ <p>Converts the abstract form <c><anno>AbsTerm</anno></c> of a
+ term into a
conventional Erlang data structure (i.e., the term itself).
This is the inverse of <c>abstract/1</c>.</p>
</desc>
</func>
<func>
- <name>abstract(Data) -> AbsTerm</name>
+ <name name="abstract" arity="1"/>
<fsummary>Convert an Erlang term into an abstract form</fsummary>
- <type>
- <v>Data = AbsTerm = term()</v>
- </type>
<desc>
- <p>Converts the Erlang data structure <c>Data</c> into an
- abstract form of type <c>AbsTerm</c>. This is the inverse of
- <c>normalise/1</c>.</p>
+ <p>Converts the Erlang data structure <c><anno>Data</anno></c> into an
+ abstract form of type <c><anno>AbsTerm</anno></c>.
+ This is the inverse of <c>normalise/1</c>.</p>
</desc>
</func>
</funcs>
diff --git a/lib/stdlib/doc/src/erl_pp.xml b/lib/stdlib/doc/src/erl_pp.xml
index 1fdda48893..57b5828bcd 100644
--- a/lib/stdlib/doc/src/erl_pp.xml
+++ b/lib/stdlib/doc/src/erl_pp.xml
@@ -43,93 +43,82 @@
<p>All functions can have an optional argument which specifies a hook
that is called if an attempt is made to print an unknown form.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="hook_function"/>
+ <desc>
+ <p>The optional argument <marker id="hook_function">
+ <c>HookFunction</c></marker>, shown in the functions described below,
+ defines a function which is called when an unknown form occurs where there
+ should be a valid expression.</p>
+
+ <p>If <c>HookFunction</c> is equal to <c>none</c> there is no hook
+ function.</p>
+
+ <p>The called hook function should return a (possibly deep) list
+ of characters. <seealso marker="#expr/4"><c>expr/4</c></seealso>
+ is useful in a hook.
+ </p>
+ <p>If <c><anno>CurrentIndentation</anno></c> is negative, there will be no line
+ breaks and only a space is used as a separator.</p>
+ </desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>form(Form) -> DeepCharList</name>
- <name>form(Form, HookFunction) -> DeepCharList</name>
+ <name name="form" arity="1"/>
+ <name name="form" arity="2"/>
<fsummary>Pretty print a form</fsummary>
- <type>
- <v>Form = term()</v>
- <v>HookFunction = see separate description below.</v>
- <v>DeepCharList = [char()|DeepCharList]</v>
- </type>
<desc>
<p>Pretty prints a
- <c>Form</c> which is an abstract form of a type which is
- returned by <c>erl_parse:parse_form</c>.</p>
+ <c><anno>Form</anno></c> which is an abstract form of a type which is
+ returned by <seealso marker="erl_parse#parse_form/1">
+ <c>erl_parse:parse_form/1</c></seealso>.</p>
</desc>
</func>
<func>
- <name>attribute(Attribute) -> DeepCharList</name>
- <name>attribute(Attribute, HookFunction) -> DeepCharList</name>
+ <name name="attribute" arity="1"/>
+ <name name="attribute" arity="2"/>
<fsummary>Pretty print an attribute</fsummary>
- <type>
- <v>Attribute = term()</v>
- <v>HookFunction = see separate description below.</v>
- <v>DeepCharList = [char()|DeepCharList]</v>
- </type>
<desc>
<p>The same as <c>form</c>, but only for the attribute
- <c>Attribute</c>.</p>
+ <c><anno>Attribute</anno></c>.</p>
</desc>
</func>
<func>
- <name>function(Function) -> DeepCharList</name>
- <name>function(Function, HookFunction) -> DeepCharList</name>
+ <name name="function" arity="1"/>
+ <name name="function" arity="2"/>
<fsummary>Pretty print a function</fsummary>
- <type>
- <v>Function = term()</v>
- <v>HookFunction = see separate description below.</v>
- <v>DeepCharList = [char()|DeepCharList]</v>
- </type>
<desc>
<p>The same as <c>form</c>, but only for the function
- <c>Function</c>.</p>
+ <c><anno>Function</anno></c>.</p>
</desc>
</func>
<func>
- <name>guard(Guard) -> DeepCharList</name>
- <name>guard(Guard, HookFunction) -> DeepCharList</name>
+ <name name="guard" arity="1"/>
+ <name name="guard" arity="2"/>
<fsummary>Pretty print a guard</fsummary>
- <type>
- <v>Form = term()</v>
- <v>HookFunction = see separate description below.</v>
- <v>DeepCharList = [char()|DeepCharList]</v>
- </type>
<desc>
<p>The same as <c>form</c>, but only for the guard test
- <c>Guard</c>.</p>
+ <c><anno>Guard</anno></c>.</p>
</desc>
</func>
<func>
- <name>exprs(Expressions) -> DeepCharList</name>
- <name>exprs(Expressions, HookFunction) -> DeepCharList</name>
- <name>exprs(Expressions, Indent, HookFunction) -> DeepCharList</name>
+ <name name="exprs" arity="1"/>
+ <name name="exprs" arity="2"/>
+ <name name="exprs" arity="3"/>
<fsummary>Pretty print <c>Expressions</c></fsummary>
- <type>
- <v>Expressions = term()</v>
- <v>HookFunction = see separate description below.</v>
- <v>Indent = integer()</v>
- <v>DeepCharList = [char()|DeepCharList]</v>
- </type>
<desc>
<p>The same as <c>form</c>, but only for the sequence of
- expressions in <c>Expressions</c>.</p>
+ expressions in <c><anno>Expressions</anno></c>.</p>
</desc>
</func>
<func>
- <name>expr(Expression) -> DeepCharList</name>
- <name>expr(Expression, HookFunction) -> DeepCharList</name>
- <name>expr(Expression, Indent, HookFunction) -> DeepCharList</name>
- <name>expr(Expression, Indent, Precedence, HookFunction) ->-> DeepCharList</name>
+ <name name="expr" arity="1"/>
+ <name name="expr" arity="2"/>
+ <name name="expr" arity="3"/>
+ <name name="expr" arity="4"/>
<fsummary>Pretty print one <c>Expression</c></fsummary>
- <type>
- <v>Expression = term()</v>
- <v>HookFunction = see separate description below.</v>
- <v>Indent = integer()</v>
- <v>Precedence = </v>
- <v>DeepCharList = [char()|DeepCharList]</v>
- </type>
<desc>
<p>This function prints one expression. It is useful for implementing hooks (see below).</p>
</desc>
@@ -137,32 +126,6 @@
</funcs>
<section>
- <title>Unknown Expression Hooks</title>
- <p>The optional argument <c>HookFunction</c>, shown in the functions described above, defines a function which is called when an unknown form occurs where there
- should be a valid expression. It can have the following formats:</p>
- <taglist>
- <tag><c>Function</c></tag>
- <item>
- <p>The hook function is called by:</p>
- <code type="none">
-Function(Expr,
- CurrentIndentation,
- CurrentPrecedence,
- HookFunction) </code>
- </item>
- <tag><c>none</c></tag>
- <item>
- <p>There is no hook function</p>
- </item>
- </taglist>
- <p>The called hook function should return a (possibly deep) list
- of characters. <c>expr/4</c> is useful in a hook.
- </p>
- <p>If <c>CurrentIndentation</c> is negative, there will be no line
- breaks and only a space is used as a separator.</p>
- </section>
-
- <section>
<title>Bugs</title>
<p>It should be possible to have hook functions for unknown forms
at places other than expressions.</p>
diff --git a/lib/stdlib/doc/src/erl_scan.xml b/lib/stdlib/doc/src/erl_scan.xml
index 1199c34f0f..54240dea19 100644
--- a/lib/stdlib/doc/src/erl_scan.xml
+++ b/lib/stdlib/doc/src/erl_scan.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -37,56 +37,96 @@
<p>This module contains functions for tokenizing characters into
Erlang tokens.</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-category() = atom()
-column() = integer() > 0
-line() = integer()
-location() = line() | {line(), column()}
-reserved_word_fun() -> fun(atom()) -> bool()
-set_attribute_fun() -> fun(term()) -> term()
-symbol() = atom() | float() | integer() | string()
-token() = {category(), attributes()} | {category(), attributes(), symbol()}
-attributes() = line() | list() | tuple()</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name name="attribute_info"></name>
+ </datatype>
+ <datatype>
+ <name name="attributes"></name>
+ </datatype>
+ <datatype>
+ <name name="attributes_data"></name>
+ </datatype>
+ <datatype>
+ <name name="category"></name>
+ </datatype>
+ <datatype>
+ <name name="column"></name>
+ </datatype>
+ <datatype>
+ <name name="error_description"></name>
+ </datatype>
+ <datatype>
+ <name name="error_info"></name>
+ </datatype>
+ <datatype>
+ <name name="info_line"></name>
+ </datatype>
+ <datatype>
+ <name name="info_location"></name>
+ </datatype>
+ <datatype>
+ <name name="line"></name>
+ </datatype>
+ <datatype>
+ <name name="location"></name>
+ </datatype>
+ <datatype>
+ <name name="option"></name>
+ </datatype>
+ <datatype>
+ <name name="options"></name>
+ </datatype>
+ <datatype>
+ <name name="symbol"></name>
+ </datatype>
+ <datatype>
+ <name name="resword_fun"></name>
+ </datatype>
+ <datatype>
+ <name name="token"></name>
+ </datatype>
+ <datatype>
+ <name name="token_info"></name>
+ </datatype>
+ <datatype>
+ <name name="tokens"></name>
+ </datatype>
+ <datatype>
+ <name name="tokens_result"></name>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>string(String) -> Return</name>
- <name>string(String, StartLocation) -> Return</name>
- <name>string(String, StartLocation, Options) -> Return</name>
+ <name name="string" arity="1"/>
+ <name name="string" arity="2"/>
+ <name name="string" arity="3"/>
<fsummary>Scan a string and return the Erlang tokens</fsummary>
- <type>
- <v>String = string()</v>
- <v>Return = {ok, Tokens, EndLocation} | Error</v>
- <v>Tokens = [token()]</v>
- <v>Error = {error, ErrorInfo, EndLocation}</v>
- <v>StartLocation = EndLocation = location()</v>
- <v>Options = Option | [Option]</v>
- <v>Option = {reserved_word_fun,reserved_word_fun()}
- | return_comments | return_white_spaces | return
- | text</v>
- </type>
<desc>
- <p>Takes the list of characters <c>String</c> and tries to
- scan (tokenize) them. Returns <c>{ok, Tokens, EndLocation}</c>,
- where <c>Tokens</c> are the Erlang tokens from
- <c>String</c>. <c>EndLocation</c> is the first location
- after the last token.</p>
- <p><c>{error, ErrorInfo, EndLocation}</c> is returned if an
- error occurs. <c>EndLocation</c> is the first location after
+ <p>Takes the list of characters <c><anno>String</anno></c> and tries to
+ scan (tokenize) them. Returns <c>{ok, <anno>Tokens</anno>,
+ <anno>EndLocation</anno>}</c>,
+ where <c><anno>Tokens</anno></c> are the Erlang tokens from
+ <c><anno>String</anno></c>. <c><anno>EndLocation</anno></c>
+ is the first location after the last token.</p>
+ <p><c>{error, <anno>ErrorInfo</anno>, <anno>ErrorLocation</anno>}</c>
+ is returned if an error occurs.
+ <c><anno>ErrorLocation</anno></c> is the first location after
the erroneous token.</p>
- <p><c>string(String)</c> is equivalent to
- <c>string(String, 1)</c>, and <c>string(String,
- StartLocation)</c> is equivalent to <c>string(String,
- StartLocation, [])</c>.</p>
- <p><c>StartLocation</c> indicates the initial location when
- scanning starts. If <c>StartLocation</c> is a line
- <c>attributes()</c> as well as <c>EndLocation</c> and
- <c>ErrorLocation</c> will be lines. If
- <c>StartLocation</c> is a pair of a line and a column
+ <p><c>string(<anno>String</anno>)</c> is equivalent to
+ <c>string(<anno>String</anno>, 1)</c>, and
+ <c>string(<anno>String</anno>,
+ <anno>StartLocation</anno>)</c> is equivalent to
+ <c>string(<anno>String</anno>,
+ <anno>StartLocation</anno>, [])</c>.</p>
+ <p><c><anno>StartLocation</anno></c> indicates the initial location
+ when scanning starts. If <c><anno>StartLocation</anno></c> is a line
+ <c>attributes()</c> as well as <c><anno>EndLocation</anno></c> and
+ <c><anno>ErrorLocation</anno></c> will be lines. If
+ <c><anno>StartLocation</anno></c> is a pair of a line and a column
<c>attributes()</c> takes the form of an opaque compound
- data type, and <c>EndLocation</c> and <c>ErrorLocation</c>
+ data type, and <c><anno>EndLocation</anno></c> and
+ <c><anno>ErrorLocation</anno></c>
will be pairs of a line and a column. The <em>token
attributes</em> contain information about the column and the
line where the token begins, as well as the text of the
@@ -134,148 +174,130 @@ attributes() = line() | list() | tuple()</code>
</desc>
</func>
<func>
- <name>tokens(Continuation, CharSpec, StartLocation) -> Return</name>
- <name>tokens(Continuation, CharSpec, StartLocation, Options) -> Return</name>
+ <name name="tokens" arity="3"/>
+ <name name="tokens" arity="4"/>
+ <type name="char_spec"/>
+ <type name="return_cont"/>
+ <type_desc name="return_cont">An opaque continuation</type_desc>
<fsummary>Re-entrant scanner</fsummary>
- <type>
- <v>Continuation = [] | Continuation1</v>
- <v>Return = {done, Result, LeftOverChars} | {more, Continuation1}</v>
- <v>LeftOverChars = CharSpec</v>
- <v>CharSpec = string() | eof</v>
- <v>Continuation1 = tuple()</v>
- <v>Result = {ok, Tokens, EndLocation} | {eof, EndLocation} | Error</v>
- <v>Tokens = [token()]</v>
- <v>Error = {error, ErrorInfo, EndLocation}</v>
- <v>StartLocation = EndLocation = location()</v>
- <v>Options = Option | [Option]</v>
- <v>Option = {reserved_word_fun,reserved_word_fun()}
- | return_comments | return_white_spaces | return
- | text</v>
- </type>
<desc>
<p>This is the re-entrant scanner which scans characters until
a <em>dot</em> ('.' followed by a white space) or
<c>eof</c> has been reached. It returns:</p>
<taglist>
- <tag><c>{done, Result, LeftOverChars}</c></tag>
+ <tag><c>{done, <anno>Result</anno>, <anno>LeftOverChars</anno>}</c>
+ </tag>
<item>
<p>This return indicates that there is sufficient input
- data to get a result. <c>Result</c> is:</p>
+ data to get a result. <c><anno>Result</anno></c> is:</p>
<taglist>
- <tag><c>{ok, Tokens, EndLocation}</c></tag>
+ <tag><c>{ok, Tokens, EndLocation}</c>
+ </tag>
<item>
- <p>The scanning was successful. <c>Tokens</c> is the
- list of tokens including <em>dot</em>.</p>
+ <p>The scanning was successful. <c>Tokens</c>
+ is the list of tokens including <em>dot</em>.</p>
</item>
<tag><c>{eof, EndLocation}</c></tag>
<item>
<p>End of file was encountered before any more tokens.</p>
</item>
- <tag><c>{error, ErrorInfo, EndLocation}</c></tag>
+ <tag><c>{error, ErrorInfo, EndLocation}</c>
+ </tag>
<item>
- <p>An error occurred. <c>LeftOverChars</c> is the remaining
- characters of the input data,
+ <p>An error occurred. <c><anno>LeftOverChars</anno></c>
+ is the remaining characters of the input data,
starting from <c>EndLocation</c>.</p>
</item>
</taglist>
</item>
- <tag><c>{more, Continuation1}</c></tag>
+ <tag><c>{more, <anno>Continuation1</anno>}</c></tag>
<item>
<p>More data is required for building a term.
- <c>Continuation1</c> must be passed in a new call to
+ <c><anno>Continuation1</anno></c> must be passed in a new call to
<c>tokens/3,4</c> when more data is available.</p>
</item>
</taglist>
- <p>The <c>CharSpec</c> <c>eof</c> signals end of file.
- <c>LeftOverChars</c> will then take the value <c>eof</c> as
- well.</p>
- <p><c>tokens(Continuation, CharSpec, StartLocation)</c> is
- equivalent to <c>tokens(Continuation, CharSpec,
- StartLocation, [])</c>.</p>
+ <p>The <c><anno>CharSpec</anno></c> <c>eof</c> signals end of file.
+ <c><anno>LeftOverChars</anno></c> will then take the value <c>eof</c>
+ as well.</p>
+ <p><c>tokens(<anno>Continuation</anno>, <anno>CharSpec</anno>,
+ <anno>StartLocation</anno>)</c> is equivalent to
+ <c>tokens(<anno>Continuation</anno>, <anno>CharSpec</anno>,
+ <anno>StartLocation</anno>, [])</c>.</p>
<p>See <seealso marker="#string/3">string/3</seealso> for a
description of the various options.</p>
</desc>
</func>
<func>
- <name>reserved_word(Atom) -> bool()</name>
+ <name name="reserved_word" arity="1"/>
<fsummary>Test for a reserved word</fsummary>
- <type>
- <v>Atom = atom()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Atom</c> is an Erlang reserved
- word, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> if <c><anno>Atom</anno></c> is an Erlang
+ reserved word, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>token_info(Token) -> TokenInfo</name>
+ <name name="token_info" arity="1"/>
<fsummary>Return information about a token</fsummary>
- <type>
- <v>Token = token()</v>
- <v>TokenInfo = [TokenInfoTuple]</v>
- <v>TokenInfoTuple = {TokenItem, Info}</v>
- <v>TokenItem = atom()</v>
- <v>Info = term()</v>
- </type>
<desc>
<p>Returns a list containing information about the token
- <c>Token</c>. The order of the <c>TokenInfoTuple</c>s is not
- defined. The following <c>TokenItem</c>s are returned:
- <c>category</c>, <c>column</c>, <c>length</c>,
- <c>line</c>, <c>symbol</c>, and <c>text</c>. See <seealso
+ <c><anno>Token</anno></c>. The order of the
+ <c><anno>TokenInfoTuple</anno></c>s is not
+ defined. See <seealso
marker="#token_info/2">token_info/2</seealso> for
information about specific
- <c>TokenInfoTuple</c>s.</p>
+ <c><anno>TokenInfoTuple</anno></c>s.</p>
<p>Note that if <c>token_info(Token, TokenItem)</c> returns
- <c>undefined</c> for some <c>TokenItem</c> in the list above, the
- item is not included in <c>TokenInfo</c>.</p>
+ <c>undefined</c> for some <c>TokenItem</c>, the
+ item is not included in <c><anno>TokenInfo</anno></c>.</p>
</desc>
</func>
<func>
- <name>token_info(Token, TokenItemSpec) -> TokenInfo</name>
+ <name name="token_info" arity="2" clause_i="1"/>
+ <name name="token_info" arity="2" clause_i="2"/>
+ <type name="token_item"/>
+ <type name="attribute_item"/>
<fsummary>Return information about a token</fsummary>
- <type>
- <v>Token = token()</v>
- <v>TokenItemSpec = TokenItem | [TokenItem]</v>
- <v>TokenInfo = TokenInfoTuple | undefined | [TokenInfoTuple]</v>
- <v>TokenInfoTuple = {TokenItem, Info}</v>
- <v>TokenItem = atom()</v>
- <v>Info = term()</v>
- </type>
<desc>
<p>Returns a list containing information about the token
- <c>Token</c>. If <c>TokenItemSpec</c> is a single
- <c>TokenItem</c>, the returned value is the corresponding
+ <c><anno>Token</anno></c>. If one single
+ <c><anno>TokenItem</anno></c> is given the returned value is
+ the corresponding
<c>TokenInfoTuple</c>, or <c>undefined</c> if the
- <c>TokenItem</c> has no value. If <c>TokenItemSpec</c> is a
- list of
- <c>TokenItem</c>, the result is a list of
- <c>TokenInfoTuple</c>. The <c>TokenInfoTuple</c>s will
- appear with the corresponding
- <c>TokenItem</c>s in the same order as the <c>TokenItem</c>s
- appeared in the list of <c>TokenItem</c>s. <c>TokenItem</c>s
- with no value are not included in the list of
- <c>TokenInfoTuple</c>.</p>
- <p>The following <c>TokenInfoTuple</c>s with corresponding
- <c>TokenItem</c>s are valid:</p>
+ <c>TokenItem</c> has no value. If a list of
+ <c><anno>TokenItem</anno></c>s is given the result is a list of
+ <c><anno>TokenInfoTuple</anno></c>. The
+ <c><anno>TokenInfoTuple</anno></c>s will
+ appear with the corresponding <c><anno>TokenItem</anno></c>s in
+ the same order as the <c><anno>TokenItem</anno></c>s
+ appear in the list of <c>TokenItem</c>s.
+ <c><anno>TokenItem</anno></c>s with no value are not included
+ in the list of <c><anno>TokenInfoTuple</anno></c>.</p>
+ <p>The following <c><anno>TokenInfoTuple</anno></c>s with corresponding
+ <c><anno>TokenItem</anno></c>s are valid:</p>
<taglist>
- <tag><c>{category, category()}</c></tag>
+ <tag><c>{category, <seealso marker="#type-category">
+ category()</seealso>}</c></tag>
<item><p>The category of the token.</p>
</item>
- <tag><c>{column, column()}</c></tag>
+ <tag><c>{column, <seealso marker="#type-column">
+ column()</seealso>}</c></tag>
<item><p>The column where the token begins.</p>
</item>
<tag><c>{length, integer() > 0}</c></tag>
<item><p>The length of the token's text.</p>
</item>
- <tag><c>{line, line()}</c></tag>
+ <tag><c>{line, <seealso marker="#type-line">
+ line()</seealso>}</c></tag>
<item><p>The line where the token begins.</p>
</item>
- <tag><c>{location, location()}</c></tag>
+ <tag><c>{location, <seealso marker="#type-location">
+ location()</seealso>}</c></tag>
<item><p>The line and column where the token begins, or
just the line if the column unknown.</p>
</item>
- <tag><c>{symbol, symbol()}</c></tag>
+ <tag><c>{symbol, <seealso marker="#type-symbol">
+ symbol()</seealso>}</c></tag>
<item><p>The token's symbol.</p>
</item>
<tag><c>{text, string()}</c></tag>
@@ -285,70 +307,59 @@ attributes() = line() | list() | tuple()</code>
</desc>
</func>
<func>
- <name>attributes_info(Attributes) -> AttributesInfo</name>
+ <name name="attributes_info" arity="1"/>
<fsummary>Return information about token attributes</fsummary>
- <type>
- <v>Attributes = attributes()</v>
- <v>AttributesInfo = [AttributeInfoTuple]</v>
- <v>AttributeInfoTuple = {AttributeItem, Info}</v>
- <v>AttributeItem = atom()</v>
- <v>Info = term()</v>
- </type>
<desc>
<p>Returns a list containing information about the token
- attributes <c>Attributes</c>. The order of the
- <c>AttributeInfoTuple</c>s is not defined. The following
- <c>AttributeItem</c>s are returned:
- <c>column</c>, <c>length</c>, <c>line</c>, and <c>text</c>.
+ attributes <c><anno>Attributes</anno></c>. The order of the
+ <c><anno>AttributeInfoTuple</anno></c>s is not defined.
See <seealso
marker="#attributes_info/2">attributes_info/2</seealso> for
information about specific
- <c>AttributeInfoTuple</c>s.</p>
+ <c><anno>AttributeInfoTuple</anno></c>s.</p>
<p>Note that if <c>attributes_info(Token, AttributeItem)</c>
returns <c>undefined</c> for some <c>AttributeItem</c> in
the list above, the item is not included in
- <c>AttributesInfo</c>.</p>
+ <c><anno>AttributesInfo</anno></c>.</p>
</desc>
</func>
<func>
- <name>attributes_info(Attributes, AttributeItemSpec) -> AttributesInfo</name>
+ <name name="attributes_info" arity="2" clause_i="1"/>
+ <name name="attributes_info" arity="2" clause_i="2"/>
<fsummary>Return information about a token attributes</fsummary>
- <type>
- <v>Attributes = attributes()</v>
- <v>AttributeItemSpec = AttributeItem | [AttributeItem]</v>
- <v>AttributesInfo = AttributeInfoTuple | undefined
- | [AttributeInfoTuple]</v>
- <v>AttributeInfoTuple = {AttributeItem, Info}</v>
- <v>AttributeItem = atom()</v>
- <v>Info = term()</v>
- </type>
+ <type name="attribute_item"/>
<desc>
<p>Returns a list containing information about the token
- attributes <c>Attributes</c>. If <c>AttributeItemSpec</c> is
- a single <c>AttributeItem</c>, the returned value is the
- corresponding <c>AttributeInfoTuple</c>, or <c>undefined</c>
- if the <c>AttributeItem</c> has no value. If
- <c>AttributeItemSpec</c> is a list of
- <c>AttributeItem</c>, the result is a list of
- <c>AttributeInfoTuple</c>. The <c>AttributeInfoTuple</c>s
- will appear with the corresponding <c>AttributeItem</c>s in
- the same order as the <c>AttributeItem</c>s appeared in the
- list of <c>AttributeItem</c>s. <c>AttributeItem</c>s with no
+ attributes <c><anno>Attributes</anno></c>. If one single
+ <c><anno>AttributeItem</anno></c> is given the returned value is the
+ corresponding <c><anno>AttributeInfoTuple</anno></c>,
+ or <c>undefined</c> if the <c><anno>AttributeItem</anno></c>
+ has no value. If a list of <c><anno>AttributeItem</anno></c>
+ is given the result is a list of
+ <c><anno>AttributeInfoTuple</anno></c>.
+ The <c><anno>AttributeInfoTuple</anno></c>s
+ will appear with the corresponding <c><anno>AttributeItem</anno></c>s
+ in the same order as the <c><anno>AttributeItem</anno></c>s
+ appear in the list of <c><anno>AttributeItem</anno></c>s.
+ <c><anno>AttributeItem</anno></c>s with no
value are not included in the list of
- <c>AttributeInfoTuple</c>.</p>
- <p>The following <c>AttributeInfoTuple</c>s with corresponding
- <c>AttributeItem</c>s are valid:</p>
+ <c><anno>AttributeInfoTuple</anno></c>.</p>
+ <p>The following <c><anno>AttributeInfoTuple</anno></c>s with
+ corresponding <c><anno>AttributeItem</anno></c>s are valid:</p>
<taglist>
- <tag><c>{column, column()}</c></tag>
+ <tag><c>{column, <seealso marker="#type-column">
+ column()</seealso>}</c></tag>
<item><p>The column where the token begins.</p>
</item>
<tag><c>{length, integer() > 0}</c></tag>
<item><p>The length of the token's text.</p>
</item>
- <tag><c>{line, line()}</c></tag>
+ <tag><c>{line, <seealso marker="#type-line">
+ line()</seealso>}</c></tag>
<item><p>The line where the token begins.</p>
</item>
- <tag><c>{location, location()}</c></tag>
+ <tag><c>{location, <seealso marker="#type-location">
+ location()</seealso>}</c></tag>
<item><p>The line and column where the token begins, or
just the line if the column unknown.</p>
</item>
@@ -359,29 +370,22 @@ attributes() = line() | list() | tuple()</code>
</desc>
</func>
<func>
- <name>set_attribute(AttributeItem, Attributes, SetAttributeFun) -> AttributesInfo</name>
+ <name name="set_attribute" arity="3"/>
<fsummary>Set a token attribute value</fsummary>
- <type>
- <v>AttributeItem = line</v>
- <v>Attributes = attributes()</v>
- <v>SetAttributeFun = set_attribute_fun()</v>
- </type>
<desc>
<p>Sets the value of the <c>line</c> attribute of the token
- attributes <c>Attributes</c>.</p>
- <p>The <c>SetAttributeFun</c> is called with the value of
+ attributes <c><anno>Attributes</anno></c>.</p>
+ <p>The <c><anno>SetAttributeFun</anno></c> is called with the value of
the <c>line</c> attribute, and is to return the new value of
the <c>line</c> attribute.</p>
</desc>
</func>
<func>
- <name>format_error(ErrorDescriptor) -> string()</name>
+ <name name="format_error" arity="1"/>
<fsummary>Format an error descriptor</fsummary>
- <type>
- <v>ErrorDescriptor = errordesc()</v>
- </type>
<desc>
- <p>Takes an <c>ErrorDescriptor</c> and returns a string which
+ <p>Takes an <c><anno>ErrorDescriptor</anno></c> and returns
+ a string which
describes the error or warning. This function is usually
called implicitly when processing an <c>ErrorInfo</c>
structure (see below).</p>
diff --git a/lib/stdlib/doc/src/ets.xml b/lib/stdlib/doc/src/ets.xml
index 746f94d3f4..8c952708c5 100644
--- a/lib/stdlib/doc/src/ets.xml
+++ b/lib/stdlib/doc/src/ets.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -126,15 +126,30 @@
<em>ERTS User's Guide</em>.</p>
</section>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-match_spec()
- a match specification, see above
-
-tid()
- a table identifier, as returned by new/2</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name><marker id="type-continuation">continuation()</marker></name>
+ <desc>
+ <p>Opaque continuation used by <seealso marker="#select/1">
+ <c>select/1</c></seealso> and <seealso marker="#select/3">
+ <c>select/3</c></seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="match_spec"/>
+ <desc><p>A match specification, see above.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="match_pattern"/>
+ </datatype>
+ <datatype>
+ <name name="tab"/>
+ </datatype>
+ <datatype>
+ <name name="tid"/>
+ <desc><p>A table identifier, as returned by new/2.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
<name>all() -> [Tab]</name>
@@ -197,37 +212,25 @@ tid()
</desc>
</func>
<func>
- <name>file2tab(Filename) -> {ok,Tab} | {error,Reason}</name>
+ <name name="file2tab" arity="1"/>
<fsummary>Read an ETS table from a file.</fsummary>
- <type>
- <v>Filename = string() | atom()</v>
- <v>Tab = tid() | atom()</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>Reads a file produced by <seealso
marker="#tab2file/2">tab2file/2</seealso> or
<seealso marker="#tab2file/3">tab2file/3</seealso> and creates the
- corresponding table <c>Tab</c>.</p>
- <p>Equivalent to <c>file2tab(Filename,[])</c>.</p>
+ corresponding table <c><anno>Tab</anno></c>.</p>
+ <p>Equivalent to <c>file2tab(<anno>Filename</anno>, [])</c>.</p>
</desc>
</func>
<func>
- <name>file2tab(Filename,Options) -> {ok,Tab} | {error,Reason}</name>
+ <name name="file2tab" arity="2"/>
<fsummary>Read an ETS table from a file.</fsummary>
- <type>
- <v>Filename = string() | atom()</v>
- <v>Tab = tid() | atom()</v>
- <v>Options = [Option]</v>
- <v>Option = {verify, bool()}</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>Reads a file produced by <seealso
marker="#tab2file/2">tab2file/2</seealso> or
<seealso marker="#tab2file/3">tab2file/3</seealso> and creates the
- corresponding table <c>Tab</c>.</p>
- <p>The currently only supported option is <c>{verify,bool()}</c>. If
+ corresponding table <c><anno>Tab</anno></c>.</p>
+ <p>The currently only supported option is <c>{verify,boolean()}</c>. If
verification is turned on (by means of specifying
<c>{verify,true}</c>), the function utilizes whatever
information is present in the file to assert that the
@@ -271,70 +274,52 @@ tid()
</desc>
</func>
<func>
- <name>foldl(Function, Acc0, Tab) -> Acc1</name>
+ <name name="foldl" arity="3"/>
<fsummary>Fold a function over an ETS table</fsummary>
- <type>
- <v>Function = fun(A, AccIn) -> AccOut</v>
- <v>Tab = tid() | atom()</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- </type>
<desc>
- <p><c>Acc0</c> is returned if the table is empty.
+ <p><c><anno>Acc0</anno></c> is returned if the table is empty.
This function is similar to <c>lists:foldl/3</c>. The order in
which the elements of the table are traversed is unspecified,
except for tables of type <c>ordered_set</c>, for which they
are traversed first to last.</p>
- <p>If <c>Function</c> inserts objects into the table, or another
+ <p>If <c><anno>Function</anno></c> inserts objects into the table, or another
process inserts objects into the table, those objects <em>may</em>
(depending on key ordering) be included in the traversal.</p>
</desc>
</func>
<func>
- <name>foldr(Function, Acc0, Tab) -> Acc1</name>
+ <name name="foldr" arity="3"/>
<fsummary>Fold a function over an ETS table</fsummary>
- <type>
- <v>Function = fun(A, AccIn) -> AccOut</v>
- <v>Tab = tid() | atom()</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- </type>
<desc>
- <p><c>Acc0</c> is returned if the table is empty.
+ <p><c><anno>Acc0</anno></c> is returned if the table is empty.
This function is similar to <c>lists:foldr/3</c>. The order in
which the elements of the table are traversed is unspecified,
except for tables of type <c>ordered_set</c>, for which they
are traversed last to first.</p>
- <p>If <c>Function</c> inserts objects into the table, or another
+ <p>If <c><anno>Function</anno></c> inserts objects into the table, or another
process inserts objects into the table, those objects <em>may</em>
(depending on key ordering) be included in the traversal.</p>
</desc>
</func>
<func>
- <name>from_dets(Tab, DetsTab) -> true</name>
+ <name name="from_dets" arity="2"/>
<fsummary>Fill an ETS table with objects from a Dets table.</fsummary>
- <type>
- <v>Tab = tid() | atom()</v>
- <v>DetsTab = atom()</v>
- </type>
<desc>
<p>Fills an already created ETS table with the objects in the
- already opened Dets table named <c>DetsTab</c>. The existing
+ already opened Dets table named <c><anno>DetsTab</anno></c>. The existing
objects of the ETS table are kept unless overwritten.</p>
<p>Throws a badarg error if any of the tables does not exist or the
dets table is not open.</p>
</desc>
</func>
<func>
- <name>fun2ms(LiteralFun) -> MatchSpec</name>
+ <name name="fun2ms" arity="1"/>
<fsummary>Pseudo function that transforms fun syntax to a match_spec.</fsummary>
- <type>
- <v>LiteralFun -- see below</v>
- <v>MatchSpec = match_spec()</v>
- </type>
<desc>
<p>Pseudo function that by means of a <c>parse_transform</c>
- translates <c>LiteralFun</c> typed as parameter in the
+ translates <c><anno>LiteralFun</anno></c> typed as parameter in the
function call to a
<seealso marker="#match_spec">match_spec</seealso>. With
"literal" is meant that the fun needs to textually be written
@@ -342,7 +327,7 @@ tid()
variable which in turn is passed to the function).</p>
<p>The parse transform is implemented in the module
<c>ms_transform</c> and the source <em>must</em> include the
- file <c>ms_transform.hrl</c> in <c>stdlib</c> for this
+ file <c>ms_transform.hrl</c> in STDLIB for this
pseudo function to work. Failing to include the hrl file in
the source will result in a runtime error, not a compile
time ditto. The include file is easiest included by adding
@@ -422,20 +407,17 @@ Error: fun containing local Erlang function calls
</desc>
</func>
<func>
- <name>i() -> ok</name>
+ <name name="i" arity="0"/>
<fsummary>Display information about all ETS tables on tty.</fsummary>
<desc>
<p>Displays information about all ETS tables on tty.</p>
</desc>
</func>
<func>
- <name>i(Tab) -> ok</name>
+ <name name="i" arity="1"/>
<fsummary>Browse an ETS table on tty.</fsummary>
- <type>
- <v>Tab = tid() | atom()</v>
- </type>
<desc>
- <p>Browses the table <c>Tab</c> on tty.</p>
+ <p>Browses the table <c><anno>Tab</anno></c> on tty.</p>
</desc>
</func>
<func>
@@ -454,7 +436,7 @@ Error: fun containing local Erlang function calls
correct type, this function fails with reason <c>badarg</c>.</p>
<list type="bulleted">
- <item><c>Item=memory, Value=int()</c> <br></br>
+ <item><c>Item=memory, Value=integer()</c> <br></br>
The number of words allocated to the table.</item>
<item><c>Item=owner, Value=pid()</c> <br></br>
@@ -466,7 +448,7 @@ Error: fun containing local Erlang function calls
<item><c>Item=name, Value=atom()</c> <br></br>
The name of the table.</item>
- <item><c>Item=size, Value=int()</c> <br></br>
+ <item><c>Item=size, Value=integer()</c> <br></br>
The number of objects inserted in the table.</item>
<item><c>Item=node, Value=atom()</c> <br></br>
@@ -479,7 +461,7 @@ Error: fun containing local Erlang function calls
<item><c>Item=type, Value=set|ordered_set|bag|duplicate_bag</c> <br></br>
The table type.</item>
- <item><c>Item=keypos, Value=int()</c> <br></br>
+ <item><c>Item=keypos, Value=integer()</c> <br></br>
The key position.</item>
<item><c>Item=protection, Value=public|protected|private</c> <br></br>
@@ -536,25 +518,19 @@ Error: fun containing local Erlang function calls
</desc>
</func>
<func>
- <name>init_table(Name, InitFun) -> true</name>
+ <name name="init_table" arity="2"/>
<fsummary>Replace all objects of an ETS table.</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>InitFun = fun(Arg) -> Res</v>
- <v>Arg = read | close</v>
- <v>Res = end_of_input | {[object()], InitFun} | term()</v>
- </type>
<desc>
- <p>Replaces the existing objects of the table <c>Tab</c> with
- objects created by calling the input function <c>InitFun</c>,
+ <p>Replaces the existing objects of the table <c><anno>Tab</anno></c> with
+ objects created by calling the input function <c><anno>InitFun</anno></c>,
see below. This function is provided for compatibility with
the <c>dets</c> module, it is not more efficient than filling
a table by using <c>ets:insert/2</c>.
</p>
<p>When called with the argument <c>read</c> the function
- <c>InitFun</c> is assumed to return <c>end_of_input</c> when
- there is no more input, or <c>{Objects, Fun}</c>, where
- <c>Objects</c> is a list of objects and <c>Fun</c> is a new
+ <c><anno>InitFun</anno></c> is assumed to return <c>end_of_input</c> when
+ there is no more input, or <c>{<anno>Objects</anno>, Fun}</c>, where
+ <c><anno>Objects</anno></c> is a list of objects and <c>Fun</c> is a new
input function. Any other value Value is returned as an error
<c>{error, {init_fun, Value}}</c>. Each input function will be
called exactly once, and should an error occur, the last
@@ -594,7 +570,7 @@ Error: fun containing local Erlang function calls
</desc>
</func>
<func>
- <name>insert_new(Tab, ObjectOrObjects) -> bool()</name>
+ <name>insert_new(Tab, ObjectOrObjects) -> boolean()</name>
<fsummary>Insert an object into an ETS table if the key is not already present.</fsummary>
<type>
<v>Tab = tid() | atom()</v>
@@ -615,7 +591,7 @@ Error: fun containing local Erlang function calls
</desc>
</func>
<func>
- <name>is_compiled_ms(Term) -> bool()</name>
+ <name>is_compiled_ms(Term) -> boolean()</name>
<fsummary>Checks if an Erlang term is the result of ets:match_spec_compile</fsummary>
<type>
<v>Term = term()</v>
@@ -708,7 +684,7 @@ ets:is_compiled_ms(Broken).</code>
<type>
<v>Tab = tid() | atom()</v>
<v>Key = term()</v>
- <v>Pos = int()</v>
+ <v>Pos = integer()</v>
<v>Elem = term() | [term()]</v>
</type>
<desc>
@@ -802,15 +778,11 @@ ets:is_compiled_ms(Broken).</code>
</desc>
</func>
<func>
- <name>match_delete(Tab, Pattern) -> true</name>
+ <name name="match_delete" arity="2"/>
<fsummary>Delete all objects which match a given pattern from an ETS table.</fsummary>
- <type>
- <v>Tab = tid() | atom()</v>
- <v>Pattern = tuple()</v>
- </type>
<desc>
- <p>Deletes all objects which match the pattern <c>Pattern</c>
- from the table <c>Tab</c>. See <c>match/2</c> for a
+ <p>Deletes all objects which match the pattern <c><anno>Pattern</anno></c>
+ from the table <c><anno>Tab</anno></c>. See <c>match/2</c> for a
description of patterns.</p>
</desc>
</func>
@@ -957,8 +929,8 @@ ets:select(Table,MatchSpec),</code>
<v>&nbsp;Option = Type | Access | named_table | {keypos,Pos} | {heir,pid(),HeirData} | {heir,none} | Tweaks</v>
<v>&nbsp;&nbsp;Type = set | ordered_set | bag | duplicate_bag</v>
<v>&nbsp;&nbsp;Access = public | protected | private</v>
- <v>&nbsp;&nbsp;Tweaks = {write_concurrency,bool()} | {read_concurrency,bool()} | compressed</v>
- <v>&nbsp;&nbsp;Pos = int()</v>
+ <v>&nbsp;&nbsp;Tweaks = {write_concurrency,boolean()} | {read_concurrency,boolean()} | compressed</v>
+ <v>&nbsp;&nbsp;Pos = integer()</v>
<v>&nbsp;&nbsp;HeirData = term()</v>
</type>
<desc>
@@ -1050,7 +1022,7 @@ ets:select(Table,MatchSpec),</code>
</item>
<item>
<marker id="new_2_write_concurrency"></marker>
- <p><c>{write_concurrency,bool()}</c>
+ <p><c>{write_concurrency,boolean()}</c>
Performance tuning. Default is <c>false</c>, in which case an operation that
mutates (writes to) the table will obtain exclusive access,
blocking any concurrent access of the same table until finished.
@@ -1074,7 +1046,7 @@ ets:select(Table,MatchSpec),</code>
</item>
<item>
<marker id="new_2_read_concurrency"></marker>
- <p><c>{read_concurrency,bool()}</c>
+ <p><c>{read_concurrency,boolean()}</c>
Performance tuning. Default is <c>false</c>. When set to
<c>true</c>, the table is optimized for concurrent read
operations. When this option is enabled on a runtime system with
@@ -1160,12 +1132,8 @@ ets:select(Table,MatchSpec),</code>
</desc>
</func>
<func>
- <name>repair_continuation(Continuation, MatchSpec) -> Continuation</name>
+ <name name="repair_continuation" arity="2"/>
<fsummary>Repair a continuation from ets:select/1 or ets:select/3 that has passed through external representation</fsummary>
- <type>
- <v>Continuation = term()</v>
- <v>MatchSpec = match_spec()</v>
- </type>
<desc>
<p>This function can be used to restore an opaque continuation
returned by <c>ets:select/3</c> or <c>ets:select/1</c> if the
@@ -1551,7 +1519,7 @@ is_integer(X), is_integer(Y), X + Y < 4711]]></code>
<fsummary>Return all objects in a given slot of an ETS table.</fsummary>
<type>
<v>Tab = tid() | atom()</v>
- <v>I = int()</v>
+ <v>I = integer()</v>
<v>Object = tuple()</v>
</type>
<desc>
@@ -1572,32 +1540,19 @@ is_integer(X), is_integer(Y), X + Y < 4711]]></code>
</desc>
</func>
<func>
- <name>tab2file(Tab, Filename) -> ok | {error,Reason}</name>
+ <name name="tab2file" arity="2"/>
<fsummary>Dump an ETS table to a file.</fsummary>
- <type>
- <v>Tab = tid() | atom()</v>
- <v>Filename = string() | atom()</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>Dumps the table <c>Tab</c> to the file <c>Filename</c>.</p>
- <p>Equivalent to <c>tab2file(Tab, Filename,[])</c></p>
+ <p>Dumps the table <c><anno>Tab</anno></c> to the file <c><anno>Filename</anno></c>.</p>
+ <p>Equivalent to <c>tab2file(<anno>Tab</anno>, <anno>Filename</anno>,[])</c></p>
</desc>
</func>
<func>
- <name>tab2file(Tab, Filename, Options) -> ok | {error,Reason}</name>
+ <name name="tab2file" arity="3"/>
<fsummary>Dump an ETS table to a file.</fsummary>
- <type>
- <v>Tab = tid() | atom()</v>
- <v>Filename = string() | atom()</v>
- <v>Options = [Option]</v>
- <v>Option = {extended_info, [ExtInfo]}</v>
- <v>ExtInfo = object_count | md5sum</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>Dumps the table <c>Tab</c> to the file <c>Filename</c>.</p>
+ <p>Dumps the table <c><anno>Tab</anno></c> to the file <c><anno>Filename</anno></c>.</p>
<p>When dumping the table, certain information about the table
is dumped to a header at the beginning of the dump. This
information contains data about the table type,
@@ -1634,26 +1589,15 @@ is_integer(X), is_integer(Y), X + Y < 4711]]></code>
</desc>
</func>
<func>
- <name>tab2list(Tab) -> [Object]</name>
+ <name name="tab2list" arity="1"/>
<fsummary>Return a list of all objects in an ETS table.</fsummary>
- <type>
- <v>Tab = tid() | atom()</v>
- <v>Object = tuple()</v>
- </type>
<desc>
- <p>Returns a list of all objects in the table <c>Tab</c>.</p>
+ <p>Returns a list of all objects in the table <c><anno>Tab</anno></c>.</p>
</desc>
</func>
<func>
- <name>tabfile_info(Filename) -> {ok, TableInfo} | {error, Reason}</name>
+ <name name="tabfile_info" arity="1"/>
<fsummary>Return a list of all objects in an ETS table.</fsummary>
- <type>
- <v>Filename = string() | atom()</v>
- <v>TableInfo = [InfoItem]</v>
- <v>InfoItem = {InfoTag, term()}</v>
- <v>InfoTag = name | type | protection | named_table | keypos | size | extended_info | version</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>Returns information about the table dumped to file by
<seealso marker="#tab2file/2">tab2file/2</seealso> or
@@ -1699,7 +1643,7 @@ is_integer(X), is_integer(Y), X + Y < 4711]]></code>
one or more of the atoms <c>object_count</c> and
<c>md5sum</c>.</item>
<tag>version</tag>
- <item>A tuple <c>{Major,Minor}</c> containing the major and
+ <item>A tuple <c>{<anno>Major</anno>,<anno>Minor</anno>}</c> containing the major and
minor version of the file format for ets table dumps. This
version field was added beginning with stdlib-1.5.1, files
dumped with older versions will return <c>{0,0}</c> in this
@@ -1712,20 +1656,11 @@ is_integer(X), is_integer(Y), X + Y < 4711]]></code>
</desc>
</func>
<func>
- <name>table(Tab [, Options]) -> QueryHandle</name>
+ <name name="table" arity="1"/>
+ <name name="table" arity="2"/>
<fsummary>Return a QLC query handle.</fsummary>
- <type>
- <v>Tab = tid() | atom()</v>
- <v>QueryHandle = -&nbsp;a query handle, see qlc(3)&nbsp;-</v>
- <v>Options = [Option] | Option</v>
- <v>Option = {n_objects, NObjects} | {traverse, TraverseMethod}</v>
- <v>NObjects = default | integer() > 0</v>
- <v>TraverseMethod = first_next | last_prev | select | {select, MatchSpec}</v>
- <v>MatchSpec = match_spec()</v>
- </type>
<desc>
- <p> <marker id="qlc_table"></marker>
-Returns a QLC (Query List
+ <p><marker id="qlc_table"></marker>Returns a QLC (Query List
Comprehension) query handle. The module <c>qlc</c> implements
a query language aimed mainly at Mnesia but ETS tables, Dets
tables, and lists are also recognized by QLC as sources of
@@ -1760,7 +1695,7 @@ Returns a QLC (Query List
that matches all objects.</p>
</item>
<item>
- <p><c>{select, MatchSpec}</c>. As for <c>select</c>
+ <p><c>{select, <anno>MatchSpec</anno>}</c>. As for <c>select</c>
the table is traversed by calling <c>ets:select/3</c> and
<c>ets:select/1</c>. The difference is that the
match_spec is explicitly given. This is how to state
@@ -1788,41 +1723,31 @@ true</pre>
</desc>
</func>
<func>
- <name>test_ms(Tuple, MatchSpec) -> {ok, Result} | {error, Errors}</name>
+ <name name="test_ms" arity="2"/>
<fsummary>Test a match_spec for use in ets:select/2.</fsummary>
- <type>
- <v>Tuple = tuple()</v>
- <v>MatchSpec = match_spec()</v>
- <v>Result = term()</v>
- <v>Errors = [{warning|error, string()}]</v>
- </type>
<desc>
<p>This function is a utility to test a
<seealso marker="#match_spec">match_spec</seealso> used in
calls to <c>ets:select/2</c>. The function both tests
- <c>MatchSpec</c> for "syntactic" correctness and runs the
- match_spec against the object <c>Tuple</c>. If the match_spec
- contains errors, the tuple <c>{error, Errors}</c> is returned
- where <c>Errors</c> is a list of natural language
+ <c><anno>MatchSpec</anno></c> for "syntactic" correctness and runs the
+ match_spec against the object <c><anno>Tuple</anno></c>. If the match_spec
+ contains errors, the tuple <c>{error, <anno>Errors</anno>}</c> is returned
+ where <c><anno>Errors</anno></c> is a list of natural language
descriptions of what was wrong with the match_spec. If the
match_spec is syntactically OK, the function returns
- <c>{ok,Term}</c> where <c>Term</c> is what would have been
+ <c>{ok,<anno>Result</anno>}</c> where <c><anno>Result</anno></c> is what would have been
the result in a real <c>ets:select/2</c> call or <c>false</c>
- if the match_spec does not match the object <c>Tuple</c>.</p>
+ if the match_spec does not match the object <c><anno>Tuple</anno></c>.</p>
<p>This is a useful debugging and test tool, especially when
writing complicated <c>ets:select/2</c> calls.</p>
</desc>
</func>
<func>
- <name>to_dets(Tab, DetsTab) -> DetsTab</name>
+ <name name="to_dets" arity="2"/>
<fsummary>Fill a Dets table with objects from an ETS table.</fsummary>
- <type>
- <v>Tab = tid() | atom()</v>
- <v>DetsTab = atom()</v>
- </type>
<desc>
<p>Fills an already created/opened Dets table with the objects
- in the already opened ETS table named <c>Tab</c>. The Dets
+ in the already opened ETS table named <c><anno>Tab</anno></c>. The Dets
table is emptied before the objects are inserted.</p>
</desc>
</func>
@@ -1835,7 +1760,7 @@ true</pre>
<v>Tab = tid() | atom()</v>
<v>Key = term()</v>
<v>UpdateOp = {Pos,Incr} | {Pos,Incr,Threshold,SetValue}</v>
- <v>Pos = Incr = Threshold = SetValue = Result = int()</v>
+ <v>Pos = Incr = Threshold = SetValue = Result = integer()</v>
</type>
<desc>
<p>This function provides an efficient way to update one or more
@@ -1897,7 +1822,7 @@ true</pre>
<type>
<v>Tab = tid() | atom()</v>
<v>Key = Value = term()</v>
- <v>Pos = int()</v>
+ <v>Pos = integer()</v>
</type>
<desc>
<p>This function provides an efficient way to update one or more
diff --git a/lib/stdlib/doc/src/file_sorter.xml b/lib/stdlib/doc/src/file_sorter.xml
index ccb32659a0..a6b3633066 100644
--- a/lib/stdlib/doc/src/file_sorter.xml
+++ b/lib/stdlib/doc/src/file_sorter.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2001</year><year>2010</year>
+ <year>2001</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -89,7 +89,7 @@
considerably. The <c>keysort</c>, <c>keymerge</c> and
<c>keycheck</c> functions do not accept ordering functions.
</item>
- <item><c>{unique, bool()}</c>. When sorting or merging files,
+ <item><c>{unique, boolean()}</c>. When sorting or merging files,
only the first of a sequence of terms that compare equal (<c>==</c>)
is output if this option is set to <c>true</c>. The default
value is <c>false</c> which implies that all terms that
@@ -112,7 +112,7 @@
overwritten. Temporary files are deleted unless some
uncaught EXIT signal occurs.
</item>
- <item><c>{compressed, bool()}</c>. Temporary files and the
+ <item><c>{compressed, boolean()}</c>. Temporary files and the
output file may be compressed. The default value
<c>false</c> implies that written files are not
compressed. Regardless of the value of the <c>compressed</c>
@@ -128,39 +128,6 @@
merged at a time. This option should rarely be needed.
</item>
</list>
- <p>To summarize, here is the syntax of the options:</p>
- <list type="bulleted">
- <item>
- <p><c>Options = [Option] | Option</c></p>
- </item>
- <item>
- <p><c>Option = {header, HeaderLength} | {format, Format} | {order, Order} | {unique, bool()} | {tmpdir, TempDirectory} | {compressed, bool()} | {size, Size} | {no_files, NoFiles}</c></p>
- </item>
- <item>
- <p><c>HeaderLength = int() > 0</c></p>
- </item>
- <item>
- <p><c>Format = binary_term | term | binary | FormatFun</c></p>
- </item>
- <item>
- <p><c>FormatFun = fun(Binary) -> Term</c></p>
- </item>
- <item>
- <p><c>Order = ascending | descending | OrderFun</c></p>
- </item>
- <item>
- <p><c>OrderFun = fun(Term, Term) -> bool()</c></p>
- </item>
- <item>
- <p><c>TempDirectory = "" | file_name()</c></p>
- </item>
- <item>
- <p><c>Size = int() >= 0</c></p>
- </item>
- <item>
- <p><c>NoFiles = int() > 1</c></p>
- </item>
- </list>
<p>As an alternative to sorting files, a function of one argument
can be given as input. When called with the argument <c>read</c>
the function is assumed to return <c>end_of_input</c> or
@@ -234,8 +201,8 @@ output(L) ->
occurs are:</p>
<list type="bulleted">
<item>
- <p><c>bad_object</c>, <c>{bad_object, FileName}</c>.
- Applying the format function failed for some binary,
+ <p><c>bad_object</c>, <c>{bad_object, FileName}</c>.
+ Applying the format function failed for some binary,
or the key(s) could not be extracted from some term.</p>
</item>
<item>
@@ -243,148 +210,181 @@ output(L) ->
to read some term.</p>
</item>
<item>
- <p><c>{file_error, FileName, Reason2}</c>. See
- <c>file(3)</c> for an explanation of <c>Reason2</c>.</p>
+ <p><c>{file_error, FileName, file:posix()}</c>. See
+ <c>file(3)</c> for an explanation of <c>file:posix()</c>.</p>
</item>
<item>
- <p><c>{premature_eof, FileName}</c>. End-of-file was
+ <p><c>{premature_eof, FileName}</c>. End-of-file was
encountered inside some binary term.</p>
</item>
</list>
- <p><em>Types</em></p>
- <pre>
-Binary = binary()
-FileName = file_name()
-FileNames = [FileName]
-ICommand = read | close
-IReply = end_of_input | {end_of_input, Value} | {[Object], Infun} | InputReply
-Infun = fun(ICommand) -> IReply
-Input = FileNames | Infun
-InputReply = Term
-KeyPos = int() > 0 | [int() > 0]
-OCommand = {value, Value} | [Object] | close
-OReply = Outfun | OutputReply
-Object = Term | Binary
-Outfun = fun(OCommand) -> OReply
-Output = FileName | Outfun
-OutputReply = Term
-Term = term()
-Value = Term</pre>
</description>
+
+ <datatypes>
+ <datatype>
+ <name name="file_name"/><br/>
+ </datatype>
+ <datatype>
+ <name name="file_names"/><br/>
+ </datatype>
+ <datatype>
+ <name name="i_command"/><br/>
+ </datatype>
+ <datatype>
+ <name name="i_reply"/><br/>
+ </datatype>
+ <datatype>
+ <name name="infun"/><br/>
+ </datatype>
+ <datatype>
+ <name name="input"/><br/>
+ </datatype>
+ <datatype>
+ <name name="input_reply"/><br/>
+ </datatype>
+ <datatype>
+ <name name="o_command"/><br/>
+ </datatype>
+ <datatype>
+ <name name="o_reply"/><br/>
+ </datatype>
+ <datatype>
+ <name name="object"/><br/>
+ </datatype>
+ <datatype>
+ <name name="outfun"/><br/>
+ </datatype>
+ <datatype>
+ <name name="output"/><br/>
+ </datatype>
+ <datatype>
+ <name name="output_reply"/><br/>
+ </datatype>
+ <datatype>
+ <name name="value"/><br/>
+ </datatype>
+ <datatype>
+ <name name="options"/><br/>
+ </datatype>
+ <datatype>
+ <name name="option"/><br/>
+ </datatype>
+ <datatype>
+ <name name="format"/><br/>
+ </datatype>
+ <datatype>
+ <name name="format_fun"/><br/>
+ </datatype>
+ <datatype>
+ <name name="header_length"/><br/>
+ </datatype>
+ <datatype>
+ <name name="key_pos"/><br/>
+ </datatype>
+ <datatype>
+ <name name="no_files"/><br/>
+ </datatype>
+ <datatype>
+ <name name="order"/><br/>
+ </datatype>
+ <datatype>
+ <name name="order_fun"/><br/>
+ </datatype>
+ <datatype>
+ <name name="size"/><br/>
+ </datatype>
+ <datatype>
+ <name name="tmp_directory"/><br/>
+ </datatype>
+ <datatype>
+ <name name="reason"/><br/>
+ </datatype>
+ </datatypes>
+
<funcs>
<func>
- <name>sort(FileName) -> Reply</name>
- <name>sort(Input, Output) -> Reply</name>
- <name>sort(Input, Output, Options) -> Reply</name>
+ <name name="sort" arity="1"/>
<fsummary>Sort terms on files.</fsummary>
- <type>
- <v>Reply = ok | {error, Reason} | InputReply | OutputReply</v>
- </type>
<desc>
- <p>Sorts terms on files.
- </p>
- <p><c>sort(FileName)</c> is equivalent to
- <c>sort([FileName], FileName)</c>.
- </p>
- <p><c>sort(Input, Output)</c> is equivalent to
- <c>sort(Input, Output, [])</c>.
- </p>
- <p></p>
+ <p>Sorts terms on files. <c>sort(FileName)</c> is equivalent
+ to <c>sort([FileName], FileName)</c>.</p>
+ </desc>
+ </func>
+ <func>
+ <name name="sort" arity="2"/>
+ <name name="sort" arity="3"/>
+ <fsummary>Sort terms on files.</fsummary>
+ <desc>
+ <p>Sorts terms on files. <c>sort(Input, Output)</c> is
+ equivalent to <c>sort(Input, Output, [])</c>.</p>
+ </desc>
+ </func>
+ <func>
+ <name name="keysort" arity="2"/>
+ <fsummary>Sort terms on files by key.</fsummary>
+ <desc>
+ <p>Sorts tuples on files. <c>keysort(N, FileName)</c> is
+ equivalent to <c>keysort(N, [FileName], FileName)</c>.</p>
</desc>
</func>
<func>
- <name>keysort(KeyPos, FileName) -> Reply</name>
- <name>keysort(KeyPos, Input, Output) -> Reply</name>
- <name>keysort(KeyPos, Input, Output, Options) -> Reply</name>
+ <name name="keysort" arity="3"/>
+ <name name="keysort" arity="4"/>
<fsummary>Sort terms on files by key.</fsummary>
- <type>
- <v>Reply = ok | {error, Reason} | InputReply | OutputReply</v>
- </type>
<desc>
<p>Sorts tuples on files. The sort is performed on the
- element(s) mentioned in <c>KeyPos</c>. If two tuples
- compare equal (<c>==</c>) on one element, next element according to
- <c>KeyPos</c> is compared. The sort is stable.
- </p>
- <p><c>keysort(N, FileName)</c> is equivalent to
- <c>keysort(N, [FileName], FileName)</c>.
- </p>
+ element(s) mentioned in <c><anno>KeyPos</anno></c>. If two
+ tuples compare equal (<c>==</c>) on one element, next
+ element according to <c><anno>KeyPos</anno></c>
+ is compared. The sort is stable.</p>
<p><c>keysort(N, Input, Output)</c> is equivalent to
- <c>keysort(N, Input, Output, [])</c>.
- </p>
- <p></p>
+ <c>keysort(N, Input, Output, [])</c>.</p>
</desc>
</func>
<func>
- <name>merge(FileNames, Output) -> Reply</name>
- <name>merge(FileNames, Output, Options) -> Reply</name>
+ <name name="merge" arity="2"/>
+ <name name="merge" arity="3"/>
<fsummary>Merge terms on files.</fsummary>
- <type>
- <v>Reply = ok | {error, Reason} | OutputReply</v>
- </type>
<desc>
<p>Merges terms on files. Each input file is assumed to be
- sorted.
- </p>
+ sorted.</p>
<p><c>merge(FileNames, Output)</c> is equivalent to
- <c>merge(FileNames, Output, [])</c>.
- </p>
+ <c>merge(FileNames, Output, [])</c>.</p>
</desc>
</func>
<func>
- <name>keymerge(KeyPos, FileNames, Output) -> Reply</name>
- <name>keymerge(KeyPos, FileNames, Output, Options) -> Reply</name>
+ <name name="keymerge" arity="3"/>
+ <name name="keymerge" arity="4"/>
<fsummary>Merge terms on files by key.</fsummary>
- <type>
- <v>Reply = ok | {error, Reason} | OutputReply</v>
- </type>
<desc>
<p>Merges tuples on files. Each input file is assumed to be
- sorted on key(s).
- </p>
+ sorted on key(s).</p>
<p><c>keymerge(KeyPos, FileNames, Output)</c> is equivalent
- to <c>keymerge(KeyPos, FileNames, Output, [])</c>.
- </p>
- <p></p>
+ to <c>keymerge(KeyPos, FileNames, Output, [])</c>.</p>
</desc>
</func>
<func>
- <name>check(FileName) -> Reply</name>
- <name>check(FileNames, Options) -> Reply</name>
+ <name name="check" arity="1"/>
+ <name name="check" arity="2"/>
<fsummary>Check whether terms on files are sorted.</fsummary>
- <type>
- <v>Reply = {ok, [Result]} | {error, Reason}</v>
- <v>Result = {FileName, TermPosition, Term}</v>
- <v>TermPosition = int() > 1</v>
- </type>
<desc>
<p>Checks files for sortedness. If a file is not sorted, the
first out-of-order element is returned. The first term on a
- file has position 1.
- </p>
+ file has position 1.</p>
<p><c>check(FileName)</c> is equivalent to
- <c>check([FileName], [])</c>.
- </p>
+ <c>check([FileName], [])</c>.</p>
</desc>
</func>
<func>
- <name>keycheck(KeyPos, FileName) -> CheckReply</name>
- <name>keycheck(KeyPos, FileNames, Options) -> Reply</name>
+ <name name="keycheck" arity="2"/>
+ <name name="keycheck" arity="3"/>
<fsummary>Check whether terms on files are sorted by key.</fsummary>
- <type>
- <v>Reply = {ok, [Result]} | {error, Reason}</v>
- <v>Result = {FileName, TermPosition, Term}</v>
- <v>TermPosition = int() > 1</v>
- </type>
<desc>
<p>Checks files for sortedness. If a file is not sorted, the
first out-of-order element is returned. The first term on a
- file has position 1.
- </p>
+ file has position 1.</p>
<p><c>keycheck(KeyPos, FileName)</c> is equivalent
- to <c>keycheck(KeyPos, [FileName], [])</c>.
- </p>
- <p></p>
+ to <c>keycheck(KeyPos, [FileName], [])</c>.</p>
</desc>
</func>
</funcs>
diff --git a/lib/stdlib/doc/src/filelib.xml b/lib/stdlib/doc/src/filelib.xml
index fab68ae77c..f3079c7337 100644
--- a/lib/stdlib/doc/src/filelib.xml
+++ b/lib/stdlib/doc/src/filelib.xml
@@ -41,62 +41,46 @@
<p>For more information about raw file names, see the <seealso marker="kernel:file">file</seealso> module.</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-filename() = string() | atom() | DeepList | RawFilename
- DeepList = [char() | atom() | DeepList]
- RawFilename = binary()
- If VM is in unicode filename mode, string() and char() are allowed to be > 255.
- RawFilename is a filename not subject to Unicode translation, meaning that it
- can contain characters not conforming to the Unicode encoding expected from the
- filesystem (i.e. non-UTF-8 characters although the VM is started in Unicode
- filename mode).
-dirname() = filename()</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name name="filename"/>
+ </datatype>
+ <datatype>
+ <name name="dirname"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>ensure_dir(Name) -> ok | {error, Reason}</name>
+ <name name="ensure_dir" arity="1"/>
<fsummary>Ensure that all parent directories for a file or directory exist.</fsummary>
- <type>
- <v>Name = filename() | dirname()</v>
- <v>Reason = posix() -- see file(3)</v>
- </type>
<desc>
<p>The <c>ensure_dir/1</c> function ensures that all parent
- directories for the given file or directory name <c>Name</c>
+ directories for the given file or directory name <c><anno>Name</anno></c>
exist, trying to create them if necessary.</p>
<p>Returns <c>ok</c> if all parent directories already exist
- or could be created, or <c>{error, Reason}</c> if some parent
+ or could be created, or <c>{error, <anno>Reason</anno>}</c> if some parent
directory does not exist and could not be created for some
reason.</p>
</desc>
</func>
<func>
- <name>file_size(Filename) -> integer()</name>
+ <name name="file_size" arity="1"/>
<fsummary>Return the size in bytes of the file.</fsummary>
<desc>
<p>The <c>file_size</c> function returns the size of the given file.</p>
</desc>
</func>
<func>
- <name>fold_files(Dir, RegExp, Recursive, Fun, AccIn) -> AccOut </name>
+ <name name="fold_files" arity="5"/>
<fsummary>Fold over all files matching a regular expression.</fsummary>
- <type>
- <v>Dir = dirname()</v>
- <v>RegExp = regular_expression_string()</v>
- <v>Recursive = true|false</v>
- <v>Fun = fun(F, AccIn) -> AccOut</v>
- <v>AccIn = AccOut = term()</v>
- </type>
<desc>
<p>The <c>fold_files/5</c> function folds the function
- <c>Fun</c> over all (regular) files <c>F</c> in the
- directory <c>Dir</c> that match the regular expression <c>RegExp</c>
+ <c><anno>Fun</anno></c> over all (regular) files <c><anno>F</anno></c> in the
+ directory <c><anno>Dir</anno></c> that match the regular expression <c><anno>RegExp</anno></c>
(see the <seealso marker="re">re</seealso> module for a description
of the allowed regular expressions).
- If <c>Recursive</c> is true all sub-directories to <c>Dir</c>
+ If <c><anno>Recursive</anno></c> is true all sub-directories to <c>Dir</c>
are processed. The regular expression matching is done on just
the filename without the directory part.</p>
@@ -114,44 +98,32 @@ dirname() = filename()</code>
</desc>
</func>
<func>
- <name>is_dir(Name) -> true | false</name>
+ <name name="is_dir" arity="1"/>
<fsummary>Test whether Name refer to a directory or not</fsummary>
- <type>
- <v>Name = filename() | dirname()</v>
- </type>
<desc>
- <p>The <c>is_dir/1</c> function returns <c>true</c> if <c>Name</c>
+ <p>The <c>is_dir/1</c> function returns <c>true</c> if <c><anno>Name</anno></c>
refers to a directory, and <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>is_file(Name) -> true | false</name>
+ <name name="is_file" arity="1"/>
<fsummary>Test whether Name refer to a file or directory.</fsummary>
- <type>
- <v>Name = filename() | dirname()</v>
- </type>
<desc>
- <p>The <c>is_file/1</c> function returns <c>true</c> if <c>Name</c>
+ <p>The <c>is_file/1</c> function returns <c>true</c> if <c><anno>Name</anno></c>
refers to a file or a directory, and <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>is_regular(Name) -> true | false</name>
+ <name name="is_regular" arity="1"/>
<fsummary>Test whether Name refer to a (regular) file.</fsummary>
- <type>
- <v>Name = filename()</v>
- </type>
<desc>
- <p>The <c>is_regular/1</c> function returns <c>true</c> if <c>Name</c>
+ <p>The <c>is_regular/1</c> function returns <c>true</c> if <c><anno>Name</anno></c>
refers to a file (regular file), and <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>last_modified(Name) -> {{Year,Month,Day},{Hour,Min,Sec}} | 0</name>
+ <name name="last_modified" arity="1"/>
<fsummary>Return the local date and time when a file was last modified.</fsummary>
- <type>
- <v>Name = filename() | dirname()</v>
- </type>
<desc>
<p>The <c>last_modified/1</c> function returns the date and time the
given file or directory was last modified, or 0 if the file
@@ -159,14 +131,11 @@ dirname() = filename()</code>
</desc>
</func>
<func>
- <name>wildcard(Wildcard) -> list()</name>
+ <name name="wildcard" arity="1"/>
<fsummary>Match filenames using Unix-style wildcards.</fsummary>
- <type>
- <v>Wildcard = filename() | dirname()</v>
- </type>
<desc>
<p>The <c>wildcard/1</c> function returns a list of all files
- that match Unix-style wildcard-string <c>Wildcard</c>.</p>
+ that match Unix-style wildcard-string <c><anno>Wildcard</anno></c>.</p>
<p>The wildcard string looks like an ordinary filename, except
that certain "wildcard characters" are interpreted in a special
way. The following characters are special:
@@ -226,15 +195,11 @@ dirname() = filename()</code>
</desc>
</func>
<func>
- <name>wildcard(Wildcard, Cwd) -> list()</name>
+ <name name="wildcard" arity="2"/>
<fsummary>Match filenames using Unix-style wildcards starting at a specified directory.</fsummary>
- <type>
- <v>Wildcard = filename() | dirname()</v>
- <v>Cwd = dirname()</v>
- </type>
<desc>
<p>The <c>wildcard/2</c> function works like <c>wildcard/1</c>,
- except that instead of the actual working directory, <c>Cwd</c>
+ except that instead of the actual working directory, <c><anno>Cwd</anno></c>
will be used.</p>
</desc>
</func>
diff --git a/lib/stdlib/doc/src/filename.xml b/lib/stdlib/doc/src/filename.xml
index cdee6e4a81..bc3a616d39 100644
--- a/lib/stdlib/doc/src/filename.xml
+++ b/lib/stdlib/doc/src/filename.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1997</year><year>2010</year>
+ <year>1997</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -47,28 +47,12 @@
<seealso marker="kernel:file#native_name_encoding/0">file:native_name_encoding/0</seealso>, a raw file name will also be returned. For example filename:join/1 provided with a path component being a binary (and also not being possible to interpret under the current native file name encoding) will result in a raw file name being returned (the join operation will have been performed of course). For more information about raw file names, see the <seealso marker="kernel:file">file</seealso> module.</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-name() = string() | atom() | DeepList | RawFilename
- DeepList = [char() | atom() | DeepList]
- RawFilename = binary()
- If VM is in unicode filename mode, string() and char() are allowed to be > 255.
- RawFilename is a filename not subject to Unicode translation, meaning that it
- can contain characters not conforming to the Unicode encoding expected from the
- filesystem (i.e. non-UTF-8 characters although the VM is started in Unicode
- filename mode).
- </code>
- </section>
<funcs>
<func>
- <name>absname(Filename) -> string()</name>
+ <name name="absname" arity="1"/>
<fsummary>Convert a filename to an absolute name, relative the working directory</fsummary>
- <type>
- <v>Filename = name()</v>
- </type>
<desc>
- <p>Converts a relative <c>Filename</c> and returns an absolute
+ <p>Converts a relative <c><anno>Filename</anno></c> and returns an absolute
name. No attempt is made to create the shortest absolute name,
because this can give incorrect results on file systems which
allow links.</p>
@@ -95,44 +79,33 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>absname(Filename, Dir) -> string()</name>
+ <name name="absname" arity="2"/>
<fsummary>Convert a filename to an absolute name, relative a specified directory</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Dir = string()</v>
- </type>
<desc>
<p>This function works like <c>absname/1</c>, except that
the directory to which the file name should be made relative
- is given explicitly in the <c>Dir</c> argument.</p>
+ is given explicitly in the <c><anno>Dir</anno></c> argument.</p>
</desc>
</func>
<func>
- <name>absname_join(Dir, Filename) -> string()</name>
+ <name name="absname_join" arity="2"/>
<fsummary>Join an absolute directory with a relative filename</fsummary>
- <type>
- <v>Dir = string()</v>
- <v>Filename = name()</v>
- </type>
<desc>
<p>Joins an absolute directory with a relative filename.
Similar to <c>join/2</c>, but on platforms with tight
restrictions on raw filename length and no support for
symbolic links (read: VxWorks), leading parent directory
- components in <c>Filename</c> are matched against trailing
- directory components in <c>Dir</c> so they can be removed
+ components in <c><anno>Filename</anno></c> are matched against trailing
+ directory components in <c><anno>Dir</anno></c> so they can be removed
from the result - minimizing its length.</p>
</desc>
</func>
<func>
- <name>basename(Filename) -> string()</name>
+ <name name="basename" arity="1"/>
<fsummary>Return the last component of a filename</fsummary>
- <type>
- <v>Filename = name()</v>
- </type>
<desc>
- <p>Returns the last component of <c>Filename</c>, or
- <c>Filename</c> itself if it does not contain any directory
+ <p>Returns the last component of <c><anno>Filename</anno></c>, or
+ <c><anno>Filename</anno></c> itself if it does not contain any directory
separators.</p>
<pre>
5> <input>filename:basename("foo").</input>
@@ -144,14 +117,11 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>basename(Filename, Ext) -> string()</name>
+ <name name="basename" arity="2"/>
<fsummary>Return the last component of a filename, stripped of the specified extension</fsummary>
- <type>
- <v>Filename = Ext = name()</v>
- </type>
<desc>
- <p>Returns the last component of <c>Filename</c> with the
- extension <c>Ext</c> stripped. This function should be used
+ <p>Returns the last component of <c><anno>Filename</anno></c> with the
+ extension <c><anno>Ext</anno></c> stripped. This function should be used
to remove a specific extension which might, or might not, be
there. Use <c>rootname(basename(Filename))</c> to remove an
extension that exists, but you are not sure which one it is.</p>
@@ -169,13 +139,10 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>dirname(Filename) -> string()</name>
+ <name name="dirname" arity="1"/>
<fsummary>Return the directory part of a path name</fsummary>
- <type>
- <v>Filename = name()</v>
- </type>
<desc>
- <p>Returns the directory part of <c>Filename</c>.</p>
+ <p>Returns the directory part of <c><anno>Filename</anno></c>.</p>
<pre>
13> <input>filename:dirname("/usr/src/kalle.erl").</input>
"/usr/src"
@@ -187,13 +154,10 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>extension(Filename) -> string()</name>
+ <name name="extension" arity="1"/>
<fsummary>Return the file extension</fsummary>
- <type>
- <v>Filename = name()</v>
- </type>
<desc>
- <p>Returns the file extension of <c>Filename</c>, including
+ <p>Returns the file extension of <c><anno>Filename</anno></c>, including
the period. Returns an empty string if there is no extension.</p>
<pre>
15> <input>filename:extension("foo.erl").</input>
@@ -203,11 +167,8 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>flatten(Filename) -> string()</name>
+ <name name="flatten" arity="1"/>
<fsummary>Convert a filename to a flat string</fsummary>
- <type>
- <v>Filename = name()</v>
- </type>
<desc>
<p>Converts a possibly deep list filename consisting of
characters and atoms into the corresponding flat string
@@ -215,14 +176,11 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>join(Components) -> string()</name>
+ <name name="join" arity="1"/>
<fsummary>Join a list of filename components with directory separators</fsummary>
- <type>
- <v>Components = [string()]</v>
- </type>
<desc>
- <p>Joins a list of file name <c>Components</c> with directory
- separators. If one of the elements of <c>Components</c>
+ <p>Joins a list of file name <c><anno>Components</anno></c> with directory
+ separators. If one of the elements of <c><anno>Components</anno></c>
includes an absolute path, for example <c>"/xxx"</c>,
the preceding elements, if any, are removed from the result.</p>
<p>The result is "normalized":</p>
@@ -242,24 +200,18 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>join(Name1, Name2) -> string()</name>
+ <name name="join" arity="2"/>
<fsummary>Join two filename components with directory separators</fsummary>
- <type>
- <v>Name1 = Name2 = string()</v>
- </type>
<desc>
<p>Joins two file name components with directory separators.
- Equivalent to <c>join([Name1, Name2])</c>.</p>
+ Equivalent to <c>join([<anno>Name1</anno>, <anno>Name2</anno>])</c>.</p>
</desc>
</func>
<func>
- <name>nativename(Path) -> string()</name>
+ <name name="nativename" arity="1"/>
<fsummary>Return the native form of a file path</fsummary>
- <type>
- <v>Path = string()</v>
- </type>
<desc>
- <p>Converts <c>Path</c> to a form accepted by the command shell
+ <p>Converts <c><anno>Path</anno></c> to a form accepted by the command shell
and native applications on the current platform. On Windows,
forward slashes is converted to backward slashes. On all
platforms, the name is normalized as done by <c>join/1</c>.</p>
@@ -272,7 +224,7 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>pathtype(Path) -> absolute | relative | volumerelative</name>
+ <name name="pathtype" arity="1"/>
<fsummary>Return the type of a path</fsummary>
<desc>
<p>Returns the type of path, one of <c>absolute</c>,
@@ -302,16 +254,13 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>rootname(Filename) -> string()</name>
- <name>rootname(Filename, Ext) -> string()</name>
+ <name name="rootname" arity="1"/>
+ <name name="rootname" arity="2"/>
<fsummary>Remove a filename extension</fsummary>
- <type>
- <v>Filename = Ext = name()</v>
- </type>
<desc>
<p>Remove a filename extension. <c>rootname/2</c> works as
<c>rootname/1</c>, except that the extension is removed only
- if it is <c>Ext</c>.</p>
+ if it is <c><anno>Ext</anno></c>.</p>
<pre>
20> <input>filename:rootname("/beam.src/kalle").</input>
/beam.src/kalle"
@@ -324,15 +273,11 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>split(Filename) -> Components</name>
+ <name name="split" arity="1"/>
<fsummary>Split a filename into its path components</fsummary>
- <type>
- <v>Filename = name()</v>
- <v>Components = [string()]</v>
- </type>
<desc>
<p>Returns a list whose elements are the path components of
- <c>Filename</c>.</p>
+ <c><anno>Filename</anno></c>.</p>
<pre>
24> <input>filename:split("/usr/local/bin").</input>
["/","usr","local","bin"]
@@ -343,47 +288,38 @@ name() = string() | atom() | DeepList | RawFilename
</desc>
</func>
<func>
- <name>find_src(Beam) -> {SourceFile, Options} | {error,{ErrorReason,Module}}</name>
- <name>find_src(Beam, Rules) -> {SourceFile, Options} | {error,{ErrorReason,Module}}</name>
+ <name name="find_src" arity="1"/>
+ <name name="find_src" arity="2"/>
<fsummary>Find the filename and compiler options for a module</fsummary>
- <type>
- <v>Beam = Module | Filename</v>
- <v>&nbsp;Module = atom()</v>
- <v>&nbsp;Filename = string() | atom()</v>
- <v>SourceFile = string()</v>
- <v>Options = [Opt]</v>
- <v>&nbsp;Opt = {i, string()} | {outdir, string()} | {d, atom()}</v>
- <v>ErrorReason = non_existing | preloaded | interpreted</v>
- </type>
<desc>
<p>Finds the source filename and compiler options for a module.
The result can be fed to <c>compile:file/2</c> in order to
compile the file again.</p>
- <p>The <c>Beam</c> argument, which can be a string or an atom,
+ <p>The <c><anno>Beam</anno></c> argument, which can be a string or an atom,
specifies either the module name or the path to the source
code, with or without the <c>".erl"</c> extension. In either
case, the module must be known by the code server, i.e.
- <c>code:which(Module)</c> must succeed.</p>
- <p><c>Rules</c> describes how the source directory can be found,
+ <c>code:which(<anno>Module</anno>)</c> must succeed.</p>
+ <p><c><anno>Rules</anno></c> describes how the source directory can be found,
when the object code directory is known. It is a list of
- tuples <c>{BinSuffix, SourceSuffix}</c> and is interpreted
+ tuples <c>{<anno>BinSuffix</anno>, <anno>SourceSuffix</anno>}</c> and is interpreted
as follows: If the end of the directory name where the object
- is located matches <c>BinSuffix</c>, then the source code
- directory has the same name, but with <c>BinSuffix</c>
- replaced by <c>SourceSuffix</c>. <c>Rules</c> defaults to:</p>
+ is located matches <c><anno>BinSuffix</anno></c>, then the source code
+ directory has the same name, but with <c><anno>BinSuffix</anno></c>
+ replaced by <c><anno>SourceSuffix</anno></c>. <c><anno>Rules</anno></c> defaults to:</p>
<code type="none">
[{"", ""}, {"ebin", "src"}, {"ebin", "esrc"}]</code>
<p>If the source file is found in the resulting directory, then
the function returns that location together with
- <c>Options</c>. Otherwise, the next rule is tried, and so on.</p>
+ <c><anno>Options</anno></c>. Otherwise, the next rule is tried, and so on.</p>
- <p>The function returns <c>{SourceFile, Options}</c> if it succeeds.
- <c>SourceFile</c> is the absolute path to the source file
- without the <c>".erl"</c> extension. <c>Options</c> include
+ <p>The function returns <c>{<anno>SourceFile</anno>, <anno>Options</anno>}</c> if it succeeds.
+ <c><anno>SourceFile</anno></c> is the absolute path to the source file
+ without the <c>".erl"</c> extension. <c><anno>Options</anno></c> include
the options which are necessary to recompile the file with
<c>compile:file/2</c>, but excludes options such as
<c>report</c> or <c>verbose</c> which do not change the way
- code is generated. The paths in the <c>{outdir, Path}</c>
+ code is generated. The paths in the <c>{outdir, <anno>Path</anno>}</c>
and <c>{i, Path}</c> options are guaranteed to be
absolute.</p>
diff --git a/lib/stdlib/doc/src/gb_sets.xml b/lib/stdlib/doc/src/gb_sets.xml
index 60d8bcbfa3..38de51322f 100644
--- a/lib/stdlib/doc/src/gb_sets.xml
+++ b/lib/stdlib/doc/src/gb_sets.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2001</year><year>2010</year>
+ <year>2001</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -114,34 +114,32 @@
</list>
</section>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-gb_set() = a GB set</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name><marker id="type-gb_set">gb_set()</marker></name>
+ <desc><p>A GB set.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="iter"/>
+ <desc><p>A GB set iterator.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>add(Element, Set1) -> Set2</name>
- <name>add_element(Element, Set1) -> Set2</name>
+ <name name="add" arity="2"/>
+ <name name="add_element" arity="2"/>
<fsummary>Add a (possibly existing) element to a gb_set</fsummary>
- <type>
- <v>Element = term()</v>
- <v>Set1 = Set2 = gb_set()</v>
- </type>
<desc>
- <p>Returns a new gb_set formed from <c>Set1</c> with
- <c>Element</c> inserted. If <c>Element</c> is already an
- element in <c>Set1</c>, nothing is changed.</p>
+ <p>Returns a new gb_set formed from <c><anno>Set1</anno></c> with
+ <c><anno>Element</anno></c> inserted. If <c><anno>Element</anno></c> is already an
+ element in <c><anno>Set1</anno></c>, nothing is changed.</p>
</desc>
</func>
<func>
- <name>balance(Set1) -> Set2</name>
+ <name name="balance" arity="1"/>
<fsummary>Rebalance tree representation of a gb_set</fsummary>
- <type>
- <v>Set1 = Set2 = gb_set()</v>
- </type>
<desc>
- <p>Rebalances the tree representation of <c>Set1</c>. Note that
+ <p>Rebalances the tree representation of <c><anno>Set1</anno></c>. Note that
this is rarely necessary, but may be motivated when a large
number of elements have been deleted from the tree without
further insertions. Rebalancing could then be forced in order
@@ -150,208 +148,144 @@ gb_set() = a GB set</code>
</desc>
</func>
<func>
- <name>delete(Element, Set1) -> Set2</name>
+ <name name="delete" arity="2"/>
<fsummary>Remove an element from a gb_set</fsummary>
- <type>
- <v>Element = term()</v>
- <v>Set1 = Set2 = gb_set()</v>
- </type>
<desc>
- <p>Returns a new gb_set formed from <c>Set1</c> with
- <c>Element</c> removed. Assumes that <c>Element</c> is present
- in <c>Set1</c>.</p>
+ <p>Returns a new gb_set formed from <c><anno>Set1</anno></c> with
+ <c><anno>Element</anno></c> removed. Assumes that <c><anno>Element</anno></c> is present
+ in <c><anno>Set1</anno></c>.</p>
</desc>
</func>
<func>
- <name>delete_any(Element, Set1) -> Set2</name>
- <name>del_element(Element, Set1) -> Set2</name>
+ <name name="delete_any" arity="2"/>
+ <name name="del_element" arity="2"/>
<fsummary>Remove a (possibly non-existing) element from a gb_set</fsummary>
- <type>
- <v>Element = term()</v>
- <v>Set1 = Set2 = gb_set()</v>
- </type>
<desc>
- <p>Returns a new gb_set formed from <c>Set1</c> with
- <c>Element</c> removed. If <c>Element</c> is not an element
- in <c>Set1</c>, nothing is changed.</p>
+ <p>Returns a new gb_set formed from <c><anno>Set1</anno></c> with
+ <c><anno>Element</anno></c> removed. If <c><anno>Element</anno></c> is not an element
+ in <c><anno>Set1</anno></c>, nothing is changed.</p>
</desc>
</func>
<func>
- <name>difference(Set1, Set2) -> Set3</name>
- <name>subtract(Set1, Set2) -> Set3</name>
+ <name name="difference" arity="2"/>
+ <name name="subtract" arity="2"/>
<fsummary>Return the difference of two gb_sets</fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = gb_set()</v>
- </type>
<desc>
- <p>Returns only the elements of <c>Set1</c> which are not also
- elements of <c>Set2</c>.</p>
+ <p>Returns only the elements of <c><anno>Set1</anno></c> which are not also
+ elements of <c><anno>Set2</anno></c>.</p>
</desc>
</func>
<func>
- <name>empty() -> Set</name>
- <name>new() -> Set</name>
+ <name name="empty" arity="0"/>
+ <name name="new" arity="0"/>
<fsummary>Return an empty gb_set</fsummary>
- <type>
- <v>Set = gb_set()</v>
- </type>
<desc>
<p>Returns a new empty gb_set.</p>
</desc>
</func>
<func>
- <name>filter(Pred, Set1) -> Set2</name>
+ <name name="filter" arity="2"/>
<fsummary>Filter gb_set elements</fsummary>
- <type>
- <v>Pred = fun (E) -> bool()</v>
- <v>&nbsp;E = term()</v>
- <v>Set1 = Set2 = gb_set()</v>
- </type>
<desc>
- <p>Filters elements in <c>Set1</c> using predicate function
- <c>Pred</c>.</p>
+ <p>Filters elements in <c><anno>Set1</anno></c> using predicate function
+ <c><anno>Pred</anno></c>.</p>
</desc>
</func>
<func>
- <name>fold(Function, Acc0, Set) -> Acc1</name>
+ <name name="fold" arity="3"/>
<fsummary>Fold over gb_set elements</fsummary>
- <type>
- <v>Function = fun (E, AccIn) -> AccOut</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>&nbsp;E = term()</v>
- <v>Set = gb_set()</v>
- </type>
<desc>
- <p>Folds <c>Function</c> over every element in <c>Set</c>
+ <p>Folds <c><anno>Function</anno></c> over every element in <c><anno>Set</anno></c>
returning the final value of the accumulator.</p>
</desc>
</func>
<func>
- <name>from_list(List) -> Set</name>
+ <name name="from_list" arity="1"/>
<fsummary>Convert a list into a gb_set</fsummary>
- <type>
- <v>List = [term()]</v>
- <v>Set = gb_set()</v>
- </type>
<desc>
- <p>Returns a gb_set of the elements in <c>List</c>, where
- <c>List</c> may be unordered and contain duplicates.</p>
+ <p>Returns a gb_set of the elements in <c><anno>List</anno></c>, where
+ <c><anno>List</anno></c> may be unordered and contain duplicates.</p>
</desc>
</func>
<func>
- <name>from_ordset(List) -> Set</name>
+ <name name="from_ordset" arity="1"/>
<fsummary>Make a gb_set from an ordset list</fsummary>
- <type>
- <v>List = [term()]</v>
- <v>Set = gb_set()</v>
- </type>
<desc>
- <p>Turns an ordered-set list <c>List</c> into a gb_set. The list
+ <p>Turns an ordered-set list <c><anno>List</anno></c> into a gb_set. The list
must not contain duplicates.</p>
</desc>
</func>
<func>
- <name>insert(Element, Set1) -> Set2</name>
+ <name name="insert" arity="2"/>
<fsummary>Add a new element to a gb_set</fsummary>
- <type>
- <v>Element = term()</v>
- <v>Set1 = Set2 = gb_set()</v>
- </type>
<desc>
- <p>Returns a new gb_set formed from <c>Set1</c> with
- <c>Element</c> inserted. Assumes that <c>Element</c> is not
- present in <c>Set1</c>.</p>
+ <p>Returns a new gb_set formed from <c><anno>Set1</anno></c> with
+ <c><anno>Element</anno></c> inserted. Assumes that <c><anno>Element</anno></c> is not
+ present in <c><anno>Set1</anno></c>.</p>
</desc>
</func>
<func>
- <name>intersection(Set1, Set2) -> Set3</name>
+ <name name="intersection" arity="2"/>
<fsummary>Return the intersection of two gb_sets</fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = gb_set()</v>
- </type>
<desc>
- <p>Returns the intersection of <c>Set1</c> and <c>Set2</c>.</p>
+ <p>Returns the intersection of <c><anno>Set1</anno></c> and <c><anno>Set2</anno></c>.</p>
</desc>
</func>
<func>
- <name>intersection(SetList) -> Set</name>
+ <name name="intersection" arity="1"/>
<fsummary>Return the intersection of a list of gb_sets</fsummary>
- <type>
- <v>SetList = [gb_set()]</v>
- <v>Set = gb_set()</v>
- </type>
<desc>
<p>Returns the intersection of the non-empty list of gb_sets.</p>
</desc>
</func>
<func>
- <name>is_disjoint(Set1, Set2) -> bool()</name>
+ <name name="is_disjoint" arity="2"/>
<fsummary>Check whether two gb_sets are disjoint</fsummary>
- <type>
- <v>Set1 = Set2 = gb_set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Set1</c> and
- <c>Set2</c> are disjoint (have no elements in common),
+ <p>Returns <c>true</c> if <c><anno>Set1</anno></c> and
+ <c><anno>Set2</anno></c> are disjoint (have no elements in common),
and <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>is_empty(Set) -> bool()</name>
+ <name name="is_empty" arity="1"/>
<fsummary>Test for empty gb_set</fsummary>
- <type>
- <v>Set = gb_set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Set</c> is an empty set, and
+ <p>Returns <c>true</c> if <c><anno>Set</anno></c> is an empty set, and
<c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>is_member(Element, Set) -> bool()</name>
- <name>is_element(Element, Set) -> bool()</name>
+ <name name="is_member" arity="2"/>
+ <name name="is_element" arity="2"/>
<fsummary>Test for membership of a gb_set</fsummary>
- <type>
- <v>Element = term()</v>
- <v>Set = gb_set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Element</c> is an element of
- <c>Set</c>, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> if <c><anno>Element</anno></c> is an element of
+ <c><anno>Set</anno></c>, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>is_set(Term) -> bool()</name>
+ <name name="is_set" arity="1"/>
<fsummary>Test for a gb_set</fsummary>
- <type>
- <v>Term = term()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Set</c> appears to be a gb_set,
+ <p>Returns <c>true</c> if <c><anno>Term</anno></c> appears to be a gb_set,
otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>is_subset(Set1, Set2) -> bool()</name>
+ <name name="is_subset" arity="2"/>
<fsummary>Test for subset</fsummary>
- <type>
- <v>Set1 = Set2 = gb_set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> when every element of <c>Set1</c> is
- also a member of <c>Set2</c>, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> when every element of <c><anno>Set1</anno></c> is
+ also a member of <c><anno>Set2</anno></c>, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>iterator(Set) -> Iter</name>
+ <name name="iterator" arity="1"/>
<fsummary>Return an iterator for a gb_set</fsummary>
- <type>
- <v>Set = gb_set()</v>
- <v>Iter = term()</v>
- </type>
<desc>
<p>Returns an iterator that can be used for traversing the
- entries of <c>Set</c>; see <c>next/1</c>. The implementation
+ entries of <c><anno>Set</anno></c>; see <c>next/1</c>. The implementation
of this is very efficient; traversing the whole set using
<c>next/1</c> is only slightly slower than getting the list
of all elements using <c>to_list/1</c> and traversing that.
@@ -361,118 +295,84 @@ gb_set() = a GB set</code>
</desc>
</func>
<func>
- <name>largest(Set) -> term()</name>
+ <name name="largest" arity="1"/>
<fsummary>Return largest element</fsummary>
- <type>
- <v>Set = gb_set()</v>
- </type>
<desc>
- <p>Returns the largest element in <c>Set</c>. Assumes that
- <c>Set</c> is nonempty.</p>
+ <p>Returns the largest element in <c><anno>Set</anno></c>. Assumes that
+ <c><anno>Set</anno></c> is nonempty.</p>
</desc>
</func>
<func>
- <name>next(Iter1) -> {Element, Iter2} | none</name>
+ <name name="next" arity="1"/>
<fsummary>Traverse a gb_set with an iterator</fsummary>
- <type>
- <v>Iter1 = Iter2 = Element = term()</v>
- </type>
<desc>
- <p>Returns <c>{Element, Iter2}</c> where <c>Element</c> is the
- smallest element referred to by the iterator <c>Iter1</c>,
- and <c>Iter2</c> is the new iterator to be used for
+ <p>Returns <c>{<anno>Element</anno>, <anno>Iter2</anno>}</c> where <c><anno>Element</anno></c> is the
+ smallest element referred to by the iterator <c><anno>Iter1</anno></c>,
+ and <c><anno>Iter2</anno></c> is the new iterator to be used for
traversing the remaining elements, or the atom <c>none</c> if
no elements remain.</p>
</desc>
</func>
<func>
- <name>singleton(Element) -> gb_set()</name>
+ <name name="singleton" arity="1"/>
<fsummary>Return a gb_set with one element</fsummary>
- <type>
- <v>Element = term()</v>
- </type>
<desc>
- <p>Returns a gb_set containing only the element <c>Element</c>.</p>
+ <p>Returns a gb_set containing only the element <c><anno>Element</anno></c>.</p>
</desc>
</func>
<func>
- <name>size(Set) -> int()</name>
+ <name name="size" arity="1"/>
<fsummary>Return the number of elements in a gb_set</fsummary>
- <type>
- <v>Set = gb_set()</v>
- </type>
<desc>
- <p>Returns the number of elements in <c>Set</c>.</p>
+ <p>Returns the number of elements in <c><anno>Set</anno></c>.</p>
</desc>
</func>
<func>
- <name>smallest(Set) -> term()</name>
+ <name name="smallest" arity="1"/>
<fsummary>Return smallest element</fsummary>
- <type>
- <v>Set = gb_set()</v>
- </type>
<desc>
- <p>Returns the smallest element in <c>Set</c>. Assumes that
- <c>Set</c> is nonempty.</p>
+ <p>Returns the smallest element in <c><anno>Set</anno></c>. Assumes that
+ <c><anno>Set</anno></c> is nonempty.</p>
</desc>
</func>
<func>
- <name>take_largest(Set1) -> {Element, Set2}</name>
+ <name name="take_largest" arity="1"/>
<fsummary>Extract largest element</fsummary>
- <type>
- <v>Set1 = Set2 = gb_set()</v>
- <v>Element = term()</v>
- </type>
<desc>
- <p>Returns <c>{Element, Set2}</c>, where <c>Element</c> is the
- largest element in <c>Set1</c>, and <c>Set2</c> is this set
- with <c>Element</c> deleted. Assumes that <c>Set1</c> is
+ <p>Returns <c>{<anno>Element</anno>, <anno>Set2</anno>}</c>, where <c><anno>Element</anno></c> is the
+ largest element in <c><anno>Set1</anno></c>, and <c><anno>Set2</anno></c> is this set
+ with <c><anno>Element</anno></c> deleted. Assumes that <c><anno>Set1</anno></c> is
nonempty.</p>
</desc>
</func>
<func>
- <name>take_smallest(Set1) -> {Element, Set2}</name>
+ <name name="take_smallest" arity="1"/>
<fsummary>Extract smallest element</fsummary>
- <type>
- <v>Set1 = Set2 = gb_set()</v>
- <v>Element = term()</v>
- </type>
<desc>
- <p>Returns <c>{Element, Set2}</c>, where <c>Element</c> is the
- smallest element in <c>Set1</c>, and <c>Set2</c> is this set
- with <c>Element</c> deleted. Assumes that <c>Set1</c> is
+ <p>Returns <c>{<anno>Element</anno>, <anno>Set2</anno>}</c>, where <c><anno>Element</anno></c> is the
+ smallest element in <c><anno>Set1</anno></c>, and <c><anno>Set2</anno></c> is this set
+ with <c><anno>Element</anno></c> deleted. Assumes that <c><anno>Set1</anno></c> is
nonempty.</p>
</desc>
</func>
<func>
- <name>to_list(Set) -> List</name>
+ <name name="to_list" arity="1"/>
<fsummary>Convert a gb_set into a list</fsummary>
- <type>
- <v>Set = gb_set()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns the elements of <c>Set</c> as a list.</p>
+ <p>Returns the elements of <c><anno>Set</anno></c> as a list.</p>
</desc>
</func>
<func>
- <name>union(Set1, Set2) -> Set3</name>
+ <name name="union" arity="2"/>
<fsummary>Return the union of two gb_sets</fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = gb_set()</v>
- </type>
<desc>
- <p>Returns the merged (union) gb_set of <c>Set1</c> and
- <c>Set2</c>.</p>
+ <p>Returns the merged (union) gb_set of <c><anno>Set1</anno></c> and
+ <c><anno>Set2</anno></c>.</p>
</desc>
</func>
<func>
- <name>union(SetList) -> Set</name>
+ <name name="union" arity="1"/>
<fsummary>Return the union of a list of gb_sets</fsummary>
- <type>
- <v>SetList = [gb_set()]</v>
- <v>Set = gb_set()</v>
- </type>
<desc>
<p>Returns the merged (union) gb_set of the list of gb_sets.</p>
</desc>
diff --git a/lib/stdlib/doc/src/gb_trees.xml b/lib/stdlib/doc/src/gb_trees.xml
index 94f40c28bd..65c866efbe 100644
--- a/lib/stdlib/doc/src/gb_trees.xml
+++ b/lib/stdlib/doc/src/gb_trees.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2001</year><year>2010</year>
+ <year>2001</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -57,20 +57,22 @@
trees. Behaviour is logarithmic (as it should be).</p>
</section>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-gb_tree() = a GB tree</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name><marker id="type-gb_tree">gb_tree()</marker></name>
+ <desc><p>A GB tree.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="iter"/>
+ <desc><p>A GB tree iterator.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>balance(Tree1) -> Tree2</name>
+ <name name="balance" arity="1"/>
<fsummary>Rebalance a tree</fsummary>
- <type>
- <v>Tree1 = Tree2 = gb_tree()</v>
- </type>
<desc>
- <p>Rebalances <c>Tree1</c>. Note that this is rarely necessary,
+ <p>Rebalances <c><anno>Tree1</anno></c>. Note that this is rarely necessary,
but may be motivated when a large number of nodes have been
deleted from the tree without further insertions. Rebalancing
could then be forced in order to minimise lookup times, since
@@ -78,139 +80,97 @@ gb_tree() = a GB tree</code>
</desc>
</func>
<func>
- <name>delete(Key, Tree1) -> Tree2</name>
+ <name name="delete" arity="2"/>
<fsummary>Remove a node from a tree</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Tree1 = Tree2 = gb_tree()</v>
- </type>
<desc>
- <p>Removes the node with key <c>Key</c> from <c>Tree1</c>;
+ <p>Removes the node with key <c><anno>Key</anno></c> from <c><anno>Tree1</anno></c>;
returns new tree. Assumes that the key is present in the tree,
crashes otherwise.</p>
</desc>
</func>
<func>
- <name>delete_any(Key, Tree1) -> Tree2</name>
+ <name name="delete_any" arity="2"/>
<fsummary>Remove a (possibly non-existing) node from a tree</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Tree1 = Tree2 = gb_tree()</v>
- </type>
<desc>
- <p>Removes the node with key <c>Key</c> from <c>Tree1</c> if
+ <p>Removes the node with key <c><anno>Key</anno></c> from <c><anno>Tree1</anno></c> if
the key is present in the tree, otherwise does nothing;
returns new tree.</p>
</desc>
</func>
<func>
- <name>empty() -> Tree</name>
+ <name name="empty" arity="0"/>
<fsummary>Return an empty tree</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- </type>
<desc>
<p>Returns a new empty tree</p>
</desc>
</func>
<func>
- <name>enter(Key, Val, Tree1) -> Tree2</name>
+ <name name="enter" arity="3"/>
<fsummary>Insert or update key with value in a tree</fsummary>
- <type>
- <v>Key = Val = term()</v>
- <v>Tree1 = Tree2 = gb_tree()</v>
- </type>
<desc>
- <p>Inserts <c>Key</c> with value <c>Val</c> into <c>Tree1</c> if
+ <p>Inserts <c><anno>Key</anno></c> with value <c><anno>Val</anno></c> into <c><anno>Tree1</anno></c> if
the key is not present in the tree, otherwise updates
- <c>Key</c> to value <c>Val</c> in <c>Tree1</c>. Returns the
+ <c><anno>Key</anno></c> to value <c><anno>Val</anno></c> in <c><anno>Tree1</anno></c>. Returns the
new tree.</p>
</desc>
</func>
<func>
- <name>from_orddict(List) -> Tree</name>
+ <name name="from_orddict" arity="1"/>
<fsummary>Make a tree from an orddict</fsummary>
- <type>
- <v>List = [{Key, Val}]</v>
- <v>&nbsp;Key = Val = term()</v>
- <v>Tree = gb_tree()</v>
- </type>
<desc>
- <p>Turns an ordered list <c>List</c> of key-value tuples into a
+ <p>Turns an ordered list <c><anno>List</anno></c> of key-value tuples into a
tree. The list must not contain duplicate keys.</p>
</desc>
</func>
<func>
- <name>get(Key, Tree) -> Val</name>
+ <name name="get" arity="2"/>
<fsummary>Look up a key in a tree, if present</fsummary>
- <type>
- <v>Key = Val = term()</v>
- <v>Tree = gb_tree()</v>
- </type>
<desc>
- <p>Retrieves the value stored with <c>Key</c> in <c>Tree</c>.
+ <p>Retrieves the value stored with <c><anno>Key</anno></c> in <c><anno>Tree</anno></c>.
Assumes that the key is present in the tree, crashes
otherwise.</p>
</desc>
</func>
<func>
- <name>lookup(Key, Tree) -> {value, Val} | none</name>
+ <name name="lookup" arity="2"/>
<fsummary>Look up a key in a tree</fsummary>
- <type>
- <v>Key = Val = term()</v>
- <v>Tree = gb_tree()</v>
- </type>
<desc>
- <p>Looks up <c>Key</c> in <c>Tree</c>; returns
- <c>{value, Val}</c>, or <c>none</c> if <c>Key</c> is not
+ <p>Looks up <c><anno>Key</anno></c> in <c><anno>Tree</anno></c>; returns
+ <c>{value, <anno>Val</anno>}</c>, or <c>none</c> if <c><anno>Key</anno></c> is not
present.</p>
</desc>
</func>
<func>
- <name>insert(Key, Val, Tree1) -> Tree2</name>
+ <name name="insert" arity="3"/>
<fsummary>Insert a new key and value in a tree</fsummary>
- <type>
- <v>Key = Val = term()</v>
- <v>Tree1 = Tree2 = gb_tree()</v>
- </type>
<desc>
- <p>Inserts <c>Key</c> with value <c>Val</c> into <c>Tree1</c>;
+ <p>Inserts <c><anno>Key</anno></c> with value <c><anno>Val</anno></c> into <c><anno>Tree1</anno></c>;
returns the new tree. Assumes that the key is not present in
the tree, crashes otherwise.</p>
</desc>
</func>
<func>
- <name>is_defined(Key, Tree) -> bool()</name>
+ <name name="is_defined" arity="2"/>
<fsummary>Test for membership of a tree</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Key</c> is present in <c>Tree</c>,
+ <p>Returns <c>true</c> if <c><anno>Key</anno></c> is present in <c><anno>Tree</anno></c>,
otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>is_empty(Tree) -> bool()</name>
+ <name name="is_empty" arity="1"/>
<fsummary>Test for empty tree</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Tree</c> is an empty tree, and
+ <p>Returns <c>true</c> if <c><anno>Tree</anno></c> is an empty tree, and
<c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>iterator(Tree) -> Iter</name>
+ <name name="iterator" arity="1"/>
<fsummary>Return an iterator for a tree</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- <v>Iter = term()</v>
- </type>
<desc>
<p>Returns an iterator that can be used for traversing the
- entries of <c>Tree</c>; see <c>next/1</c>. The implementation
+ entries of <c><anno>Tree</anno></c>; see <c>next/1</c>. The implementation
of this is very efficient; traversing the whole tree using
<c>next/1</c> is only slightly slower than getting the list
of all elements using <c>to_list/1</c> and traversing that.
@@ -220,141 +180,99 @@ gb_tree() = a GB tree</code>
</desc>
</func>
<func>
- <name>keys(Tree) -> [Key]</name>
+ <name name="keys" arity="1"/>
<fsummary>Return a list of the keys in a tree</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- <v>Key = term()</v>
- </type>
<desc>
- <p>Returns the keys in <c>Tree</c> as an ordered list.</p>
+ <p>Returns the keys in <c><anno>Tree</anno></c> as an ordered list.</p>
</desc>
</func>
<func>
- <name>largest(Tree) -> {Key, Val}</name>
+ <name name="largest" arity="1"/>
<fsummary>Return largest key and value</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- <v>Key = Val = term()</v>
- </type>
<desc>
- <p>Returns <c>{Key, Val}</c>, where <c>Key</c> is the largest
- key in <c>Tree</c>, and <c>Val</c> is the value associated
+ <p>Returns <c>{<anno>Key</anno>, <anno>Val</anno>}</c>, where <c><anno>Key</anno></c> is the largest
+ key in <c><anno>Tree</anno></c>, and <c><anno>Val</anno></c> is the value associated
with this key. Assumes that the tree is nonempty.</p>
</desc>
</func>
<func>
- <name>map(Function, Tree1) -> Tree2</name>
+ <name name="map" arity="2"/>
<fsummary>Return largest key and value</fsummary>
- <type>
- <v>Function = fun(K, V1) -> V2</v>
- <v>Tree1 = Tree2 = gb_tree()</v>
- </type>
- <desc><p>maps the function F(K, V1) -> V2 to all key-value pairs
- of the tree Tree1 and returns a new tree Tree2 with the same set of keys
- as Tree1 and the new set of values V2.</p>
+ <desc><p>Maps the function F(<anno>K</anno>, <anno>V1</anno>) -> <anno>V2</anno> to all key-value pairs
+ of the tree <c><anno>Tree1</anno></c> and returns a new tree <c><anno>Tree2</anno></c> with the same set of keys
+ as <c><anno>Tree1</anno></c> and the new set of values <c><anno>V2</anno></c>.</p>
</desc>
</func>
<func>
- <name>next(Iter1) -> {Key, Val, Iter2} | none</name>
+ <name name="next" arity="1"/>
<fsummary>Traverse a tree with an iterator</fsummary>
- <type>
- <v>Iter1 = Iter2 = Key = Val = term()</v>
- </type>
<desc>
- <p>Returns <c>{Key, Val, Iter2}</c> where <c>Key</c> is the
- smallest key referred to by the iterator <c>Iter1</c>, and
- <c>Iter2</c> is the new iterator to be used for
+ <p>Returns <c>{<anno>Key</anno>, <anno>Val</anno>, <anno>Iter2</anno>}</c> where <c><anno>Key</anno></c> is the
+ smallest key referred to by the iterator <c><anno>Iter1</anno></c>, and
+ <c><anno>Iter2</anno></c> is the new iterator to be used for
traversing the remaining nodes, or the atom <c>none</c> if no
nodes remain.</p>
</desc>
</func>
<func>
- <name>size(Tree) -> int()</name>
+ <name name="size" arity="1"/>
<fsummary>Return the number of nodes in a tree</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- </type>
<desc>
- <p>Returns the number of nodes in <c>Tree</c>.</p>
+ <p>Returns the number of nodes in <c><anno>Tree</anno></c>.</p>
</desc>
</func>
<func>
- <name>smallest(Tree) -> {Key, Val}</name>
+ <name name="smallest" arity="1"/>
<fsummary>Return smallest key and value</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- <v>Key = Val = term()</v>
- </type>
<desc>
- <p>Returns <c>{Key, Val}</c>, where <c>Key</c> is the smallest
- key in <c>Tree</c>, and <c>Val</c> is the value associated
+ <p>Returns <c>{<anno>Key</anno>, <anno>Val</anno>}</c>, where <c><anno>Key</anno></c> is the smallest
+ key in <c><anno>Tree</anno></c>, and <c><anno>Val</anno></c> is the value associated
with this key. Assumes that the tree is nonempty.</p>
</desc>
</func>
<func>
- <name>take_largest(Tree1) -> {Key, Val, Tree2}</name>
+ <name name="take_largest" arity="1"/>
<fsummary>Extract largest key and value</fsummary>
- <type>
- <v>Tree1 = Tree2 = gb_tree()</v>
- <v>Key = Val = term()</v>
- </type>
<desc>
- <p>Returns <c>{Key, Val, Tree2}</c>, where <c>Key</c> is the
- largest key in <c>Tree1</c>, <c>Val</c> is the value
- associated with this key, and <c>Tree2</c> is this tree with
+ <p>Returns <c>{<anno>Key</anno>, <anno>Val</anno>, <anno>Tree2</anno>}</c>, where <c><anno>Key</anno></c> is the
+ largest key in <c><anno>Tree1</anno></c>, <c><anno>Val</anno></c> is the value
+ associated with this key, and <c><anno>Tree2</anno></c> is this tree with
the corresponding node deleted. Assumes that the tree is
nonempty.</p>
</desc>
</func>
<func>
- <name>take_smallest(Tree1) -> {Key, Val, Tree2}</name>
+ <name name="take_smallest" arity="1"/>
<fsummary>Extract smallest key and value</fsummary>
- <type>
- <v>Tree1 = Tree2 = gb_tree()</v>
- <v>Key = Val = term()</v>
- </type>
<desc>
- <p>Returns <c>{Key, Val, Tree2}</c>, where <c>Key</c> is the
- smallest key in <c>Tree1</c>, <c>Val</c> is the value
- associated with this key, and <c>Tree2</c> is this tree with
+ <p>Returns <c>{<anno>Key</anno>, <anno>Val</anno>, <anno>Tree2</anno>}</c>, where <c><anno>Key</anno></c> is the
+ smallest key in <c><anno>Tree1</anno></c>, <c><anno>Val</anno></c> is the value
+ associated with this key, and <c><anno>Tree2</anno></c> is this tree with
the corresponding node deleted. Assumes that the tree is
nonempty.</p>
</desc>
</func>
<func>
- <name>to_list(Tree) -> [{Key, Val}]</name>
+ <name name="to_list" arity="1"/>
<fsummary>Convert a tree into a list</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- <v>Key = Val = term()</v>
- </type>
<desc>
<p>Converts a tree into an ordered list of key-value tuples.</p>
</desc>
</func>
<func>
- <name>update(Key, Val, Tree1) -> Tree2</name>
+ <name name="update" arity="3"/>
<fsummary>Update a key to new value in a tree</fsummary>
- <type>
- <v>Key = Val = term()</v>
- <v>Tree1 = Tree2 = gb_tree()</v>
- </type>
<desc>
- <p>Updates <c>Key</c> to value <c>Val</c> in <c>Tree1</c>;
+ <p>Updates <c><anno>Key</anno></c> to value <c><anno>Val</anno></c> in <c><anno>Tree1</anno></c>;
returns the new tree. Assumes that the key is present in the
tree.</p>
</desc>
</func>
<func>
- <name>values(Tree) -> [Val]</name>
+ <name name="values" arity="1"/>
<fsummary>Return a list of the values in a tree</fsummary>
- <type>
- <v>Tree = gb_tree()</v>
- <v>Val = term()</v>
- </type>
<desc>
- <p>Returns the values in <c>Tree</c> as an ordered list, sorted
+ <p>Returns the values in <c><anno>Tree</anno></c> as an ordered list, sorted
by their corresponding keys. Duplicates are not removed.</p>
</desc>
</func>
diff --git a/lib/stdlib/doc/src/gen_event.xml b/lib/stdlib/doc/src/gen_event.xml
index 2234a62ac3..24bcb419fe 100644
--- a/lib/stdlib/doc/src/gen_event.xml
+++ b/lib/stdlib/doc/src/gen_event.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -100,6 +100,20 @@ gen_event:stop -----> Module:terminate/2
the specified event manager does not exist or if bad arguments are
given.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="handler"/>
+ </datatype>
+ <datatype>
+ <name name="handler_args"/>
+ </datatype>
+ <datatype>
+ <name name="add_handler_ret"/>
+ </datatype>
+ <datatype>
+ <name name="del_handler_ret"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
<name>start_link() -> Result</name>
diff --git a/lib/stdlib/doc/src/io.xml b/lib/stdlib/doc/src/io.xml
index 41e3e92c59..af9c75d546 100644
--- a/lib/stdlib/doc/src/io.xml
+++ b/lib/stdlib/doc/src/io.xml
@@ -43,7 +43,7 @@
<p>As of R13A, data supplied to the <seealso
marker="#put_chars/2">put_chars</seealso> function should be in the
- <c>chardata()</c> format described below. This means that programs
+ <seealso marker="unicode#type-chardata"><c>unicode:chardata()</c></seealso> format. This means that programs
supplying binaries to this function need to convert them to UTF-8
before trying to output the data on an
<c>io_device()</c>.</p>
@@ -64,76 +64,84 @@
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-io_device()
- as returned by file:open/2, a process handling IO protocols</code>
-
- <code type="none">
-unicode_binary() = binary() with characters encoded in UTF-8 coding standard
-unicode_char() = integer() representing valid unicode codepoint
-
-chardata() = charlist() | unicode_binary()
+ <datatypes>
+ <datatype>
+ <name name="device"/>
+ <desc>
+ <p>Either <c>standard_io</c>, <c>standard_error</c>, a
+ registered name, or a pid handling IO protocols (returned from
+ <seealso marker="file#open/2">file:open/2</seealso>).</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="opt_pair"/>
+ </datatype>
+ <datatype>
+ <name name="expand_fun"/>
+ </datatype>
+ <datatype>
+ <name name="encoding"/>
+ </datatype>
+ <datatype>
+ <name name="setopt"/>
+ </datatype>
+ <datatype>
+ <name name="format"/>
+ </datatype>
+ <datatype>
+ <name name="line"/>
+ </datatype>
+ <datatype>
+ <name name="prompt"/>
+ </datatype>
+ <datatype>
+ <name name="request_error"/>
+ </datatype>
+ <datatype>
+ <name name="error_description"/>
+ <desc><p>Whatever the I/O-server sends.</p></desc>
+ </datatype>
+ </datatypes>
-charlist() = [unicode_char() | unicode_binary() | charlist()]
- a unicode_binary is allowed as the tail of the list</code>
- </section>
<funcs>
<func>
- <name>columns() -> {ok,int()} | {error, enotsup}</name>
- <name>columns(IoDevice) -> {ok,int()} | {error, enotsup}</name>
+ <name name="columns" arity="0"/>
+ <name name="columns" arity="1"/>
<fsummary>Get the number of columns of a device</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- </type>
<desc>
<p>Retrieves the number of columns of the
- <c>IoDevice</c> (i.e. the width of a terminal). The function
+ <c><anno>IoDevice</anno></c> (i.e. the width of a terminal). The function
only succeeds for terminal devices, for all other devices
the function returns <c>{error, enotsup}</c></p>
</desc>
</func>
<func>
- <name>put_chars(IoData) -> ok</name>
- <name>put_chars(IoDevice, IoData) -> ok</name>
+ <name name="put_chars" arity="1"/>
+ <name name="put_chars" arity="2"/>
<fsummary>Write a list of characters</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>IoData = chardata()</v>
- </type>
<desc>
- <p>Writes the characters of <c>IoData</c> to the io_server()
- (<c>IoDevice</c>).</p>
+ <p>Writes the characters of <c><anno>CharData</anno></c> to the io_server()
+ (<c><anno>IoDevice</anno></c>).</p>
</desc>
</func>
<func>
- <name>nl() -> ok</name>
- <name>nl(IoDevice) -> ok</name>
+ <name name="nl" arity="0"/>
+ <name name="nl" arity="1"/>
<fsummary>Write a newline</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- </type>
<desc>
- <p>Writes new line to the standard output (<c>IoDevice</c>).</p>
+ <p>Writes new line to the standard output (<c><anno>IoDevice</anno></c>).</p>
</desc>
</func>
<func>
- <name>get_chars(Prompt, Count) -> Data | eof</name>
- <name>get_chars(IoDevice, Prompt, Count) -> Data | eof</name>
+ <name name="get_chars" arity="2"/>
+ <name name="get_chars" arity="3"/>
<fsummary>Read a specified number of characters</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Prompt = atom() | string()</v>
- <v>Count = int()</v>
- <v>Data = [ unicode_char() ] | unicode_binary()</v>
- </type>
<desc>
- <p>Reads <c>Count</c> characters from standard input
- (<c>IoDevice</c>), prompting it with <c>Prompt</c>. It
+ <p>Reads <c><anno>Count</anno></c> characters from standard input
+ (<c><anno>IoDevice</anno></c>), prompting it with <c><anno>Prompt</anno></c>. It
returns:</p>
<taglist>
- <tag><c>Data</c></tag>
+ <tag><c><anno>Data</anno></c></tag>
<item>
<p>The input characters. If the device supports Unicode,
the data may represent codepoints larger than 255 (the
@@ -145,7 +153,7 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
<item>
<p>End of file was encountered.</p>
</item>
- <tag><c>{error,Reason}</c></tag>
+ <tag><c>{error,<anno>Reason</anno>}</c></tag>
<item>
<p>Other (rare) error condition, for instance <c>{error,estale}</c>
if reading from an NFS file system.</p>
@@ -154,19 +162,14 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
</desc>
</func>
<func>
- <name>get_line(Prompt) -> Data | eof | {error,Reason}</name>
- <name>get_line(IoDevice, Prompt) -> Data | eof | {error,Reason}</name>
+ <name name="get_line" arity="1"/>
+ <name name="get_line" arity="2"/>
<fsummary>Read a line</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Prompt = atom() | string()</v>
- <v>Data = [ unicode_char() ] | unicode_binary()</v>
- </type>
<desc>
- <p>Reads a line from the standard input (<c>IoDevice</c>),
- prompting it with <c>Prompt</c>. It returns:</p>
+ <p>Reads a line from the standard input (<c><anno>IoDevice</anno></c>),
+ prompting it with <c><anno>Prompt</anno></c>. It returns:</p>
<taglist>
- <tag><c>Data</c></tag>
+ <tag><c><anno>Data</anno></c></tag>
<item>
<p>The characters in the line terminated by a LF (or end of
file). If the device supports Unicode,
@@ -179,7 +182,7 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
<item>
<p>End of file was encountered.</p>
</item>
- <tag><c>{error,Reason}</c></tag>
+ <tag><c>{error,<anno>Reason</anno>}</c></tag>
<item>
<p>Other (rare) error condition, for instance <c>{error,estale}</c>
if reading from an NFS file system.</p>
@@ -188,15 +191,9 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
</desc>
</func>
<func>
- <name>getopts() -> Opts</name>
- <name>getopts(IoDevice) -> Opts</name>
+ <name name="getopts" arity="0"/>
+ <name name="getopts" arity="1"/>
<fsummary>Get the supported options and values from an I/O-server</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Opts = [Opt]</v>
- <v>&nbsp;&nbsp;Opt = {atom(),Value}</v>
- <v>&nbsp;&nbsp;Value = term()</v>
- </type>
<desc>
<p>This function requests all available options and their current values for a specific io_device(). Example:</p>
<pre>
@@ -216,18 +213,11 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
</desc>
</func>
<func>
- <name>setopts(Opts) -> ok | {error, Reason}</name>
- <name>setopts(IoDevice, Opts) -> ok | {error, Reason}</name>
+ <name name="setopts" arity="1"/>
+ <name name="setopts" arity="2"/>
<fsummary>Set options</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Opts = [Opt]</v>
- <v>&nbsp;&nbsp;Opt = atom() | {atom(),Value}</v>
- <v>&nbsp;&nbsp;Value = term()</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>Set options for the io_device() (<c>IoDevice</c>).</p>
+ <p>Set options for the io_device() (<c><anno>IoDevice</anno></c>).</p>
<p>Possible options and values vary depending on the actual
io_device(). For a list of supported options and their current values
@@ -236,17 +226,17 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
<p>The options and values supported by the current OTP io_devices are:</p>
<taglist>
- <tag><c>binary, list or {binary, bool()}</c></tag>
+ <tag><c>binary, list or {binary, boolean()}</c></tag>
<item>
<p>If set in binary mode (binary or {binary,true}), the io_server() sends binary data (encoded in UTF-8) as answers to the get_line, get_chars and, if possible, get_until requests (see the I/O protocol description in STDLIB User's Guide for details). The immediate effect is that <c>get_chars/2,3</c> and <c>get_line/1,2</c> return UTF-8 binaries instead of lists of chars for the affected device.</p>
<p>By default, all io_devices in OTP are set in list mode, but the io functions can handle any of these modes and so should other, user written, modules behaving as clients to I/O-servers.</p>
<p>This option is supported by the standard shell (group.erl), the 'oldshell' (user.erl) and the file I/O servers.</p>
</item>
- <tag><c>{echo, bool()}</c></tag>
+ <tag><c>{echo, boolean()}</c></tag>
<item>
<p>Denotes if the terminal should echo input. Only supported for the standard shell I/O-server (group.erl)</p>
</item>
- <tag><c>{expand_fun, fun()}</c></tag>
+ <tag><c>{expand_fun, expand_fun()}</c></tag>
<item>
<p>Provide a function for tab-completion (expansion)
like the erlang shell. This function is called
@@ -288,35 +278,24 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
</desc>
</func>
<func>
- <name>write(Term) -> ok</name>
- <name>write(IoDevice, Term) -> ok</name>
+ <name name="write" arity="1"/>
+ <name name="write" arity="2"/>
<fsummary>Write a term</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Term = term()</v>
- </type>
<desc>
- <p>Writes the term <c>Term</c> to the standard output
- (<c>IoDevice</c>).</p>
+ <p>Writes the term <c><anno>Term</anno></c> to the standard output
+ (<c><anno>IoDevice</anno></c>).</p>
</desc>
</func>
<func>
- <name>read(Prompt) -> Result</name>
- <name>read(IoDevice, Prompt) -> Result</name>
+ <name name="read" arity="1"/>
+ <name name="read" arity="2"/>
<fsummary>Read a term</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Prompt = atom() | string()</v>
- <v>Result = {ok, Term} | eof | {error, ErrorInfo}</v>
- <v>&nbsp;Term = term()</v>
- <v>&nbsp;ErrorInfo -- see section Error Information below</v>
- </type>
<desc>
- <p>Reads a term <c>Term</c> from the standard input
- (<c>IoDevice</c>), prompting it with <c>Prompt</c>. It
+ <p>Reads a term <c><anno>Term</anno></c> from the standard input
+ (<c><anno>IoDevice</anno></c>), prompting it with <c><anno>Prompt</anno></c>. It
returns:</p>
<taglist>
- <tag><c>{ok, Term}</c></tag>
+ <tag><c>{ok, <anno>Term</anno>}</c></tag>
<item>
<p>The parsing was successful.</p>
</item>
@@ -324,7 +303,7 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
<item>
<p>End of file was encountered.</p>
</item>
- <tag><c>{error, ErrorInfo}</c></tag>
+ <tag><c>{error, <anno>ErrorInfo</anno>}</c></tag>
<item>
<p>The parsing failed.</p>
</item>
@@ -332,31 +311,22 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
</desc>
</func>
<func>
- <name>read(IoDevice, Prompt, StartLine) -> Result</name>
+ <name name="read" arity="3"/>
<fsummary>Read a term</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Prompt = atom() | string()</v>
- <v>StartLine = int()</v>
- <v>Result = {ok, Term, EndLine} | {eof, EndLine} | {error, ErrorInfo, EndLine}</v>
- <v>&nbsp;Term = term()</v>
- <v>&nbsp;EndLine = int()</v>
- <v>&nbsp;ErrorInfo -- see section Error Information below</v>
- </type>
<desc>
- <p>Reads a term <c>Term</c> from <c>IoDevice</c>, prompting it
- with <c>Prompt</c>. Reading starts at line number
- <c>StartLine</c>. It returns:</p>
+ <p>Reads a term <c><anno>Term</anno></c> from <c><anno>IoDevice</anno></c>, prompting it
+ with <c><anno>Prompt</anno></c>. Reading starts at line number
+ <c><anno>StartLine</anno></c>. It returns:</p>
<taglist>
- <tag><c>{ok, Term, EndLine}</c></tag>
+ <tag><c>{ok, Term, <anno>EndLine</anno>}</c></tag>
<item>
<p>The parsing was successful.</p>
</item>
- <tag><c>{eof, EndLine}</c></tag>
+ <tag><c>{eof, <anno>EndLine</anno>}</c></tag>
<item>
<p>End of file was encountered.</p>
</item>
- <tag><c>{error, ErrorInfo, EndLine}</c></tag>
+ <tag><c>{error, <anno>ErrorInfo</anno>, <anno>ErrorLine</anno>}</c></tag>
<item>
<p>The parsing failed.</p>
</item>
@@ -364,24 +334,19 @@ charlist() = [unicode_char() | unicode_binary() | charlist()]
</desc>
</func>
<func>
- <name>fwrite(Format) -></name>
- <name>fwrite(Format, Data) -> ok</name>
- <name>fwrite(IoDevice, Format, Data) -> ok</name>
- <name>format(Format) -></name>
- <name>format(Format, Data) -> ok</name>
- <name>format(IoDevice, Format, Data) -> ok</name>
+ <name name="fwrite" arity="1"/>
+ <name name="fwrite" arity="2"/>
+ <name name="fwrite" arity="3"/>
+ <name name="format" arity="1"/>
+ <name name="format" arity="2"/>
+ <name name="format" arity="3"/>
<fsummary>Write formatted output</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Format = atom() | string() | binary()</v>
- <v>Data = [term()]</v>
- </type>
<desc>
- <p>Writes the items in <c>Data</c> (<c>[]</c>) on the standard
- output (<c>IoDevice</c>) in accordance with <c>Format</c>.
- <c>Format</c> contains plain characters which are copied to
+ <p>Writes the items in <c><anno>Data</anno></c> (<c>[]</c>) on the standard
+ output (<c><anno>IoDevice</anno></c>) in accordance with <c><anno>Format</anno></c>.
+ <c><anno>Format</anno></c> contains plain characters which are copied to
the output device, and control sequences for formatting, see
- below. If <c>Format</c> is an atom or a binary, it is first
+ below. If <c><anno>Format</anno></c> is an atom or a binary, it is first
converted to a list with the aid of <c>atom_to_list/1</c>
or <c>binary_to_list/1</c>.</p>
<pre>
@@ -474,7 +439,7 @@ ok</pre>
<item>
<p>Prints the argument with the <c>string</c> syntax. The
argument is, if no Unicode translation modifier is present, an
- <seealso marker="erts:erlang#iolist_definition">I/O list</seealso>, a binary, or an atom. If the Unicode translation modifier ('t') is in effect, the argument is chardata(), meaning that binaries are in UTF-8. The characters
+ <seealso marker="erts:erlang#iolist_definition">I/O list</seealso>, a binary, or an atom. If the Unicode translation modifier ('t') is in effect, the argument is unicode:chardata(), meaning that binaries are in UTF-8. The characters
are printed without quotes. The string is first truncated
by the given precision and then padded and justified
to the given field width. The default precision is the field width.</p>
@@ -673,23 +638,15 @@ ok
</desc>
</func>
<func>
- <name>fread(Prompt, Format) -> Result</name>
- <name>fread(IoDevice, Prompt, Format) -> Result</name>
+ <name name="fread" arity="2"/>
+ <name name="fread" arity="3"/>
<fsummary>Read formatted input</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Prompt = atom() | string()</v>
- <v>Format = string()</v>
- <v>Result = {ok, Terms} | eof | {error, What}</v>
- <v>&nbsp;Terms = [term()]</v>
- <v>&nbsp;What = term()</v>
- </type>
<desc>
- <p>Reads characters from the standard input (<c>IoDevice</c>),
- prompting it with <c>Prompt</c>. Interprets the characters in
- accordance with <c>Format</c>. <c>Format</c> contains control
+ <p>Reads characters from the standard input (<c><anno>IoDevice</anno></c>),
+ prompting it with <c><anno>Prompt</anno></c>. Interprets the characters in
+ accordance with <c><anno>Format</anno></c>. <c><anno>Format</anno></c> contains control
sequences which directs the interpretation of the input.</p>
- <p><c>Format</c> may contain:</p>
+ <p><c><anno>Format</anno></c> may contain:</p>
<list type="bulleted">
<item>
<p>White space characters (SPACE, TAB and NEWLINE) which
@@ -803,19 +760,19 @@ Prompt> <input>&lt;Character beyond latin1 range not printable in this medium&gt
</taglist>
<p>It returns:</p>
<taglist>
- <tag><c>{ok, Terms}</c></tag>
+ <tag><c>{ok, <anno>Terms</anno>}</c></tag>
<item>
- <p>The read was successful and <c>Terms</c> is the list
+ <p>The read was successful and <c><anno>Terms</anno></c> is the list
of successfully matched and read items.</p>
</item>
<tag><c>eof</c></tag>
<item>
<p>End of file was encountered.</p>
</item>
- <tag><c>{error, What}</c></tag>
+ <tag><c>{error, <anno>What</anno>}</c></tag>
<item>
<p>The read operation failed and the parameter
- <c>What</c> gives a hint about the error.</p>
+ <c><anno>What</anno></c> gives a hint about the error.</p>
</item>
</taglist>
</item>
@@ -834,33 +791,21 @@ enter><input>:</input> <input>alan</input> <input>:</input> <input>joe</in
</desc>
</func>
<func>
- <name>rows() -> {ok,int()} | {error, enotsup}</name>
- <name>rows(IoDevice) -> {ok,int()} | {error, enotsup}</name>
+ <name name="rows" arity="0"/>
+ <name name="rows" arity="1"/>
<fsummary>Get the number of rows of a device</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- </type>
<desc>
<p>Retrieves the number of rows of the
- <c>IoDevice</c> (i.e. the height of a terminal). The function
+ <c><anno>IoDevice</anno></c> (i.e. the height of a terminal). The function
only succeeds for terminal devices, for all other devices
the function returns <c>{error, enotsup}</c></p>
</desc>
</func>
<func>
- <name>scan_erl_exprs(Prompt) -></name>
- <name>scan_erl_exprs(Prompt, StartLine) -> Result</name>
- <name>scan_erl_exprs(IoDevice, Prompt, StartLine) -> Result</name>
+ <name name="scan_erl_exprs" arity="1"/>
+ <name name="scan_erl_exprs" arity="2"/>
+ <name name="scan_erl_exprs" arity="3"/>
<fsummary>Read and tokenize Erlang expressions</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Prompt = atom() | string()</v>
- <v>StartLine = int()</v>
- <v>Result = {ok, Tokens, EndLine} | {eof, EndLine} | {error, ErrorInfo, EndLine}</v>
- <v>&nbsp;Tokens -- see erl_scan(3)</v>
- <v>&nbsp;EndLine = int()</v>
- <v>&nbsp;ErrorInfo -- see section Error Information below</v>
- </type>
<desc>
<p>Reads data from the standard input (<c>IoDevice</c>),
prompting it with <c>Prompt</c>. Reading starts at line number
@@ -876,7 +821,7 @@ enter><input>:</input> <input>alan</input> <input>:</input> <input>joe</in
<item>
<p>End of file was encountered.</p>
</item>
- <tag><c>{error, ErrorInfo, EndLine}</c></tag>
+ <tag><c>{error, ErrorInfo, ErrorLine}</c></tag>
<item>
<p>An error occurred.</p>
</item>
@@ -892,23 +837,14 @@ enter><input>1.0er.</input>
</desc>
</func>
<func>
- <name>scan_erl_form(Prompt) -></name>
- <name>scan_erl_form(Prompt, StartLine) -> Result</name>
- <name>scan_erl_form(IoDevice, Prompt, StartLine) -> Result</name>
+ <name name="scan_erl_form" arity="1"/>
+ <name name="scan_erl_form" arity="2"/>
+ <name name="scan_erl_form" arity="3"/>
<fsummary>Read and tokenize an Erlang form</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Prompt = atom() | string()</v>
- <v>StartLine = int()</v>
- <v>Result = {ok, Tokens, EndLine} | {eof, EndLine} | {error, ErrorInfo, EndLine}</v>
- <v>&nbsp;Tokens -- see erl_scan(3)</v>
- <v>&nbsp;EndLine = int()</v>
- <v>&nbsp;ErrorInfo -- see section Error Information below</v>
- </type>
<desc>
- <p>Reads data from the standard input (<c>IoDevice</c>),
- prompting it with <c>Prompt</c>. Starts reading at line number
- <c>StartLine</c> (1). The data is tokenized as if it were an
+ <p>Reads data from the standard input (<c><anno>IoDevice</anno></c>),
+ prompting it with <c><anno>Prompt</anno></c>. Starts reading at line number
+ <c><anno>StartLine</anno></c> (1). The data is tokenized as if it were an
Erlang form - one of the valid Erlang expressions in an
Erlang source file - until a final <c>'.'</c> is reached.
This last token is also returned. The return values are the
@@ -916,27 +852,19 @@ enter><input>1.0er.</input>
</desc>
</func>
<func>
- <name>parse_erl_exprs(Prompt) -></name>
- <name>parse_erl_exprs(Prompt, StartLine) -> Result</name>
- <name>parse_erl_exprs(IoDevice, Prompt, StartLine) -> Result</name>
+ <name name="parse_erl_exprs" arity="1"/>
+ <name name="parse_erl_exprs" arity="2"/>
+ <name name="parse_erl_exprs" arity="3"/>
+ <type name="parse_ret"/>
<fsummary>Read, tokenize and parse Erlang expressions</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Prompt = atom() | string()</v>
- <v>StartLine = int()</v>
- <v>Result = {ok, Expr_list, EndLine} | {eof, EndLine} | {error, ErrorInfo, EndLine}</v>
- <v>&nbsp;Expr_list -- see erl_parse(3)</v>
- <v>&nbsp;EndLine = int()</v>
- <v>&nbsp;ErrorInfo -- see section Error Information below</v>
- </type>
<desc>
- <p>Reads data from the standard input (<c>IoDevice</c>),
- prompting it with <c>Prompt</c>. Starts reading at line number
- <c>StartLine</c> (1). The data is tokenized and parsed as if
+ <p>Reads data from the standard input (<c><anno>IoDevice</anno></c>),
+ prompting it with <c><anno>Prompt</anno></c>. Starts reading at line number
+ <c><anno>StartLine</anno></c> (1). The data is tokenized and parsed as if
it were a sequence of Erlang expressions until a final '.' is
reached. It returns:</p>
<taglist>
- <tag><c>{ok, Expr_list, EndLine}</c></tag>
+ <tag><c>{ok, ExprList, EndLine}</c></tag>
<item>
<p>The parsing was successful.</p>
</item>
@@ -944,7 +872,7 @@ enter><input>1.0er.</input>
<item>
<p>End of file was encountered.</p>
</item>
- <tag><c>{error, ErrorInfo, EndLine}</c></tag>
+ <tag><c>{error, ErrorInfo, ErrorLine}</c></tag>
<item>
<p>An error occurred.</p>
</item>
@@ -960,23 +888,15 @@ enter><input>abc("hey".</input>
</desc>
</func>
<func>
- <name>parse_erl_form(Prompt) -></name>
- <name>parse_erl_form(Prompt, StartLine) -> Result</name>
- <name>parse_erl_form(IoDevice, Prompt, StartLine) -> Result</name>
+ <name name="parse_erl_form" arity="1"/>
+ <name name="parse_erl_form" arity="2"/>
+ <name name="parse_erl_form" arity="3"/>
+ <type name="parse_form_ret"/>
<fsummary>Read, tokenize and parse an Erlang form</fsummary>
- <type>
- <v>IoDevice = io_device()</v>
- <v>Prompt = atom() | string()</v>
- <v>StartLine = int()</v>
- <v>Result = {ok, AbsForm, EndLine} | {eof, EndLine} | {error, ErrorInfo, EndLine}</v>
- <v>&nbsp;AbsForm -- see erl_parse(3)</v>
- <v>&nbsp;EndLine = int()</v>
- <v>&nbsp;ErrorInfo -- see section Error Information below</v>
- </type>
<desc>
- <p>Reads data from the standard input (<c>IoDevice</c>),
- prompting it with <c>Prompt</c>. Starts reading at line number
- <c>StartLine</c> (1). The data is tokenized and parsed as if
+ <p>Reads data from the standard input (<c><anno>IoDevice</anno></c>),
+ prompting it with <c><anno>Prompt</anno></c>. Starts reading at line number
+ <c><anno>StartLine</anno></c> (1). The data is tokenized and parsed as if
it were an Erlang form - one of the valid Erlang expressions
in an Erlang source file - until a final '.' is reached. It
returns:</p>
@@ -989,7 +909,7 @@ enter><input>abc("hey".</input>
<item>
<p>End of file was encountered.</p>
</item>
- <tag><c>{error, ErrorInfo, EndLine}</c></tag>
+ <tag><c>{error, ErrorInfo, ErrorLine}</c></tag>
<item>
<p>An error occurred.</p>
</item>
diff --git a/lib/stdlib/doc/src/io_lib.xml b/lib/stdlib/doc/src/io_lib.xml
index 399f968c5f..506c1792f1 100644
--- a/lib/stdlib/doc/src/io_lib.xml
+++ b/lib/stdlib/doc/src/io_lib.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -38,14 +38,22 @@
flattening deep lists.</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-chars() = [char() | chars()]</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name name="chars"/>
+ </datatype>
+ <datatype>
+ <name name="continuation"/>
+ <desc><p>A continuation as returned by <seealso marker="#fread/3"><c>fread/3</c></seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="depth"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>nl() -> chars()</name>
+ <name name="nl" arity="0"/>
<fsummary>Write a newline</fsummary>
<desc>
<p>Returns a character list which represents a new line
@@ -53,16 +61,12 @@ chars() = [char() | chars()]</code>
</desc>
</func>
<func>
- <name>write(Term) -></name>
- <name>write(Term, Depth) -> chars()</name>
+ <name name="write" arity="1"/>
+ <name name="write" arity="2"/>
<fsummary>Write a term</fsummary>
- <type>
- <v>Term = term()</v>
- <v>Depth = int()</v>
- </type>
<desc>
- <p>Returns a character list which represents <c>Term</c>. The
- <c>Depth</c> (-1) argument controls the depth of the
+ <p>Returns a character list which represents <c><anno>Term</anno></c>. The
+ <c><anno>Depth</anno></c> (-1) argument controls the depth of the
structures written. When the specified depth is reached,
everything below this level is replaced by "...". For
example:</p>
@@ -74,36 +78,26 @@ chars() = [char() | chars()]</code>
</desc>
</func>
<func>
- <name>print(Term) -></name>
- <name>print(Term, Column, LineLength, Depth) -> chars()</name>
+ <name name="print" arity="1"/>
+ <name name="print" arity="4"/>
<fsummary>Pretty print a term</fsummary>
- <type>
- <v>Term = term()</v>
- <v>Column = LineLenght = Depth = int()</v>
- </type>
<desc>
<p>Also returns a list of characters which represents
- <c>Term</c>, but breaks representations which are longer than
+ <c><anno>Term</anno></c>, but breaks representations which are longer than
one line into many lines and indents each line sensibly. It
also tries to detect and output lists of printable characters
- as strings. <c>Column</c> is the starting column (1),
- <c>LineLength</c> the maximum line length (80), and
- <c>Depth</c> (-1) the maximum print depth.</p>
+ as strings. <c><anno>Column</anno></c> is the starting column (1),
+ <c><anno>LineLength</anno></c> the maximum line length (80), and
+ <c><anno>Depth</anno></c> (-1) the maximum print depth.</p>
</desc>
</func>
<func>
- <name>fwrite(Format, Data) -></name>
- <name>format(Format, Data) -> chars() | UnicodeList</name>
+ <name name="fwrite" arity="2"/>
+ <name name="format" arity="2"/>
<fsummary>Write formatted output</fsummary>
- <type>
- <v>Format = atom() | string() | binary()</v>
- <v>Data = [term()]</v>
- <v>UnicodeList = [Unicode]</v>
- <v>Unicode = int() representing valid unicode codepoint</v>
- </type>
<desc>
- <p>Returns a character list which represents <c>Data</c>
- formatted in accordance with <c>Format</c>. See
+ <p>Returns a character list which represents <c><anno>Data</anno></c>
+ formatted in accordance with <c><anno>Format</anno></c>. See
<seealso marker="io#fwrite/1">io:fwrite/1,2,3</seealso> for a detailed
description of the available formatting options. A fault is
generated if there is an error in the format string or
@@ -119,42 +113,32 @@ chars() = [char() | chars()]</code>
</desc>
</func>
<func>
- <name>fread(Format, String) -> Result</name>
+ <name name="fread" arity="2"/>
<fsummary>Read formatted input</fsummary>
- <type>
- <v>Format = String = string()</v>
- <v>Result = {ok, InputList, LeftOverChars} | {more, RestFormat, Nchars, InputStack} | {error, What}</v>
- <v>&nbsp;InputList = chars()</v>
- <v>&nbsp;LeftOverChars = string()</v>
- <v>&nbsp;RestFormat = string()</v>
- <v>&nbsp;Nchars = int()</v>
- <v>&nbsp;InputStack = chars()</v>
- <v>&nbsp;What = term()</v>
- </type>
<desc>
- <p>Tries to read <c>String</c> in accordance with the control
- sequences in <c>Format</c>. See
+ <p>Tries to read <c><anno>String</anno></c> in accordance with the control
+ sequences in <c><anno>Format</anno></c>. See
<seealso marker="io#fread/3">io:fread/3</seealso> for a detailed
description of the available formatting options. It is
- assumed that <c>String</c> contains whole lines. It returns:</p>
+ assumed that <c><anno>String</anno></c> contains whole lines. It returns:</p>
<taglist>
- <tag><c>{ok, InputList, LeftOverChars}</c></tag>
+ <tag><c>{ok, <anno>InputList</anno>, <anno>LeftOverChars</anno>}</c></tag>
<item>
- <p>The string was read. <c>InputList</c> is the list of
+ <p>The string was read. <c><anno>InputList</anno></c> is the list of
successfully matched and read items, and
- <c>LeftOverChars</c> are the input characters not used.</p>
+ <c><anno>LeftOverChars</anno></c> are the input characters not used.</p>
</item>
- <tag><c>{more, RestFormat, Nchars, InputStack}</c></tag>
+ <tag><c>{more, <anno>RestFormat</anno>, <anno>Nchars</anno>, <anno>InputStack</anno>}</c></tag>
<item>
<p>The string was read, but more input is needed in order
- to complete the original format string. <c>RestFormat</c>
- is the remaining format string, <c>NChars</c> the number
- of characters scanned, and <c>InputStack</c> is the
+ to complete the original format string. <c><anno>RestFormat</anno></c>
+ is the remaining format string, <c><anno>Nchars</anno></c> the number
+ of characters scanned, and <c><anno>InputStack</anno></c> is the
reversed list of inputs matched up to that point.</p>
</item>
- <tag><c>{error, What}</c></tag>
+ <tag><c>{error, <anno>What</anno>}</c></tag>
<item>
- <p>The read operation failed and the parameter <c>What</c>
+ <p>The read operation failed and the parameter <c><anno>What</anno></c>
gives a hint about the error.</p>
</item>
</taglist>
@@ -165,17 +149,8 @@ chars() = [char() | chars()]</code>
</desc>
</func>
<func>
- <name>fread(Continuation, String, Format) -> Return</name>
+ <name name="fread" arity="3"/>
<fsummary>Re-entrant formatted reader</fsummary>
- <type>
- <v>Continuation = see below</v>
- <v>String = Format = string()</v>
- <v>Return = {done, Result, LeftOverChars} | {more, Continuation}</v>
- <v>&nbsp;Result = {ok, InputList} | eof | {error, What}</v>
- <v>&nbsp;&nbsp;InputList = chars()</v>
- <v>&nbsp;&nbsp;What = term()()</v>
- <v>&nbsp;LeftOverChars = string()</v>
- </type>
<desc>
<p>This is the re-entrant formatted reader. The continuation of
the first call to the functions must be <c>[]</c>. Refer to
@@ -184,114 +159,92 @@ chars() = [char() | chars()]</code>
re-entrant input scheme works.</p>
<p>The function returns:</p>
<taglist>
- <tag><c>{done, Result, LeftOverChars}</c></tag>
+ <tag><c>{done, <anno>Result</anno>, <anno>LeftOverChars</anno>}</c></tag>
<item>
<p>The input is complete. The result is one of the
following:</p>
<taglist>
- <tag><c>{ok, InputList}</c></tag>
+ <tag><c>{ok, <anno>InputList</anno>}</c></tag>
<item>
- <p>The string was read. <c>InputList</c> is the list of
+ <p>The string was read. <c><anno>InputList</anno></c> is the list of
successfully matched and read items, and
- <c>LeftOverChars</c> are the remaining characters.</p>
+ <c><anno>LeftOverChars</anno></c> are the remaining characters.</p>
</item>
<tag><c>eof</c></tag>
<item>
<p>End of file has been encountered.
- <c>LeftOverChars</c> are the input characters not
+ <c><anno>LeftOverChars</anno></c> are the input characters not
used.</p>
</item>
- <tag><c>{error, What}</c></tag>
+ <tag><c>{error, <anno>What</anno>}</c></tag>
<item>
- <p>An error occurred and the parameter <c>What</c> gives
+ <p>An error occurred and the parameter <c><anno>What</anno></c> gives
a hint about the error.</p>
</item>
</taglist>
</item>
- <tag><c>{more, Continuation}</c></tag>
+ <tag><c>{more, <anno>Continuation</anno>}</c></tag>
<item>
<p>More data is required to build a term.
- <c>Continuation</c> must be passed to <c>fread/3</c>,
+ <c><anno>Continuation</anno></c> must be passed to <c>fread/3</c>,
when more data becomes available.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>write_atom(Atom) -> chars()</name>
+ <name name="write_atom" arity="1"/>
<fsummary>Write an atom</fsummary>
- <type>
- <v>Atom = atom()</v>
- </type>
<desc>
<p>Returns the list of characters needed to print the atom
- <c>Atom</c>.</p>
+ <c><anno>Atom</anno></c>.</p>
</desc>
</func>
<func>
- <name>write_string(String) -> chars()</name>
+ <name name="write_string" arity="1"/>
<fsummary>Write a string</fsummary>
- <type>
- <v>String = string()</v>
- </type>
<desc>
- <p>Returns the list of characters needed to print <c>String</c>
+ <p>Returns the list of characters needed to print <c><anno>String</anno></c>
as a string.</p>
</desc>
</func>
<func>
- <name>write_char(Integer) -> chars()</name>
+ <name name="write_char" arity="1"/>
<fsummary>Write a character</fsummary>
- <type>
- <v>Integer = int()</v>
- </type>
<desc>
<p>Returns the list of characters needed to print a character
constant in the ISO-latin-1 character set.</p>
</desc>
</func>
<func>
- <name>indentation(String, StartIndent) -> int()</name>
+ <name name="indentation" arity="2"/>
<fsummary>Indentation after printing string</fsummary>
- <type>
- <v>String = string()</v>
- <v>StartIndent = int()</v>
- </type>
<desc>
- <p>Returns the indentation if <c>String</c> has been printed,
- starting at <c>StartIndent</c>.</p>
+ <p>Returns the indentation if <c><anno>String</anno></c> has been printed,
+ starting at <c><anno>StartIndent</anno></c>.</p>
</desc>
</func>
<func>
- <name>char_list(Term) -> bool()</name>
+ <name name="char_list" arity="1"/>
<fsummary>Test for a list of characters</fsummary>
- <type>
- <v>Term = term()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Term</c> is a flat list of
+ <p>Returns <c>true</c> if <c><anno>Term</anno></c> is a flat list of
characters in the ISO-latin-1 range, otherwise it returns <c>false</c>.</p>
</desc>
</func>
<func>
- <name>deep_char_list(Term) -> bool()</name>
+ <name name="deep_char_list" arity="1"/>
<fsummary>Test for a deep list of characters</fsummary>
- <type>
- <v>Term = term()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Term</c> is a, possibly deep, list
+ <p>Returns <c>true</c> if <c><anno>Term</anno></c> is a, possibly deep, list
of characters in the ISO-latin-1 range, otherwise it returns <c>false</c>.</p>
</desc>
</func>
<func>
- <name>printable_list(Term) -> bool()</name>
+ <name name="printable_list" arity="1"/>
<fsummary>Test for a list of printable ISO-latin-1 characters</fsummary>
- <type>
- <v>Term = term()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Term</c> is a flat list of
+ <p>Returns <c>true</c> if <c><anno>Term</anno></c> is a flat list of
printable ISO-latin-1 characters, otherwise it returns <c>false</c>.</p>
</desc>
</func>
diff --git a/lib/stdlib/doc/src/lib.xml b/lib/stdlib/doc/src/lib.xml
index 046add48e8..19fb827cbf 100644
--- a/lib/stdlib/doc/src/lib.xml
+++ b/lib/stdlib/doc/src/lib.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -37,27 +37,23 @@
</description>
<funcs>
<func>
- <name>flush_receive() -> void()</name>
+ <name name="flush_receive" arity="0"/>
<fsummary>Flush messages</fsummary>
<desc>
<p>Flushes the message buffer of the current process.</p>
</desc>
</func>
<func>
- <name>error_message(Format, Args) -> ok</name>
+ <name name="error_message" arity="2"/>
<fsummary>Print error message</fsummary>
- <type>
- <v>Format = atom() | string() | binary()</v>
- <v>Args = [term()]</v>
- </type>
<desc>
- <p>Prints error message <c>Args</c> in accordance with
- <c>Format</c>. Similar to <c>io:format/2</c>, see
+ <p>Prints error message <c><anno>Args</anno></c> in accordance with
+ <c><anno>Format</anno></c>. Similar to <c>io:format/2</c>, see
<seealso marker="io#fwrite/1">io(3)</seealso>.</p>
</desc>
</func>
<func>
- <name>progname() -> atom()</name>
+ <name name="progname" arity="0"/>
<fsummary>Return name of Erlang start script</fsummary>
<desc>
<p>Returns the name of the script that started the current
@@ -65,37 +61,24 @@
</desc>
</func>
<func>
- <name>nonl(String1) -> String2</name>
+ <name name="nonl" arity="1"/>
<fsummary>Remove last newline</fsummary>
- <type>
- <v>String1 = String2 = string()</v>
- </type>
<desc>
<p>Removes the last newline character, if any, in
- <c>String1</c>.</p>
+ <c><anno>String1</anno></c>.</p>
</desc>
</func>
<func>
- <name>send(To, Msg)</name>
+ <name name="send" arity="2"/>
<fsummary>Send a message</fsummary>
- <type>
- <v>To = pid() | Name | {Name,Node}</v>
- <v>&nbsp;Name = Node = atom()</v>
- <v>Msg = term()</v>
- </type>
<desc>
<p>This function to makes it possible to send a message using
the <c>apply/3</c> BIF.</p>
</desc>
</func>
<func>
- <name>sendw(To, Msg)</name>
+ <name name="sendw" arity="2"/>
<fsummary>Send a message and wait for an answer</fsummary>
- <type>
- <v>To = pid() | Name | {Name,Node}</v>
- <v>&nbsp;Name = Node = atom()</v>
- <v>Msg = term()</v>
- </type>
<desc>
<p>As <c>send/2</c>, but waits for an answer. It is implemented
as follows:</p>
diff --git a/lib/stdlib/doc/src/lists.xml b/lib/stdlib/doc/src/lists.xml
index 92c4eb4f4c..6f3ed7af98 100644
--- a/lib/stdlib/doc/src/lists.xml
+++ b/lib/stdlib/doc/src/lists.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -60,58 +60,41 @@
</description>
<funcs>
<func>
- <name>all(Pred, List) -> bool()</name>
+ <name name="all" arity="2"/>
<fsummary>Return true if all elements in the list satisfy<c>Pred</c></fsummary>
- <type>
- <v>Pred = fun(Elem) -> bool()</v>
- <v>&nbsp;Elem = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Pred(Elem)</c> returns
- <c>true</c> for all elements <c>Elem</c> in <c>List</c>,
+ <p>Returns <c>true</c> if <c><anno>Pred</anno>(<anno>Elem</anno>)</c> returns
+ <c>true</c> for all elements <c><anno>Elem</anno></c> in <c><anno>List</anno></c>,
otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>any(Pred, List) -> bool()</name>
+ <name name="any" arity="2"/>
<fsummary>Return true if any of the elements in the list satisfies<c>Pred</c></fsummary>
- <type>
- <v>Pred = fun(Elem) -> bool()</v>
- <v>&nbsp;Elem = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Pred(Elem)</c> returns
- <c>true</c> for at least one element <c>Elem</c> in
- <c>List</c>.</p>
+ <p>Returns <c>true</c> if <c><anno>Pred</anno>(<anno>Elem</anno>)</c> returns
+ <c>true</c> for at least one element <c><anno>Elem</anno></c> in
+ <c><anno>List</anno></c>.</p>
</desc>
</func>
<func>
- <name>append(ListOfLists) -> List1</name>
+ <name name="append" arity="1"/>
<fsummary>Append a list of lists</fsummary>
- <type>
- <v>ListOfLists = [List]</v>
- <v>List = List1 = [term()]</v>
- </type>
<desc>
<p>Returns a list in which all the sub-lists of
- <c>ListOfLists</c> have been appended. For example:</p>
+ <c><anno>ListOfLists</anno></c> have been appended. For example:</p>
<pre>
> <input>lists:append([[1, 2, 3], [a, b], [4, 5, 6]]).</input>
[1,2,3,a,b,4,5,6]</pre>
</desc>
</func>
<func>
- <name>append(List1, List2) -> List3</name>
+ <name name="append" arity="2"/>
<fsummary>Append two lists</fsummary>
- <type>
- <v>List1 = List2 = List3 = [term()]</v>
- </type>
<desc>
- <p>Returns a new list <c>List3</c> which is made from
- the elements of <c>List1</c> followed by the elements of
- <c>List2</c>. For example:</p>
+ <p>Returns a new list <c><anno>List3</anno></c> which is made from
+ the elements of <c><anno>List1</anno></c> followed by the elements of
+ <c><anno>List2</anno></c>. For example:</p>
<pre>
> <input>lists:append("abc", "def").</input>
"abcdef"</pre>
@@ -119,15 +102,11 @@
</desc>
</func>
<func>
- <name>concat(Things) -> string()</name>
+ <name name="concat" arity="1"/>
<fsummary>Concatenate a list of atoms</fsummary>
- <type>
- <v>Things = [Thing]</v>
- <v>&nbsp;Thing = atom() | integer() | float() | string()</v>
- </type>
<desc>
<p>Concatenates the text representation of the elements
- of <c>Things</c>. The elements of <c>Things</c> can be atoms,
+ of <c><anno>Things</anno></c>. The elements of <c><anno>Things</anno></c> can be atoms,
integers, floats or strings.</p>
<pre>
> <input>lists:concat([doc, '/', file, '.', 3]).</input>
@@ -135,87 +114,59 @@
</desc>
</func>
<func>
- <name>delete(Elem, List1) -> List2</name>
+ <name name="delete" arity="2"/>
<fsummary>Delete an element from a list</fsummary>
- <type>
- <v>Elem = term()</v>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
- <p>Returns a copy of <c>List1</c> where the first element
- matching <c>Elem</c> is deleted, if there is such an
+ <p>Returns a copy of <c><anno>List1</anno></c> where the first element
+ matching <c><anno>Elem</anno></c> is deleted, if there is such an
element.</p>
</desc>
</func>
<func>
- <name>dropwhile(Pred, List1) -> List2</name>
+ <name name="dropwhile" arity="2"/>
<fsummary>Drop elements from a list while a predicate is true</fsummary>
- <type>
- <v>Pred = fun(Elem) -> bool()</v>
- <v>&nbsp;Elem = term()</v>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
- <p>Drops elements <c>Elem</c> from <c>List1</c> while
- <c>Pred(Elem)</c> returns <c>true</c> and returns
+ <p>Drops elements <c><anno>Elem</anno></c> from <c><anno>List1</anno></c> while
+ <c><anno>Pred</anno>(<anno>Elem</anno>)</c> returns <c>true</c> and returns
the remaining list.</p>
</desc>
</func>
<func>
- <name>duplicate(N, Elem) -> List</name>
+ <name name="duplicate" arity="2"/>
<fsummary>Make N copies of element</fsummary>
- <type>
- <v>N = int()</v>
- <v>Elem = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns a list which contains N copies of the term
- <c>Elem</c>. For example:</p>
+ <p>Returns a list which contains <c><anno>N</anno></c> copies of the term
+ <c><anno>Elem</anno></c>. For example:</p>
<pre>
> <input>lists:duplicate(5, xx).</input>
[xx,xx,xx,xx,xx]</pre>
</desc>
</func>
<func>
- <name>filter(Pred, List1) -> List2</name>
+ <name name="filter" arity="2"/>
<fsummary>Choose elements which satisfy a predicate</fsummary>
- <type>
- <v>Pred = fun(Elem) -> bool()</v>
- <v>&nbsp;Elem = term()</v>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
- <p><c>List2</c> is a list of all elements <c>Elem</c> in
- <c>List1</c> for which <c>Pred(Elem)</c> returns
+ <p><c><anno>List2</anno></c> is a list of all elements <c><anno>Elem</anno></c> in
+ <c><anno>List1</anno></c> for which <c><anno>Pred</anno>(<anno>Elem</anno>)</c> returns
<c>true</c>.</p>
</desc>
</func>
<func>
- <name>flatlength(DeepList) -> int()</name>
+ <name name="flatlength" arity="1"/>
<fsummary>Length of flattened deep list</fsummary>
- <type>
- <v>DeepList = [term() | DeepList]</v>
- </type>
<desc>
- <p>Equivalent to <c>length(flatten(DeepList))</c>, but more
+ <p>Equivalent to <c>length(flatten(<anno>DeepList</anno>))</c>, but more
efficient.</p>
</desc>
</func>
<func>
- <name>flatmap(Fun, List1) -> List2</name>
+ <name name="flatmap" arity="2"/>
<fsummary>Map and flatten in one pass</fsummary>
- <type>
- <v>Fun = fun(A) -> [B]</v>
- <v>List1 = [A]</v>
- <v>List2 = [B]</v>
- <v>&nbsp;A = B = term()</v>
- </type>
<desc>
- <p>Takes a function from <c>A</c>s to lists of <c>B</c>s, and a
- list of <c>A</c>s (<c>List1</c>) and produces a list of
- <c>B</c>s by applying the function to every element in
- <c>List1</c> and appending the resulting lists.</p>
+ <p>Takes a function from <c><anno>A</anno></c>s to lists of <c><anno>B</anno></c>s, and a
+ list of <c><anno>A</anno></c>s (<c><anno>List1</anno></c>) and produces a list of
+ <c><anno>B</anno></c>s by applying the function to every element in
+ <c><anno>List1</anno></c> and appending the resulting lists.</p>
<p>That is, <c>flatmap</c> behaves as if it had been defined as
follows:</p>
<code type="none">
@@ -228,43 +179,29 @@ flatmap(Fun, List1) ->
</desc>
</func>
<func>
- <name>flatten(DeepList) -> List</name>
+ <name name="flatten" arity="1"/>
<fsummary>Flatten a deep list</fsummary>
- <type>
- <v>DeepList = [term() | DeepList]</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns a flattened version of <c>DeepList</c>.</p>
+ <p>Returns a flattened version of <c><anno>DeepList</anno></c>.</p>
</desc>
</func>
<func>
- <name>flatten(DeepList, Tail) -> List</name>
+ <name name="flatten" arity="2"/>
<fsummary>Flatten a deep list</fsummary>
- <type>
- <v>DeepList = [term() | DeepList]</v>
- <v>Tail = List = [term()]</v>
- </type>
<desc>
- <p>Returns a flattened version of <c>DeepList</c> with the tail
- <c>Tail</c> appended.</p>
+ <p>Returns a flattened version of <c><anno>DeepList</anno></c> with the tail
+ <c><anno>Tail</anno></c> appended.</p>
</desc>
</func>
<func>
- <name>foldl(Fun, Acc0, List) -> Acc1</name>
+ <name name="foldl" arity="3"/>
<fsummary>Fold a function over a list</fsummary>
- <type>
- <v>Fun = fun(Elem, AccIn) -> AccOut</v>
- <v>&nbsp;Elem = term()</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Calls <c>Fun(Elem, AccIn)</c> on successive elements <c>A</c>
- of <c>List</c>, starting with <c>AccIn == Acc0</c>.
- <c>Fun/2</c> must return a new accumulator which is passed to
+ <p>Calls <c><anno>Fun</anno>(<anno>Elem</anno>, <anno>AccIn</anno>)</c> on successive elements <c>A</c>
+ of <c><anno>List</anno></c>, starting with <c><anno>AccIn</anno> == <anno>Acc0</anno></c>.
+ <c><anno>Fun</anno>/2</c> must return a new accumulator which is passed to
the next call. The function returns the final value of
- the accumulator. <c>Acc0</c> is returned if the list is empty.
+ the accumulator. <c><anno>Acc0</anno></c> is returned if the list is empty.
For example:</p>
<pre>
> <input>lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).</input>
@@ -274,14 +211,8 @@ flatmap(Fun, List1) ->
</desc>
</func>
<func>
- <name>foldr(Fun, Acc0, List) -> Acc1</name>
+ <name name="foldr" arity="3"/>
<fsummary>Fold a function over a list</fsummary>
- <type>
- <v>Fun = fun(Elem, AccIn) -> AccOut</v>
- <v>&nbsp;Elem = term()</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
<p>Like <c>foldl/3</c>, but the list is traversed from right to
left. For example:</p>
@@ -297,33 +228,23 @@ flatmap(Fun, List1) ->
</desc>
</func>
<func>
- <name>foreach(Fun, List) -> void()</name>
+ <name name="foreach" arity="2"/>
<fsummary>Apply a function to each element of a list</fsummary>
- <type>
- <v>Fun = fun(Elem) -> void()</v>
- <v>&nbsp;Elem = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Calls <c>Fun(Elem)</c> for each element <c>Elem</c> in
- <c>List</c>. This function is used for its side effects and
+ <p>Calls <c><anno>Fun</anno>(<anno>Elem</anno>)</c> for each element <c><anno>Elem</anno></c> in
+ <c><anno>List</anno></c>. This function is used for its side effects and
the evaluation order is defined to be the same as the order
of the elements in the list.</p>
</desc>
</func>
<func>
- <name>keydelete(Key, N, TupleList1) -> TupleList2</name>
+ <name name="keydelete" arity="3"/>
<fsummary>Delete an element from a list of tuples</fsummary>
- <type>
- <v>Key = term()</v>
- <v>N = 1..tuple_size(Tuple)</v>
- <v>TupleList1 = TupleList2 = [Tuple]</v>
- <v>&nbsp;Tuple = tuple()</v>
- </type>
+ <type_desc variable="N">1..tuple_size(Tuple)</type_desc>
<desc>
- <p>Returns a copy of <c>TupleList1</c> where the first
- occurrence of a tuple whose <c>N</c>th element compares equal to
- <c>Key</c> is deleted, if there is such a tuple.</p>
+ <p>Returns a copy of <c><anno>TupleList1</anno></c> where the first
+ occurrence of a tuple whose <c><anno>N</anno></c>th element compares equal to
+ <c><anno>Key</anno></c> is deleted, if there is such a tuple.</p>
</desc>
</func>
<func>
@@ -343,19 +264,14 @@ flatmap(Fun, List1) ->
</desc>
</func>
<func>
- <name>keymap(Fun, N, TupleList1) -> TupleList2</name>
+ <name name="keymap" arity="3"/>
<fsummary>Map a function over a list of tuples</fsummary>
- <type>
- <v>Fun = fun(Term1) -> Term2</v>
- <v>&nbsp;Term1 = Term2 = term()</v>
- <v>N = 1..tuple_size(Tuple)</v>
- <v>TupleList1 = TupleList2 = [tuple()]</v>
- </type>
+ <type_desc variable="N">1..tuple_size(Tuple)</type_desc>
<desc>
<p>Returns a list of tuples where, for each tuple in
- <c>TupleList1</c>, the <c>N</c>th element <c>Term1</c> of the tuple
+ <c><anno>TupleList1</anno></c>, the <c><anno>N</anno></c>th element <c><anno>Term1</anno></c> of the tuple
has been replaced with the result of calling
- <c>Fun(Term1)</c>.</p>
+ <c><anno>Fun</anno>(<anno>Term1</anno>)</c>.</p>
<p>Examples:</p>
<pre>
> <input>Fun = fun(Atom) -> atom_to_list(Atom) end.</input>
@@ -365,7 +281,7 @@ flatmap(Fun, List1) ->
</desc>
</func>
<func>
- <name>keymember(Key, N, TupleList) -> bool()</name>
+ <name>keymember(Key, N, TupleList) -> boolean()</name>
<fsummary>Test for membership of a list of tuples</fsummary>
<type>
<v>Key = term()</v>
@@ -380,37 +296,28 @@ flatmap(Fun, List1) ->
</desc>
</func>
<func>
- <name>keymerge(N, TupleList1, TupleList2) -> TupleList3</name>
+ <name name="keymerge" arity="3"/>
<fsummary>Merge two key-sorted lists of tuples</fsummary>
- <type>
- <v>N = 1..tuple_size(Tuple)</v>
- <v>TupleList1 = TupleList2 = TupleList3 = [Tuple]</v>
- <v>&nbsp;Tuple = tuple()</v>
- </type>
+ <type_desc variable="N">1..tuple_size(Tuple)</type_desc>
<desc>
- <p>Returns the sorted list formed by merging <c>TupleList1</c>
- and <c>TupleList2</c>. The merge is performed on
- the <c>N</c>th element of each tuple. Both <c>TupleList1</c> and
- <c>TupleList2</c> must be key-sorted prior to evaluating this
+ <p>Returns the sorted list formed by merging <c><anno>TupleList1</anno></c>
+ and <c><anno>TupleList2</anno></c>. The merge is performed on
+ the <c><anno>N</anno></c>th element of each tuple. Both <c><anno>TupleList1</anno></c> and
+ <c><anno>TupleList2</anno></c> must be key-sorted prior to evaluating this
function. When two tuples compare equal, the tuple from
- <c>TupleList1</c> is picked before the tuple from
- <c>TupleList2</c>.</p>
+ <c><anno>TupleList1</anno></c> is picked before the tuple from
+ <c><anno>TupleList2</anno></c>.</p>
</desc>
</func>
<func>
- <name>keyreplace(Key, N, TupleList1, NewTuple) -> TupleList2</name>
+ <name name="keyreplace" arity="4"/>
<fsummary>Replace an element in a list of tuples</fsummary>
- <type>
- <v>Key = term()</v>
- <v>N = 1..tuple_size(Tuple)</v>
- <v>TupleList1 = TupleList2 = [Tuple]</v>
- <v>NewTuple = Tuple = tuple()</v>
- </type>
+ <type_desc variable="N">1..tuple_size(Tuple)</type_desc>
<desc>
- <p>Returns a copy of <c>TupleList1</c> where the first
- occurrence of a <c>T</c> tuple whose <c>N</c>th element
- compares equal to <c>Key</c> is replaced with
- <c>NewTuple</c>, if there is such a tuple <c>T</c>.</p>
+ <p>Returns a copy of <c><anno>TupleList1</anno></c> where the first
+ occurrence of a <c>T</c> tuple whose <c><anno>N</anno></c>th element
+ compares equal to <c><anno>Key</anno></c> is replaced with
+ <c><anno>NewTuple</anno></c>, if there is such a tuple <c>T</c>.</p>
</desc>
</func>
<func>
@@ -433,95 +340,63 @@ flatmap(Fun, List1) ->
</desc>
</func>
<func>
- <name>keysort(N, TupleList1) -> TupleList2</name>
+ <name name="keysort" arity="2"/>
<fsummary>Sort a list of tuples</fsummary>
- <type>
- <v>N = 1..tuple_size(Tuple)</v>
- <v>TupleList1 = TupleList2 = [Tuple]</v>
- <v>&nbsp;Tuple = tuple()</v>
- </type>
+ <type_desc variable="N">1..tuple_size(Tuple)</type_desc>
<desc>
<p>Returns a list containing the sorted elements of the list
- <c>TupleList1</c>. Sorting is performed on the <c>N</c>th
+ <c><anno>TupleList1</anno></c>. Sorting is performed on the <c><anno>N</anno></c>th
element of the tuples. The sort is stable.</p>
</desc>
</func>
<func>
- <name>keystore(Key, N, TupleList1, NewTuple) -> TupleList2</name>
+ <name name="keystore" arity="4"/>
<fsummary>Store an element in a list of tuples</fsummary>
- <type>
- <v>Key = term()</v>
- <v>N = 1..tuple_size(Tuple)</v>
- <v>TupleList1 = TupleList2 = [Tuple]</v>
- <v>NewTuple = Tuple = tuple()</v>
- </type>
- <desc>
- <p>Returns a copy of <c>TupleList1</c> where the first
- occurrence of a tuple <c>T</c> whose <c>N</c>th element
- compares equal to <c>Key</c> is replaced with
- <c>NewTuple</c>, if there is such a tuple <c>T</c>. If there
- is no such tuple <c>T</c> a copy of <c>TupleList1</c> where
- [<c>NewTuple</c>] has been appended to the end is
+ <type_desc variable="N">1..tuple_size(Tuple)</type_desc>
+ <desc>
+ <p>Returns a copy of <c><anno>TupleList1</anno></c> where the first
+ occurrence of a tuple <c>T</c> whose <c><anno>N</anno></c>th element
+ compares equal to <c><anno>Key</anno></c> is replaced with
+ <c><anno>NewTuple</anno></c>, if there is such a tuple <c>T</c>. If there
+ is no such tuple <c>T</c> a copy of <c><anno>TupleList1</anno></c> where
+ [<c><anno>NewTuple</anno></c>] has been appended to the end is
returned.</p>
</desc>
</func>
<func>
- <name>keytake(Key, N, TupleList1) -> {value, Tuple, TupleList2}
- | false</name>
+ <name name="keytake" arity="3"/>
<fsummary>Extract an element from a list of tuples</fsummary>
- <type>
- <v>Key = term()</v>
- <v>N = 1..tuple_size(Tuple)</v>
- <v>TupleList1 = TupleList2 = [Tuple]</v>
- <v>Tuple = tuple()</v>
- </type>
+ <type_desc variable="N">1..tuple_size(Tuple)</type_desc>
<desc>
- <p>Searches the list of tuples <c>TupleList1</c> for a tuple
- whose <c>N</c>th element compares equal to <c>Key</c>.
- Returns <c>{value, Tuple, TupleList2}</c> if such a tuple is
- found, otherwise <c>false</c>. <c>TupleList2</c> is a copy
- of <c>TupleList1</c> where the first occurrence of
- <c>Tuple</c> has been removed.</p>
+ <p>Searches the list of tuples <c><anno>TupleList1</anno></c> for a tuple
+ whose <c><anno>N</anno></c>th element compares equal to <c><anno>Key</anno></c>.
+ Returns <c>{value, <anno>Tuple</anno>, <anno>TupleList2</anno>}</c> if such a tuple is
+ found, otherwise <c>false</c>. <c><anno>TupleList2</anno></c> is a copy
+ of <c><anno>TupleList1</anno></c> where the first occurrence of
+ <c><anno>Tuple</anno></c> has been removed.</p>
</desc>
</func>
<func>
- <name>last(List) -> Last</name>
+ <name name="last" arity="1"/>
<fsummary>Return last element in a list</fsummary>
- <type>
- <v>List = [term()], length(List) > 0</v>
- <v>Last = term()</v>
- </type>
<desc>
- <p>Returns the last element in <c>List</c>.</p>
+ <p>Returns the last element in <c><anno>List</anno></c>.</p>
</desc>
</func>
<func>
- <name>map(Fun, List1) -> List2</name>
+ <name name="map" arity="2"/>
<fsummary>Map a function over a list</fsummary>
- <type>
- <v>Fun = fun(A) -> B</v>
- <v>List1 = [A]</v>
- <v>List2 = [B]</v>
- <v>&nbsp;A = B = term()</v>
- </type>
<desc>
- <p>Takes a function from <c>A</c>s to <c>B</c>s, and a list of
- <c>A</c>s and produces a list of <c>B</c>s by applying
+ <p>Takes a function from <c><anno>A</anno></c>s to <c><anno>B</anno></c>s, and a list of
+ <c><anno>A</anno></c>s and produces a list of <c><anno>B</anno></c>s by applying
the function to every element in the list. This function is
used to obtain the return values. The evaluation order is
implementation dependent.</p>
</desc>
</func>
<func>
- <name>mapfoldl(Fun, Acc0, List1) -> {List2, Acc1}</name>
+ <name name="mapfoldl" arity="3"/>
<fsummary>Map and fold in one pass</fsummary>
- <type>
- <v>Fun = fun(A, AccIn) -> {B, AccOut}</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>List1 = [A]</v>
- <v>List2 = [B]</v>
- <v>&nbsp;A = B = term()</v>
- </type>
<desc>
<p><c>mapfoldl</c> combines the operations of <c>map/2</c> and
<c>foldl/3</c> into one pass. An example, summing
@@ -533,35 +408,24 @@ flatmap(Fun, List1) ->
</desc>
</func>
<func>
- <name>mapfoldr(Fun, Acc0, List1) -> {List2, Acc1}</name>
+ <name name="mapfoldr" arity="3"/>
<fsummary>Map and fold in one pass</fsummary>
- <type>
- <v>Fun = fun(A, AccIn) -> {B, AccOut}</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>List1 = [A]</v>
- <v>List2 = [B]</v>
- <v>&nbsp;A = B = term()</v>
- </type>
<desc>
<p><c>mapfoldr</c> combines the operations of <c>map/2</c> and
<c>foldr/3</c> into one pass.</p>
</desc>
</func>
<func>
- <name>max(List) -> Max</name>
+ <name name="max" arity="1"/>
<fsummary>Return maximum element of a list</fsummary>
- <type>
- <v>List = [term()], length(List) > 0</v>
- <v>Max = term()</v>
- </type>
<desc>
- <p>Returns the first element of <c>List</c> that compares
+ <p>Returns the first element of <c><anno>List</anno></c> that compares
greater than or equal to all other elements of
- <c>List</c>.</p>
+ <c><anno>List</anno></c>.</p>
</desc>
</func>
<func>
- <name>member(Elem, List) -> bool()</name>
+ <name>member(Elem, List) -> boolean()</name>
<fsummary>Test for membership of a list</fsummary>
<type>
<v>Elem = term()</v>
@@ -573,112 +437,84 @@ flatmap(Fun, List1) ->
</desc>
</func>
<func>
- <name>merge(ListOfLists) -> List1</name>
+ <name name="merge" arity="1"/>
<fsummary>Merge a list of sorted lists</fsummary>
- <type>
- <v>ListOfLists = [List]</v>
- <v>List = List1 = [term()]</v>
- </type>
<desc>
<p>Returns the sorted list formed by merging all the sub-lists
- of <c>ListOfLists</c>. All sub-lists must be sorted prior to
+ of <c><anno>ListOfLists</anno></c>. All sub-lists must be sorted prior to
evaluating this function. When two elements compare equal,
the element from the sub-list with the lowest position in
- <c>ListOfLists</c> is picked before the other element.</p>
+ <c><anno>ListOfLists</anno></c> is picked before the other element.</p>
</desc>
</func>
<func>
- <name>merge(List1, List2) -> List3</name>
+ <name name="merge" arity="2"/>
<fsummary>Merge two sorted lists</fsummary>
- <type>
- <v>List1 = List2 = List3 = [term()]</v>
- </type>
<desc>
- <p>Returns the sorted list formed by merging <c>List1</c> and
- <c>List2</c>. Both <c>List1</c> and <c>List2</c> must be
+ <p>Returns the sorted list formed by merging <c><anno>List1</anno></c> and
+ <c><anno>List2</anno></c>. Both <c><anno>List1</anno></c> and <c><anno>List2</anno></c> must be
sorted prior to evaluating this function. When two elements
- compare equal, the element from <c>List1</c> is picked
- before the element from <c>List2</c>.</p>
+ compare equal, the element from <c><anno>List1</anno></c> is picked
+ before the element from <c><anno>List2</anno></c>.</p>
</desc>
</func>
<func>
- <name>merge(Fun, List1, List2) -> List3</name>
+ <name name="merge" arity="3"/>
<fsummary>Merge two sorted list</fsummary>
- <type>
- <v>Fun = fun(A, B) -> bool()</v>
- <v>List1 = [A]</v>
- <v>List2 = [B]</v>
- <v>List3 = [A | B]</v>
- <v>&nbsp;A = B = term()</v>
- </type>
<desc>
- <p>Returns the sorted list formed by merging <c>List1</c> and
- <c>List2</c>. Both <c>List1</c> and <c>List2</c> must be
+ <p>Returns the sorted list formed by merging <c><anno>List1</anno></c> and
+ <c><anno>List2</anno></c>. Both <c><anno>List1</anno></c> and <c><anno>List2</anno></c> must be
sorted according to the <seealso
marker="#ordering_function">ordering function</seealso>
- <c>Fun</c> prior to evaluating this function. <c>Fun(A,
- B)</c> should return <c>true</c> if <c>A</c> compares less
- than or equal to <c>B</c> in the ordering, <c>false</c>
+ <c><anno>Fun</anno></c> prior to evaluating this function. <c><anno>Fun</anno>(<anno>A</anno>,
+ <anno>B</anno>)</c> should return <c>true</c> if <c><anno>A</anno></c> compares less
+ than or equal to <c><anno>B</anno></c> in the ordering, <c>false</c>
otherwise. When two elements compare equal, the element from
- <c>List1</c> is picked before the element from
- <c>List2</c>.</p>
+ <c><anno>List1</anno></c> is picked before the element from
+ <c><anno>List2</anno></c>.</p>
</desc>
</func>
<func>
- <name>merge3(List1, List2, List3) -> List4</name>
+ <name name="merge3" arity="3"/>
<fsummary>Merge three sorted lists</fsummary>
- <type>
- <v>List1 = List2 = List3 = List4 = [term()]</v>
- </type>
<desc>
- <p>Returns the sorted list formed by merging <c>List1</c>,
- <c>List2</c> and <c>List3</c>. All of <c>List1</c>,
- <c>List2</c> and <c>List3</c> must be sorted prior to
+ <p>Returns the sorted list formed by merging <c><anno>List1</anno></c>,
+ <c><anno>List2</anno></c> and <c><anno>List3</anno></c>. All of <c><anno>List1</anno></c>,
+ <c><anno>List2</anno></c> and <c><anno>List3</anno></c> must be sorted prior to
evaluating this function. When two elements compare equal,
- the element from <c>List1</c>, if there is such an element,
+ the element from <c><anno>List1</anno></c>, if there is such an element,
is picked before the other element, otherwise the element
- from <c>List2</c> is picked before the element from
- <c>List3</c>.</p>
+ from <c><anno>List2</anno></c> is picked before the element from
+ <c><anno>List3</anno></c>.</p>
</desc>
</func>
<func>
- <name>min(List) -> Min</name>
+ <name name="min" arity="1"/>
<fsummary>Return minimum element of a list</fsummary>
- <type>
- <v>List = [term()], length(List) > 0</v>
- <v>Min = term()</v>
- </type>
<desc>
- <p>Returns the first element of <c>List</c> that compares
+ <p>Returns the first element of <c><anno>List</anno></c> that compares
less than or equal to all other elements of
- <c>List</c>.</p>
+ <c><anno>List</anno></c>.</p>
</desc>
</func>
<func>
- <name>nth(N, List) -> Elem</name>
+ <name name="nth" arity="2"/>
<fsummary>Return the Nth element of a list</fsummary>
- <type>
- <v>N = 1..length(List)</v>
- <v>List = [term()]</v>
- <v>Elem = term()</v>
- </type>
+ <type_desc variable="N">1..length(List)</type_desc>
<desc>
- <p>Returns the <c>N</c>th element of <c>List</c>. For example:</p>
+ <p>Returns the <c><anno>N</anno></c>th element of <c><anno>List</anno></c>. For example:</p>
<pre>
> <input>lists:nth(3, [a, b, c, d, e]).</input>
c</pre>
</desc>
</func>
<func>
- <name>nthtail(N, List1) -> Tail</name>
+ <name name="nthtail" arity="2"/>
<fsummary>Return the Nth tail of a list</fsummary>
- <type>
- <v>N = 0..length(List1)</v>
- <v>List1 = Tail = [term()]</v>
- </type>
+ <type_desc variable="N">0..length(List)</type_desc>
<desc>
- <p>Returns the <c>N</c>th tail of <c>List</c>, that is, the sublist of
- <c>List</c> starting at <c>N+1</c> and continuing up to
+ <p>Returns the <c><anno>N</anno></c>th tail of <c><anno>List</anno></c>, that is, the sublist of
+ <c><anno>List</anno></c> starting at <c><anno>N</anno>+1</c> and continuing up to
the end of the list. For example:</p>
<pre>
> <input>lists:nthtail(3, [a, b, c, d, e]).</input>
@@ -692,18 +528,13 @@ c</pre>
</desc>
</func>
<func>
- <name>partition(Pred, List) -> {Satisfying, NonSatisfying}</name>
+ <name name="partition" arity="2"/>
<fsummary>Partition a list into two lists based on a predicate</fsummary>
- <type>
- <v>Pred = fun(Elem) -> bool()</v>
- <v>&nbsp;Elem = term()</v>
- <v>List = Satisfying = NonSatisfying = [term()]</v>
- </type>
<desc>
- <p>Partitions <c>List</c> into two lists, where the first list
- contains all elements for which <c>Pred(Elem)</c> returns
+ <p>Partitions <c><anno>List</anno></c> into two lists, where the first list
+ contains all elements for which <c><anno>Pred</anno>(<anno>Elem</anno>)</c> returns
<c>true</c>, and the second list contains all elements for
- which <c>Pred(Elem)</c> returns <c>false</c>.</p>
+ which <c><anno>Pred</anno>(<anno>Elem</anno>)</c> returns <c>false</c>.</p>
<p>Examples:</p>
<pre>
> <input>lists:partition(fun(A) -> A rem 2 == 1 end, [1,2,3,4,5,6,7]).</input>
@@ -715,24 +546,18 @@ c</pre>
</desc>
</func>
<func>
- <name>prefix(List1, List2) -> bool()</name>
+ <name name="prefix" arity="2"/>
<fsummary>Test for list prefix</fsummary>
- <type>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>List1</c> is a prefix of
- <c>List2</c>, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> if <c><anno>List1</anno></c> is a prefix of
+ <c><anno>List2</anno></c>, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>reverse(List1) -> List2</name>
+ <name name="reverse" arity="1"/>
<fsummary>Reverse a list</fsummary>
- <type>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
- <p>Returns a list with the top level elements in <c>List1</c>
+ <p>Returns a list with the elements in <c><anno>List1</anno></c>
in reverse order.</p>
</desc>
</func>
@@ -743,7 +568,7 @@ c</pre>
<v>List1 = Tail = List2 = [term()]</v>
</type>
<desc>
- <p>Returns a list with the top level elements in <c>List1</c>
+ <p>Returns a list with the elements in <c>List1</c>
in reverse order, with the tail <c>Tail</c> appended. For
example:</p>
<pre>
@@ -752,22 +577,18 @@ c</pre>
</desc>
</func>
<func>
- <name>seq(From, To) -> Seq</name>
- <name>seq(From, To, Incr) -> Seq</name>
+ <name name="seq" arity="2"/>
+ <name name="seq" arity="3"/>
<fsummary>Generate a sequence of integers</fsummary>
- <type>
- <v>From = To = Incr = int()</v>
- <v>Seq = [int()]</v>
- </type>
<desc>
- <p>Returns a sequence of integers which starts with <c>From</c>
- and contains the successive results of adding <c>Incr</c> to
- the previous element, until <c>To</c> has been reached or
- passed (in the latter case, <c>To</c> is not an element of
- the sequence). <c>Incr</c> defaults to 1.</p>
- <p>Failure: If <c><![CDATA[To<From-Incr]]></c> and <c>Incr</c>
- is positive, or if <c>To>From-Incr</c> and <c>Incr</c> is
- negative, or if <c>Incr==0</c> and <c>From/=To</c>.</p>
+ <p>Returns a sequence of integers which starts with <c><anno>From</anno></c>
+ and contains the successive results of adding <c><anno>Incr</anno></c> to
+ the previous element, until <c><anno>To</anno></c> has been reached or
+ passed (in the latter case, <c><anno>To</anno></c> is not an element of
+ the sequence). <c><anno>Incr</anno></c> defaults to 1.</p>
+ <p>Failure: If <c><anno>To</anno>&lt;<anno>From</anno>-<anno>Incr</anno></c> and <c><anno>Incr</anno></c>
+ is positive, or if <c><anno>To</anno>><anno>From</anno>-<anno>Incr</anno></c> and <c><anno>Incr</anno></c> is
+ negative, or if <c><anno>Incr</anno>==0</c> and <c><anno>From</anno>/=<anno>To</anno></c>.</p>
<p>The following equalities hold for all sequences:</p>
<code type="none">
length(lists:seq(From, To)) == To-From+1
@@ -787,57 +608,41 @@ length(lists:seq(From, To, Incr)) == (To-From+Incr) div Incr</code>
</desc>
</func>
<func>
- <name>sort(List1) -> List2</name>
+ <name name="sort" arity="1"/>
<fsummary>Sort a list</fsummary>
- <type>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
<p>Returns a list containing the sorted elements of
- <c>List1</c>.</p>
+ <c><anno>List1</anno></c>.</p>
</desc>
</func>
<func>
- <name>sort(Fun, List1) -> List2</name>
+ <name name="sort" arity="2"/>
<fsummary>Sort a list</fsummary>
- <type>
- <v>Fun = fun(Elem1, Elem2) -> bool()</v>
- <v>&nbsp;Elem1 = Elem2 = term()</v>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
<p>Returns a list containing the sorted elements of
- <c>List1</c>, according to the <seealso
+ <c><anno>List1</anno></c>, according to the <seealso
marker="#ordering_function">ordering function</seealso>
- <c>Fun</c>. <c>Fun(A, B)</c> should return <c>true</c> if
- <c>A</c> compares less than or equal to <c>B</c> in the
+ <c><anno>Fun</anno></c>. <c><anno>Fun</anno>(<anno>A</anno>, <anno>B</anno>)</c> should return <c>true</c> if
+ <c><anno>A</anno></c> compares less than or equal to <c><anno>B</anno></c> in the
ordering, <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>split(N, List1) -> {List2, List3}</name>
+ <name name="split" arity="2"/>
<fsummary>Split a list into two lists</fsummary>
- <type>
- <v>N = 0..length(List1)</v>
- <v>List1 = List2 = List3 = [term()]</v>
- </type>
+ <type_desc variable="N">0..length(List1)</type_desc>
<desc>
- <p>Splits <c>List1</c> into <c>List2</c> and <c>List3</c>.
- <c>List2</c> contains the first <c>N</c> elements and
- <c>List3</c> the rest of the elements (the <c>N</c>th tail).</p>
+ <p>Splits <c><anno>List1</anno></c> into <c><anno>List2</anno></c> and <c><anno>List3</anno></c>.
+ <c><anno>List2</anno></c> contains the first <c><anno>N</anno></c> elements and
+ <c><anno>List3</anno></c> the rest of the elements (the <c><anno>N</anno></c>th tail).</p>
</desc>
</func>
<func>
- <name>splitwith(Pred, List) -> {List1, List2}</name>
+ <name name="splitwith" arity="2"/>
<fsummary>Split a list into two lists based on a predicate</fsummary>
- <type>
- <v>Pred = fun(Elem) -> bool()</v>
- <v>&nbsp;Elem = term()</v>
- <v>List = List1 = List2 = [term()]</v>
- </type>
<desc>
- <p>Partitions <c>List</c> into two lists according to
- <c>Pred</c>. <c>splitwith/2</c> behaves as if it is defined
+ <p>Partitions <c><anno>List</anno></c> into two lists according to
+ <c><anno>Pred</anno></c>. <c>splitwith/2</c> behaves as if it is defined
as follows:</p>
<code type="none">
splitwith(Pred, List) ->
@@ -853,31 +658,23 @@ splitwith(Pred, List) ->
</desc>
</func>
<func>
- <name>sublist(List1, Len) -> List2</name>
+ <name name="sublist" arity="2"/>
<fsummary>Return a sub-list of a certain length, starting at the first position</fsummary>
- <type>
- <v>List1 = List2 = [term()]</v>
- <v>Len = int()</v>
- </type>
<desc>
- <p>Returns the sub-list of <c>List1</c> starting at position 1
- and with (max) <c>Len</c> elements. It is not an error for
- <c>Len</c> to exceed the length of the list -- in that case
+ <p>Returns the sub-list of <c><anno>List1</anno></c> starting at position 1
+ and with (max) <c><anno>Len</anno></c> elements. It is not an error for
+ <c><anno>Len</anno></c> to exceed the length of the list -- in that case
the whole list is returned.</p>
</desc>
</func>
<func>
- <name>sublist(List1, Start, Len) -> List2</name>
+ <name name="sublist" arity="3"/>
<fsummary>Return a sub-list starting at a given position and with a given number of elements</fsummary>
- <type>
- <v>List1 = List2 = [term()]</v>
- <v>Start = 1..(length(List1)+1)</v>
- <v>Len = int()</v>
- </type>
+ <type_desc variable="Start">1..(length(List1)+1)</type_desc>
<desc>
- <p>Returns the sub-list of <c>List1</c> starting at <c>Start</c>
- and with (max) <c>Len</c> elements. It is not an error for
- <c>Start+Len</c> to exceed the length of the list.</p>
+ <p>Returns the sub-list of <c><anno>List1</anno></c> starting at <c><anno>Start</anno></c>
+ and with (max) <c><anno>Len</anno></c> elements. It is not an error for
+ <c><anno>Start</anno>+<anno>Len</anno></c> to exceed the length of the list.</p>
<pre>
> <input>lists:sublist([1,2,3,4], 2, 2).</input>
[2,3]
@@ -888,15 +685,12 @@ splitwith(Pred, List) ->
</desc>
</func>
<func>
- <name>subtract(List1, List2) -> List3</name>
+ <name name="subtract" arity="2"/>
<fsummary>Subtract the element in one list from another list</fsummary>
- <type>
- <v>List1 = List2 = List3 = [term()]</v>
- </type>
<desc>
- <p>Returns a new list <c>List3</c> which is a copy of
- <c>List1</c>, subjected to the following procedure: for each
- element in <c>List2</c>, its first occurrence in <c>List1</c>
+ <p>Returns a new list <c><anno>List3</anno></c> which is a copy of
+ <c><anno>List1</anno></c>, subjected to the following procedure: for each
+ element in <c><anno>List2</anno></c>, its first occurrence in <c><anno>List1</anno></c>
is deleted. For example:</p>
<pre>
> <input>lists:subtract("123212", "212").</input>
@@ -911,151 +705,112 @@ splitwith(Pred, List) ->
</desc>
</func>
<func>
- <name>suffix(List1, List2) -> bool()</name>
+ <name name="suffix" arity="2"/>
<fsummary>Test for list suffix</fsummary>
<desc>
- <p>Returns <c>true</c> if <c>List1</c> is a suffix of
- <c>List2</c>, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> if <c><anno>List1</anno></c> is a suffix of
+ <c><anno>List2</anno></c>, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>sum(List) -> number()</name>
+ <name name="sum" arity="1"/>
<fsummary>Return sum of elements in a list</fsummary>
- <type>
- <v>List = [number()]</v>
- </type>
<desc>
- <p>Returns the sum of the elements in <c>List</c>.</p>
+ <p>Returns the sum of the elements in <c><anno>List</anno></c>.</p>
</desc>
</func>
<func>
- <name>takewhile(Pred, List1) -> List2</name>
+ <name name="takewhile" arity="2"/>
<fsummary>Take elements from a list while a predicate is true</fsummary>
- <type>
- <v>Pred = fun(Elem) -> bool()</v>
- <v>&nbsp;Elem = term()</v>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
- <p>Takes elements <c>Elem</c> from <c>List1</c> while
- <c>Pred(Elem)</c> returns <c>true</c>, that is,
+ <p>Takes elements <c><anno>Elem</anno></c> from <c><anno>List1</anno></c> while
+ <c><anno>Pred</anno>(<anno>Elem</anno>)</c> returns <c>true</c>, that is,
the function returns the longest prefix of the list for which
all elements satisfy the predicate.</p>
</desc>
</func>
<func>
- <name>ukeymerge(N, TupleList1, TupleList2) -> TupleList3</name>
+ <name name="ukeymerge" arity="3"/>
<fsummary>Merge two key-sorted lists of tuples, removing duplicates</fsummary>
- <type>
- <v>N = 1..tuple_size(Tuple)</v>
- <v>TupleList1 = TupleList2 = TupleList3 = [Tuple]</v>
- <v>&nbsp;Tuple = tuple()</v>
- </type>
+ <type_desc variable="N">1..tuple_size(Tuple)</type_desc>
<desc>
- <p>Returns the sorted list formed by merging <c>TupleList1</c>
- and <c>TupleList2</c>. The merge is performed on the
- <c>N</c>th element of each tuple. Both <c>TupleList1</c> and
- <c>TupleList2</c> must be key-sorted without duplicates
+ <p>Returns the sorted list formed by merging <c><anno>TupleList1</anno></c>
+ and <c><anno>TupleList2</anno></c>. The merge is performed on the
+ <c><anno>N</anno></c>th element of each tuple. Both <c><anno>TupleList1</anno></c> and
+ <c><anno>TupleList2</anno></c> must be key-sorted without duplicates
prior to evaluating this function. When two tuples compare
- equal, the tuple from <c>TupleList1</c> is picked and the
- one from <c>TupleList2</c> deleted.</p>
+ equal, the tuple from <c><anno>TupleList1</anno></c> is picked and the
+ one from <c><anno>TupleList2</anno></c> deleted.</p>
</desc>
</func>
<func>
- <name>ukeysort(N, TupleList1) -> TupleList2</name>
+ <name name="ukeysort" arity="2"/>
<fsummary>Sort a list of tuples, removing duplicates</fsummary>
- <type>
- <v>N = 1..tuple_size(Tuple)</v>
- <v>TupleList1 = TupleList2 = [Tuple]</v>
- <v>&nbsp;Tuple = tuple()</v>
- </type>
+ <type_desc variable="N">1..tuple_size(Tuple)</type_desc>
<desc>
<p>Returns a list containing the sorted elements of the list
- <c>TupleList1</c> where all but the first tuple of the
+ <c><anno>TupleList1</anno></c> where all but the first tuple of the
tuples comparing equal have been deleted. Sorting is
- performed on the <c>N</c>th element of the tuples.</p>
+ performed on the <c><anno>N</anno></c>th element of the tuples.</p>
</desc>
</func>
<func>
- <name>umerge(ListOfLists) -> List1</name>
+ <name name="umerge" arity="1"/>
<fsummary>Merge a list of sorted lists, removing duplicates</fsummary>
- <type>
- <v>ListOfLists = [List]</v>
- <v>List = List1 = [term()]</v>
- </type>
<desc>
<p>Returns the sorted list formed by merging all the sub-lists
- of <c>ListOfLists</c>. All sub-lists must be sorted and
+ of <c><anno>ListOfLists</anno></c>. All sub-lists must be sorted and
contain no duplicates prior to evaluating this function.
When two elements compare equal, the element from the
- sub-list with the lowest position in <c>ListOfLists</c> is
+ sub-list with the lowest position in <c><anno>ListOfLists</anno></c> is
picked and the other one deleted.</p>
</desc>
</func>
<func>
- <name>umerge(List1, List2) -> List3</name>
+ <name name="umerge" arity="2"/>
<fsummary>Merge two sorted lists, removing duplicates</fsummary>
- <type>
- <v>List1 = List2 = List3 = [term()]</v>
- </type>
<desc>
- <p>Returns the sorted list formed by merging <c>List1</c> and
- <c>List2</c>. Both <c>List1</c> and <c>List2</c> must be
+ <p>Returns the sorted list formed by merging <c><anno>List1</anno></c> and
+ <c><anno>List2</anno></c>. Both <c><anno>List1</anno></c> and <c><anno>List2</anno></c> must be
sorted and contain no duplicates prior to evaluating this
function. When two elements compare equal, the element from
- <c>List1</c> is picked and the one from <c>List2</c>
+ <c><anno>List1</anno></c> is picked and the one from <c><anno>List2</anno></c>
deleted.</p>
</desc>
</func>
<func>
- <name>umerge(Fun, List1, List2) -> List3</name>
+ <name name="umerge" arity="3"/>
<fsummary>Merge two sorted lists, removing duplicates</fsummary>
- <type>
- <v>Fun = fun(A, B) -> bool()</v>
- <v>List1 = [A]</v>
- <v>List2 = [B]</v>
- <v>List3 = [A | B]</v>
- <v>&nbsp;A = B = term()</v>
- </type>
<desc>
- <p>Returns the sorted list formed by merging <c>List1</c> and
- <c>List2</c>. Both <c>List1</c> and <c>List2</c> must be
+ <p>Returns the sorted list formed by merging <c><anno>List1</anno></c> and
+ <c><anno>List2</anno></c>. Both <c><anno>List1</anno></c> and <c><anno>List2</anno></c> must be
sorted according to the <seealso
marker="#ordering_function">ordering function</seealso>
<c>Fun</c> and contain no duplicates prior to evaluating
- this function. <c>Fun(A, B)</c> should return <c>true</c> if
- <c>A</c> compares less than or equal to <c>B</c> in the
+ this function. <c><anno>Fun</anno>(<anno>A</anno>, <anno>B</anno>)</c> should return <c>true</c> if
+ <c><anno>A</anno></c> compares less than or equal to <c><anno>B</anno></c> in the
ordering, <c>false</c> otherwise. When two elements compare
equal, the element from
- <c>List1</c> is picked and the one from <c>List2</c>
+ <c><anno>List1</anno></c> is picked and the one from <c><anno>List2</anno></c>
deleted.</p>
</desc>
</func>
<func>
- <name>umerge3(List1, List2, List3) -> List4</name>
+ <name name="umerge3" arity="3"/>
<fsummary>Merge three sorted lists, removing duplicates</fsummary>
- <type>
- <v>List1 = List2 = List3 = List4 = [term()]</v>
- </type>
<desc>
- <p>Returns the sorted list formed by merging <c>List1</c>,
- <c>List2</c> and <c>List3</c>. All of <c>List1</c>,
- <c>List2</c> and <c>List3</c> must be sorted and contain no
+ <p>Returns the sorted list formed by merging <c><anno>List1</anno></c>,
+ <c><anno>List2</anno></c> and <c><anno>List3</anno></c>. All of <c><anno>List1</anno></c>,
+ <c><anno>List2</anno></c> and <c><anno>List3</anno></c> must be sorted and contain no
duplicates prior to evaluating this function. When two
- elements compare equal, the element from <c>List1</c> is
+ elements compare equal, the element from <c><anno>List1</anno></c> is
picked if there is such an element, otherwise the element
- from <c>List2</c> is picked, and the other one deleted.</p>
+ from <c><anno>List2</anno></c> is picked, and the other one deleted.</p>
</desc>
</func>
<func>
- <name>unzip(List1) -> {List2, List3}</name>
+ <name name="unzip" arity="1"/>
<fsummary>Unzip a list of two-tuples into two lists</fsummary>
- <type>
- <v>List1 = [{X, Y}]</v>
- <v>List2 = [X]</v>
- <v>List3 = [Y]</v>
- <v>&nbsp;X = Y = term()</v>
- </type>
<desc>
<p>"Unzips" a list of two-tuples into two lists, where the first
list contains the first element of each tuple, and the second
@@ -1063,15 +818,8 @@ splitwith(Pred, List) ->
</desc>
</func>
<func>
- <name>unzip3(List1) -> {List2, List3, List4}</name>
+ <name name="unzip3" arity="1"/>
<fsummary>Unzip a list of three-tuples into three lists</fsummary>
- <type>
- <v>List1 = [{X, Y, Z}]</v>
- <v>List2 = [X]</v>
- <v>List3 = [Y]</v>
- <v>List4 = [Z]</v>
- <v>&nbsp;X = Y = Z = term()</v>
- </type>
<desc>
<p>"Unzips" a list of three-tuples into three lists, where
the first list contains the first element of each tuple,
@@ -1080,44 +828,30 @@ splitwith(Pred, List) ->
</desc>
</func>
<func>
- <name>usort(List1) -> List2</name>
+ <name name="usort" arity="1"/>
<fsummary>Sort a list, removing duplicates</fsummary>
- <type>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
<p>Returns a list containing the sorted elements of
- <c>List1</c> where all but the first element of the elements
+ <c><anno>List1</anno></c> where all but the first element of the elements
comparing equal have been deleted.</p>
</desc>
</func>
<func>
- <name>usort(Fun, List1) -> List2</name>
+ <name name="usort" arity="2"/>
<fsummary>Sort a list, removing duplicates</fsummary>
- <type>
- <v>Fun = fun(Elem1, Elem2) -> bool()</v>
- <v>&nbsp;Elem1 = Elem2 = term()</v>
- <v>List1 = List2 = [term()]</v>
- </type>
<desc>
<p>Returns a list which contains the sorted elements of
- <c>List1</c> where all but the first element of the elements
+ <c><anno>List1</anno></c> where all but the first element of the elements
comparing equal according to the <seealso
marker="#ordering_function">ordering function</seealso>
- <c>Fun</c> have been deleted. <c>Fun(A, B)</c> should return
+ <c><anno>Fun</anno></c> have been deleted. <c><anno>Fun</anno>(A, B)</c> should return
<c>true</c> if <c>A</c> compares less than or equal to
<c>B</c> in the ordering, <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>zip(List1, List2) -> List3</name>
+ <name name="zip" arity="2"/>
<fsummary>Zip two lists into a list of two-tuples</fsummary>
- <type>
- <v>List1 = [X]</v>
- <v>List2 = [Y]</v>
- <v>List3 = [{X, Y}]</v>
- <v>&nbsp;X = Y = term()</v>
- </type>
<desc>
<p>"Zips" two lists of equal length into one list of two-tuples,
where the first element of each tuple is taken from the first
@@ -1126,15 +860,8 @@ splitwith(Pred, List) ->
</desc>
</func>
<func>
- <name>zip3(List1, List2, List3) -> List4</name>
+ <name name="zip3" arity="3"/>
<fsummary>Zip three lists into a list of three-tuples</fsummary>
- <type>
- <v>List1 = [X]</v>
- <v>List2 = [Y]</v>
- <v>List3 = [Z]</v>
- <v>List3 = [{X, Y, Z}]</v>
- <v>&nbsp;X = Y = Z = term()</v>
- </type>
<desc>
<p>"Zips" three lists of equal length into one list of
three-tuples, where the first element of each tuple is taken
@@ -1145,20 +872,13 @@ splitwith(Pred, List) ->
</desc>
</func>
<func>
- <name>zipwith(Combine, List1, List2) -> List3</name>
+ <name name="zipwith" arity="3"/>
<fsummary>Zip two lists into one list according to a fun</fsummary>
- <type>
- <v>Combine = fun(X, Y) -> T</v>
- <v>List1 = [X]</v>
- <v>List2 = [Y]</v>
- <v>List3 = [T]</v>
- <v>&nbsp;X = Y = T = term()</v>
- </type>
<desc>
<p>Combine the elements of two lists of equal length into one
- list. For each pair <c>X, Y</c> of list elements from the two
+ list. For each pair <c><anno>X</anno>, <anno>Y</anno></c> of list elements from the two
lists, the element in the result list will be
- <c>Combine(X, Y)</c>.</p>
+ <c><anno>Combine</anno>(<anno>X</anno>, <anno>Y</anno>)</c>.</p>
<p><c>zipwith(fun(X, Y) -> {X,Y} end, List1, List2)</c> is
equivalent to <c>zip(List1, List2)</c>.</p>
<p>Example:</p>
@@ -1168,21 +888,13 @@ splitwith(Pred, List) ->
</desc>
</func>
<func>
- <name>zipwith3(Combine, List1, List2, List3) -> List4</name>
+ <name name="zipwith3" arity="4"/>
<fsummary>Zip three lists into one list according to a fun</fsummary>
- <type>
- <v>Combine = fun(X, Y, Z) -> T</v>
- <v>List1 = [X]</v>
- <v>List2 = [Y]</v>
- <v>List3 = [Z]</v>
- <v>List4 = [T]</v>
- <v>&nbsp;X = Y = Z = T = term()</v>
- </type>
<desc>
<p>Combine the elements of three lists of equal length into one
- list. For each triple <c>X, Y, Z</c> of list elements from
+ list. For each triple <c><anno>X</anno>, <anno>Y</anno>, <anno>Z</anno></c> of list elements from
the three lists, the element in the result list will be
- <c>Combine(X, Y, Z)</c>.</p>
+ <c><anno>Combine</anno>(<anno>X</anno>, <anno>Y</anno>, <anno>Z</anno>)</c>.</p>
<p><c>zipwith3(fun(X, Y, Z) -> {X,Y,Z} end, List1, List2, List3)</c> is equivalent to <c>zip3(List1, List2, List3)</c>.</p>
<p>Examples:</p>
<pre>
diff --git a/lib/stdlib/doc/src/log_mf_h.xml b/lib/stdlib/doc/src/log_mf_h.xml
index f8e11339a7..f2b09b58eb 100644
--- a/lib/stdlib/doc/src/log_mf_h.xml
+++ b/lib/stdlib/doc/src/log_mf_h.xml
@@ -43,28 +43,27 @@
report files <c>1, 2, ....</c>.
</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="args"/>
+ <desc><p>Term to be sent to <seealso marker="gen_event#add_handler/3">
+ gen_event:add_handler/3</seealso>.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>init(Dir, MaxBytes, MaxFiles)</name>
- <name>init(Dir, MaxBytes, MaxFiles, Pred) -> Args</name>
+ <name name="init" arity="3"/>
+ <name name="init" arity="4"/>
<fsummary>Initiate the event handler</fsummary>
- <type>
- <v>Dir = string()</v>
- <v>MaxBytes = integer()</v>
- <v>MaxFiles = 0 &lt; integer() &lt; 256</v>
- <v>Pred = fun(Event) -> boolean()</v>
- <v>Event = term()</v>
- <v>Args = args()</v>
- </type>
<desc>
<p>Initiates the event handler. This function returns
- <c>Args</c>, which should be used in a call to
- <c>gen_event:add_handler(EventMgr, log_mf_h, Args)</c>.
+ <c><anno>Args</anno></c>, which should be used in a call to
+ <c>gen_event:add_handler(EventMgr, log_mf_h, <anno>Args</anno>)</c>.
</p>
- <p><c>Dir</c> specifies which directory to use for the log
- files. <c>MaxBytes</c> specifies the size of each individual
- file. <c>MaxFiles</c> specifies how many files are
- used. <c>Pred</c> is a predicate function used to filter the
+ <p><c><anno>Dir</anno></c> specifies which directory to use for the log
+ files. <c><anno>MaxBytes</anno></c> specifies the size of each individual
+ file. <c><anno>MaxFiles</anno></c> specifies how many files are
+ used. <c><anno>Pred</anno></c> is a predicate function used to filter the
events. If no predicate function is specified, all events are
logged.</p>
</desc>
diff --git a/lib/stdlib/doc/src/math.xml b/lib/stdlib/doc/src/math.xml
index 02e4d6e495..518457d5d8 100644
--- a/lib/stdlib/doc/src/math.xml
+++ b/lib/stdlib/doc/src/math.xml
@@ -45,7 +45,7 @@
</description>
<funcs>
<func>
- <name>pi() -> float()</name>
+ <name name="pi" arity="0"/>
<fsummary>A useful number</fsummary>
<desc>
<p>A useful number.</p>
diff --git a/lib/stdlib/doc/src/ms_transform.xml b/lib/stdlib/doc/src/ms_transform.xml
index ba9f89685b..f81f8bda96 100644
--- a/lib/stdlib/doc/src/ms_transform.xml
+++ b/lib/stdlib/doc/src/ms_transform.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2002</year><year>2010</year>
+ <year>2002</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -599,12 +599,9 @@ ets:select(Table, [{{'$1',test,'$2'},[],['$_']}]).</code>
</description>
<funcs>
<func>
- <name>parse_transform(Forms,_Options) -> Forms</name>
+ <name name="parse_transform" arity="2"/>
<fsummary>Transforms Erlang abstract format containing calls to ets/dbg:fun2ms into literal match specifications.</fsummary>
- <type>
- <v>Forms = Erlang abstract code format, see the erl_parse module description </v>
- <v>_Options = Option list, required but not used</v>
- </type>
+ <type_desc variable="Options">Option list, required but not used.</type_desc>
<desc>
<p>Implements the actual transformation at compile time. This
function is called by the compiler to do the source code
@@ -617,29 +614,21 @@ ets:select(Table, [{{'$1',test,'$2'},[],['$_']}]).</code>
</desc>
</func>
<func>
- <name>transform_from_shell(Dialect,Clauses,BoundEnvironment) -> term()</name>
+ <name name="transform_from_shell" arity="3"/>
<fsummary>Used when transforming fun's created in the shell into match_specifications.</fsummary>
- <type>
- <v>Dialect = ets | dbg</v>
- <v>Clauses = Erlang abstract form for a single fun</v>
- <v>BoundEnvironment = [{atom(), term()}, ...], list of variable bindings in the shell environment</v>
- </type>
+ <type_desc variable="BoundEnvironment">List of variable bindings in the shell environment.</type_desc>
<desc>
<p>Implements the actual transformation when the <c>fun2ms</c>
functions are called from the shell. In this case the abstract
form is for one single fun (parsed by the Erlang shell), and
all imported variables should be in the key-value list passed
- as <c>BoundEnvironment</c>. The result is a term, normalized,
+ as <c><anno>BoundEnvironment</anno></c>. The result is a term, normalized,
i.e. not in abstract format.</p>
</desc>
</func>
<func>
- <name>format_error(Errcode) -> ErrMessage</name>
+ <name name="format_error" arity="1"/>
<fsummary>Error formatting function as required by the parse_transform interface.</fsummary>
- <type>
- <v>Errcode = term()</v>
- <v>ErrMessage = string()</v>
- </type>
<desc>
<p>Takes an error code returned by one of the other functions
in the module and creates a textual description of the
diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml
index 8cd499f960..c2676b1de5 100644
--- a/lib/stdlib/doc/src/notes.xml
+++ b/lib/stdlib/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/stdlib/doc/src/orddict.xml b/lib/stdlib/doc/src/orddict.xml
index 1b8b74534b..319083d35b 100644
--- a/lib/stdlib/doc/src/orddict.xml
+++ b/lib/stdlib/doc/src/orddict.xml
@@ -46,176 +46,123 @@
(<c>==</c>).</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-ordered_dictionary()
- as returned by new/0</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name name="orddict"/>
+ <desc><p>As returned by new/0.</p></desc>
+ </datatype>
+ </datatypes>
+
<funcs>
<func>
- <name>append(Key, Value, Orddict1) -> Orddict2</name>
+ <name name="append" arity="3"/>
<fsummary>Append a value to keys in a dictionary</fsummary>
- <type>
- <v>Key = Value = term()</v>
- <v>Orddict1 = Orddict2 = ordered_dictionary()</v>
- </type>
<desc>
- <p>This function appends a new <c>Value</c> to the current list
- of values associated with <c>Key</c>. An exception is
- generated if the initial value associated with <c>Key</c> is
+ <p>This function appends a new <c><anno>Value</anno></c> to the current list
+ of values associated with <c><anno>Key</anno></c>. An exception is
+ generated if the initial value associated with <c><anno>Key</anno></c> is
not a list of values.</p>
</desc>
</func>
<func>
- <name>append_list(Key, ValList, Orddict1) -> Orddict2</name>
+ <name name="append_list" arity="3"/>
<fsummary>Append new values to keys in a dictionary</fsummary>
- <type>
- <v>ValList = [Value]</v>
- <v>Key = Value = term()</v>
- <v>Orddict1 = Orddict2 = ordered_dictionary()</v>
- </type>
<desc>
- <p>This function appends a list of values <c>ValList</c> to
- the current list of values associated with <c>Key</c>. An
+ <p>This function appends a list of values <c><anno>ValList</anno></c> to
+ the current list of values associated with <c><anno>Key</anno></c>. An
exception is generated if the initial value associated with
- <c>Key</c> is not a list of values.</p>
+ <c><anno>Key</anno></c> is not a list of values.</p>
</desc>
</func>
<func>
- <name>erase(Key, Orddict1) -> Orddict2</name>
+ <name name="erase" arity="2"/>
<fsummary>Erase a key from a dictionary</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Orddict1 = Orddict2 = ordered_dictionary()</v>
- </type>
<desc>
<p>This function erases all items with a given key from a
dictionary.</p>
</desc>
</func>
<func>
- <name>fetch(Key, Orddict) -> Value</name>
+ <name name="fetch" arity="2"/>
<fsummary>Look-up values in a dictionary</fsummary>
- <type>
- <v>Key = Value = term()</v>
- <v>Orddict = ordered_dictionary()</v>
- </type>
<desc>
- <p>This function returns the value associated with <c>Key</c>
- in the dictionary <c>Orddict</c>. <c>fetch</c> assumes that
- the <c>Key</c> is present in the dictionary and an exception
- is generated if <c>Key</c> is not in the dictionary.</p>
+ <p>This function returns the value associated with <c><anno>Key</anno></c>
+ in the dictionary <c><anno>Orddict</anno></c>. <c>fetch</c> assumes that
+ the <c><anno>Key</anno></c> is present in the dictionary and an exception
+ is generated if <c><anno>Key</anno></c> is not in the dictionary.</p>
</desc>
</func>
<func>
- <name>fetch_keys(Orddict) -> Keys</name>
+ <name name="fetch_keys" arity="1"/>
<fsummary>Return all keys in a dictionary</fsummary>
- <type>
- <v>Orddict = ordered_dictionary()</v>
- <v>Keys = [term()]</v>
- </type>
<desc>
<p>This function returns a list of all keys in the dictionary.</p>
</desc>
</func>
<func>
- <name>filter(Pred, Orddict1) -> Orddict2</name>
+ <name name="filter" arity="2"/>
<fsummary>Choose elements which satisfy a predicate</fsummary>
- <type>
- <v>Pred = fun(Key, Value) -> bool()</v>
- <v>&nbsp;Key = Value = term()</v>
- <v>Orddict1 = Orddict2 = ordered_dictionary()</v>
- </type>
<desc>
- <p><c>Orddict2</c> is a dictionary of all keys and values in
- <c>Orddict1</c> for which <c>Pred(Key, Value)</c> is <c>true</c>.</p>
+ <p><c><anno>Orddict2</anno></c> is a dictionary of all keys and values in
+ <c><anno>Orddict1</anno></c> for which <c><anno>Pred</anno>(<anno>Key</anno>, <anno>Value</anno>)</c> is <c>true</c>.</p>
</desc>
</func>
<func>
- <name>find(Key, Orddict) -> {ok, Value} | error</name>
+ <name name="find" arity="2"/>
<fsummary>Search for a key in a dictionary</fsummary>
- <type>
- <v>Key = Value = term()</v>
- <v>Orddict = ordered_dictionary()</v>
- </type>
<desc>
<p>This function searches for a key in a dictionary. Returns
- <c>{ok, Value}</c> where <c>Value</c> is the value associated
- with <c>Key</c>, or <c>error</c> if the key is not present in
+ <c>{ok, <anno>Value</anno>}</c> where <c><anno>Value</anno></c> is the value associated
+ with <c><anno>Key</anno></c>, or <c>error</c> if the key is not present in
the dictionary.</p>
</desc>
</func>
<func>
- <name>fold(Fun, Acc0, Orddict) -> Acc1</name>
+ <name name="fold" arity="3"/>
<fsummary>Fold a function over a dictionary</fsummary>
- <type>
- <v>Fun = fun(Key, Value, AccIn) -> AccOut</v>
- <v>Key = Value = term()</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>Orddict = ordered_dictionary()</v>
- </type>
<desc>
- <p>Calls <c>Fun</c> on successive keys and values of
- <c>Orddict</c> together with an extra argument <c>Acc</c>
- (short for accumulator). <c>Fun</c> must return a new
- accumulator which is passed to the next call. <c>Acc0</c> is
+ <p>Calls <c><anno>Fun</anno></c> on successive keys and values of
+ <c><anno>Orddict</anno></c> together with an extra argument <c>Acc</c>
+ (short for accumulator). <c><anno>Fun</anno></c> must return a new
+ accumulator which is passed to the next call. <c><anno>Acc0</anno></c> is
returned if the list is empty. The evaluation order is
undefined.</p>
</desc>
</func>
<func>
- <name>from_list(List) -> Orddict</name>
+ <name name="from_list" arity="1"/>
<fsummary>Convert a list of pairs to a dictionary</fsummary>
- <type>
- <v>List = [{Key, Value}]</v>
- <v>Orddict = ordered_dictionary()</v>
- </type>
<desc>
- <p>This function converts the <c>Key</c> - <c>Value</c> list
- <c>List</c> to a dictionary.</p>
+ <p>This function converts the <c><anno>Key</anno></c> - <c><anno>Value</anno></c> list
+ <c><anno>List</anno></c> to a dictionary.</p>
</desc>
</func>
<func>
- <name>is_key(Key, Orddict) -> bool()</name>
+ <name name="is_key" arity="2"/>
<fsummary>Test if a key is in a dictionary</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Orddict = ordered_dictionary()</v>
- </type>
<desc>
- <p>This function tests if <c>Key</c> is contained in
- the dictionary <c>Orddict</c>.</p>
+ <p>This function tests if <c><anno>Key</anno></c> is contained in
+ the dictionary <c><anno>Orddict</anno></c>.</p>
</desc>
</func>
<func>
- <name>map(Fun, Orddict1) -> Orddict2</name>
+ <name name="map" arity="2"/>
<fsummary>Map a function over a dictionary</fsummary>
- <type>
- <v>Fun = fun(Key, Value1) -> Value2</v>
- <v>&nbsp;Key = Value1 = Value2 = term()</v>
- <v>Orddict1 = Orddict2 = ordered_dictionary()</v>
- </type>
<desc>
- <p><c>map</c> calls <c>Func</c> on successive keys and values
- of <c>Orddict</c> to return a new value for each key.
+ <p><c>map</c> calls <c><anno>Fun</anno></c> on successive keys and values
+ of <c><anno>Orddict1</anno></c> to return a new value for each key.
The evaluation order is undefined.</p>
</desc>
</func>
<func>
- <name>merge(Fun, Orddict1, Orddict2) -> Orddict3</name>
+ <name name="merge" arity="3"/>
<fsummary>Merge two dictionaries</fsummary>
- <type>
- <v>Fun = fun(Key, Value1, Value2) -> Value</v>
- <v>&nbsp;Key = Value1 = Value2 = Value3 = term()</v>
- <v>Orddict1 = Orddict2 = Orddict3 = ordered_dictionary()</v>
- </type>
<desc>
- <p><c>merge</c> merges two dictionaries, <c>Orddict1</c> and
- <c>Orddict2</c>, to create a new dictionary. All the <c>Key</c>
- - <c>Value</c> pairs from both dictionaries are included in
+ <p><c>merge</c> merges two dictionaries, <c><anno>Orddict1</anno></c> and
+ <c><anno>Orddict2</anno></c>, to create a new dictionary. All the <c><anno>Key</anno></c>
+ - <c><anno>Value</anno></c> pairs from both dictionaries are included in
the new dictionary. If a key occurs in both dictionaries then
- <c>Fun</c> is called with the key and both values to return a
+ <c><anno>Fun</anno></c> is called with the key and both values to return a
new value. <c>merge</c> could be defined as:</p>
<code type="none">
merge(Fun, D1, D2) ->
@@ -226,75 +173,52 @@ merge(Fun, D1, D2) ->
</desc>
</func>
<func>
- <name>new() -> ordered_dictionary()</name>
+ <name name="new" arity="0"/>
<fsummary>Create a dictionary</fsummary>
<desc>
<p>This function creates a new dictionary.</p>
</desc>
</func>
<func>
- <name>size(Orddict) -> int()</name>
+ <name name="size" arity="1"/>
<fsummary>Return the number of elements in an ordered dictionary</fsummary>
- <type>
- <v>Orddict = ordered_dictionary()</v>
- </type>
<desc>
- <p>Returns the number of elements in an <c>Orddict</c>.</p>
+ <p>Returns the number of elements in an <c><anno>Orddict</anno></c>.</p>
</desc>
</func>
<func>
- <name>store(Key, Value, Orddict1) -> Orddict2</name>
+ <name name="store" arity="3"/>
<fsummary>Store a value in a dictionary</fsummary>
- <type>
- <v>Key = Value = term()</v>
- <v>Orddict1 = Orddict2 = ordered_dictionary()</v>
- </type>
<desc>
- <p>This function stores a <c>Key</c> - <c>Value</c> pair in a
- dictionary. If the <c>Key</c> already exists in <c>Orddict1</c>,
- the associated value is replaced by <c>Value</c>.</p>
+ <p>This function stores a <c><anno>Key</anno></c> - <c><anno>Value</anno></c> pair in a
+ dictionary. If the <c><anno>Key</anno></c> already exists in <c><anno>Orddict1</anno></c>,
+ the associated value is replaced by <c><anno>Value</anno></c>.</p>
</desc>
</func>
<func>
- <name>to_list(Orddict) -> List</name>
+ <name name="to_list" arity="1"/>
<fsummary>Convert a dictionary to a list of pairs</fsummary>
- <type>
- <v>Orddict = ordered_dictionary()</v>
- <v>List = [{Key, Value}]</v>
- </type>
<desc>
<p>This function converts the dictionary to a list
representation.</p>
</desc>
</func>
<func>
- <name>update(Key, Fun, Orddict1) -> Orddict2</name>
+ <name name="update" arity="3"/>
<fsummary>Update a value in a dictionary</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Fun = fun(Value1) -> Value2</v>
- <v>&nbsp;Value1 = Value2 = term()</v>
- <v>Orddict1 = Orddict2 = ordered_dictionary()</v>
- </type>
<desc>
- <p>Update a value in a dictionary by calling <c>Fun</c> on
+ <p>Update a value in a dictionary by calling <c><anno>Fun</anno></c> on
the value to get a new value. An exception is generated if
- <c>Key</c> is not present in the dictionary.</p>
+ <c><anno>Key</anno></c> is not present in the dictionary.</p>
</desc>
</func>
<func>
- <name>update(Key, Fun, Initial, Orddict1) -> Orddict2</name>
+ <name name="update" arity="4"/>
<fsummary>Update a value in a dictionary</fsummary>
- <type>
- <v>Key = Initial = term()</v>
- <v>Fun = fun(Value1) -> Value2</v>
- <v>&nbsp;Value1 = Value2 = term()</v>
- <v>Orddict1 = Orddict2 = ordered_dictionary()</v>
- </type>
<desc>
- <p>Update a value in a dictionary by calling <c>Fun</c> on
- the value to get a new value. If <c>Key</c> is not present
- in the dictionary then <c>Initial</c> will be stored as
+ <p>Update a value in a dictionary by calling <c><anno>Fun</anno></c> on
+ the value to get a new value. If <c><anno>Key</anno></c> is not present
+ in the dictionary then <c><anno>Initial</anno></c> will be stored as
the first value. For example <c>append/3</c> could be defined
as:</p>
<code type="none">
@@ -303,17 +227,12 @@ append(Key, Val, D) ->
</desc>
</func>
<func>
- <name>update_counter(Key, Increment, Orddict1) -> Orddict2</name>
+ <name name="update_counter" arity="3"/>
<fsummary>Increment a value in a dictionary</fsummary>
- <type>
- <v>Key = term()</v>
- <v>Increment = number()</v>
- <v>Orddict1 = Orddict2 = ordered_dictionary()</v>
- </type>
<desc>
- <p>Add <c>Increment</c> to the value associated with <c>Key</c>
- and store this value. If <c>Key</c> is not present in
- the dictionary then <c>Increment</c> will be stored as
+ <p>Add <c><anno>Increment</anno></c> to the value associated with <c><anno>Key</anno></c>
+ and store this value. If <c><anno>Key</anno></c> is not present in
+ the dictionary then <c><anno>Increment</anno></c> will be stored as
the first value.</p>
<p>This could be defined as:</p>
<code type="none">
diff --git a/lib/stdlib/doc/src/ordsets.xml b/lib/stdlib/doc/src/ordsets.xml
index a20ab2d879..1e26fc2022 100644
--- a/lib/stdlib/doc/src/ordsets.xml
+++ b/lib/stdlib/doc/src/ordsets.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -45,202 +45,141 @@
different if and only if they do not compare equal (<c>==</c>).</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-ordered_set()
- as returned by new/0</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name name="ordset" n_vars="1"/>
+ <desc><p>As returned by new/0.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>new() -> Ordset</name>
+ <name name="new" arity="0"/>
<fsummary>Return an empty set</fsummary>
- <type>
- <v>Ordset = ordered_set()</v>
- </type>
<desc>
<p>Returns a new empty ordered set.</p>
</desc>
</func>
<func>
- <name>is_set(Ordset) -> bool()</name>
+ <name name="is_set" arity="1"/>
<fsummary>Test for an <c>Ordset</c></fsummary>
- <type>
- <v>Ordset = term()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Ordset</c> is an ordered set of
+ <p>Returns <c>true</c> if <c><anno>Ordset</anno></c> is an ordered set of
elements, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>size(Ordset) -> int()</name>
+ <name name="size" arity="1"/>
<fsummary>Return the number of elements in a set</fsummary>
- <type>
- <v>Ordset = term()</v>
- </type>
<desc>
- <p>Returns the number of elements in <c>Ordset</c>.</p>
+ <p>Returns the number of elements in <c><anno>Ordset</anno></c>.</p>
</desc>
</func>
<func>
- <name>to_list(Ordset) -> List</name>
+ <name name="to_list" arity="1"/>
<fsummary>Convert an <c>Ordset</c>into a list</fsummary>
- <type>
- <v>Ordset = ordered_set()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns the elements of <c>Ordset</c> as a list.</p>
+ <p>Returns the elements of <c><anno>Ordset</anno></c> as a list.</p>
</desc>
</func>
<func>
- <name>from_list(List) -> Ordset</name>
+ <name name="from_list" arity="1"/>
<fsummary>Convert a list into an <c>Ordset</c></fsummary>
- <type>
- <v>List = [term()]</v>
- <v>Ordset = ordered_set()</v>
- </type>
<desc>
- <p>Returns an ordered set of the elements in <c>List</c>.</p>
+ <p>Returns an ordered set of the elements in <c><anno>List</anno></c>.</p>
</desc>
</func>
<func>
- <name>is_element(Element, Ordset) -> bool()</name>
+ <name name="is_element" arity="2"/>
<fsummary>Test for membership of an <c>Ordset</c></fsummary>
- <type>
- <v>Element = term()</v>
- <v>Ordset = ordered_set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Element</c> is an element of
- <c>Ordset</c>, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> if <c><anno>Element</anno></c> is an element of
+ <c><anno>Ordset</anno></c>, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>add_element(Element, Ordset1) -> Ordset2</name>
+ <name name="add_element" arity="2"/>
<fsummary>Add an element to an <c>Ordset</c></fsummary>
- <type>
- <v>Element = term()</v>
- <v>Ordset1 = Ordset2 = ordered_set()</v>
- </type>
<desc>
- <p>Returns a new ordered set formed from <c>Ordset1</c> with
- <c>Element</c> inserted.</p>
+ <p>Returns a new ordered set formed from <c><anno>Ordset1</anno></c> with
+ <c><anno>Element</anno></c> inserted.</p>
</desc>
</func>
<func>
- <name>del_element(Element, Ordset1) -> Ordset2</name>
+ <name name="del_element" arity="2"/>
<fsummary>Remove an element from an <c>Ordset</c></fsummary>
- <type>
- <v>Element = term()</v>
- <v>Ordset1 = Ordset2 = ordered_set()</v>
- </type>
<desc>
- <p>Returns <c>Ordset1</c>, but with <c>Element</c> removed.</p>
+ <p>Returns <c><anno>Ordset1</anno></c>, but with <c><anno>Element</anno></c> removed.</p>
</desc>
</func>
<func>
- <name>union(Ordset1, Ordset2) -> Ordset3</name>
+ <name name="union" arity="2"/>
<fsummary>Return the union of two <c>Ordsets</c></fsummary>
- <type>
- <v>Ordset1 = Ordset2 = Ordset3 = ordered_set()</v>
- </type>
<desc>
- <p>Returns the merged (union) set of <c>Ordset1</c> and
- <c>Ordset2</c>.</p>
+ <p>Returns the merged (union) set of <c><anno>Ordset1</anno></c> and
+ <c><anno>Ordset2</anno></c>.</p>
</desc>
</func>
<func>
- <name>union(OrdsetList) -> Ordset</name>
+ <name name="union" arity="1"/>
<fsummary>Return the union of a list of <c>Ordsets</c></fsummary>
- <type>
- <v>OrdsetList = [ordered_set()]</v>
- <v>Ordset = ordered_set()</v>
- </type>
<desc>
<p>Returns the merged (union) set of the list of sets.</p>
</desc>
</func>
<func>
- <name>intersection(Ordset1, Ordset2) -> Ordset3</name>
+ <name name="intersection" arity="2"/>
<fsummary>Return the intersection of two <c>Ordsets</c></fsummary>
- <type>
- <v>Ordset1 = Ordset2 = Ordset3 = ordered_set()</v>
- </type>
<desc>
- <p>Returns the intersection of <c>Ordset1</c> and
- <c>Ordset2</c>.</p>
+ <p>Returns the intersection of <c><anno>Ordset1</anno></c> and
+ <c><anno>Ordset2</anno></c>.</p>
</desc>
</func>
<func>
- <name>intersection(OrdsetList) -> Ordset</name>
+ <name name="intersection" arity="1"/>
<fsummary>Return the intersection of a list of <c>Ordsets</c></fsummary>
- <type>
- <v>OrdsetList = [ordered_set()]</v>
- <v>Ordset = ordered_set()</v>
- </type>
<desc>
<p>Returns the intersection of the non-empty list of sets.</p>
</desc>
</func>
<func>
- <name>is_disjoint(Ordset1, Ordset2) -> bool()</name>
+ <name name="is_disjoint" arity="2"/>
<fsummary>Check whether two <c>Ordsets</c> are disjoint</fsummary>
- <type>
- <v>Ordset1 = Ordset2 = ordered_set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Ordset1</c> and
- <c>Ordset2</c> are disjoint (have no elements in common),
+ <p>Returns <c>true</c> if <c><anno>Ordset1</anno></c> and
+ <c><anno>Ordset2</anno></c> are disjoint (have no elements in common),
and <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>subtract(Ordset1, Ordset2) -> Ordset3</name>
+ <name name="subtract" arity="2"/>
<fsummary>Return the difference of two <c>Ordsets</c></fsummary>
- <type>
- <v>Ordset1 = Ordset2 = Ordset3 = ordered_set()</v>
- </type>
<desc>
- <p>Returns only the elements of <c>Ordset1</c> which are not
- also elements of <c>Ordset2</c>.</p>
+ <p>Returns only the elements of <c><anno>Ordset1</anno></c> which are not
+ also elements of <c><anno>Ordset2</anno></c>.</p>
</desc>
</func>
<func>
- <name>is_subset(Ordset1, Ordset2) -> bool()</name>
+ <name name="is_subset" arity="2"/>
<fsummary>Test for subset</fsummary>
- <type>
- <v>Ordset1 = Ordset2 = ordered_set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> when every element of <c>Ordset</c>1 is
- also a member of <c>Ordset2</c>, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> when every element of <c><anno>Ordset1</anno></c> is
+ also a member of <c><anno>Ordset2</anno></c>, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>fold(Function, Acc0, Ordset) -> Acc1</name>
+ <name name="fold" arity="3"/>
<fsummary>Fold over set elements</fsummary>
- <type>
- <v>Function = fun (E, AccIn) -> AccOut</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>Ordset = ordered_set()</v>
- </type>
<desc>
- <p>Fold <c>Function</c> over every element in <c>Ordset</c>
+ <p>Fold <c><anno>Function</anno></c> over every element in <c><anno>Ordset</anno></c>
returning the final value of the accumulator.</p>
</desc>
</func>
<func>
- <name>filter(Pred, Ordset1) -> Set2</name>
+ <name name="filter" arity="2"/>
<fsummary>Filter set elements</fsummary>
- <type>
- <v>Pred = fun (E) -> bool()</v>
- <v>Set1 = Set2 = ordered_set()</v>
- </type>
<desc>
- <p>Filter elements in <c>Set1</c> with boolean function
- <c>Fun</c>.</p>
+ <p>Filter elements in <c><anno>Ordset1</anno></c> with boolean function
+ <c><anno>Pred</anno></c>.</p>
</desc>
</func>
</funcs>
diff --git a/lib/stdlib/doc/src/pg.xml b/lib/stdlib/doc/src/pg.xml
index b174d4f7d4..c56db8c6e6 100644
--- a/lib/stdlib/doc/src/pg.xml
+++ b/lib/stdlib/doc/src/pg.xml
@@ -51,77 +51,56 @@
</description>
<funcs>
<func>
- <name>create(PgName) -> ok | {error, Reason}</name>
+ <name name="create" arity="1"/>
<fsummary>Create an empty group</fsummary>
- <type>
- <v>PgName = term()</v>
- <v>Reason = already_created | term()</v>
- </type>
<desc>
- <p>Creates an empty group named <c>PgName</c> on the current
+ <p>Creates an empty group named <c><anno>PgName</anno></c> on the current
node.</p>
</desc>
</func>
<func>
- <name>create(PgName, Node) -> ok | {error, Reason}</name>
+ <name name="create" arity="2"/>
<fsummary>Create an empty group on another node</fsummary>
- <type>
- <v>PgName = term()</v>
- <v>Node = node()</v>
- <v>Reason = already_created | term()</v>
- </type>
<desc>
- <p>Creates an empty group named <c>PgName</c> on the node
- <c>Node</c>.</p>
+ <p>Creates an empty group named <c><anno>PgName</anno></c> on the node
+ <c><anno>Node</anno></c>.</p>
</desc>
</func>
<func>
- <name>join(PgName, Pid) -> Members</name>
+ <name name="join" arity="2"/>
<fsummary>Join a pid to a process group</fsummary>
- <type>
- <v>PgName = term()</v>
- <v>Pid = pid()</v>
- <v>Members = [pid()]</v>
- </type>
<desc>
- <p>Joins the pid <c>Pid</c> to the process group <c>PgName</c>.
+ <p>Joins the pid <c><anno>Pid</anno></c> to the process group
+ <c><anno>PgName</anno></c>.
Returns a list of all old members of the group.</p>
</desc>
</func>
<func>
- <name>send(PgName, Msg) -> void()</name>
+ <name name="send" arity="2"/>
<fsummary>Send a message to all members of a process group</fsummary>
- <type>
- <v>PgName = Msg = term()</v>
- </type>
<desc>
<p>Sends the tuple <c>{pg_message, From, PgName, Msg}</c> to
- all members of the process group <c>PgName</c>.</p>
- <p>Failure: <c>{badarg, {PgName, Msg}}</c> if <c>PgName</c> is
+ all members of the process group <c><anno>PgName</anno></c>.</p>
+ <p>Failure: <c>{badarg, {<anno>PgName</anno>, <anno>Msg</anno>}}</c>
+ if <c><anno>PgName</anno></c> is
not a process group (a globally registered name).</p>
</desc>
</func>
<func>
- <name>esend(PgName, Msg) -> void()</name>
+ <name name="esend" arity="2"/>
<fsummary>Send a message to all members of a process group, except ourselves</fsummary>
- <type>
- <v>PgName = Msg = term()</v>
- </type>
<desc>
<p>Sends the tuple <c>{pg_message, From, PgName, Msg}</c> to
- all members of the process group <c>PgName</c>, except
+ all members of the process group <c><anno>PgName</anno></c>, except
ourselves.</p>
- <p>Failure: <c>{badarg, {PgName, Msg}}</c> if <c>PgName</c> is
+ <p>Failure: <c>{badarg, {<anno>PgName</anno>, <anno>Msg</anno>}}</c>
+ if <c><anno>PgName</anno></c> is
not a process group (a globally registered name).</p>
</desc>
</func>
<func>
- <name>members(PgName) -> Members</name>
+ <name name="members" arity="1"/>
<fsummary>Return a list of all members of a process group</fsummary>
- <type>
- <v>PgName = term()</v>
- <v>Members = [pid()]</v>
- </type>
<desc>
<p>Returns a list of all members of the process group
<c>PgName</c>.</p>
diff --git a/lib/stdlib/doc/src/pool.xml b/lib/stdlib/doc/src/pool.xml
index 2b890352eb..39a79e5dc5 100644
--- a/lib/stdlib/doc/src/pool.xml
+++ b/lib/stdlib/doc/src/pool.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -48,23 +48,19 @@
</description>
<funcs>
<func>
- <name>start(Name) -></name>
- <name>start(Name, Args) -> Nodes</name>
+ <name name="start" arity="1"/>
+ <name name="start" arity="2"/>
<fsummary>>Start a new pool</fsummary>
- <type>
- <v>Name = atom()</v>
- <v>Args = string()</v>
- <v>Nodes = [node()]</v>
- </type>
<desc>
<p>Starts a new pool. The file <c>.hosts.erlang</c> is read to
find host names where the pool nodes can be started. See
section <seealso marker="#files">Files</seealso> below. The
start-up procedure fails if the file is not found.</p>
<p>The slave nodes are started with <c>slave:start/2,3</c>,
- passing along <c>Name</c> and, if provided, <c>Args</c>.
- <c>Name</c> is used as the first part of the node names,
- <c>Args</c> is used to specify command line arguments. See
+ passing along <c><anno>Name</anno></c> and, if provided,
+ <c><anno>Args</anno></c>.
+ <c><anno>Name</anno></c> is used as the first part of the node names,
+ <c><anno>Args</anno></c> is used to specify command line arguments. See
<seealso marker="slave#start/2">slave(3)</seealso>.</p>
<p>Access rights must be set so that all nodes in the pool have
the authority to access each other.</p>
@@ -73,59 +69,45 @@
</desc>
</func>
<func>
- <name>attach(Node) -> already_attached | attached</name>
+ <name name="attach" arity="1"/>
<fsummary>Ensure that a pool master is running</fsummary>
- <type>
- <v>Node = node()</v>
- </type>
<desc>
<p>This function ensures that a pool master is running and
- includes <c>Node</c> in the pool master's pool of nodes.</p>
+ includes <c><anno>Node</anno></c> in the pool master's pool of nodes.</p>
</desc>
</func>
<func>
- <name>stop() -> stopped</name>
+ <name name="stop" arity="0"/>
<fsummary>Stop the pool and kill all the slave nodes</fsummary>
<desc>
<p>Stops the pool and kills all the slave nodes.</p>
</desc>
</func>
<func>
- <name>get_nodes() -> Nodes</name>
+ <name name="get_nodes" arity="0"/>
<fsummary>Return a list of the current member nodes of the pool</fsummary>
- <type>
- <v>Nodes = [node()]</v>
- </type>
<desc>
<p>Returns a list of the current member nodes of the pool.</p>
</desc>
</func>
<func>
- <name>pspawn(Mod, Fun, Args) -> pid()</name>
+ <name name="pspawn" arity="3"/>
<fsummary>Spawn a process on the pool node with expected lowest future load</fsummary>
- <type>
- <v>Mod = Fun = atom()</v>
- <v>Args = [term()]</v>
- </type>
<desc>
<p>Spawns a process on the pool node which is expected to have
the lowest future load.</p>
</desc>
</func>
<func>
- <name>pspawn_link(Mod, Fun, Args) -> pid()</name>
+ <name name="pspawn_link" arity="3"/>
<fsummary>Spawn and link to a process on the pool node with expected lowest future load</fsummary>
- <type>
- <v>Mod = Fun = atom()</v>
- <v>Args = [term()]</v>
- </type>
<desc>
<p>Spawn links a process on the pool node which is expected to
have the lowest future load.</p>
</desc>
</func>
<func>
- <name>get_node() -> node()</name>
+ <name name="get_node" arity="0"/>
<fsummary>Return the node with the expected lowest future load</fsummary>
<desc>
<p>Returns the node with the expected lowest future load.</p>
diff --git a/lib/stdlib/doc/src/proc_lib.xml b/lib/stdlib/doc/src/proc_lib.xml
index 791001cb52..abc17c4a91 100644
--- a/lib/stdlib/doc/src/proc_lib.xml
+++ b/lib/stdlib/doc/src/proc_lib.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -60,19 +60,33 @@
information regarding other processes which terminate as a result
of this process terminating.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="spawn_option"/>
+ <desc>
+ <p>See <seealso marker="erts:erlang#spawn_opt/4">
+ erlang:spawn_opt/2,3,4,5</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="priority_level"/>
+ </datatype>
+ <datatype>
+ <name name="dict_or_pid"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>spawn(Fun) -> pid()</name>
- <name>spawn(Node, Fun) -> pid()</name>
- <name>spawn(Module, Function, Args) -> pid()</name>
- <name>spawn(Node, Module, Function, Args) -> pid()</name>
+ <name name="spawn" arity="1"/>
+ <name name="spawn" arity="2"/>
+ <name name="spawn" arity="3"/>
+ <name name="spawn" arity="4"/>
<fsummary>Spawn a new process.</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Fun = fun() -> void()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- </type>
+ <type variable="Node"/>
+ <type variable="Fun" name_i="1"/>
+ <type variable="Module"/>
+ <type variable="Function"/>
+ <type variable="Args"/>
<desc>
<p>Spawns a new process and initializes it as described above.
The process is spawned using the
@@ -80,17 +94,16 @@
</desc>
</func>
<func>
- <name>spawn_link(Fun) -> pid()</name>
- <name>spawn_link(Node, Fun) -> pid()</name>
- <name>spawn_link(Module, Function, Args) -> pid()</name>
- <name>spawn_link(Node, Module, Function, Args) -> pid()</name>
+ <name name="spawn_link" arity="1"/>
+ <name name="spawn_link" arity="2"/>
+ <name name="spawn_link" arity="3"/>
+ <name name="spawn_link" arity="4"/>
<fsummary>Spawn and link to a new process.</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Fun = fun() -> void()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- </type>
+ <type variable="Node"/>
+ <type variable="Fun" name_i="1"/>
+ <type variable="Module"/>
+ <type variable="Function"/>
+ <type variable="Args"/>
<desc>
<p>Spawns a new process and initializes it as described above.
The process is spawned using the
@@ -99,18 +112,17 @@
</desc>
</func>
<func>
- <name>spawn_opt(Fun, SpawnOpts) -> pid()</name>
- <name>spawn_opt(Node, Fun, SpawnOpts) -> pid()</name>
- <name>spawn_opt(Module, Function, Args, SpawnOpts) -> pid()</name>
- <name>spawn_opt(Node, Module, Func, Args, SpawnOpts) -> pid()</name>
+ <name name="spawn_opt" arity="2"/>
+ <name name="spawn_opt" arity="3"/>
+ <name name="spawn_opt" arity="4"/>
+ <name name="spawn_opt" arity="5"/>
<fsummary>Spawn a new process with given options.</fsummary>
- <type>
- <v>Node = node()</v>
- <v>Fun = fun() -> void()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>SpawnOpts -- see erlang:spawn_opt/2,3,4,5</v>
- </type>
+ <type variable="Node"/>
+ <type variable="Fun" name_i="1"/>
+ <type variable="Module"/>
+ <type variable="Function"/>
+ <type variable="Args"/>
+ <type variable="SpawnOpts"/>
<desc>
<p>Spawns a new process and initializes it as described above.
The process is spawned using the
@@ -124,20 +136,13 @@
</desc>
</func>
<func>
- <name>start(Module, Function, Args) -> Ret</name>
- <name>start(Module, Function, Args, Time) -> Ret</name>
- <name>start(Module, Function, Args, Time, SpawnOpts) -> Ret</name>
- <name>start_link(Module, Function, Args) -> Ret</name>
- <name>start_link(Module, Function, Args, Time) -> Ret</name>
- <name>start_link(Module, Function, Args, Time, SpawnOpts) -> Ret</name>
+ <name name="start" arity="3"/>
+ <name name="start" arity="4"/>
+ <name name="start" arity="5"/>
+ <name name="start_link" arity="3"/>
+ <name name="start_link" arity="4"/>
+ <name name="start_link" arity="5"/>
<fsummary>Start a new process synchronously.</fsummary>
- <type>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- <v>Time = int() >= 0 | infinity</v>
- <v>SpawnOpts -- see erlang:spawn_opt/2,3,4,5</v>
- <v>Ret = term() | {error, Reason}</v>
- </type>
<desc>
<p>Starts a new process synchronously. Spawns the process and
waits for it to start. When the process has started, it
@@ -148,13 +153,13 @@
function. At this time, <c>Ret</c> is returned.</p>
<p>If the <c>start_link/3,4,5</c> function is used and
the process crashes before it has called <c>init_ack/1,2</c>,
- <c>{error, Reason}</c> is returned if the calling process
+ <c>{error, <anno>Reason</anno>}</c> is returned if the calling process
traps exits.</p>
- <p>If <c>Time</c> is specified as an integer, this function
- waits for <c>Time</c> milliseconds for the new process to call
+ <p>If <c><anno>Time</anno></c> is specified as an integer, this function
+ waits for <c><anno>Time</anno></c> milliseconds for the new process to call
<c>init_ack</c>, or <c>{error, timeout}</c> is returned, and
the process is killed.</p>
- <p>The <c>SpawnOpts</c> argument, if given, will be passed
+ <p>The <c><anno>SpawnOpts</anno></c> argument, if given, will be passed
as the last argument to the <c>spawn_opt/2,3,4,5</c> BIF.</p>
<note>
<p>Using the spawn option <c>monitor</c> is currently not
@@ -164,17 +169,13 @@
</desc>
</func>
<func>
- <name>init_ack(Parent, Ret) -> void()</name>
- <name>init_ack(Ret) -> void()</name>
+ <name name="init_ack" arity="1"/>
+ <name name="init_ack" arity="2"/>
<fsummary>Used by a process when it has started.</fsummary>
- <type>
- <v>Parent = pid()</v>
- <v>Ret = term()</v>
- </type>
<desc>
<p>This function must used by a process that has been started by
a <seealso marker="#start/3">start[_link]/3,4,5</seealso>
- function. It tells <c>Parent</c> that the process has
+ function. It tells <c><anno>Parent</anno></c> that the process has
initialized itself, has started, or has failed to initialize
itself.</p>
<p>The <c>init_ack/1</c> function uses the parent value
@@ -205,40 +206,30 @@ init(Parent) ->
</desc>
</func>
<func>
- <name>format(CrashReport) -> string()</name>
+ <name name="format" arity="1"/>
<fsummary>Format a crash report.</fsummary>
- <type>
- <v>CrashReport = term()</v>
- </type>
<desc>
<p>This function can be used by a user defined event handler to
format a crash report. The crash report is sent using
- <c>error_logger:error_report(crash_report, CrashReport)</c>.
+ <c>error_logger:error_report(crash_report, <anno>CrashReport</anno>)</c>.
That is, the event to be handled is of the format
- <c>{error_report, GL, {Pid, crash_report, CrashReport}}</c>
+ <c>{error_report, GL, {Pid, crash_report, <anno>CrashReport</anno>}}</c>
where <c>GL</c> is the group leader pid of the process
<c>Pid</c> which sent the crash report.</p>
</desc>
</func>
<func>
- <name>initial_call(Process) -> {Module,Function,Args} | false</name>
+ <name name="initial_call" arity="1"/>
<fsummary>Extract the initial call of a <c>proc_lib</c>spawned process.</fsummary>
- <type>
- <v>Process = pid() | {X,Y,Z} | ProcInfo</v>
- <v>&nbsp;X = Y = Z = int()</v>
- <v>&nbsp;ProcInfo = term()</v>
- <v>Module = Function = atom()</v>
- <v>Args = [atom()]</v>
- </type>
<desc>
<p>Extracts the initial call of a process that was started
using one of the spawn or start functions described above.
- <c>Process</c> can either be a pid, an integer tuple (from
+ <c><anno>Process</anno></c> can either be a pid, an integer tuple (from
which a pid can be created), or the process information of a
process <c>Pid</c> fetched through an
<c>erlang:process_info(Pid)</c> function call.</p>
- <note><p>The list <c>Args</c> no longer contains the actual arguments,
+ <note><p>The list <c><anno>Args</anno></c> no longer contains the actual arguments,
but the same number of atoms as the number of arguments; the first atom
is always <c>'Argument__1'</c>, the second <c>'Argument__2'</c>, and
so on. The reason is that the argument list could waste a significant
@@ -256,23 +247,15 @@ init(Parent) ->
</desc>
</func>
<func>
- <name>translate_initial_call(Process) -> {Module,Function,Arity} | Fun</name>
+ <name name="translate_initial_call" arity="1"/>
<fsummary>Extract and translate the initial call of a <c>proc_lib</c>spawned process.</fsummary>
- <type>
- <v>Process = pid() | {X,Y,Z} | ProcInfo</v>
- <v>&nbsp;X = Y = Z = int()</v>
- <v>&nbsp;ProcInfo = term()</v>
- <v>Module = Function = atom()</v>
- <v>Arity = int()</v>
- <v>Fun = fun() -> void()</v>
- </type>
<desc>
<p>This function is used by the <c>c:i/0</c> and
<c>c:regs/0</c> functions in order to present process
information.</p>
<p>Extracts the initial call of a process that was started
using one of the spawn or start functions described above,
- and translates it to more useful information. <c>Process</c>
+ and translates it to more useful information. <c><anno>Process</anno></c>
can either be a pid, an integer tuple (from which a pid can
be created), or the process information of a process
<c>Pid</c> fetched through an <c>erlang:process_info(Pid)</c>
@@ -280,15 +263,15 @@ init(Parent) ->
<p>If the initial call is to one of the system defined behaviors
such as <c>gen_server</c> or <c>gen_event</c>, it is
translated to more useful information. If a <c>gen_server</c>
- is spawned, the returned <c>Module</c> is the name of
- the callback module and <c>Function</c> is <c>init</c>
+ is spawned, the returned <c><anno>Module</anno></c> is the name of
+ the callback module and <c><anno>Function</anno></c> is <c>init</c>
(the function that initiates the new server).</p>
<p>A <c>supervisor</c> and a <c>supervisor_bridge</c> are also
<c>gen_server</c> processes. In order to return information
that this process is a supervisor and the name of the
- call-back module, <c>Module</c> is <c>supervisor</c> and
- <c>Function</c> is the name of the supervisor callback
- module. <c>Arity</c> is <c>1</c> since the <c>init/1</c>
+ call-back module, <c><anno>Module</anno></c> is <c>supervisor</c> and
+ <c><anno>Function</anno></c> is the name of the supervisor callback
+ module. <c><anno>Arity</anno></c> is <c>1</c> since the <c>init/1</c>
function is called initially in the callback module.</p>
<p>By default, <c>{proc_lib,init_p,5}</c> is returned if no
information about the initial call can be found. It is
@@ -297,12 +280,8 @@ init(Parent) ->
</desc>
</func>
<func>
- <name>hibernate(Module, Function, Args)</name>
+ <name name="hibernate" arity="3"/>
<fsummary>Hibernate a process until a message is sent to it</fsummary>
- <type>
- <v>Module = Function = atom()</v>
- <v>Args = [term()]</v>
- </type>
<desc>
<p>This function does the same as (and does call) the BIF
<seealso marker="erts:erlang#erlang:hibernate/3">hibernate/3</seealso>,
diff --git a/lib/stdlib/doc/src/proplists.xml b/lib/stdlib/doc/src/proplists.xml
index 9f1c5b24ad..225c5e97eb 100644
--- a/lib/stdlib/doc/src/proplists.xml
+++ b/lib/stdlib/doc/src/proplists.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2002</year><year>2010</year>
+ <year>2002</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -48,14 +48,15 @@
words, numbers are compared literally rather than by value, so that,
for instance, <c>1</c> and <c>1.0</c> are different keys.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="property"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>append_values(Key, List) -> List</name>
+ <name name="append_values" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
<p>Similar to <c>get_all_values/2</c>, but each value is
wrapped in a list unless it is already itself a list, and the
@@ -65,11 +66,8 @@
</desc>
</func>
<func>
- <name>compact(List) -> List</name>
+ <name name="compact" arity="1"/>
<fsummary></fsummary>
- <type>
- <v>List = [term()]</v>
- </type>
<desc>
<p>Minimizes the representation of all entries in the list. This is
equivalent to <c><![CDATA[[property(P) || P <- List]]]></c>.</p>
@@ -77,33 +75,24 @@
</desc>
</func>
<func>
- <name>delete(Key, List) -> List</name>
+ <name name="delete" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Deletes all entries associated with <c>Key</c> from
- <c>List</c>.</p>
+ <p>Deletes all entries associated with <c><anno>Key</anno></c> from
+ <c><anno>List</anno></c>.</p>
</desc>
</func>
<func>
- <name>expand(Expansions, List) -> List</name>
+ <name name="expand" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>Expansions = [{Property,[term()]}]</v>
- <v>Property = atom() | tuple()</v>
- </type>
<desc>
<p>Expands particular properties to corresponding sets of
- properties (or other terms). For each pair <c>{Property, Expansion}</c> in <c>Expansions</c>, if <c>E</c> is
- the first entry in <c>List</c> with the same key as
- <c>Property</c>, and <c>E</c> and <c>Property</c>
+ properties (or other terms). For each pair <c>{<anno>Property</anno>, <anno>Expansion</anno>}</c> in <c><anno>Expansions</anno></c>, if <c>E</c> is
+ the first entry in <c><anno>List</anno></c> with the same key as
+ <c><anno>Property</anno></c>, and <c>E</c> and <c><anno>Property</anno></c>
have equivalent normal forms, then <c>E</c> is replaced with
- the terms in <c>Expansion</c>, and any following entries with
- the same key are deleted from <c>List</c>.</p>
+ the terms in <c><anno>Expansion</anno></c>, and any following entries with
+ the same key are deleted from <c><anno>List</anno></c>.</p>
<p>For example, the following expressions all return <c>[fie, bar, baz, fum]</c>:</p>
<code type="none">
expand([{foo, [bar, baz]}],
@@ -120,103 +109,75 @@
<p>Note that if the original property term is to be preserved in the
result when expanded, it must be included in the expansion list. The
inserted terms are not expanded recursively. If
- <c>Expansions</c> contains more than one property with the same
+ <c><anno>Expansions</anno></c> contains more than one property with the same
key, only the first occurrence is used.</p>
<p>See also: <c>normalize/2</c>.</p>
</desc>
</func>
<func>
- <name>get_all_values(Key, List) -> [term()]</name>
+ <name name="get_all_values" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
<p>Similar to <c>get_value/2</c>, but returns the list of
values for <em>all</em> entries <c>{Key, Value}</c> in
- <c>List</c>. If no such entry exists, the result is the empty
+ <c><anno>List</anno></c>. If no such entry exists, the result is the empty
list.</p>
<p>See also: <c>get_value/2</c>.</p>
</desc>
</func>
<func>
- <name>get_bool(Key, List) -> bool()</name>
+ <name name="get_bool" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
<p>Returns the value of a boolean key/value option. If
- <c>lookup(Key, List)</c> would yield <c>{Key, true}</c>,
+ <c>lookup(<anno>Key</anno>, <anno>List</anno>)</c> would yield <c>{<anno>Key</anno>, true}</c>,
this function returns <c>true</c>; otherwise <c>false</c>
is returned.</p>
<p>See also: <c>get_value/2</c>, <c>lookup/2</c>.</p>
</desc>
</func>
<func>
- <name>get_keys(List) -> [term()]</name>
+ <name name="get_keys" arity="1"/>
<fsummary></fsummary>
- <type>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns an unordered list of the keys used in <c>List</c>,
+ <p>Returns an unordered list of the keys used in <c><anno>List</anno></c>,
not containing duplicates.</p>
</desc>
</func>
<func>
- <name>get_value(Key, List) -> term()</name>
+ <name name="get_value" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Equivalent to <c>get_value(Key, List, undefined)</c>.</p>
+ <p>Equivalent to <c>get_value(<anno>Key</anno>, <anno>List</anno>, undefined)</c>.</p>
</desc>
</func>
<func>
- <name>get_value(Key, List, Default) -> term()</name>
+ <name name="get_value" arity="3"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>Default = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
<p>Returns the value of a simple key/value property in
- <c>List</c>. If <c>lookup(Key, List)</c> would yield
- <c>{Key, Value}</c>, this function returns the corresponding
- <c>Value</c>, otherwise <c>Default</c> is returned.</p>
+ <c><anno>List</anno></c>. If <c>lookup(<anno>Key</anno>, <anno>List</anno>)</c> would yield
+ <c>{<anno>Key</anno>, Value}</c>, this function returns the corresponding
+ <c>Value</c>, otherwise <c><anno>Default</anno></c> is returned.</p>
<p>See also: <c>get_all_values/2</c>, <c>get_bool/2</c>,
<c>get_value/2</c>, <c>lookup/2</c>.</p>
</desc>
</func>
<func>
- <name>is_defined(Key, List) -> bool()</name>
+ <name name="is_defined" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>List</c> contains at least
- one entry associated with <c>Key</c>, otherwise
+ <p>Returns <c>true</c> if <c><anno>List</anno></c> contains at least
+ one entry associated with <c><anno>Key</anno></c>, otherwise
<c>false</c> is returned.</p>
</desc>
</func>
<func>
- <name>lookup(Key, List) -> none | tuple()</name>
+ <name name="lookup" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns the first entry associated with <c>Key</c> in
- <c>List</c>, if one exists, otherwise returns
+ <p>Returns the first entry associated with <c><anno>Key</anno></c> in
+ <c><anno>List</anno></c>, if one exists, otherwise returns
<c>none</c>. For an atom <c>A</c> in the list, the tuple
<c>{A, true}</c> is the entry associated with <c>A</c>.</p>
<p>See also: <c>get_bool/2</c>, <c>get_value/2</c>,
@@ -224,34 +185,20 @@
</desc>
</func>
<func>
- <name>lookup_all(Key, List) -> [tuple()]</name>
+ <name name="lookup_all" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns the list of all entries associated with <c>Key</c>
- in <c>List</c>. If no such entry exists, the result is the
+ <p>Returns the list of all entries associated with <c><anno>Key</anno></c>
+ in <c><anno>List</anno></c>. If no such entry exists, the result is the
empty list.</p>
<p>See also: <c>lookup/2</c>.</p>
</desc>
</func>
<func>
- <name>normalize(List, Stages) -> List</name>
+ <name name="normalize" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>List = [term()]</v>
- <v>Stages = [Operation]</v>
- <v>Operation = {aliases, Aliases} | {negations, Negations} | {expand, Expansions}</v>
- <v>Aliases = [{Key, Key}]</v>
- <v>Negations = [{Key, Key}]</v>
- <v>Key = term()</v>
- <v>Expansions = [{Property, [term()]}]</v>
- <v>Property = atom() | tuple()</v>
- </type>
<desc>
- <p>Passes <c>List</c> through a sequence of
+ <p>Passes <c><anno>List</anno></c> through a sequence of
substitution/expansion stages. For an <c>aliases</c> operation,
the function <c>substitute_aliases/2</c> is applied using the
given list of aliases; for a <c>negations</c> operation,
@@ -270,51 +217,37 @@
</desc>
</func>
<func>
- <name>property(Property) -> Property</name>
+ <name name="property" arity="1"/>
<fsummary></fsummary>
- <type>
- <v>Property = atom() | tuple()</v>
- </type>
<desc>
<p>Creates a normal form (minimal) representation of a property. If
- <c>Property</c> is <c>{Key, true}</c> where <c>Key</c> is
+ <c><anno>Property</anno></c> is <c>{Key, true}</c> where <c>Key</c> is
an atom, this returns <c>Key</c>, otherwise the whole term
- <c>Property</c> is returned.</p>
+ <c><anno>Property</anno></c> is returned.</p>
<p>See also: <c>property/2</c>.</p>
</desc>
</func>
<func>
- <name>property(Key, Value) -> Property</name>
+ <name name="property" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Key = term()</v>
- <v>Value = term()</v>
- <v>Property = atom() | tuple()</v>
- </type>
<desc>
<p>Creates a normal form (minimal) representation of a simple
- key/value property. Returns <c>Key</c> if <c>Value</c> is
- <c>true</c> and <c>Key</c> is an atom, otherwise a tuple
- <c>{Key, Value}</c> is returned.</p>
+ key/value property. Returns <c><anno>Key</anno></c> if <c><anno>Value</anno></c> is
+ <c>true</c> and <c><anno>Key</anno></c> is an atom, otherwise a tuple
+ <c>{<anno>Key</anno>, <anno>Value</anno>}</c> is returned.</p>
<p>See also: <c>property/1</c>.</p>
</desc>
</func>
<func>
- <name>split(List, Keys) -> {Lists, Rest}</name>
+ <name name="split" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>List = [term()]</v>
- <v>Keys = [term()]</v>
- <v>Lists = [[term()]]</v>
- <v>Rest = [term()]</v>
- </type>
<desc>
- <p>Partitions <c>List</c> into a list of sublists and a
- remainder. <c>Lists</c> contains one sublist for each key in
- <c>Keys</c>, in the corresponding order. The relative order of
+ <p>Partitions <c><anno>List</anno></c> into a list of sublists and a
+ remainder. <c><anno>Lists</anno></c> contains one sublist for each key in
+ <c><anno>Keys</anno></c>, in the corresponding order. The relative order of
the elements in each sublist is preserved from the original
- <c>List</c>. <c>Rest</c> contains the elements in
- <c>List</c> that are not associated with any of the given keys,
+ <c><anno>List</anno></c>. <c><anno>Rest</anno></c> contains the elements in
+ <c><anno>List</anno></c> that are not associated with any of the given keys,
also with their original relative order preserved.</p>
<p>Example:
split([{c, 2}, {e, 1}, a, {c, 3, 4}, d, {b, 5}, b], [a, b, c])</p>
@@ -323,19 +256,14 @@
</desc>
</func>
<func>
- <name>substitute_aliases(Aliases, List) -> List</name>
+ <name name="substitute_aliases" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Aliases = [{Key, Key}]</v>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
<p>Substitutes keys of properties. For each entry in
- <c>List</c>, if it is associated with some key <c>K1</c>
- such that <c>{K1, K2}</c> occurs in <c>Aliases</c>, the
- key of the entry is changed to <c>Key2</c>. If the same
- <c>K1</c> occurs more than once in <c>Aliases</c>, only
+ <c><anno>List</anno></c>, if it is associated with some key <c>K1</c>
+ such that <c>{K1, K2}</c> occurs in <c><anno>Aliases</anno></c>, the
+ key of the entry is changed to <c>K2</c>. If the same
+ <c>K1</c> occurs more than once in <c><anno>Aliases</anno></c>, only
the first occurrence is used.</p>
<p>Example: <c>substitute_aliases([{color, colour}], L)</c>
will replace all tuples <c>{color, ...}</c> in <c>L</c>
@@ -345,24 +273,19 @@
</desc>
</func>
<func>
- <name>substitute_negations(Negations, List) -> List</name>
+ <name name="substitute_negations" arity="2"/>
<fsummary></fsummary>
- <type>
- <v>Negations = [{Key, Key}]</v>
- <v>Key = term()</v>
- <v>List = [term()]</v>
- </type>
<desc>
<p>Substitutes keys of boolean-valued properties and
simultaneously negates their values. For each entry in
- <c>List</c>, if it is associated with some key <c>K1</c>
- such that <c>{K1, K2}</c> occurs in <c>Negations</c>, then
+ <c><anno>List</anno></c>, if it is associated with some key <c>K1</c>
+ such that <c>{K1, K2}</c> occurs in <c><anno>Negations</anno></c>, then
if the entry was <c>{K1, true}</c> it will be replaced with
<c>{K2, false}</c>, otherwise it will be replaced with
<c>{K2, true}</c>, thus changing the name of the option and
simultaneously negating the value given by
<c>get_bool(List)</c>. If the same <c>K1</c> occurs more
- than once in <c>Negations</c>, only the first occurrence is
+ than once in <c><anno>Negations</anno></c>, only the first occurrence is
used.</p>
<p>Example: <c>substitute_negations([{no_foo, foo}], L)</c>
will replace any atom <c>no_foo</c> or tuple
@@ -374,13 +297,10 @@
</desc>
</func>
<func>
- <name>unfold(List) -> List</name>
+ <name name="unfold" arity="1"/>
<fsummary></fsummary>
- <type>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Unfolds all occurrences of atoms in <c>List</c> to tuples
+ <p>Unfolds all occurrences of atoms in <c><anno>List</anno></c> to tuples
<c>{Atom, true}</c>.</p>
</desc>
</func>
diff --git a/lib/stdlib/doc/src/qlc.xml b/lib/stdlib/doc/src/qlc.xml
index da24ee9914..6a45ade447 100644
--- a/lib/stdlib/doc/src/qlc.xml
+++ b/lib/stdlib/doc/src/qlc.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2004</year><year>2009</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -45,7 +45,9 @@
tables</em>. Typical QLC tables are ETS, Dets, and Mnesia
tables. There is also support for user defined tables, see the
<seealso marker="#implementing_a_qlc_table">Implementing a QLC
- table</seealso> section. A <em>query</em> is stated using
+ table</seealso> section. <marker
+ id="query_list_comprehension"></marker>
+ A <em>query</em> is stated using
<em>Query List Comprehensions</em> (QLCs). The answers to a
query are determined by data in QLC tables that fulfill the
constraints expressed by the QLCs of the query. QLCs are similar
@@ -55,10 +57,11 @@
fact, in the absence of optimizations and options such as
<c>cache</c> and <c>unique</c> (see below), every QLC free of
QLC tables evaluates to the same list of answers as the
- identical ordinary list comprehension. </p>
+ identical ordinary list comprehension.</p>
<p>While ordinary list comprehensions evaluate to lists, calling
- <seealso marker="#q">qlc:q/1,2</seealso> returns a <em>Query
+ <seealso marker="#q">qlc:q/1,2</seealso> returns a <marker
+ id="query_handle"></marker><em> Query
Handle</em>. To obtain all the answers to a query, <seealso
marker="#eval">qlc:eval/1,2</seealso> should be called with the
query handle as first argument. Query handles are essentially
@@ -69,7 +72,8 @@
Code replacement is described in the <seealso
marker="doc/reference_manual:code_loading">Erlang Reference
Manual</seealso>. The list of answers can also be traversed in
- chunks by use of a <em>Query Cursor</em>. Query cursors are
+ chunks by use of a <marker
+ id="query_cursor"></marker><em>Query Cursor</em>. Query cursors are
created by calling <seealso
marker="#cursor">qlc:cursor/1,2</seealso> with a query handle as
first argument. Query cursors are essentially Erlang processes.
@@ -226,75 +230,6 @@
</section>
- <section><title>Common data types</title>
-
- <list type="bulleted">
- <item><p><c>QueryCursor = {qlc_cursor, term()}</c></p>
- </item>
- <item><p><c>QueryHandle = {qlc_handle, term()}</c></p>
- </item>
- <item><p><c>QueryHandleOrList = QueryHandle | list()</c></p>
- </item>
- <item><p><c>Answers = [Answer]</c></p>
- </item>
- <item><p><c>Answer = term()</c></p>
- </item>
- <item><p><c>AbstractExpression =&nbsp;</c> -&nbsp;parse trees
- for Erlang expressions, see the <seealso
- marker="erts:absform">abstract format</seealso>
- documentation in the ERTS User's Guide&nbsp;-</p>
- </item>
- <item><p><c>MatchExpression =&nbsp;</c>
- -&nbsp;match&nbsp;specifications, see the <seealso
- marker="erts:match_spec">match specification</seealso>
- documentation in the ERTS User's Guide and <seealso
- marker="ms_transform">ms_transform(3)</seealso>&nbsp;-</p>
- </item>
- <item><p><c>SpawnOptions = default | spawn_options()</c></p>
- </item>
- <item><p><c>SortOptions = [SortOption] | SortOption</c></p>
- </item>
- <item><p><c>SortOption = {compressed, bool()}
- | {no_files, NoFiles}
- | {order, Order}
- | {size, Size}
- | {tmpdir, TempDirectory}
- | {unique, bool()}&nbsp;</c>
- -&nbsp;see <seealso
- marker="file_sorter">file_sorter(3)</seealso>&nbsp;-</p>
- </item>
- <item><p><c>Order = ascending | descending | OrderFun</c></p>
- </item>
- <item><p><c>OrderFun = fun(term(), term()) -> bool()</c></p>
- </item>
- <item><p><c>TempDirectory = "" | filename()</c></p>
- </item>
- <item><p><c>Size = int() > 0</c></p>
- </item>
- <item><p><c>NoFiles = int() > 1</c></p>
- </item>
- <item><p><c>KeyPos = int() > 0 | [int() > 0]</c></p>
- </item>
- <item><p><c>MaxListSize = int() >= 0</c></p>
- </item>
- <item><p><c>bool() = true | false</c></p>
- </item>
- <item><p><c>Cache = ets | list | no</c></p>
- </item>
- <item><p><c>TmpFileUsage = allowed | not_allowed | info_msg
- | warning_msg | error_msg</c></p>
- </item>
- <item><p><c>filename() =&nbsp;</c> -&nbsp;see <seealso
- marker="filename">filename(3)</seealso>&nbsp;-</p>
- </item>
- <item><p><c>spawn_options() =&nbsp;</c> -&nbsp;see <seealso
- marker="erts:erlang">erlang(3)</seealso>&nbsp;-</p>
- </item>
-
- </list>
-
- </section>
-
<section><title>Getting started</title>
<p><marker id="getting_started"></marker> As already mentioned
@@ -679,34 +614,105 @@ ets:match_spec_run(ets:lookup(86033, {2,2}),
</section>
+ <datatypes>
+ <datatype>
+ <name name="abstract_expr"></name>
+ <desc><p>Parse trees for Erlang expression, see the <seealso
+ marker="erts:absform">abstract format</seealso>
+ documentation in the ERTS User's Guide.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="answer"></name>
+ </datatype>
+ <datatype>
+ <name name="answers"></name>
+ </datatype>
+ <datatype>
+ <name name="cache"></name>
+ </datatype>
+ <datatype>
+ <name name="match_expression"></name>
+ <desc><p>Match&nbsp;specification, see the <seealso
+ marker="erts:match_spec">match specification</seealso>
+ documentation in the ERTS User's Guide and <seealso
+ marker="ms_transform">ms_transform(3).</seealso></p></desc>
+ </datatype>
+ <datatype>
+ <name name="no_files"></name>
+ <desc><p>Actually an integer > 1.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="key_pos"></name>
+ </datatype>
+ <datatype>
+ <name name="max_list_size"></name>
+ </datatype>
+ <datatype>
+ <name name="order"></name>
+ </datatype>
+ <datatype>
+ <name name="order_fun"></name>
+ </datatype>
+ <datatype>
+ <name name="query_cursor"></name>
+ <desc><p>A <seealso marker="#query_cursor">query cursor</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="query_handle"></name>
+ <desc><p>A <seealso marker="#query_handle">query handle</seealso>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="query_handle_or_list"></name>
+ </datatype>
+ <datatype>
+ <name name="query_list_comprehension"></name>
+ <desc><p>A literal
+ <seealso marker="#query_list_comprehension">query
+ list comprehension</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="spawn_options"></name>
+ </datatype>
+ <datatype>
+ <name name="sort_options"></name>
+ </datatype>
+ <datatype>
+ <name name="sort_option"></name>
+ <desc><p>See <seealso
+ marker="file_sorter">file_sorter(3)</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="tmp_directory"></name>
+ </datatype>
+ <datatype>
+ <name name="tmp_file_usage"></name>
+ <desc><p></p></desc>
+ </datatype>
+ </datatypes>
+
<funcs>
<func>
- <name>append(QHL) -> QH</name>
+ <name name="append" arity="1"/>
<fsummary>Return a query handle.</fsummary>
- <type>
- <v>QHL = [QueryHandleOrList]</v>
- <v>QH = QueryHandle</v>
- </type>
<desc>
<p>Returns a query handle. When evaluating the query handle
- <c>QH</c> all answers to the first query handle in
- <c>QHL</c> is returned followed by all answers to the rest
- of the query handles in <c>QHL</c>.</p>
+ <c><anno>QH</anno></c> all answers to the first query handle in
+ <c><anno>QHL</anno></c> are returned followed by all answers
+ to the rest of the query handles in <c><anno>QHL</anno></c>.</p>
</desc>
</func>
<func>
- <name>append(QH1, QH2) -> QH3</name>
+ <name name="append" arity="2"/>
<fsummary>Return a query handle.</fsummary>
- <type>
- <v>QH1 = QH2 = QueryHandleOrList</v>
- <v>QH3 = QueryHandle</v>
- </type>
<desc>
<p>Returns a query handle. When evaluating the query handle
- <c>QH3</c> all answers to <c>QH1</c> are returned followed
- by all answers to <c>QH2</c>.</p>
+ <c><anno>QH3</anno></c> all answers to
+ <c><anno>QH1</anno></c> are returned followed by all answers
+ to <c><anno>QH2</anno></c>.</p>
<p><c>append(QH1,&nbsp;QH2)</c> is equivalent to
<c>append([QH1,&nbsp;QH2])</c>.</p>
@@ -714,17 +720,9 @@ ets:match_spec_run(ets:lookup(86033, {2,2}),
</func>
<func>
- <name>cursor(QueryHandleOrList [, Options]) -> QueryCursor</name>
+ <name name="cursor" arity="1"/>
+ <name name="cursor" arity="2"/>
<fsummary>Create a query cursor.</fsummary>
- <type>
- <v>Options = [Option] | Option</v>
- <v>Option = {cache_all, Cache} | cache_all
- | {max_list_size, MaxListSize}
- | {spawn_options, SpawnOptions}
- | {tmpdir_usage, TmpFileUsage}
- | {tmpdir, TempDirectory}
- | {unique_all, bool()} | unique_all</v>
- </type>
<desc>
<p><marker id="cursor"></marker>Creates a query cursor and
makes the calling process the owner of the cursor. The
@@ -746,11 +744,13 @@ ets:match_spec_run(ets:lookup(86033, {2,2}),
[{b,1},{b,2}]
4> <input>qlc:delete_cursor(QC).</input>
ok</pre>
+ <p><c>cursor(<anno>QH</anno>)</c> is equivalent to
+ <c>cursor(<anno>QH</anno>, [])</c>.</p>
</desc>
</func>
<func>
- <name>delete_cursor(QueryCursor) -> ok</name>
+ <name name="delete_cursor" arity="1"/>
<fsummary>Delete a query cursor.</fsummary>
<desc>
<p>Deletes a query cursor. Only the owner of the cursor can
@@ -759,19 +759,11 @@ ok</pre>
</func>
<func>
- <name>eval(QueryHandleOrList [, Options]) -> Answers | Error</name>
- <name>e(QueryHandleOrList [, Options]) -> Answers</name>
+ <name name="eval" arity="1"/>
+ <name name="eval" arity="2"/>
+ <name name="e" arity="1"/>
+ <name name="e" arity="2"/>
<fsummary>Return all answers to a query.</fsummary>
- <type>
- <v>Options = [Option] | Option</v>
- <v>Option = {cache_all, Cache} | cache_all
- | {max_list_size, MaxListSize}
- | {tmpdir_usage, TmpFileUsage}
- | {tmpdir, TempDirectory}
- | {unique_all, bool()} | unique_all</v>
- <v>Error = {error, module(), Reason}</v>
- <v>Reason =&nbsp;-&nbsp;as returned by file_sorter(3)&nbsp;-</v>
- </type>
<desc>
<p><marker id="eval"></marker>Evaluates a query handle in the
calling process and collects all answers in a list.</p>
@@ -780,47 +772,39 @@ ok</pre>
1> <input>QH = qlc:q([{X,Y} || X &lt;- [a,b], Y &lt;- [1,2]]),</input>
<input>qlc:eval(QH).</input>
[{a,1},{a,2},{b,1},{b,2}]</pre>
+ <p><c>eval(<anno>QH</anno>)</c> is equivalent to
+ <c>eval(<anno>QH</anno>, [])</c>.</p>
</desc>
</func>
<func>
- <name>fold(Function, Acc0, QueryHandleOrList [, Options]) ->
- Acc1 | Error</name>
+ <name name="fold" arity="3"/>
+ <name name="fold" arity="4"/>
<fsummary>Fold a function over the answers to a query.</fsummary>
- <type>
- <v>Function = fun(Answer, AccIn) -> AccOut</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>Options = [Option] | Option</v>
- <v>Option = {cache_all, Cache} | cache_all
- | {max_list_size, MaxListSize}
- | {tmpdir_usage, TmpFileUsage}
- | {tmpdir, TempDirectory}
- | {unique_all, bool()} | unique_all</v>
- <v>Error = {error, module(), Reason}</v>
- <v>Reason =&nbsp;-&nbsp;as returned by file_sorter(3)&nbsp;-</v>
- </type>
<desc>
- <p>Calls <c>Function</c> on successive answers to the query
- handle together with an extra argument <c>AccIn</c>. The
- query handle and the function are evaluated in the calling
- process. <c>Function</c> must return a new accumulator which
- is passed to the next call. <c>Acc0</c> is returned if there
- are no answers to the query handle.</p>
+ <p>Calls <c><anno>Function</anno></c> on successive answers to
+ the query handle together with an extra argument
+ <c><anno>AccIn</anno></c>. The query handle and the function
+ are evaluated in the calling process.
+ <c><anno>Function</anno></c> must return a new accumulator
+ which is passed to the next call.
+ <c><anno>Acc0</anno></c> is returned if there are no answers
+ to the query handle.</p>
<pre>
1> <input>QH = [1,2,3,4,5,6],</input>
<input>qlc:fold(fun(X, Sum) -> X + Sum end, 0, QH).</input>
21</pre>
+ <p><c>fold(<anno>Function</anno>, <anno>Acc0</anno>,
+ <anno>QH</anno>)</c> is equivalent to
+ <c>fold(<anno>Function</anno>, <anno>Acc0</anno>,
+ <anno>QH</anno>, [])</c>.</p>
</desc>
</func>
<func>
- <name>format_error(Error) -> Chars</name>
+ <name name="format_error" arity="1"/>
<fsummary>Return an English description of a an error tuple.</fsummary>
- <type>
- <v>Error = {error, module(), term()}</v>
- <v>Chars = [char() | Chars]</v>
- </type>
<desc>
<p>Returns a descriptive string in English of an error tuple
returned by some of the functions of the <c>qlc</c> module
@@ -830,25 +814,9 @@ ok</pre>
</func>
<func>
- <name>info(QueryHandleOrList [, Options]) -> Info</name>
+ <name name="info" arity="1"/>
+ <name name="info" arity="2"/>
<fsummary>Return code describing a query handle.</fsummary>
- <type>
- <v>Options = [Option] | Option</v>
- <v>Option = EvalOption | ReturnOption</v>
- <v>EvalOption = {cache_all, Cache} | cache_all
- | {max_list_size, MaxListSize}
- | {tmpdir_usage, TmpFileUsage}
- | {tmpdir, TempDirectory}
- | {unique_all, bool()} | unique_all</v>
- <v>ReturnOption = {depth, Depth}
- | {flat, bool()}
- | {format, Format}
- | {n_elements, NElements}</v>
- <v>Depth = infinity | int() >= 0</v>
- <v>Format = abstract_code | string</v>
- <v>NElements = infinity | int() > 0</v>
- <v>Info = AbstractExpression | string()</v>
- </type>
<desc>
<p><marker id="info"></marker>Returns information about a
query handle. The information describes the simplifications
@@ -879,18 +847,18 @@ ok</pre>
<input>io:format("~s~n", [qlc:info(QH, unique_all)]).</input>
begin
V1 =
- qlc:q([
+ qlc:q([
SQV ||
SQV &lt;- [x,y]
],
[{unique,true}]),
V2 =
- qlc:q([
+ qlc:q([
SQV ||
SQV &lt;- [a,b]
],
[{unique,true}]),
- qlc:q([
+ qlc:q([
{X,Y} ||
X &lt;- V1,
Y &lt;- V2
@@ -913,19 +881,19 @@ end</pre>
<input>io:format("~s~n", [qlc:info(Q)]).</input>
begin
V1 =
- qlc:q([
+ qlc:q([
P0 ||
P0 = {W,Y} &lt;- ets:table(17)
]),
V2 =
- qlc:q([
+ qlc:q([
[G1|G2] ||
G2 &lt;- V1,
G1 &lt;- ets:table(16),
element(2, G1) =:= element(1, G2)
],
[{join,lookup}]),
- qlc:q([
+ qlc:q([
{X,Z,W} ||
[{X,Z}|{W,Y}] &lt;- V2
])
@@ -936,44 +904,43 @@ end</pre>
method chosen. A convention is used for lookup join: the
first generator (<c>G2</c>) is the one traversed, the second
one (<c>G1</c>) is the table where constants are looked up.</p>
+
+ <p><c>info(<anno>QH</anno>)</c> is equivalent to
+ <c>info(<anno>QH</anno>, [])</c>.</p>
</desc>
</func>
<func>
- <name>keysort(KeyPos, QH1 [, SortOptions]) -> QH2</name>
+ <name name="keysort" arity="2"/>
+ <name name="keysort" arity="3"/>
<fsummary>Return a query handle.</fsummary>
- <type>
- <v>QH1 = QueryHandleOrList</v>
- <v>QH2 = QueryHandle</v>
- </type>
<desc>
<p>Returns a query handle. When evaluating the query handle
- <c>QH2</c> the answers to the query handle <c>QH1</c> are
- sorted by <seealso
+ <c><anno>QH2</anno></c> the answers to the query handle
+ <c><anno>QH1</anno></c> are sorted by <seealso
marker="file_sorter">file_sorter:keysort/4</seealso>
according to the options.</p>
- <p>The sorter will use temporary files only if <c>QH1</c> does
- not evaluate to a list and the size of the binary
- representation of the answers exceeds <c>Size</c> bytes,
- where <c>Size</c> is the value of the <c>size</c> option.</p>
+ <p>The sorter will use temporary files only if
+ <c><anno>QH1</anno></c> does not evaluate to a list and the
+ size of the binary representation of the answers exceeds
+ <c>Size</c> bytes, where <c>Size</c> is the value of the
+ <c>size</c> option.</p>
+
+ <p><c>keysort(<anno>KeyPos</anno>, <anno>QH1</anno>)</c>
+ is equivalent to
+ <c>keysort(<anno>KeyPos</anno>, <anno>QH1</anno>, [])</c>.</p>
</desc>
</func>
<func>
- <name>next_answers(QueryCursor [, NumberOfAnswers]) ->
- Answers | Error</name>
+ <name name="next_answers" arity="1"/>
+ <name name="next_answers" arity="2"/>
<fsummary>Return some or all answers to a query.</fsummary>
- <type>
- <v>NumberOfAnswers = all_remaining | int() > 0</v>
- <v>Error = {error, module(), Reason}</v>
- <v>Reason =&nbsp;-&nbsp;as returned by file_sorter(3)&nbsp;-</v>
- </type>
<desc>
<p>Returns some or all of the remaining answers to a query
- cursor. Only the owner of <c>Cursor</c> can retrieve
- answers.</p>
-
+ cursor. Only the owner of <c><anno>QueryCursor</anno></c> can
+ retrieve answers.</p>
<p>The optional argument <c>NumberOfAnswers</c>determines the
maximum number of answers returned. The default value is
<c>10</c>. If less than the requested number of answers is
@@ -983,21 +950,9 @@ end</pre>
</func>
<func>
- <name>q(QueryListComprehension [, Options]) -> QueryHandle</name>
+ <name name="q" arity="1"/>
+ <name name="q" arity="2"/>
<fsummary>Return a handle for a query list comprehension.</fsummary>
- <type>
- <v>QueryListComprehension =&nbsp;
- -&nbsp;literal query listcomprehension&nbsp;-</v>
- <v>Options = [Option] | Option</v>
- <v>Option = {max_lookup, MaxLookup}
- | {cache, Cache} | cache
- | {join, Join}
- | {lookup, Lookup}
- | {unique, bool()} | unique</v>
- <v>MaxLookup = int() >= 0 | infinity</v>
- <v>Join = any | lookup | merge | nested_loop</v>
- <v>Lookup = bool() | any</v>
- </type>
<desc>
<p><marker id="q"></marker>Returns a query handle for a query
list comprehension. The query list comprehension must be the
@@ -1024,7 +979,7 @@ end</pre>
<pre>
...
-A = [X || {X} &lt;- [{1},{2}]],
+A = [X || {X} &lt;- [{1},{2}]],
QH = qlc:q(A),
...</pre>
@@ -1034,6 +989,9 @@ QH = qlc:q(A),
list comprehension"); the shell process stops with a
<c>badarg</c> reason.</p>
+ <p><c>q(<anno>QLC</anno>)</c> is equivalent to
+ <c>q(<anno>QLC</anno>, [])</c>.</p>
+
<p>The <c>{cache,&nbsp;ets}</c> option can be used to cache
the answers to a query list comprehension. The answers are
stored in one ETS table for each cached query list
@@ -1092,26 +1050,26 @@ QH = qlc:q(A),
<input>io:format("~s~n", [qlc:info(Q)]).</input>
begin
V1 =
- qlc:q([
+ qlc:q([
P0 ||
P0 = {X,Z} &lt;-
qlc:keysort(1, [{a,1},{b,4},{c,6}], [])
]),
V2 =
- qlc:q([
+ qlc:q([
P0 ||
P0 = {W,Y} &lt;-
qlc:keysort(2, [{2,a},{3,b},{4,c}], [])
]),
V3 =
- qlc:q([
+ qlc:q([
[G1|G2] ||
G1 &lt;- V1,
G2 &lt;- V2,
element(1, G1) == element(2, G2)
],
[{join,merge},{cache,list}]),
- qlc:q([
+ qlc:q([
{A,X,Z,W} ||
A &lt;- [a,b,c],
[{X,Z}|{W,Y}] &lt;- V3,
@@ -1170,7 +1128,7 @@ ets:match_spec_run(
elements of the key {X,&nbsp;Y} are compared separately.</p>
<p>The <c>{lookup,&nbsp;true}</c> option can be used to ensure
- that the <c>qlc</c> module will look up constants in some
+ that the <c>qlc</c> module will look up constants in some
QLC table. If there
are more than one QLC table among the generators' list
expressions, constants have to be looked up in at least one
@@ -1190,7 +1148,7 @@ ets:match_spec_run(
<c>{join,&nbsp;nested_loop}</c> invokes the method of
matching every pair of objects from two handles. The last
method is mostly very slow. The evaluation of the query
- fails if the <c>qlc</c> module cannot carry out the chosen
+ fails if the <c>qlc</c> module cannot carry out the chosen
join method. The
default value is <c>any</c> which means that some fast join
method will be used if possible.</p>
@@ -1198,47 +1156,33 @@ ets:match_spec_run(
</func>
<func>
- <name>sort(QH1 [, SortOptions]) -> QH2</name>
+ <name name="sort" arity="1"/>
+ <name name="sort" arity="2"/>
<fsummary>Return a query handle.</fsummary>
- <type>
- <v>QH1 = QueryHandleOrList</v>
- <v>QH2 = QueryHandle</v>
- </type>
<desc>
<p>Returns a query handle. When evaluating the query handle
- <c>QH2</c> the answers to the query handle <c>QH1</c> are
- sorted by <seealso
+ <c><anno>QH2</anno></c> the answers to the query handle
+ <c><anno>QH1</anno></c> are sorted by <seealso
marker="file_sorter">file_sorter:sort/3</seealso> according
to the options.</p>
- <p>The sorter will use temporary files only if <c>QH1</c> does
- not evaluate to a list and the size of the binary
- representation of the answers exceeds <c>Size</c> bytes,
- where <c>Size</c> is the value of the <c>size</c> option.</p>
+ <p>The sorter will use temporary files only if
+ <c><anno>QH1</anno></c> does not evaluate to a list and the
+ size of the binary representation of the answers exceeds
+ <c>Size</c> bytes, where <c>Size</c> is the value of the
+ <c>size</c> option.</p>
+
+ <p><c>sort(<anno>QH1</anno>)</c> is equivalent to
+ <c>sort(<anno>QH1</anno>, [])</c>.</p>
+
</desc>
</func>
<func>
- <name>string_to_handle(QueryString [, Options [, Bindings]]) ->
- QueryHandle | Error</name>
+ <name name="string_to_handle" arity="1"/>
+ <name name="string_to_handle" arity="2"/>
+ <name name="string_to_handle" arity="3"/>
<fsummary>Return a handle for a query list comprehension.</fsummary>
- <type>
- <v>QueryString = string()</v>
- <v>Options = [Option] | Option</v>
- <v>Option = {max_lookup, MaxLookup}
- | {cache, Cache} | cache
- | {join, Join}
- | {lookup, Lookup}
- | {unique, bool()} | unique</v>
- <v>MaxLookup = int() >= 0 | infinity</v>
- <v>Join = any | lookup | merge | nested_loop</v>
- <v>Lookup = bool() | any</v>
- <v>Bindings =&nbsp;-&nbsp;as returned by
- erl_eval:bindings/1&nbsp;-</v>
- <v>Error = {error, module(), Reason}</v>
- <v>Reason = &nbsp;-&nbsp;ErrorInfo as returned by
- erl_scan:string/1 or erl_parse:parse_exprs/1&nbsp;-</v>
- </type>
<desc>
<p>A string version of <c>qlc:q/1,2</c>. When the query handle
is evaluated the fun created by the parse transform is
@@ -1253,57 +1197,24 @@ ets:match_spec_run(
<input>qlc:eval(QH).</input>
[2,3,4]</pre>
+ <p><c>string_to_handle(<anno>QueryString</anno>)</c>
+ is equivalent to
+ <c>string_to_handle(<anno>QueryString</anno>, [])</c>.</p>
+
+ <p><c>string_to_handle(<anno>QueryString</anno>,
+ <anno>Options</anno>)</c>
+ is equivalent to
+ <c>string_to_handle(<anno>QueryString</anno>,
+ <anno>Options</anno>, erl_eval:new_bindings())</c>.</p>
+
<p>This function is probably useful mostly when called from
outside of Erlang, for instance from a driver written in C.</p>
</desc>
</func>
<func>
- <name>table(TraverseFun, Options) -> QueryHandle</name>
+ <name name="table" arity="2"/>
<fsummary>Return a query handle for a table.</fsummary>
- <type>
- <v>TraverseFun = TraverseFun0 | TraverseFun1</v>
- <v>TraverseFun0 = fun() -> TraverseResult</v>
- <v>TraverseFun1 = fun(MatchExpression) -> TraverseResult</v>
- <v>TraverseResult = Objects | term()</v>
- <v>Objects = [] | [term() | ObjectList]</v>
- <v>ObjectList = TraverseFun0 | Objects</v>
- <v>Options = [Option] | Option</v>
- <v>Option = {format_fun, FormatFun}
- | {info_fun, InfoFun}
- | {lookup_fun, LookupFun}
- | {parent_fun, ParentFun}
- | {post_fun, PostFun}
- | {pre_fun, PreFun}
- | {key_equality, KeyComparison}</v>
- <v>FormatFun = undefined | fun(SelectedObjects) -> FormatedTable</v>
- <v>SelectedObjects = all
- | {all, NElements, DepthFun}
- | {match_spec, MatchExpression}
- | {lookup, Position, Keys}
- | {lookup, Position, Keys, NElements, DepthFun}</v>
- <v>NElements = infinity | int() > 0</v>
- <v>DepthFun = fun(term()) -> term()</v>
- <v>FormatedTable = {Mod, Fun, Args}
- | AbstractExpression
- | character_list()</v>
- <v>InfoFun = undefined | fun(InfoTag) -> InfoValue</v>
- <v>InfoTag = indices | is_unique_objects | keypos | num_of_objects</v>
- <v>InfoValue = undefined | term()</v>
- <v>LookupFun = undefined | fun(Position, Keys) -> LookupResult</v>
- <v>LookupResult = [term()] | term()</v>
- <v>ParentFun = undefined | fun() -> ParentFunValue</v>
- <v>PostFun = undefined | fun() -> void()</v>
- <v>PreFun = undefined | fun([PreArg]) -> void()</v>
- <v>PreArg = {parent_value, ParentFunValue} | {stop_fun, StopFun}</v>
- <v>ParentFunValue = undefined | term()</v>
- <v>StopFun = undefined | fun() -> void()</v>
- <v>KeyComparison = '=:=' | '=='</v>
- <v>Position = int() > 0</v>
- <v>Keys = [term()]</v>
- <v>Mod = Fun = atom()</v>
- <v>Args = [term()]</v>
- </type>
<desc>
<p><marker id="table"></marker>Returns a query handle for a
QLC table. In Erlang/OTP there is support for ETS, Dets and
@@ -1315,77 +1226,90 @@ ets:match_spec_run(
as well as properties of the table are handled by callback
functions provided as options to <c>qlc:table/2</c>.</p>
- <p>The callback function <c>TraverseFun</c> is used for
- traversing the table. It is to return a list of objects
- terminated by either <c>[]</c> or a nullary fun to be used
- for traversing the not yet traversed objects of the table.
- Any other return value is immediately returned as value of
- the query evaluation. Unary <c>TraverseFun</c>s are to
- accept a match specification as argument. The match
- specification is created by the parse transform by analyzing
- the pattern of the generator calling <c>qlc:table/2</c> and
- filters using variables introduced in the pattern. If the
- parse transform cannot find a match specification equivalent
- to the pattern and filters, <c>TraverseFun</c> will be
- called with a match specification returning every object.
- Modules that can utilize match specifications for optimized
+ <p>The callback function <c><anno>TraverseFun</anno></c> is
+ used for traversing the table. It is to return a list of
+ objects terminated by either <c>[]</c> or a nullary fun to
+ be used for traversing the not yet traversed objects of the
+ table. Any other return value is immediately returned as
+ value of the query evaluation. Unary
+ <c><anno>TraverseFun</anno></c>s are to accept a match
+ specification as argument. The match specification is
+ created by the parse transform by analyzing the pattern of
+ the generator calling <c>qlc:table/2</c> and filters using
+ variables introduced in the pattern. If the parse transform
+ cannot find a match specification equivalent to the pattern
+ and filters, <c><anno>TraverseFun</anno></c> will be called
+ with a match specification returning every object. Modules
+ that can utilize match specifications for optimized
traversal of tables should call <c>qlc:table/2</c> with a
- unary <c>TraverseFun</c> while other modules can provide a
- nullary <c>TraverseFun</c>. <c>ets:table/2</c> is an example
- of the former; <c>gb_table:table/1</c> in the <seealso
- marker="#implementing_a_qlc_table">Implementing a QLC
- table</seealso> section is an example of the latter.</p>
-
- <p><c>PreFun</c> is a unary callback function that is called
- once before the table is read for the first time. If the
- call fails, the query evaluation fails. Similarly, the
- nullary callback function <c>PostFun</c> is called once
- after the table was last read. The return value, which is
- caught, is ignored. If <c>PreFun</c> has been called for a
- table, <c>PostFun</c> is guaranteed to be called for that
- table, even if the evaluation of the query fails for some
- reason. The order in which pre (post) functions for
+ unary
+ <c><anno>TraverseFun</anno></c> while other modules can
+ provide a nullary
+ <c><anno>TraverseFun</anno></c>. <c>ets:table/2</c> is an
+ example of the former; <c>gb_table:table/1</c> in the
+ <seealso marker="#implementing_a_qlc_table">Implementing a
+ QLC table</seealso> section is an example of the latter.</p>
+
+ <p><c><anno>PreFun</anno></c> is a unary callback function
+ that is called once before the table is read for the first
+ time. If the call fails, the query evaluation fails.
+ Similarly, the nullary callback function
+ <c><anno>PostFun</anno></c> is called once after the table
+ was last read. The return value, which is caught, is
+ ignored. If <c><anno>PreFun</anno></c> has been called for a
+ table,
+ <c><anno>PostFun</anno></c> is guaranteed to be called for
+ that table, even if the evaluation of the query fails for
+ some reason. The order in which pre (post) functions for
different tables are evaluated is not specified. Other table
- access than reading, such as calling <c>InfoFun</c>, is
- assumed to be OK at any time. The argument <c>PreArgs</c> is
- a list of tagged values. Currently there are two tags,
+ access than reading, such as calling
+ <c><anno>InfoFun</anno></c>, is assumed to be OK at any
+ time. The argument <c><anno>PreArgs</anno></c> is a list of
+ tagged values. Currently there are two tags,
<c>parent_value</c> and <c>stop_fun</c>, used by Mnesia for
managing transactions. The value of <c>parent_value</c> is
- the value returned by <c>ParentFun</c>, or <c>undefined</c>
- if there is no <c>ParentFun</c>. <c>ParentFun</c> is called
- once just before the call of <c>PreFun</c> in the context of
- the process calling <c>eval</c>, <c>fold</c>, or
+ the value returned by <c><anno>ParentFun</anno></c>, or
+ <c>undefined</c> if there is no <c>ParentFun</c>.
+ <c><anno>ParentFun</anno></c> is called once just before the
+ call of
+ <c><anno>PreFun</anno></c> in the context of the process
+ calling
+ <c>eval</c>, <c>fold</c>, or
<c>cursor</c>. The value of <c>stop_fun</c> is a nullary fun
that deletes the cursor if called from the parent, or
<c>undefined</c> if there is no cursor.</p>
<p><marker id="lookup_fun"></marker>The binary callback
- function <c>LookupFun</c> is used for looking up objects in
- the table. The first argument <c>Position</c> is the key
- position or an indexed position and the second argument
- <c>Keys</c> is a sorted list of unique values. The return
- value is to be a list of all objects (tuples) such that the
- element at <c>Position</c> is a member of <c>Keys</c>. Any
- other return value is immediately returned as value of the
- query evaluation. <c>LookupFun</c> is called instead of
+ function <c><anno>LookupFun</anno></c> is used for looking
+ up objects in the table. The first argument
+ <c><anno>Position</anno></c> is the key position or an
+ indexed position and the second argument
+ <c><anno>Keys</anno></c> is a sorted list of unique values.
+ The return value is to be a list of all objects (tuples)
+ such that the element at <c>Position</c> is a member of
+ <c><anno>Keys</anno></c>. Any other return value is
+ immediately returned as value of the query evaluation.
+ <c><anno>LookupFun</anno></c> is called instead of
traversing the table if the parse transform at compile time
can find out that the filters match and compare the element
- at <c>Position</c> in such a way that only <c>Keys</c> need
- to be looked up in order to find all potential answers. The
- key position is obtained by calling <c>InfoFun(keypos)</c>
- and the indexed positions by calling
- <c>InfoFun(indices)</c>. If the key position can be used for
- lookup it is always chosen, otherwise the indexed position
- requiring the least number of lookups is chosen. If there is
- a tie between two indexed positions the one occurring first
- in the list returned by <c>InfoFun</c> is chosen. Positions
- requiring more than <seealso
- marker="#max_lookup">max_lookup</seealso> lookups are
- ignored.</p>
-
- <p>The unary callback function <c>InfoFun</c> is to return
- information about the table. <c>undefined</c> should be
- returned if the value of some tag is unknown:</p>
+ at <c><anno>Position</anno></c> in such a way that only
+ <c><anno>Keys</anno></c> need to be looked up in order to
+ find all potential answers. The key position is obtained by
+ calling
+ <c><anno>InfoFun</anno>(keypos)</c> and the indexed
+ positions by calling
+ <c><anno>InfoFun</anno>(indices)</c>. If the key position
+ can be used for lookup it is always chosen, otherwise the
+ indexed position requiring the least number of lookups is
+ chosen. If there is a tie between two indexed positions the
+ one occurring first in the list returned by
+ <c><anno>InfoFun</anno></c> is chosen. Positions requiring
+ more than <seealso marker="#max_lookup">max_lookup</seealso>
+ lookups are ignored.</p>
+
+ <p>The unary callback function <c><anno>InfoFun</anno></c> is
+ to return information about the table. <c>undefined</c>
+ should be returned if the value of some tag is unknown:</p>
<list type="bulleted">
<item><c>indices</c>. Returns a list of indexed
@@ -1406,20 +1330,22 @@ ets:match_spec_run(
</item>
</list>
- <p>The unary callback function <c>FormatFun</c> is used by
- <seealso marker="#info">qlc:info/1,2</seealso> for
- displaying the call that created the table's query handle.
- The default value, <c>undefined</c>, means that
+ <p>The unary callback function <c><anno>FormatFun</anno></c>
+ is used by <seealso marker="#info">qlc:info/1,2</seealso>
+ for displaying the call that created the table's query
+ handle. The default value, <c>undefined</c>, means that
<c>info/1,2</c> displays a call to <c>'$MOD':'$FUN'/0</c>.
- It is up to <c>FormatFun</c> to present the selected objects
- of the table in a suitable way. However, if a character list
- is chosen for presentation it must be an Erlang expression
- that can be scanned and parsed (a trailing dot will be added
- by <c>qlc:info</c> though). <c>FormatFun</c> is called with
- an argument that describes the selected objects based on
- optimizations done as a result of analyzing the filters of
- the QLC where the call to <c>qlc:table/2</c> occurs. The
- possible values of the argument are:</p>
+ It is up to <c><anno>FormatFun</anno></c> to present the
+ selected objects of the table in a suitable way. However, if
+ a character list is chosen for presentation it must be an
+ Erlang expression that can be scanned and parsed (a trailing
+ dot will be added by <c>qlc:info</c> though).
+ <c><anno>FormatFun</anno></c> is called with an argument
+ that describes the selected objects based on optimizations
+ done as a result of analyzing the filters of the QLC where
+ the call to
+ <c>qlc:table/2</c> occurs. The possible values of the
+ argument are:</p>
<list type="bulleted">
<item><c>{lookup, Position, Keys, NElements, DepthFun}</c>.
@@ -1443,10 +1369,12 @@ ets:match_spec_run(
can be used for limiting the size of terms; calling
<c>DepthFun(Term)</c> substitutes <c>'...'</c> for parts of
<c>Term</c> below the depth specified by the <c>info/1,2</c>
- option <c>depth</c>. If calling <c>FormatFun</c> with an
- argument including <c>NElements</c> and <c>DepthFun</c>
- fails, <c>FormatFun</c> is called once again with an
- argument excluding <c>NElements</c> and <c>DepthFun</c>
+ option <c>depth</c>. If calling
+ <c><anno>FormatFun</anno></c> with an argument including
+ <c>NElements</c> and <c>DepthFun</c> fails,
+ <c><anno>FormatFun</anno></c> is called once again with an
+ argument excluding
+ <c>NElements</c> and <c>DepthFun</c>
(<c>{lookup,&nbsp;Position,&nbsp;Keys}</c> or
<c>all</c>).</p>
@@ -1458,7 +1386,7 @@ ets:match_spec_run(
<p>See <seealso marker="ets#qlc_table">ets(3)</seealso>,
<seealso marker="dets#qlc_table">dets(3)</seealso> and
- <seealso marker="mnesia:mnesia#qlc_table">mnesia(3)</seealso>
+ <seealso marker="mnesia:mnesia#qlc_table">mnesia(3)</seealso>
for the various options recognized by <c>table/1,2</c> in
respective module.</p>
</desc>
@@ -1472,12 +1400,12 @@ ets:match_spec_run(
<seealso marker="doc/reference_manual:users_guide">
Erlang Reference Manual</seealso>,
<seealso marker="erl_eval">erl_eval(3)</seealso>,
- <seealso marker="erts:erlang">erlang(3)</seealso>,
+ <seealso marker="erts:erlang">erlang(3)</seealso>,
<seealso marker="ets">ets(3)</seealso>,
- <seealso marker="kernel:file">file(3)</seealso>,
- <seealso marker="error_logger:file">error_logger(3)</seealso>,
+ <seealso marker="kernel:file">file(3)</seealso>,
+ <seealso marker="error_logger:file">error_logger(3)</seealso>,
<seealso marker="file_sorter">file_sorter(3)</seealso>,
- <seealso marker="mnesia:mnesia">mnesia(3)</seealso>,
+ <seealso marker="mnesia:mnesia">mnesia(3)</seealso>,
<seealso marker="doc/programming_examples:users_guide">
Programming Examples</seealso>,
<seealso marker="shell">shell(3)</seealso></p>
diff --git a/lib/stdlib/doc/src/queue.xml b/lib/stdlib/doc/src/queue.xml
index 5ada1c2c57..383f52d10d 100644
--- a/lib/stdlib/doc/src/queue.xml
+++ b/lib/stdlib/doc/src/queue.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -88,122 +88,94 @@
<title>Original API</title>
</section>
+ <datatypes>
+ <datatype>
+ <name><marker id="type-queue">queue()</marker></name>
+ <desc><p>As returned by <c>new/0</c>.</p></desc>
+ </datatype>
+ </datatypes>
+
<funcs>
<func>
- <name>new() -> Q</name>
+ <name name="new" arity="0"/>
<fsummary>Create an empty queue</fsummary>
- <type>
- <v>Q = queue()</v>
- </type>
<desc>
<p>Returns an empty queue.</p>
</desc>
</func>
<func>
- <name>is_queue(Term) -> true | false</name>
+ <name name="is_queue" arity="1"/>
<fsummary>Test if a term is a queue</fsummary>
- <type>
- <v>Term = term()</v>
- </type>
<desc>
- <p>Tests if <c>Q</c> is a queue and returns <c>true</c> if so and
+ <p>Tests if <c><anno>Term</anno></c> is a queue and returns <c>true</c> if so and
<c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>is_empty(Q) -> true | false</name>
+ <name name="is_empty" arity="1"/>
<fsummary>Test if a queue is empty</fsummary>
- <type>
- <v>Q = queue()</v>
- </type>
<desc>
- <p>Tests if <c>Q</c> is empty and returns <c>true</c> if so and
+ <p>Tests if <c><anno>Q</anno></c> is empty and returns <c>true</c> if so and
<c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>len(Q) -> N</name>
+ <name name="len" arity="1"/>
<fsummary>Get the length of a queue</fsummary>
- <type>
- <v>Q = queue()</v>
- <v>N = integer()</v>
- </type>
<desc>
- <p>Calculates and returns the length of queue <c>Q</c>.</p>
+ <p>Calculates and returns the length of queue <c><anno>Q</anno></c>.</p>
</desc>
</func>
<func>
- <name>in(Item, Q1) -> Q2</name>
+ <name name="in" arity="2"/>
<fsummary>Insert an item at the rear of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Inserts <c>Item</c> at the rear of queue <c>Q1</c>.
- Returns the resulting queue <c>Q2</c>.</p>
+ <p>Inserts <c><anno>Item</anno></c> at the rear of queue <c><anno>Q1</anno></c>.
+ Returns the resulting queue <c><anno>Q2</anno></c>.</p>
</desc>
</func>
<func>
- <name>in_r(Item, Q1) -> Q2</name>
+ <name name="in_r" arity="2"/>
<fsummary>Insert an item at the front of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Inserts <c>Item</c> at the front of queue <c>Q1</c>.
- Returns the resulting queue <c>Q2</c>.</p>
+ <p>Inserts <c><anno>Item</anno></c> at the front of queue <c><anno>Q1</anno></c>.
+ Returns the resulting queue <c><anno>Q2</anno></c>.</p>
</desc>
</func>
<func>
- <name>out(Q1) -> Result</name>
+ <name name="out" arity="1"/>
<fsummary>Remove the front item from a queue</fsummary>
- <type>
- <v>Result = {{value, Item}, Q2} | {empty, Q1}</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Removes the item at the front of queue <c>Q1</c>. Returns the
- tuple <c>{{value, Item}, Q2}</c>, where <c>Item</c> is the
- item removed and <c>Q2</c> is the resulting queue. If <c>Q1</c> is
- empty, the tuple <c>{empty, Q1}</c> is returned.</p>
+ <p>Removes the item at the front of queue <c><anno>Q1</anno></c>. Returns the
+ tuple <c>{{value, <anno>Item</anno>}, <anno>Q2</anno>}</c>, where <c><anno>Item</anno></c> is the
+ item removed and <c><anno>Q2</anno></c> is the resulting queue. If <c><anno>Q1</anno></c> is
+ empty, the tuple <c>{empty, <anno>Q1</anno>}</c> is returned.</p>
</desc>
</func>
<func>
- <name>out_r(Q1) -> Result</name>
+ <name name="out_r" arity="1"/>
<fsummary>Remove the rear item from a queue</fsummary>
- <type>
- <v>Result = {{value, Item}, Q2} | {empty, Q1}</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Removes the item at the rear of the queue <c>Q1</c>. Returns the
- tuple <c>{{value, Item}, Q2}</c>, where <c>Item</c> is the
- item removed and <c>Q2</c> is the new queue. If <c>Q1</c> is
- empty, the tuple <c>{empty, Q1}</c> is returned. </p>
+ <p>Removes the item at the rear of the queue <c><anno>Q1</anno></c>. Returns the
+ tuple <c>{{value, <anno>Item</anno>}, <anno>Q2</anno>}</c>, where <c><anno>Item</anno></c> is the
+ item removed and <c><anno>Q2</anno></c> is the new queue. If <c><anno>Q1</anno></c> is
+ empty, the tuple <c>{empty, <anno>Q1</anno>}</c> is returned. </p>
</desc>
</func>
<func>
- <name>from_list(L) -> queue()</name>
+ <name name="from_list" arity="1"/>
<fsummary>Convert a list to a queue</fsummary>
- <type>
- <v>L = list()</v>
- </type>
<desc>
- <p>Returns a queue containing the items in <c>L</c> in the
+ <p>Returns a queue containing the items in <c><anno>L</anno></c> in the
same order; the head item of the list will become the front
item of the queue.</p>
</desc>
</func>
<func>
- <name>to_list(Q) -> list()</name>
+ <name name="to_list" arity="1"/>
<fsummary>Convert a queue to a list</fsummary>
- <type>
- <v>Q = queue()</v>
- </type>
<desc>
<p>Returns a list of the items in the queue in the same order;
the front item of the queue will become the head of the list.</p>
@@ -211,57 +183,43 @@
</func>
<func>
- <name>reverse(Q1) -> Q2</name>
+ <name name="reverse" arity="1"/>
<fsummary>Reverse a queue</fsummary>
- <type>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Returns a queue <c>Q2</c> that contains the items of
- <c>Q1</c> in the reverse order.</p>
+ <p>Returns a queue <c><anno>Q2</anno></c> that contains the items of
+ <c><anno>Q1</anno></c> in the reverse order.</p>
</desc>
</func>
<func>
- <name>split(N, Q1) -> {Q2,Q3}</name>
+ <name name="split" arity="2"/>
<fsummary>Split a queue in two</fsummary>
- <type>
- <v>N = integer()</v>
- <v>Q1 = Q2 = Q3 = queue()</v>
- </type>
<desc>
- <p>Splits <c>Q1</c> in two. The <c>N</c> front items
- are put in <c>Q2</c> and the rest in <c>Q3</c></p>
+ <p>Splits <c><anno>Q1</anno></c> in two. The <c><anno>N</anno></c> front items
+ are put in <c><anno>Q2</anno></c> and the rest in <c><anno>Q3</anno></c></p>
</desc>
</func>
<func>
- <name>join(Q1, Q2) -> Q3</name>
+ <name name="join" arity="2"/>
<fsummary>Join two queues</fsummary>
- <type>
- <v>Q1 = Q2 = Q3 = queue()</v>
- </type>
<desc>
- <p>Returns a queue <c>Q3</c> that is the result of joining
- <c>Q1</c> and <c>Q2</c> with <c>Q1</c> in front of
- <c>Q2</c>.</p>
+ <p>Returns a queue <c><anno>Q3</anno></c> that is the result of joining
+ <c><anno>Q1</anno></c> and <c><anno>Q2</anno></c> with <c><anno>Q1</anno></c> in front of
+ <c><anno>Q2</anno></c>.</p>
</desc>
</func>
<func>
- <name>filter(Fun, Q1) -> Q2</name>
+ <name name="filter" arity="2"/>
<fsummary>Filter a queue</fsummary>
- <type>
- <v>Fun = fun(Item) -> bool() | list()</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Returns a queue <c>Q2</c> that is the result of calling
- <c>Fun(Item)</c> on all items in <c>Q1</c>,
+ <p>Returns a queue <c><anno>Q2</anno></c> that is the result of calling
+ <c><anno>Fun</anno>(<anno>Item</anno>)</c> on all items in <c><anno>Q1</anno></c>,
in order from front to rear.</p>
- <p>If <c>Fun(Item)</c> returns <c>true</c>, <c>Item</c>
+ <p>If <c><anno>Fun</anno>(<anno>Item</anno>)</c> returns <c>true</c>, <c>Item</c>
is copied to the result queue. If it returns <c>false</c>,
- <c>Item</c> is not copied. If it returns a list
+ <c><anno>Item</anno></c> is not copied. If it returns a list
the list elements are inserted instead of <c>Item</c> in the
result queue.</p>
- <p>So, <c>Fun(Item)</c> returning <c>[Item]</c> is thereby
+ <p>So, <c><anno>Fun</anno>(<anno>Item</anno>)</c> returning <c>[<anno>Item</anno>]</c> is thereby
semantically equivalent to returning <c>true</c>, just
as returning <c>[]</c> is semantically equivalent to
returning <c>false</c>. But returning a list builds
@@ -269,15 +227,11 @@
</desc>
</func>
<func>
- <name>member(Item, Q) -> bool()</name>
+ <name name="member" arity="2"/>
<fsummary>Test if an item is in a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q = queue()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Item</c> matches some element
- in <c>Q</c>, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> if <c><anno>Item</anno></c> matches some element
+ in <c><anno>Q</anno></c>, otherwise <c>false</c>.</p>
</desc>
</func>
</funcs>
@@ -290,77 +244,53 @@
<funcs>
<func>
- <name>get(Q) -> Item</name>
+ <name name="get" arity="1"/>
<fsummary>Return the front item of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q = queue()</v>
- </type>
<desc>
- <p>Returns <c>Item</c> at the front of queue <c>Q</c>.</p>
- <p>Fails with reason <c>empty</c> if <c>Q</c> is empty.</p>
+ <p>Returns <c><anno>Item</anno></c> at the front of queue <c><anno>Q</anno></c>.</p>
+ <p>Fails with reason <c>empty</c> if <c><anno>Q</anno></c> is empty.</p>
</desc>
</func>
<func>
- <name>get_r(Q) -> Item</name>
+ <name name="get_r" arity="1"/>
<fsummary>Return the rear item of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q = queue()</v>
- </type>
<desc>
- <p>Returns <c>Item</c> at the rear of queue <c>Q</c>.</p>
- <p>Fails with reason <c>empty</c> if <c>Q</c> is empty.</p>
+ <p>Returns <c><anno>Item</anno></c> at the rear of queue <c><anno>Q</anno></c>.</p>
+ <p>Fails with reason <c>empty</c> if <c><anno>Q</anno></c> is empty.</p>
</desc>
</func>
<func>
- <name>drop(Q1) -> Q2</name>
+ <name name="drop" arity="1"/>
<fsummary>Remove the front item from a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Returns a queue <c>Q2</c> that is the result of removing
- the front item from <c>Q1</c>.</p>
- <p>Fails with reason <c>empty</c> if <c>Q1</c> is empty.</p>
+ <p>Returns a queue <c><anno>Q2</anno></c> that is the result of removing
+ the front item from <c><anno>Q1</anno></c>.</p>
+ <p>Fails with reason <c>empty</c> if <c><anno>Q1</anno></c> is empty.</p>
</desc>
</func>
<func>
- <name>drop_r(Q1) -> Q2</name>
+ <name name="drop_r" arity="1"/>
<fsummary>Remove the rear item from a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Returns a queue <c>Q2</c> that is the result of removing
- the rear item from <c>Q1</c>.</p>
- <p>Fails with reason <c>empty</c> if <c>Q1</c> is empty.</p>
+ <p>Returns a queue <c><anno>Q2</anno></c> that is the result of removing
+ the rear item from <c><anno>Q1</anno></c>.</p>
+ <p>Fails with reason <c>empty</c> if <c><anno>Q1</anno></c> is empty.</p>
</desc>
</func>
<func>
- <name>peek(Q) -> {value,Item} | empty</name>
+ <name name="peek" arity="1"/>
<fsummary>Return the front item of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q = queue()</v>
- </type>
<desc>
- <p>Returns the tuple <c>{value, Item}</c> where <c>Item</c> is the
- front item of <c>Q</c>, or <c>empty</c> if <c>Q1</c> is empty.</p>
+ <p>Returns the tuple <c>{value, <anno>Item</anno>}</c> where <c><anno>Item</anno></c> is the
+ front item of <c><anno>Q</anno></c>, or <c>empty</c> if <c><anno>Q</anno></c> is empty.</p>
</desc>
</func>
<func>
- <name>peek_r(Q) -> {value,Item} | empty</name>
+ <name name="peek_r" arity="1"/>
<fsummary>Return the rear item of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q = queue()</v>
- </type>
<desc>
- <p>Returns the tuple <c>{value, Item}</c> where <c>Item</c> is the
- rear item of <c>Q</c>, or <c>empty</c> if <c>Q1</c> is empty.</p>
+ <p>Returns the tuple <c>{value, <anno>Item</anno>}</c> where <c><anno>Item</anno></c> is the
+ rear item of <c><anno>Q</anno></c>, or <c>empty</c> if <c><anno>Q</anno></c> is empty.</p>
</desc>
</func>
</funcs>
@@ -372,80 +302,56 @@
<funcs>
<func>
- <name>cons(Item, Q1) -> Q2</name>
+ <name name="cons" arity="2"/>
<fsummary>Insert an item at the head of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Inserts <c>Item</c> at the head of queue <c>Q1</c>. Returns
- the new queue <c>Q2</c>.</p>
+ <p>Inserts <c><anno>Item</anno></c> at the head of queue <c><anno>Q1</anno></c>. Returns
+ the new queue <c><anno>Q2</anno></c>.</p>
</desc>
</func>
<func>
- <name>head(Q) -> Item</name>
+ <name name="head" arity="1"/>
<fsummary>Return the item at the head of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q = queue()</v>
- </type>
<desc>
- <p>Returns <c>Item</c> from the head of queue <c>Q</c>.</p>
- <p>Fails with reason <c>empty</c> if <c>Q</c> is empty.</p>
+ <p>Returns <c><anno>Item</anno></c> from the head of queue <c><anno>Q</anno></c>.</p>
+ <p>Fails with reason <c>empty</c> if <c><anno>Q</anno></c> is empty.</p>
</desc>
</func>
<func>
- <name>tail(Q1) -> Q2</name>
+ <name name="tail" arity="1"/>
<fsummary>Remove the head item from a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Returns a queue <c>Q2</c> that is the result of removing
- the head item from <c>Q1</c>.</p>
- <p>Fails with reason <c>empty</c> if <c>Q1</c> is empty.</p>
+ <p>Returns a queue <c><anno>Q2</anno></c> that is the result of removing
+ the head item from <c><anno>Q1</anno></c>.</p>
+ <p>Fails with reason <c>empty</c> if <c><anno>Q1</anno></c> is empty.</p>
</desc>
</func>
<func>
- <name>snoc(Q1, Item) -> Q2</name>
+ <name name="snoc" arity="2"/>
<fsummary>Insert an item at the tail of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Inserts <c>Item</c> as the tail item of queue <c>Q1</c>. Returns
- the new queue <c>Q2</c>.</p>
+ <p>Inserts <c><anno>Item</anno></c> as the tail item of queue <c><anno>Q1</anno></c>. Returns
+ the new queue <c><anno>Q2</anno></c>.</p>
</desc>
</func>
<func>
- <name>daeh(Q) -> Item</name>
- <name>last(Q) -> Item</name>
+ <name name="daeh" arity="1"/>
+ <name name="last" arity="1"/>
<fsummary>Return the tail item of a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q = queue()</v>
- </type>
<desc>
- <p>Returns the tail item of queue <c>Q</c>.</p>
- <p>Fails with reason <c>empty</c> if <c>Q</c> is empty.</p>
+ <p>Returns the tail item of queue <c><anno>Q</anno></c>.</p>
+ <p>Fails with reason <c>empty</c> if <c><anno>Q</anno></c> is empty.</p>
</desc>
</func>
<func>
- <name>liat(Q1) -> Q2</name>
- <name>init(Q1) -> Q2</name>
- <name>lait(Q1) -> Q2</name>
+ <name name="liat" arity="1"/>
+ <name name="init" arity="1"/>
+ <name name="lait" arity="1"/>
<fsummary>Remove the tail item from a queue</fsummary>
- <type>
- <v>Item = term()</v>
- <v>Q1 = Q2 = queue()</v>
- </type>
<desc>
- <p>Returns a queue <c>Q2</c> that is the result of removing
- the tail item from <c>Q1</c>.</p>
- <p>Fails with reason <c>empty</c> if <c>Q1</c> is empty.</p>
+ <p>Returns a queue <c><anno>Q2</anno></c> that is the result of removing
+ the tail item from <c><anno>Q1</anno></c>.</p>
+ <p>Fails with reason <c>empty</c> if <c><anno>Q1</anno></c> is empty.</p>
<p>The name <c>lait/1</c> is a misspelling - do not use it anymore.</p>
</desc>
</func>
diff --git a/lib/stdlib/doc/src/random.xml b/lib/stdlib/doc/src/random.xml
index dcc6d756e1..93affc3191 100644
--- a/lib/stdlib/doc/src/random.xml
+++ b/lib/stdlib/doc/src/random.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -49,9 +49,15 @@
strong. If a strong cryptographic random number generator is needed for
example <c>crypto:rand_bytes/1</c> could be used instead.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="ran"/>
+ <desc><p>The state.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>seed() -> ran()</name>
+ <name name="seed" arity="0"/>
<fsummary>Seeds random number generation with default values</fsummary>
<desc>
<p>Seeds random number generation with default (fixed) values
@@ -59,11 +65,8 @@
</desc>
</func>
<func>
- <name>seed(A1, A2, A3) -> undefined | ran()</name>
+ <name name="seed" arity="3"/>
<fsummary>Seeds random number generator</fsummary>
- <type>
- <v>A1 = A2 = A3 = integer()</v>
- </type>
<desc>
<p>Seeds random number generation with integer values in the process
dictionary, and returns the old state.</p>
@@ -76,26 +79,23 @@
</desc>
</func>
<func>
- <name>seed({A1, A2, A3}) -> undefined | ran()</name>
+ <name name="seed" arity="1"/>
<fsummary>Seeds random number generator</fsummary>
- <type>
- <v>A1 = A2 = A3 = integer()</v>
- </type>
<desc>
<p>
- <c>seed({A1, A2, A3})</c> is equivalent to <c>seed(A1, A2, A3)</c>.
+ <c>seed({<anno>A1</anno>, <anno>A2</anno>, <anno>A3</anno>})</c> is equivalent to <c>seed(<anno>A1</anno>, <anno>A2</anno>, <anno>A3</anno>)</c>.
</p>
</desc>
</func>
<func>
- <name>seed0() -> ran()</name>
+ <name name="seed0" arity="0"/>
<fsummary>Return default state for random number generation</fsummary>
<desc>
<p>Returns the default state.</p>
</desc>
</func>
<func>
- <name>uniform()-> float()</name>
+ <name name="uniform" arity="0"/>
<fsummary>Return a random float</fsummary>
<desc>
<p>Returns a random float uniformly distributed between <c>0.0</c>
@@ -103,39 +103,29 @@
</desc>
</func>
<func>
- <name>uniform(N) -> integer()</name>
+ <name name="uniform" arity="1"/>
<fsummary>Return a random integer</fsummary>
- <type>
- <v>N = integer()</v>
- </type>
<desc>
- <p>Given an integer <c>N >= 1</c>, <c>uniform/1</c> returns a
+ <p>Given an integer <c><anno>N</anno> >= 1</c>, <c>uniform/1</c> returns a
random integer uniformly distributed between <c>1</c> and
- <c>N</c>, updating the state in the process dictionary.</p>
+ <c><anno>N</anno></c>, updating the state in the process dictionary.</p>
</desc>
</func>
<func>
- <name>uniform_s(State0) -> {float(), State1}</name>
+ <name name="uniform_s" arity="1"/>
<fsummary>Return a random float</fsummary>
- <type>
- <v>State0 = State1 = ran()</v>
- </type>
<desc>
<p>Given a state, <c>uniform_s/1</c>returns a random float uniformly
distributed between <c>0.0</c> and <c>1.0</c>, and a new state.</p>
</desc>
</func>
<func>
- <name>uniform_s(N, State0) -> {integer(), State1}</name>
+ <name name="uniform_s" arity="2"/>
<fsummary>Return a random integer</fsummary>
- <type>
- <v>N = integer()</v>
- <v>State0 = State1 = ran()</v>
- </type>
<desc>
- <p>Given an integer <c>N >= 1</c> and a state, <c>uniform_s/2</c>
+ <p>Given an integer <c><anno>N</anno> >= 1</c> and a state, <c>uniform_s/2</c>
returns a random integer uniformly distributed between <c>1</c> and
- <c>N</c>, and a new state.</p>
+ <c><anno>N</anno></c>, and a new state.</p>
</desc>
</func>
</funcs>
diff --git a/lib/stdlib/doc/src/re.xml b/lib/stdlib/doc/src/re.xml
index 9091035392..b8db55fc26 100644
--- a/lib/stdlib/doc/src/re.xml
+++ b/lib/stdlib/doc/src/re.xml
@@ -59,28 +59,24 @@
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
- iodata() = iolist() | binary()
- iolist() = [char() | binary() | iolist()]
- - a binary is allowed as the tail of the list</code>
- <code type="none">
- unicode_binary() = binary() with characters encoded in UTF-8 coding standard
- unicode_char() = integer() representing a valid unicode codepoint
-
- chardata() = charlist() | unicode_binary()
-
- charlist() = [unicode_char() | unicode_binary() | charlist()]
- - a unicode_binary is allowed as the tail of the list</code>
-
- <code type="none">
- mp() = Opaque datatype containing a compiled regular expression.
- - The mp() is guaranteed to be a tuple() having the atom
+ <datatypes>
+ <datatype>
+ <name name="mp"/>
+ <desc>
+ <p>Opaque datatype containing a compiled regular expression.
+ The mp() is guaranteed to be a tuple() having the atom
're_pattern' as its first element, to allow for matching in
guards. The arity of the tuple() or the content of the other fields
- may change in future releases.</code>
- </section>
+ may change in future releases.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="nl_spec"/>
+ </datatype>
+ <datatype>
+ <name name="compile_option"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
<name>compile(Regexp) -> {ok, MP} | {error, ErrSpec}</name>
@@ -96,14 +92,14 @@
<name>compile(Regexp,Options) -> {ok, MP} | {error, ErrSpec}</name>
<fsummary>Compile a regular expression into a match program</fsummary>
<type>
- <v>Regexp = iodata() | charlist()</v>
+ <v>Regexp = iodata() | <seealso marker="unicode#type-charlist">io:charlist()</seealso></v>
<v>Options = [ Option ]</v>
<v>Option = unicode | anchored | caseless | dollar_endonly | dotall | extended | firstline | multiline | no_auto_capture | dupnames | ungreedy | {newline, NLSpec}| bsr_anycrlf | bsr_unicode</v>
- <v>NLSpec = cr | crlf | lf | anycrlf | any </v>
- <v>MP = mp()</v>
+ <v>NLSpec = <seealso marker="#type-nl_spec">nl_spec()</seealso></v>
+ <v>MP = <seealso marker="#type-mp">mp()</seealso></v>
<v>ErrSpec = {ErrString, Position}</v>
<v>ErrString = string()</v>
- <v>Position = int()</v>
+ <v>Position = non_neg_integer()</v>
</type>
<desc>
<p>This function compiles a regular expression with the syntax
@@ -116,7 +112,7 @@
time one wants to match.</p>
<p>When the unicode option is given, the regular expression should be given as a valid unicode <c>charlist()</c>, otherwise as any valid <c>iodata()</c>.</p>
- <p>The options have the following meanings:</p>
+ <p><marker id="compile_options"/>The options have the following meanings:</p>
<taglist>
<tag><c>unicode</c></tag>
<item>The regular expression is given as a unicode <c>charlist()</c> and the resulting regular expression code is to be run against a valid unicode <c>charlist()</c> subject.</item>
@@ -173,10 +169,10 @@ This option makes it possible to include comments inside complicated patterns. N
<name>run(Subject,RE) -> {match, Captured} | nomatch</name>
<fsummary>Match a subject against regular expression and capture subpatterns</fsummary>
<type>
- <v>Subject = iodata() | charlist()</v>
- <v>RE = mp() | iodata() | charlist()</v>
+ <v>Subject = iodata() | <seealso marker="unicode#type-charlist">io:charlist()</seealso></v>
+ <v>RE = <seealso marker="#type-mp">mp()</seealso> | iodata() | <seealso marker="unicode#type-charlist">io:charlist()</seealso></v>
<v>Captured = [ CaptureData ]</v>
- <v>CaptureData = {int(),int()}</v>
+ <v>CaptureData = {integer(),integer()}</v>
</type>
<desc>
<p>The same as <c>run(Subject,RE,[])</c>.</p>
@@ -186,18 +182,19 @@ This option makes it possible to include comments inside complicated patterns. N
<name>run(Subject,RE,Options) -> {match, Captured} | match | nomatch</name>
<fsummary>Match a subject against regular expression and capture subpatterns</fsummary>
<type>
- <v>Subject = iodata() | charlist()</v>
- <v>RE = mp() | iodata() | charlist()</v>
+ <v>Subject = iodata() | <seealso marker="unicode#type-charlist">io:charlist()</seealso></v>
+ <v>RE = <seealso marker="#type-mp">mp()</seealso> | iodata() | <seealso marker="unicode#type-charlist">io:charlist()</seealso></v>
<v>Options = [ Option ]</v>
- <v>Option = anchored | global | notbol | noteol | notempty | {offset, int()} | {newline, NLSpec} | bsr_anycrlf | bsr_unicode | {capture, ValueSpec} | {capture, ValueSpec, Type} | CompileOpt</v>
+ <v>Option = anchored | global | notbol | noteol | notempty | {offset, integer() >= 0} | {newline, NLSpec} | bsr_anycrlf | bsr_unicode | {capture, ValueSpec} | {capture, ValueSpec, Type} | CompileOpt</v>
<v>Type = index | list | binary</v>
<v>ValueSpec = all | all_but_first | first | none | ValueList</v>
<v>ValueList = [ ValueID ]</v>
- <v>ValueID = int() | string() | atom()</v>
- <v>CompileOpt = see compile/2 above</v>
- <v>NLSpec = cr | crlf | lf | anycrlf | any</v>
+ <v>ValueID = integer() | string() | atom()</v>
+ <v>CompileOpt = <seealso marker="#type-compile_option">compile_option()</seealso></v>
+ <d>See <seealso marker="#compile_options">compile/2</seealso> above.</d>
+ <v>NLSpec = <seealso marker="#type-nl_spec">nl_spec()</seealso></v>
<v>Captured = [ CaptureData ] | [ [ CaptureData ] ... ]</v>
- <v>CaptureData = {int(),int()} | ListConversionData | binary()</v>
+ <v>CaptureData = {integer(),integer()} | ListConversionData | binary()</v>
<v>ListConversionData = string() | {error, string(), binary()} | {incomplete, string(), binary()}</v>
</type>
<desc>
@@ -217,7 +214,7 @@ This option makes it possible to include comments inside complicated patterns. N
<p>If the regular expression is previously compiled, the option
list can only contain the options <c>anchored</c>,
<c>global</c>, <c>notbol</c>, <c>noteol</c>,
- <c>notempty</c>, <c>{offset, int()}</c>, <c>{newline,
+ <c>notempty</c>, <c>{offset, integer() >= 0}</c>, <c>{newline,
NLSpec}</c> and <c>{capture, ValueSpec}/{capture, ValueSpec,
Type}</c>. Otherwise all options valid for the
<c>re:compile/2</c> function are allowed as well. Options
@@ -360,7 +357,7 @@ This option makes it possible to include comments inside complicated patterns. N
behavior of the dollar metacharacter. It does not affect \Z or
\z.</item>
- <tag><c>{offset, int()}</c></tag>
+ <tag><c>{offset, integer() >= 0}</c></tag>
<item>Start matching at the offset (position) given in the
subject string. The offset is zero-based, so that the default is
@@ -503,42 +500,27 @@ This option makes it possible to include comments inside complicated patterns. N
</desc>
</func>
<func>
- <name>replace(Subject,RE,Replacement) -> iodata() | charlist()</name>
+ <name name="replace" arity="3"/>
<fsummary>Match a subject against regular expression and replace matching elements with Replacement</fsummary>
- <type>
- <v>Subject = iodata() | charlist()</v>
- <v>RE = mp() | iodata()</v>
- <v>Replacement = iodata() | charlist()</v>
- </type>
<desc>
- <p>The same as <c>replace(Subject,RE,Replacement,[])</c>.</p>
+ <p>The same as <c>replace(<anno>Subject</anno>,<anno>RE</anno>,<anno>Replacement</anno>,[])</c>.</p>
</desc>
</func>
<func>
- <name>replace(Subject,RE,Replacement,Options) -> iodata() | charlist() | binary() | list()</name>
+ <name name="replace" arity="4"/>
<fsummary>Match a subject against regular expression and replace matching elements with Replacement</fsummary>
- <type>
- <v>Subject = iodata() | charlist()</v>
- <v>RE = mp() | iodata() | charlist()</v>
- <v>Replacement = iodata() | charlist()</v>
- <v>Options = [ Option ]</v>
- <v>Option = anchored | global | notbol | noteol | notempty | {offset, int()} | {newline, NLSpec} | bsr_anycrlf | bsr_unicode | {return, ReturnType} | CompileOpt</v>
- <v>ReturnType = iodata | list | binary</v>
- <v>CompileOpt = see compile/2 above</v>
- <v>NLSpec = cr | crlf | lf | anycrlf | any </v>
- </type>
<desc>
- <p>Replaces the matched part of the <c>Subject</c> string with the contents of <c>Replacement</c>.</p>
+ <p>Replaces the matched part of the <c><anno>Subject</anno></c> string with the contents of <c><anno>Replacement</anno></c>.</p>
<p>The permissible options are the same as for <c>re:run/3</c>, except that the <c>capture</c> option is not allowed.
- Instead a <c>{return, ReturnType}</c> is present. The default return type is <c>iodata</c>, constructed in a
+ Instead a <c>{return, <anno>ReturnType</anno>}</c> is present. The default return type is <c>iodata</c>, constructed in a
way to minimize copying. The <c>iodata</c> result can be used directly in many i/o-operations. If a flat <c>list()</c> is
desired, specify <c>{return, list}</c> and if a binary is preferred, specify <c>{return, binary}</c>.</p>
<p>As in the <c>re:run/3</c> function, an <c>mp()</c> compiled
- with the <c>unicode</c> option requires the <c>Subject</c> to be
+ with the <c>unicode</c> option requires the <c><anno>Subject</anno></c> to be
a Unicode <c>charlist()</c>. If compilation is done implicitly
and the <c>unicode</c> compilation option is given to this
- function, both the regular expression and the <c>Subject</c>
+ function, both the regular expression and the <c><anno>Subject</anno></c>
should be given as valid Unicode <c>charlist()</c>s.</p>
<p>The replacement string can contain the special character
@@ -565,34 +547,17 @@ This option makes it possible to include comments inside complicated patterns. N
</desc>
</func>
<func>
- <name>split(Subject,RE) -> SplitList</name>
+ <name name="split" arity="2"/>
<fsummary>Split a string by tokens specified as a regular expression</fsummary>
- <type>
- <v>Subject = iodata() | charlist()</v>
- <v>RE = mp() | iodata()</v>
- <v>SplitList = [ iodata() | charlist() ]</v>
- </type>
<desc>
- <p>The same as <c>split(Subject,RE,[])</c>.</p>
+ <p>The same as <c>split(<anno>Subject</anno>,<anno>RE</anno>,[])</c>.</p>
</desc>
</func>
<func>
- <name>split(Subject,RE,Options) -> SplitList</name>
+ <name name="split" arity="3"/>
<fsummary>Split a string by tokens specified as a regular expression</fsummary>
- <type>
- <v>Subject = iodata() | charlist()</v>
- <v>RE = mp() | iodata() | charlist()</v>
- <v>Options = [ Option ]</v>
- <v>Option = anchored | global | notbol | noteol | notempty | {offset, int()} | {newline, NLSpec} | bsr_anycrlf | bsr_unicode | {return, ReturnType} | {parts, NumParts} | group | trim | CompileOpt</v>
- <v>NumParts = int() | infinity</v>
- <v>ReturnType = iodata | list | binary</v>
- <v>CompileOpt = see compile/2 above</v>
- <v>NLSpec = cr | crlf | lf | anycrlf | any </v>
- <v>SplitList = [ RetData ] | [ GroupedRetData ]</v>
- <v>GroupedRetData = [ RetData ]</v>
- <v>RetData = iodata() | charlist() | binary() | list()</v>
- </type>
+ <type_desc variable="CompileOpt">See <seealso marker="#compile_options">compile/2</seealso> above.</type_desc>
<desc>
<p>This function splits the input into parts by finding tokens
according to the regular expression supplied.</p>
@@ -602,10 +567,10 @@ This option makes it possible to include comments inside complicated patterns. N
of the string is removed from the output.</p>
<p>As in the <c>re:run/3</c> function, an <c>mp()</c> compiled
- with the <c>unicode</c> option requires the <c>Subject</c> to be
+ with the <c>unicode</c> option requires the <c><anno>Subject</anno></c> to be
a Unicode <c>charlist()</c>. If compilation is done implicitly
and the <c>unicode</c> compilation option is given to this
- function, both the regular expression and the <c>Subject</c>
+ function, both the regular expression and the <c><anno>Subject</anno></c>
should be given as valid Unicode <c>charlist()</c>s.</p>
<p>The result is given as a list of &quot;strings&quot;, the
@@ -722,7 +687,7 @@ This option makes it possible to include comments inside complicated patterns. N
<p>Summary of options not previously described for the <c>re:run/3</c> function:</p>
<taglist>
- <tag>{return,ReturnType}</tag>
+ <tag>{return,<anno>ReturnType</anno>}</tag>
<item><p>Specifies how the parts of the original string are presented in the result list. The possible types are:</p>
<taglist>
<tag>iodata</tag>
diff --git a/lib/stdlib/doc/src/regexp.xml b/lib/stdlib/doc/src/regexp.xml
index 8c4191c88f..35d8e1c3f8 100644
--- a/lib/stdlib/doc/src/regexp.xml
+++ b/lib/stdlib/doc/src/regexp.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -40,176 +40,150 @@
<p>This module contains functions for regular expression
matching and substitution.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="errordesc"></name>
+ </datatype>
+ <datatype>
+ <name name="regexp"></name>
+ <desc><p>Internal representation of a regular expression.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>match(String, RegExp) -> MatchRes</name>
+ <name name="match" arity="2"/>
<fsummary>Match a regular expression</fsummary>
- <type>
- <v>String = RegExp = string()</v>
- <v>MatchRes = {match,Start,Length} | nomatch | {error,errordesc()}</v>
- <v>Start = Length = integer()</v>
- </type>
<desc>
- <p>Finds the first, longest match of the regular expression <c>RegExp</c> in <c>String</c>. This function searches for the longest possible match and returns the first one found if there are several expressions of the same length. It returns as follows:</p>
+ <p>Finds the first, longest match of the regular expression <c><anno>RegExp</anno></c> in <c><anno>String</anno></c>. This function searches for the longest possible match and returns the first one found if there are several expressions of the same length. It returns as follows:</p>
<taglist>
- <tag><c>{match,Start,Length}</c></tag>
+ <tag><c>{match,<anno>Start</anno>,<anno>Length</anno>}</c></tag>
<item>
- <p>if the match succeeded. <c>Start</c> is the starting
- position of the match, and <c>Length</c> is the length of
+ <p>if the match succeeded. <c><anno>Start</anno></c> is the starting
+ position of the match, and <c><anno>Length</anno></c> is the length of
the matching string.</p>
</item>
<tag><c>nomatch</c></tag>
<item>
<p>if there were no matching characters.</p>
</item>
- <tag><c>{error,Error}</c></tag>
+ <tag><c>{error,<anno>Error</anno>}</c></tag>
<item>
- <p>if there was an error in <c>RegExp</c>.</p>
+ <p>if there was an error in <c><anno>RegExp</anno></c>.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>first_match(String, RegExp) -> MatchRes</name>
+ <name name="first_match" arity="2"/>
<fsummary>Match a regular expression</fsummary>
- <type>
- <v>String = RegExp = string()</v>
- <v>MatchRes = {match,Start,Length} | nomatch | {error,errordesc()}</v>
- <v>Start = Length = integer()</v>
- </type>
<desc>
- <p>Finds the first match of the regular expression <c>RegExp</c> in <c>String</c>. This call is
+ <p>Finds the first match of the regular expression <c><anno>RegExp</anno></c> in <c><anno>String</anno></c>. This call is
usually faster than <c>match</c> and it is also a useful way to ascertain that a match exists. It returns as follows:</p>
<taglist>
- <tag><c>{match,Start,Length}</c></tag>
+ <tag><c>{match,<anno>Start</anno>,<anno>Length</anno>}</c></tag>
<item>
- <p>if the match succeeded. <c>Start</c> is the starting
- position of the match and <c>Length</c> is the length of
+ <p>if the match succeeded. <c><anno>Start</anno></c> is the starting
+ position of the match and <c><anno>Length</anno></c> is the length of
the matching string.</p>
</item>
<tag><c>nomatch</c></tag>
<item>
<p>if there were no matching characters.</p>
</item>
- <tag><c>{error,Error}</c></tag>
+ <tag><c>{error,<anno>Error</anno>}</c></tag>
<item>
- <p>if there was an error in <c>RegExp</c>.</p>
+ <p>if there was an error in <c><anno>RegExp</anno></c>.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>matches(String, RegExp) -> MatchRes</name>
+ <name name="matches" arity="2"/>
<fsummary>Match a regular expression</fsummary>
- <type>
- <v>String = RegExp = string()</v>
- <v>MatchRes = {match, Matches} | {error, errordesc()}</v>
- <v>Matches = list()</v>
- </type>
<desc>
<p>Finds all non-overlapping matches of the
- expression <c>RegExp</c> in <c>String</c>.
+ expression <c><anno>RegExp</anno></c> in <c><anno>String</anno></c>.
It returns as follows:</p>
<taglist>
- <tag><c>{match, Matches}</c></tag>
+ <tag><c>{match, <anno>Matches</anno>}</c></tag>
<item>
<p>if the regular expression was correct.
- The list will be empty if there was no match. Each element in the list looks like <c>{Start, Length}</c>, where <c>Start</c> is the starting position of the match, and <c>Length</c> is the length of the matching string.</p>
+ The list will be empty if there was no match. Each element in the list looks like <c>{<anno>Start</anno>, <anno>Length</anno>}</c>, where <c><anno>Start</anno></c> is the starting position of the match, and <c><anno>Length</anno></c> is the length of the matching string.</p>
</item>
- <tag><c>{error,Error}</c></tag>
+ <tag><c>{error,<anno>Error</anno>}</c></tag>
<item>
- <p>if there was an error in <c>RegExp</c>.</p>
+ <p>if there was an error in <c><anno>RegExp</anno></c>.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>sub(String, RegExp, New) -> SubRes</name>
+ <name name="sub" arity="3"/>
<fsummary>Substitute the first occurrence of a regular expression</fsummary>
- <type>
- <v>String = RegExp = New = string()</v>
- <v>SubRes = {ok,NewString,RepCount} | {error,errordesc()}</v>
- <v>RepCount = integer()</v>
- </type>
<desc>
- <p>Substitutes the first occurrence of a substring matching <c>RegExp</c> in <c>String</c> with the string <c>New</c>. A <c><![CDATA[&]]></c> in the string <c>New</c> is replaced by the matched substring of <c>String</c>. <c><![CDATA[\&]]></c> puts a literal <c><![CDATA[&]]></c> into the replacement string. It returns as follows:</p>
+ <p>Substitutes the first occurrence of a substring matching <c><anno>RegExp</anno></c> in <c><anno>String</anno></c> with the string <c><anno>New</anno></c>. A <c><![CDATA[&]]></c> in the string <c><anno>New</anno></c> is replaced by the matched substring of <c><anno>String</anno></c>. <c><![CDATA[\&]]></c> puts a literal <c><![CDATA[&]]></c> into the replacement string. It returns as follows:</p>
<taglist>
- <tag><c>{ok,NewString,RepCount}</c></tag>
+ <tag><c>{ok,<anno>NewString</anno>,<anno>RepCount</anno>}</c></tag>
<item>
- <p>if <c>RegExp</c> is correct. <c>RepCount</c> is the number of replacements which have been made
+ <p>if <c><anno>RegExp</anno></c> is correct. <c><anno>RepCount</anno></c> is the number of replacements which have been made
(this will be either 0 or 1).</p>
</item>
- <tag><c>{error, Error}</c></tag>
+ <tag><c>{error, <anno>Error</anno>}</c></tag>
<item>
- <p>if there is an error in <c>RegExp</c>.</p>
+ <p>if there is an error in <c><anno>RegExp</anno></c>.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>gsub(String, RegExp, New) -> SubRes</name>
+ <name name="gsub" arity="3"/>
<fsummary>Substitute all occurrences of a regular expression</fsummary>
- <type>
- <v>String = RegExp = New = string()</v>
- <v>SubRes = {ok,NewString,RepCount} | {error,errordesc()}</v>
- <v>RepCount = integer()</v>
- </type>
<desc>
<p>The same as <c>sub</c>, except that all non-overlapping
occurrences of a substring matching
- <c>RegExp</c> in <c>String</c> are replaced by the string <c>New</c>. It returns:</p>
+ <c><anno>RegExp</anno></c> in <c><anno>String</anno></c> are replaced by the string <c><anno>New</anno></c>. It returns:</p>
<taglist>
- <tag><c>{ok,NewString,RepCount}</c></tag>
+ <tag><c>{ok,<anno>NewString</anno>,<anno>RepCount</anno>}</c></tag>
<item>
- <p>if <c>RegExp</c> is correct. <c>RepCount</c> is the number of replacements which have been made.</p>
+ <p>if <c><anno>RegExp</anno></c> is correct. <c><anno>RepCount</anno></c> is the number of replacements which have been made.</p>
</item>
- <tag><c>{error, Error}</c></tag>
+ <tag><c>{error, <anno>Error</anno>}</c></tag>
<item>
- <p>if there is an error in <c>RegExp</c>.</p>
+ <p>if there is an error in <c><anno>RegExp</anno></c>.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>split(String, RegExp) -> SplitRes</name>
+ <name name="split" arity="2"/>
<fsummary>Split a string into fields</fsummary>
- <type>
- <v>String = RegExp = string()</v>
- <v>SubRes = {ok,FieldList} | {error,errordesc()}</v>
- <v>Fieldlist = [string()]</v>
- </type>
<desc>
- <p><c>String</c> is split into fields (sub-strings) by the
- regular expression <c>RegExp</c>.</p>
+ <p><c><anno>String</anno></c> is split into fields (sub-strings) by the
+ regular expression <c><anno>RegExp</anno></c>.</p>
<p>If the separator expression is <c>" "</c> (a single space),
then the fields are separated by blanks and/or tabs and
leading and trailing blanks and tabs are discarded. For all
other values of the separator, leading and trailing blanks
and tabs are not discarded. It returns:</p>
<taglist>
- <tag><c>{ok, FieldList}</c></tag>
+ <tag><c>{ok, <anno>FieldList</anno>}</c></tag>
<item>
<p>to indicate that the string has been split up into the fields of
- <c>FieldList</c>.</p>
+ <c><anno>FieldList</anno></c>.</p>
</item>
- <tag><c>{error, Error}</c></tag>
+ <tag><c>{error, <anno>Error</anno>}</c></tag>
<item>
- <p>if there is an error in <c>RegExp</c>.</p>
+ <p>if there is an error in <c><anno>RegExp</anno></c>.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>sh_to_awk(ShRegExp) -> AwkRegExp</name>
+ <name name="sh_to_awk" arity="1"/>
<fsummary>Convert an <c>sh</c>regular expression into an <c>AWK</c>one</fsummary>
- <type>
- <v>ShRegExp AwkRegExp = string()</v>
- <v>SubRes = {ok,NewString,RepCount} | {error,errordesc()}</v>
- <v>RepCount = integer()</v>
- </type>
<desc>
<p>Converts the <c>sh</c> type regular expression
- <c>ShRegExp</c> into a full <c>AWK</c> regular
+ <c><anno>ShRegExp</anno></c> into a full <c>AWK</c> regular
expression. Returns the converted regular expression
string. <c>sh</c> expressions are used in the shell for
matching file names and have the following special
@@ -236,40 +210,32 @@
</desc>
</func>
<func>
- <name>parse(RegExp) -> ParseRes</name>
+ <name name="parse" arity="1"/>
<fsummary>Parse a regular expression</fsummary>
- <type>
- <v>RegExp = string()</v>
- <v>ParseRes = {ok,RE} | {error,errordesc()}</v>
- </type>
<desc>
- <p>Parses the regular expression <c>RegExp</c> and builds the
+ <p>Parses the regular expression <c><anno>RegExp</anno></c> and builds the
internal representation used in the other regular expression
functions. Such representations can be used in all of the
other functions instead of a regular expression string. This
is more efficient when the same regular expression is used
in many strings. It returns:</p>
<taglist>
- <tag><c>{ok, RE}</c>if <c>RegExp</c>is correct and <c>RE</c>is the internal representation.</tag>
+ <tag><c>{ok, <anno>RE</anno>}</c></tag>
<item>
- <p></p>
+ <p>if <c>RegExp</c> is correct and <c><anno>RE</anno></c> is the internal representation.</p>
</item>
- <tag><c>{error, Error}</c>if there is an error in <c>RegExpString</c>.</tag>
+ <tag><c>{error, <anno>Error</anno>}</c></tag>
<item>
- <p></p>
+ <p>if there is an error in <c><anno>RegExp</anno></c>.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>format_error(ErrorDescriptor) -> Chars</name>
+ <name name="format_error" arity="1"/>
<fsummary>Format an error descriptor</fsummary>
- <type>
- <v>ErrorDescriptor = errordesc()</v>
- <v>Chars = [char() | Chars]</v>
- </type>
<desc>
- <p>Returns a string which describes the error <c>ErrorDescriptor</c>
+ <p>Returns a string which describes the error <c><anno>ErrorDescriptor</anno></c>
returned when there is an error in a regular expression.</p>
</desc>
</func>
diff --git a/lib/stdlib/doc/src/sets.xml b/lib/stdlib/doc/src/sets.xml
index 3610bb0184..071ee437cb 100644
--- a/lib/stdlib/doc/src/sets.xml
+++ b/lib/stdlib/doc/src/sets.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2000</year><year>2009</year>
+ <year>2000</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -43,202 +43,141 @@
different if and only if they do not compare equal (<c>==</c>).</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-set()
- as returned by new/0</code>
- </section>
+ <datatypes>
+ <datatype>
+ <name><marker id="type-dict">set()</marker></name>
+ <desc><p>As returned by <c>new/0</c>.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>new() -> Set</name>
+ <name name="new" arity="0"/>
<fsummary>Return an empty set</fsummary>
- <type>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns a new empty set.</p>
</desc>
</func>
<func>
- <name>is_set(Set) -> bool()</name>
+ <name name="is_set" arity="1"/>
<fsummary>Test for an <c>Set</c></fsummary>
- <type>
- <v>Set = term()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Set</c> is a set of
+ <p>Returns <c>true</c> if <c><anno>Set</anno></c> is a set of
elements, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>size(Set) -> int()</name>
+ <name name="size" arity="1"/>
<fsummary>Return the number of elements in a set</fsummary>
- <type>
- <v>Set = term()</v>
- </type>
<desc>
- <p>Returns the number of elements in <c>Set</c>.</p>
+ <p>Returns the number of elements in <c><anno>Set</anno></c>.</p>
</desc>
</func>
<func>
- <name>to_list(Set) -> List</name>
+ <name name="to_list" arity="1"/>
<fsummary>Convert an <c>Set</c>into a list</fsummary>
- <type>
- <v>Set = set()</v>
- <v>List = [term()]</v>
- </type>
<desc>
- <p>Returns the elements of <c>Set</c> as a list.</p>
+ <p>Returns the elements of <c><anno>Set</anno></c> as a list.</p>
</desc>
</func>
<func>
- <name>from_list(List) -> Set</name>
+ <name name="from_list" arity="1"/>
<fsummary>Convert a list into an <c>Set</c></fsummary>
- <type>
- <v>List = [term()]</v>
- <v>Set = set()</v>
- </type>
<desc>
- <p>Returns an set of the elements in <c>List</c>.</p>
+ <p>Returns an set of the elements in <c><anno>List</anno></c>.</p>
</desc>
</func>
<func>
- <name>is_element(Element, Set) -> bool()</name>
+ <name name="is_element" arity="2"/>
<fsummary>Test for membership of an <c>Set</c></fsummary>
- <type>
- <v>Element = term()</v>
- <v>Set = set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Element</c> is an element of
- <c>Set</c>, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> if <c><anno>Element</anno></c> is an element of
+ <c><anno>Set</anno></c>, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>add_element(Element, Set1) -> Set2</name>
+ <name name="add_element" arity="2"/>
<fsummary>Add an element to an <c>Set</c></fsummary>
- <type>
- <v>Element = term()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
- <p>Returns a new set formed from <c>Set1</c> with
- <c>Element</c> inserted.</p>
+ <p>Returns a new set formed from <c><anno>Set1</anno></c> with
+ <c><anno>Element</anno></c> inserted.</p>
</desc>
</func>
<func>
- <name>del_element(Element, Set1) -> Set2</name>
+ <name name="del_element" arity="2"/>
<fsummary>Remove an element from an <c>Set</c></fsummary>
- <type>
- <v>Element = term()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
- <p>Returns <c>Set1</c>, but with <c>Element</c> removed.</p>
+ <p>Returns <c><anno>Set1</anno></c>, but with <c><anno>Element</anno></c> removed.</p>
</desc>
</func>
<func>
- <name>union(Set1, Set2) -> Set3</name>
+ <name name="union" arity="2"/>
<fsummary>Return the union of two <c>Sets</c></fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = set()</v>
- </type>
<desc>
- <p>Returns the merged (union) set of <c>Set1</c> and
- <c>Set2</c>.</p>
+ <p>Returns the merged (union) set of <c><anno>Set1</anno></c> and
+ <c><anno>Set2</anno></c>.</p>
</desc>
</func>
<func>
- <name>union(SetList) -> Set</name>
+ <name name="union" arity="1"/>
<fsummary>Return the union of a list of <c>Sets</c></fsummary>
- <type>
- <v>SetList = [set()]</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the merged (union) set of the list of sets.</p>
</desc>
</func>
<func>
- <name>intersection(Set1, Set2) -> Set3</name>
+ <name name="intersection" arity="2"/>
<fsummary>Return the intersection of two <c>Sets</c></fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = set()</v>
- </type>
<desc>
- <p>Returns the intersection of <c>Set1</c> and
- <c>Set2</c>.</p>
+ <p>Returns the intersection of <c><anno>Set1</anno></c> and
+ <c><anno>Set2</anno></c>.</p>
</desc>
</func>
<func>
- <name>intersection(SetList) -> Set</name>
+ <name name="intersection" arity="1"/>
<fsummary>Return the intersection of a list of <c>Sets</c></fsummary>
- <type>
- <v>SetList = [set()]</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the intersection of the non-empty list of sets.</p>
</desc>
</func>
<func>
- <name>is_disjoint(Set1, Set2) -> bool()</name>
+ <name name="is_disjoint" arity="2"/>
<fsummary>Check whether two <c>Sets</c> are disjoint</fsummary>
- <type>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if <c>Set1</c> and
- <c>Set2</c> are disjoint (have no elements in common),
+ <p>Returns <c>true</c> if <c><anno>Set1</anno></c> and
+ <c><anno>Set2</anno></c> are disjoint (have no elements in common),
and <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>subtract(Set1, Set2) -> Set3</name>
+ <name name="subtract" arity="2"/>
<fsummary>Return the difference of two <c>Sets</c></fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = set()</v>
- </type>
<desc>
- <p>Returns only the elements of <c>Set1</c> which are not
- also elements of <c>Set2</c>.</p>
+ <p>Returns only the elements of <c><anno>Set1</anno></c> which are not
+ also elements of <c><anno>Set2</anno></c>.</p>
</desc>
</func>
<func>
- <name>is_subset(Set1, Set2) -> bool()</name>
+ <name name="is_subset" arity="2"/>
<fsummary>Test for subset</fsummary>
- <type>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> when every element of <c>Set</c>1 is
- also a member of <c>Set2</c>, otherwise <c>false</c>.</p>
+ <p>Returns <c>true</c> when every element of <c><anno>Set1</anno></c>1 is
+ also a member of <c><anno>Set2</anno></c>, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>fold(Function, Acc0, Set) -> Acc1</name>
+ <name name="fold" arity="3"/>
<fsummary>Fold over set elements</fsummary>
- <type>
- <v>Function = fun (E, AccIn) -> AccOut</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>Set = set()</v>
- </type>
<desc>
- <p>Fold <c>Function</c> over every element in <c>Set</c>
+ <p>Fold <c><anno>Function</anno></c> over every element in <c><anno>Set</anno></c>
returning the final value of the accumulator.</p>
</desc>
</func>
<func>
- <name>filter(Pred, Set1) -> Set2</name>
+ <name name="filter" arity="2"/>
<fsummary>Filter set elements</fsummary>
- <type>
- <v>Pred = fun (E) -> bool()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
- <p>Filter elements in <c>Set1</c> with boolean function
- <c>Fun</c>.</p>
+ <p>Filter elements in <c><anno>Set1</anno></c> with boolean function
+ <c><anno>Pred</anno></c>.</p>
</desc>
</func>
</funcs>
diff --git a/lib/stdlib/doc/src/shell.xml b/lib/stdlib/doc/src/shell.xml
index 73cc1b33bd..bc2120c37d 100644
--- a/lib/stdlib/doc/src/shell.xml
+++ b/lib/stdlib/doc/src/shell.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2010</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -763,26 +763,20 @@ loop(N) ->
<funcs>
<func>
- <name>history(N) -> integer()</name>
+ <name name="history" arity="1"/>
<fsummary>Sets the number of previous commands to keep</fsummary>
- <type>
- <v>N = integer()</v>
- </type>
<desc>
<p>Sets the number of previous commands to keep in the
- history list to <c>N</c>. The previous number is returned.
+ history list to <c><anno>N</anno></c>. The previous number is returned.
The default number is 20.</p>
</desc>
</func>
<func>
- <name>results(N) -> integer()</name>
+ <name name="results" arity="1"/>
<fsummary>Sets the number of previous results to keep</fsummary>
- <type>
- <v>N = integer()</v>
- </type>
<desc>
<p>Sets the number of results from previous commands to keep in
- the history list to <c>N</c>. The previous number is returned.
+ the history list to <c><anno>N</anno></c>. The previous number is returned.
The default number is 20.</p>
</desc>
</func>
@@ -790,7 +784,7 @@ loop(N) ->
<name>catch_exception(Bool) -> Bool</name>
<fsummary>Sets the exception handling of the shell</fsummary>
<type>
- <v>Bool = bool()</v>
+ <v>Bool = boolean()</v>
</type>
<desc>
<p>Sets the exception handling of the evaluator process. The
@@ -804,38 +798,29 @@ loop(N) ->
</desc>
</func>
<func>
- <name>prompt_func(PromptFunc) -> prompt_func()</name>
+ <name name="prompt_func" arity="1"/>
<fsummary>Sets the shell prompt</fsummary>
- <type>
- <v>PromptFunc = prompt_func()</v>
- <v>prompt_func() = default | {Mod, Func}</v>
- <v>Mod = Func = atom()</v>
- </type>
<desc>
<p>Sets the shell prompt function to <c>PromptFunc</c>. The
previous prompt function is returned.</p>
</desc>
</func>
<func>
- <name>start_restricted(Module) -> ok | {error, Reason}</name>
+ <name name="start_restricted" arity="1"/>
<fsummary>Exits a normal shell and starts a restricted shell.</fsummary>
- <type>
- <v>Module = atom()</v>
- <v>Reason = atom()</v>
- </type>
<desc>
<p>Exits a normal shell and starts a restricted
- shell. <c>Module</c> specifies the callback module for the
+ shell. <c><anno>Module</anno></c> specifies the callback module for the
functions <c>local_allowed/3</c> and <c>non_local_allowed/3</c>.
The function is meant to be called from the shell.</p>
<p>If the callback module cannot be loaded, an error tuple is
- returned. The <c>Reason</c> in the error tuple is the one
+ returned. The <c><anno>Reason</anno></c> in the error tuple is the one
returned by the code loader when trying to load the code of the callback
module.</p>
</desc>
</func>
<func>
- <name>stop_restricted() -> ok</name>
+ <name name="stop_restricted" arity="0"/>
<fsummary>Exits a restricted shell and starts a normal shell.</fsummary>
<desc>
<p>Exits a restricted shell and starts a normal shell. The function
diff --git a/lib/stdlib/doc/src/slave.xml b/lib/stdlib/doc/src/slave.xml
index 168d83f301..15b6711731 100644
--- a/lib/stdlib/doc/src/slave.xml
+++ b/lib/stdlib/doc/src/slave.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -56,22 +56,16 @@
</description>
<funcs>
<func>
- <name>start(Host) -></name>
- <name>start(Host, Name) -></name>
- <name>start(Host, Name, Args) -> {ok, Node} | {error, Reason}</name>
+ <name name="start" arity="1"/>
+ <name name="start" arity="2"/>
+ <name name="start" arity="3"/>
<fsummary>Start a slave node on a host</fsummary>
- <type>
- <v>Host = Name = atom()</v>
- <v>Args = string()</v>
- <v>Node = node()</v>
- <v>Reason = timeout | no_rsh | {already_running, Node}</v>
- </type>
<desc>
- <p>Starts a slave node on the host <c>Host</c>. Host names need
+ <p>Starts a slave node on the host <c><anno>Host</anno></c>. Host names need
not necessarily be specified as fully qualified names; short
names can also be used. This is the same condition that
applies to names of distributed Erlang nodes.</p>
- <p>The name of the started node will be <c>Name@Host</c>. If no
+ <p>The name of the started node will be <c><anno>Name</anno>@<anno>Host</anno></c>. If no
name is provided, the name will be the same as the node which
executes the call (with the exception of the host name part of
the node name).</p>
@@ -79,7 +73,7 @@
terminal I/O which is produced at the slave is automatically
relayed to the master. Also, the file process will be relayed
to the master.</p>
- <p>The <c>Args</c> argument is used to set <c>erl</c> command
+ <p>The <c><anno>Args</anno></c> argument is used to set <c>erl</c> command
line arguments. If provided, it is passed to the new node and
can be used for a variety of purposes. See
<seealso marker="erts:erl#erl">erl(1)</seealso></p>
@@ -103,9 +97,9 @@
E = " -env DISPLAY " ++ net_adm:localhost() ++ ":0 ",
Arg = "-mnesia_dir " ++ M ++ " -pa " ++ Dir ++ E,
slave:start(H, Name, Arg).</code>
- <p>If successful, the function returns <c>{ok, Node}</c>,
- where <c>Node</c> is the name of the new node. Otherwise it
- returns <c>{error, Reason}</c>, where <c>Reason</c> can be
+ <p>If successful, the function returns <c>{ok, <anno>Node</anno>}</c>,
+ where <c><anno>Node</anno></c> is the name of the new node. Otherwise it
+ returns <c>{error, <anno>Reason</anno>}</c>, where <c><anno>Reason</anno></c> can be
one of:</p>
<taglist>
<tag><c>timeout</c></tag>
@@ -123,24 +117,18 @@ slave:start(H, Name, Arg).</code>
<item>
<p>There is no <c>rsh</c> program on the computer.</p>
</item>
- <tag><c>{already_running, Node}</c></tag>
+ <tag><c>{already_running, <anno>Node</anno>}</c></tag>
<item>
- <p>A node with the name <c>Name@Host</c> already exists.</p>
+ <p>A node with the name <c><anno>Name</anno>@<anno>Host</anno></c> already exists.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>start_link(Host) -></name>
- <name>start_link(Host, Name) -></name>
- <name>start_link(Host, Name, Args) -> {ok, Node} | {error, Reason}</name>
+ <name name="start_link" arity="1"/>
+ <name name="start_link" arity="2"/>
+ <name name="start_link" arity="3"/>
<fsummary>Start and link to a slave node on a host</fsummary>
- <type>
- <v>Host = Name = atom()</v>
- <v>Args = string()</v>
- <v>Node = node()</v>
- <v>Reason = timeout | no_rsh | {already_running, Node}</v>
- </type>
<desc>
<p>Starts a slave node in the same way as <c>start/1,2,3</c>,
except that the slave node is linked to the currently
@@ -151,11 +139,8 @@ slave:start(H, Name, Arg).</code>
</desc>
</func>
<func>
- <name>stop(Node) -> ok</name>
+ <name name="stop" arity="1"/>
<fsummary>Stop (kill) a node</fsummary>
- <type>
- <v>Node = node()</v>
- </type>
<desc>
<p>Stops (kills) a node.</p>
</desc>
@@ -177,12 +162,8 @@ slave:start(H, Name, Arg).</code>
</desc>
</func>
<func>
- <name>pseudo(Master, ServerList) -> ok</name>
+ <name name="pseudo" arity="2"/>
<fsummary>Start a number of pseudo servers</fsummary>
- <type>
- <v>Master = node()</v>
- <v>ServerList = [atom()]</v>
- </type>
<desc>
<p>Starts a number of pseudo servers. A pseudo server is a
server with a registered name which does absolutely nothing
@@ -198,16 +179,13 @@ rpc:call(N, slave, pseudo, [node(), [pxw_server]]).</code>
</desc>
</func>
<func>
- <name>relay(Pid)</name>
+ <name name="relay" arity="1"/>
<fsummary>Run a pseudo server</fsummary>
- <type>
- <v>Pid = pid()</v>
- </type>
<desc>
<p>Runs a pseudo server. This function never returns any value
and the process which executes the function will receive
messages. All messages received will simply be passed on to
- <c>Pid</c>.</p>
+ <c><anno>Pid</anno></c>.</p>
</desc>
</func>
</funcs>
diff --git a/lib/stdlib/doc/src/sofs.xml b/lib/stdlib/doc/src/sofs.xml
index 729df1e678..2e7768a1df 100644
--- a/lib/stdlib/doc/src/sofs.xml
+++ b/lib/stdlib/doc/src/sofs.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2001</year><year>2010</year>
+ <year>2001</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -181,10 +181,11 @@
the <marker id="canonical_map"></marker><em>canonical map</em> is
the function that maps every element of X onto its equivalence class.
</p>
- <p>Relations as defined above (as sets of ordered pairs) will from
- now on be referred to as <em>binary relations</em>. We call a
- set of ordered sets (x[1],&nbsp;...,&nbsp;x[n])
- an <em>(n-ary) relation</em>, and say that the relation is a subset of
+ <p><marker id="binary_relation"></marker>Relations as defined above
+ (as sets of ordered pairs) will from now on be referred to as
+ <em>binary relations</em>. We call a set of ordered sets
+ (x[1],&nbsp;...,&nbsp;x[n]) an <marker id="n_ary_relation"></marker>
+ <em>(n-ary) relation</em>, and say that the relation is a subset of
the <marker id="Cartesian_product_tuple"></marker>Cartesian product
X[1]&nbsp;&times;&nbsp;...&nbsp;&times;&nbsp;X[n] where x[i] is
an element of X[i], 1&nbsp;&lt;=&nbsp;i&nbsp;&lt;=&nbsp;n.
@@ -293,7 +294,8 @@
<c>partition_family/2</c>, <c>projection/2</c>,
<c>restriction/3</c>, <c>substitution/2</c>) accept an Erlang
function as a means to modify each element of a given unordered
- set. Such a function, called SetFun in the following, can be
+ set. <marker id="set_fun"></marker>Such a function, called
+ SetFun in the following, can be
specified as a functional object (fun), a tuple
<c>{external,&nbsp;Fun}</c>, or an integer. If SetFun is
specified as a fun, the fun is applied to each element of the
@@ -337,34 +339,73 @@ fun(S) -> sofs:partition(1, S) end
message when given badly formed arguments or sets the types of
which are not compatible.</p>
<p>When comparing external sets the operator <c>==/2</c> is used.</p>
- <p><em>Types</em></p>
- <pre>
-anyset() = -&nbsp;an unordered, ordered or atomic set&nbsp;-
-binary_relation() = -&nbsp;a binary relation&nbsp;-
-bool() = true | false
-external_set() = -&nbsp;an external set&nbsp;-
-family() = -&nbsp;a family (of subsets)&nbsp;-
-function() = -&nbsp;a function&nbsp;-
-ordset() = -&nbsp;an ordered set&nbsp;-
-relation() = -&nbsp;an n-ary relation&nbsp;-
-set() = -&nbsp;an unordered set&nbsp;-
-set_of_sets() = -&nbsp;an unordered set of set()&nbsp;-
-set_fun() = integer() >= 1
- | {external, fun(external_set()) -> external_set()}
- | fun(anyset()) -> anyset()
-spec_fun() = {external, fun(external_set()) -> bool()}
- | fun(anyset()) -> bool()
-type() = -&nbsp;a type&nbsp;- </pre>
</description>
+ <datatypes>
+ <datatype>
+ <name name="anyset"></name>
+ <desc><p>Any kind of set (also included are the atomic sets).</p></desc>
+ </datatype>
+ <datatype>
+ <name name="binary_relation"></name>
+ <desc><p>A <seealso marker="#binary_relation">binary
+ relation</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="external_set"></name>
+ <desc><p>An <seealso marker="#external_set">external
+ set</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="family"></name>
+ <desc><p>A <seealso marker="#family">family</seealso> (of subsets).</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="a_function"></name>
+ <desc><p>A <seealso marker="#function">function</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="ordset"></name>
+ <desc><p>An <seealso marker="#sets_definition">ordered
+ set</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="relation"></name>
+ <desc><p>An <seealso marker="#n_ary_relation">n-ary relation</seealso>.
+ </p></desc>
+ </datatype>
+ <datatype>
+ <name name="a_set"></name>
+ <desc><p>An <seealso marker="#sets_definition">unordered
+ set</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="set_of_sets"></name>
+ <desc><p>An <seealso marker="#sets_definition">unordered
+ set</seealso> of unordered sets.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="set_fun"></name>
+ <desc><p>A <seealso marker="#set_fun">SetFun</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="spec_fun"></name>
+ </datatype>
+ <datatype>
+ <name name="type"></name>
+ <desc><p>A <seealso marker="#type">type</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <!-- Parameterized opaque types are NYI: -->
+ <name><marker id="type-tuple_of">tuple_of(T)</marker></name>
+ <desc><p>A tuple where the elements are of type <c>T</c>.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>a_function(Tuples [, Type]) -> Function</name>
+ <name name="a_function" arity="1"/>
+ <name name="a_function" arity="2"/>
<fsummary>Create a function.</fsummary>
- <type>
- <v>Function = function()</v>
- <v>Tuples = [tuple()]</v>
- <v>Type = type()</v>
- </type>
<desc>
<p>Creates a <seealso marker="#function">function</seealso>.
<c>a_function(F,&nbsp;T)</c> is equivalent to
@@ -375,16 +416,12 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>canonical_relation(SetOfSets) -> BinRel</name>
+ <name name="canonical_relation" arity="1"/>
<fsummary>Return the canonical map.</fsummary>
- <type>
- <v>BinRel = binary_relation()</v>
- <v>SetOfSets = set_of_sets()</v>
- </type>
<desc>
<p>Returns the binary relation containing the elements
- (E,&nbsp;Set) such that Set belongs to SetOfSets and E
- belongs to Set. If SetOfSets is
+ (E,&nbsp;Set) such that Set belongs to <anno>SetOfSets</anno> and E
+ belongs to Set. If SetOfSets is
a <seealso marker="#partition">partition</seealso> of a set X and
R is the equivalence relation in X induced by SetOfSets, then the
returned relation is
@@ -398,14 +435,12 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>composite(Function1, Function2) -> Function3</name>
+ <name name="composite" arity="2"/>
<fsummary>Return the composite of two functions.</fsummary>
- <type>
- <v>Function1 = Function2 = Function3 = function()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#composite">composite</seealso> of
- the functions Function1 and Function2.</p>
+ the functions <anno>Function1</anno> and
+ <anno>Function2</anno>.</p>
<pre>
1> <input>F1 = sofs:a_function([{a,1},{b,2},{c,2}]),</input>
<input>F2 = sofs:a_function([{1,x},{2,y},{3,z}]),</input>
@@ -415,14 +450,9 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>constant_function(Set, AnySet) -> Function</name>
+ <name name="constant_function" arity="2"/>
<fsummary>Create the function that maps each element of a
set onto another set.</fsummary>
- <type>
- <v>AnySet = anyset()</v>
- <v>Function = function()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Creates the <seealso marker="#function">function</seealso>
that maps each element of the set Set onto AnySet.</p>
@@ -435,14 +465,11 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>converse(BinRel1) -> BinRel2</name>
+ <name name="converse" arity="1"/>
<fsummary>Return the converse of a binary relation.</fsummary>
- <type>
- <v>BinRel1 = BinRel2 = binary_relation()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#converse">converse</seealso>
- of the binary relation BinRel1.</p>
+ of the binary relation <anno>BinRel1</anno>.</p>
<pre>
1> <input>R1 = sofs:relation([{1,a},{2,b},{3,a}]),</input>
<input>R2 = sofs:converse(R1),</input>
@@ -451,31 +478,25 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>difference(Set1, Set2) -> Set3</name>
+ <name name="difference" arity="2"/>
<fsummary>Return the difference of two sets.</fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#difference">difference</seealso> of
- the sets Set1 and Set2.</p>
+ the sets <anno>Set1</anno> and <anno>Set2</anno>.</p>
</desc>
</func>
<func>
- <name>digraph_to_family(Graph [, Type]) -> Family</name>
+ <name name="digraph_to_family" arity="1"/>
+ <name name="digraph_to_family" arity="2"/>
<fsummary>Create a family from a directed graph.</fsummary>
- <type>
- <v>Graph = digraph() -&nbsp;see digraph(3)&nbsp;-</v>
- <v>Family = family()</v>
- <v>Type = type()</v>
- </type>
<desc>
<p>Creates a <seealso marker="#family">family</seealso> from
- the directed graph Graph. Each vertex a of Graph is
+ the directed graph <anno>Graph</anno>. Each vertex a of
+ <anno>Graph</anno> is
represented by a pair (a,&nbsp;{b[1],&nbsp;...,&nbsp;b[n]})
where the b[i]'s are the out-neighbours of a. If no type is
explicitly given, [{atom,&nbsp;[atom]}] is used as type of
- the family. It is assumed that Type is
+ the family. It is assumed that <anno>Type</anno> is
a <seealso marker="#valid_type">valid type</seealso> of the
external set of the family.</p>
<p>If G is a directed graph, it holds that the vertices and
@@ -484,15 +505,11 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>domain(BinRel) -> Set</name>
+ <name name="domain" arity="1"/>
<fsummary>Return the domain of a binary relation.</fsummary>
- <type>
- <v>BinRel = binary_relation()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#domain">domain</seealso> of
- the binary relation BinRel.</p>
+ the binary relation <anno>BinRel</anno>.</p>
<pre>
1> <input>R = sofs:relation([{1,a},{1,b},{2,b},{2,c}]),</input>
<input>S = sofs:domain(R),</input>
@@ -501,16 +518,13 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>drestriction(BinRel1, Set) -> BinRel2</name>
+ <name name="drestriction" arity="2"/>
<fsummary>Return a restriction of a binary relation.</fsummary>
- <type>
- <v>BinRel1 = BinRel2 = binary_relation()</v>
- <v>Set = set()</v>
- </type>
<desc>
- <p>Returns the difference between the binary relation BinRel1
+ <p>Returns the difference between the binary relation
+ <anno>BinRel1</anno>
and the <seealso marker="#restriction">restriction</seealso>
- of BinRel1 to Set.</p>
+ of <anno>BinRel1</anno> to <anno>Set</anno>.</p>
<pre>
1> <input>R1 = sofs:relation([{1,a},{2,b},{3,c}]),</input>
<input>S = sofs:set([2,4,6]),</input>
@@ -522,16 +536,13 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>drestriction(SetFun, Set1, Set2) -> Set3</name>
+ <name name="drestriction" arity="3"/>
<fsummary>Return a restriction of a relation.</fsummary>
- <type>
- <v>SetFun = set_fun()</v>
- <v>Set1 = Set2 = Set3 = set()</v>
- </type>
- <desc>
- <p>Returns a subset of Set1 containing those elements that do
- not yield an element in Set2 as the result of applying
- SetFun.</p>
+ <desc>
+ <p>Returns a subset of <anno>Set1</anno> containing those elements
+ that do
+ not yield an element in <anno>Set2</anno> as the result of applying
+ <anno>SetFun</anno>.</p>
<pre>
1> <input>SetFun = {external, fun({_A,B,C}) -> {B,C} end},</input>
<input>R1 = sofs:relation([{a,aa,1},{b,bb,2},{c,cc,3}]),</input>
@@ -544,11 +555,8 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>empty_set() -> Set</name>
+ <name name="empty_set" arity="0"/>
<fsummary>Return the untyped empty set.</fsummary>
- <type>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#sets_definition">untyped empty
set</seealso>. <c>empty_set()</c> is equivalent to
@@ -556,19 +564,14 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>extension(BinRel1, Set, AnySet) -> BinRel2</name>
+ <name name="extension" arity="3"/>
<fsummary>Extend the domain of a binary relation.</fsummary>
- <type>
- <v>AnySet = anyset()</v>
- <v>BinRel1 = BinRel2 = binary_relation()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#extension">extension</seealso> of
- BinRel1 such that
- for each element E in Set that does not belong to the
- <seealso marker="#domain">domain</seealso> of BinRel1,
- BinRel2 contains the pair (E,&nbsp;AnySet).</p>
+ <anno>BinRel1</anno> such that
+ for each element E in <anno>Set</anno> that does not belong to the
+ <seealso marker="#domain">domain</seealso> of <anno>BinRel1</anno>,
+ <anno>BinRel2</anno> contains the pair (E,&nbsp;AnySet).</p>
<pre>
1> <input>S = sofs:set([b,c]),</input>
<input>A = sofs:empty_set(),</input>
@@ -579,13 +582,9 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family(Tuples [, Type]) -> Family</name>
+ <name name="family" arity="1"/>
+ <name name="family" arity="2"/>
<fsummary>Create a family of subsets.</fsummary>
- <type>
- <v>Family = family()</v>
- <v>Tuples = [tuple()]</v>
- <v>Type = type()</v>
- </type>
<desc>
<p>Creates a <seealso marker="#family">family of subsets</seealso>.
<c>family(F,&nbsp;T)</c> is equivalent to
@@ -596,18 +595,17 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_difference(Family1, Family2) -> Family3</name>
+ <name name="family_difference" arity="2"/>
<fsummary>Return the difference of two families.</fsummary>
- <type>
- <v>Family1 = Family2 = Family3 = family()</v>
- </type>
<desc>
- <p>If Family1 and Family2
+ <p>If <anno>Family1</anno> and <anno>Family2</anno>
are <seealso marker="#family">families</seealso>, then
- Family3 is the family
+ <anno>Family3</anno> is the family
such that the index set is equal to the index set of
- Family1, and Family3[i] is the difference between Family1[i]
- and Family2[i] if Family2 maps i, Family1[i] otherwise.</p>
+ <anno>Family1</anno>, and <anno>Family3</anno>[i] is the
+ difference between <anno>Family1</anno>[i]
+ and <anno>Family2</anno>[i] if <anno>Family2</anno> maps i,
+ <anno>Family1</anno>[i] otherwise.</p>
<pre>
1> <input>F1 = sofs:family([{a,[1,2]},{b,[3,4]}]),</input>
<input>F2 = sofs:family([{b,[4,5]},{c,[6,7]}]),</input>
@@ -617,17 +615,18 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_domain(Family1) -> Family2</name>
+ <name name="family_domain" arity="1"/>
<fsummary>Return a family of domains.</fsummary>
- <type>
- <v>Family1 = Family2 = family()</v>
- </type>
- <desc>
- <p>If Family1 is a <seealso marker="#family">family</seealso>
- and Family1[i] is a binary relation for every i in the index
- set of Family1, then Family2 is the family with the same
- index set as Family1 such that Family2[i] is
- the <seealso marker="#domain">domain</seealso> of Family1[i].</p>
+ <desc>
+ <p>If <anno>Family1</anno> is
+ a <seealso marker="#family">family</seealso>
+ and <anno>Family1</anno>[i] is a binary relation for every i
+ in the index set of <anno>Family1</anno>,
+ then <anno>Family2</anno> is the family with the same index
+ set as <anno>Family1</anno> such
+ that <anno>Family2</anno>[i] is
+ the <seealso marker="#domain">domain</seealso> of
+ <anno>Family1</anno>[i].</p>
<pre>
1> <input>FR = sofs:from_term([{a,[{1,a},{2,b},{3,c}]},{b,[]},{c,[{4,d},{5,e}]}]),</input>
<input>F = sofs:family_domain(FR),</input>
@@ -636,17 +635,18 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_field(Family1) -> Family2</name>
+ <name name="family_field" arity="1"/>
<fsummary>Return a family of fields.</fsummary>
- <type>
- <v>Family1 = Family2 = family()</v>
- </type>
- <desc>
- <p>If Family1 is a <seealso marker="#family">family</seealso>
- and Family1[i] is a binary relation for every i in the index
- set of Family1, then Family2 is the family with the same
- index set as Family1 such that Family2[i] is
- the <seealso marker="#field">field</seealso> of Family1[i].</p>
+ <desc>
+ <p>If <anno>Family1</anno> is
+ a <seealso marker="#family">family</seealso>
+ and <anno>Family1</anno>[i] is a binary relation for every i
+ in the index set of <anno>Family1</anno>,
+ then <anno>Family2</anno> is the family with the same index
+ set as <anno>Family1</anno> such
+ that <anno>Family2</anno>[i] is
+ the <seealso marker="#field">field</seealso> of
+ <anno>Family1</anno>[i].</p>
<pre>
1> <input>FR = sofs:from_term([{a,[{1,a},{2,b},{3,c}]},{b,[]},{c,[{4,d},{5,e}]}]),</input>
<input>F = sofs:family_field(FR),</input>
@@ -657,21 +657,21 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_intersection(Family1) -> Family2</name>
+ <name name="family_intersection" arity="1"/>
<fsummary>Return the intersection of a family
of sets of sets.</fsummary>
- <type>
- <v>Family1 = Family2 = family()</v>
- </type>
- <desc>
- <p>If Family1 is a <seealso marker="#family">family</seealso>
- and Family1[i] is a set of sets for every i in the index set
- of Family1, then Family2 is the family with the same index
- set as Family1 such that Family2[i] is
- the <seealso marker="#intersection_n">intersection</seealso> of
- Family1[i].</p>
- <p>If Family1[i] is an empty set for some i, then the process
- exits with a <c>badarg</c> message.</p>
+ <desc>
+ <p>If <anno>Family1</anno> is
+ a <seealso marker="#family">family</seealso>
+ and <anno>Family1</anno>[i] is a set of sets for every i in
+ the index set of <anno>Family1</anno>,
+ then <anno>Family2</anno> is the family with the same index
+ set as <anno>Family1</anno> such
+ that <anno>Family2</anno>[i] is
+ the <seealso marker="#intersection_n">intersection</seealso>
+ of <anno>Family1</anno>[i].</p>
+ <p>If <anno>Family1</anno>[i] is an empty set for some i, then
+ the process exits with a <c>badarg</c> message.</p>
<pre>
1> <input>F1 = sofs:from_term([{a,[[1,2,3],[2,3,4]]},{b,[[x,y,z],[x,y]]}]),</input>
<input>F2 = sofs:family_intersection(F1),</input>
@@ -680,17 +680,16 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_intersection(Family1, Family2) -> Family3</name>
+ <name name="family_intersection" arity="2"/>
<fsummary>Return the intersection of two families.</fsummary>
- <type>
- <v>Family1 = Family2 = Family3 = family()</v>
- </type>
- <desc>
- <p>If Family1 and Family2
- are <seealso marker="#family">families</seealso>, then Family3
- is the family such that the index set is the intersection of
- Family1's and Family2's index sets, and Family3[i] is the
- intersection of Family1[i] and Family2[i].</p>
+ <desc>
+ <p>If <anno>Family1</anno> and <anno>Family2</anno>
+ are <seealso marker="#family">families</seealso>,
+ then <anno>Family3</anno> is the family such that the index
+ set is the intersection of <anno>Family1</anno>'s and
+ <anno>Family2</anno>'s index sets,
+ and <anno>Family3</anno>[i] is the intersection of
+ <anno>Family1</anno>[i] and <anno>Family2</anno>[i].</p>
<pre>
1> <input>F1 = sofs:family([{a,[1,2]},{b,[3,4]},{c,[5,6]}]),</input>
<input>F2 = sofs:family([{b,[4,5]},{c,[7,8]},{d,[9,10]}]),</input>
@@ -700,18 +699,16 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_projection(SetFun, Family1) -> Family2</name>
+ <name name="family_projection" arity="2"/>
<fsummary>Return a family of modified subsets.</fsummary>
- <type>
- <v>SetFun = set_fun()</v>
- <v>Family1 = Family2 = family()</v>
- <v>Set = set()</v>
- </type>
- <desc>
- <p>If Family1 is a <seealso marker="#family">family</seealso>
- then Family2 is the family with the same index set as
- Family1 such that Family2[i] is the result of calling SetFun
- with Family1[i] as argument.</p>
+ <desc>
+ <p>If <anno>Family1</anno> is
+ a <seealso marker="#family">family</seealso>
+ then <anno>Family2</anno> is the family with the same index
+ set as <anno>Family1</anno> such
+ that <anno>Family2</anno>[i] is the result of
+ calling <anno>SetFun</anno> with <anno>Family1</anno>[i] as
+ argument.</p>
<pre>
1> <input>F1 = sofs:from_term([{a,[[1,2],[2,3]]},{b,[[]]}]),</input>
<input>F2 = sofs:family_projection({sofs, union}, F1),</input>
@@ -720,17 +717,18 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_range(Family1) -> Family2</name>
+ <name name="family_range" arity="1"/>
<fsummary>Return a family of ranges.</fsummary>
- <type>
- <v>Family1 = Family2 = family()</v>
- </type>
- <desc>
- <p>If Family1 is a <seealso marker="#family">family</seealso>
- and Family1[i] is a binary relation for every i in the index
- set of Family1, then Family2 is the family with the same
- index set as Family1 such that Family2[i] is
- the <seealso marker="#range">range</seealso> of Family1[i].</p>
+ <desc>
+ <p>If <anno>Family1</anno> is
+ a <seealso marker="#family">family</seealso>
+ and <anno>Family1</anno>[i] is a binary relation for every i
+ in the index set of <anno>Family1</anno>,
+ then <anno>Family2</anno> is the family with the same index
+ set as <anno>Family1</anno> such
+ that <anno>Family2</anno>[i] is
+ the <seealso marker="#range">range</seealso> of
+ <anno>Family1</anno>[i].</p>
<pre>
1> <input>FR = sofs:from_term([{a,[{1,a},{2,b},{3,c}]},{b,[]},{c,[{4,d},{5,e}]}]),</input>
<input>F = sofs:family_range(FR),</input>
@@ -739,22 +737,21 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_specification(Fun, Family1) -> Family2</name>
+ <name name="family_specification" arity="2"/>
<fsummary>Select a subset of a family using a predicate.</fsummary>
- <type>
- <v>Fun = spec_fun()</v>
- <v>Family1 = Family2 = family()</v>
- </type>
- <desc>
- <p>If Family1 is a <seealso marker="#family">family</seealso>,
- then Family2 is
- the <seealso marker="#restriction">restriction</seealso> of
- Family1 to those elements i of the
- index set for which Fun applied to Family1[i] returns
- <c>true</c>. If Fun is a tuple <c>{external,&nbsp;Fun2}</c>,
- Fun2 is applied to
- the <seealso marker="#external_set">external set</seealso> of
- Family1[i], otherwise Fun is applied to Family1[i].</p>
+ <desc>
+ <p>If <anno>Family1</anno> is
+ a <seealso marker="#family">family</seealso>,
+ then <anno>Family2</anno> is
+ the <seealso marker="#restriction">restriction</seealso> of
+ <anno>Family1</anno> to those elements i of the index set
+ for which <anno>Fun</anno> applied
+ to <anno>Family1</anno>[i] returns
+ <c>true</c>. If <anno>Fun</anno> is a
+ tuple <c>{external,&nbsp;Fun2}</c>, Fun2 is applied to
+ the <seealso marker="#external_set">external set</seealso>
+ of <anno>Family1</anno>[i], otherwise <anno>Fun</anno> is
+ applied to <anno>Family1</anno>[i].</p>
<pre>
1> <input>F1 = sofs:family([{a,[1,2,3]},{b,[1,2]},{c,[1]}]),</input>
<input>SpecFun = fun(S) -> sofs:no_elements(S) =:= 2 end,</input>
@@ -764,24 +761,22 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_to_digraph(Family [, GraphType]) -> Graph</name>
+ <name name="family_to_digraph" arity="1"/>
+ <name name="family_to_digraph" arity="2"/>
<fsummary>Create a directed graph from a family.</fsummary>
- <type>
- <v>Graph = digraph()</v>
- <v>Family = family()</v>
- <v>GraphType = -&nbsp;see digraph(3)&nbsp;-</v>
- </type>
<desc>
<p>Creates a directed graph from
- the <seealso marker="#family">family</seealso> Family. For each
- pair (a,&nbsp;{b[1],&nbsp;...,&nbsp;b[n]}) of Family, the vertex
+ the <seealso marker="#family">family</seealso> <anno>Family</anno>.
+ For each pair (a,&nbsp;{b[1],&nbsp;...,&nbsp;b[n]})
+ of <anno>Family</anno>, the vertex
a as well the edges (a,&nbsp;b[i]) for
1&nbsp;&lt;=&nbsp;i&nbsp;&lt;=&nbsp;n are added to a newly
created directed graph.</p>
- <p>If no graph type is given, <c>digraph:new/1</c> is used for
- creating the directed graph, otherwise the GraphType
+ <p>If no graph type is given <seealso marker="digraph#new/0">
+ digraph:new/0</seealso> is used for
+ creating the directed graph, otherwise the <anno>GraphType</anno>
argument is passed on as second argument to
- <c>digraph:new/2</c>.</p>
+ <seealso marker="digraph#new/1">digraph:new/1</seealso>.</p>
<p>It F is a family, it holds that F is a subset of
<c>digraph_to_family(family_to_digraph(F),&nbsp;type(F))</c>.
Equality holds if <c>union_of_family(F)</c> is a subset of
@@ -791,17 +786,15 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_to_relation(Family) -> BinRel</name>
+ <name name="family_to_relation" arity="1"/>
<fsummary>Create a binary relation from a family.</fsummary>
- <type>
- <v>Family = family()</v>
- <v>BinRel = binary_relation()</v>
- </type>
- <desc>
- <p>If Family is a <seealso marker="#family">family</seealso>,
- then BinRel is the binary relation containing all pairs
- (i,&nbsp;x) such that i belongs to the index set of Family
- and x belongs to Family[i].</p>
+ <desc>
+ <p>If <anno>Family</anno> is
+ a <seealso marker="#family">family</seealso>,
+ then <anno>BinRel</anno> is the binary relation containing
+ all pairs (i,&nbsp;x) such that i belongs to the index set
+ of <anno>Family</anno> and x belongs
+ to <anno>Family</anno>[i].</p>
<pre>
1> <input>F = sofs:family([{a,[]}, {b,[1]}, {c,[2,3]}]),</input>
<input>R = sofs:family_to_relation(F),</input>
@@ -810,17 +803,18 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_union(Family1) -> Family2</name>
+ <name name="family_union" arity="1"/>
<fsummary>Return the union of a family of sets of sets.</fsummary>
- <type>
- <v>Family1 = Family2 = family()</v>
- </type>
- <desc>
- <p>If Family1 is a <seealso marker="#family">family</seealso>
- and Family1[i] is a set of sets for each i in the index set
- of Family1, then Family2 is the family with the same index
- set as Family1 such that Family2[i] is
- the <seealso marker="#union_n">union</seealso> of Family1[i].</p>
+ <desc>
+ <p>If <anno>Family1</anno> is
+ a <seealso marker="#family">family</seealso>
+ and <anno>Family1</anno>[i] is a set of sets for each i in
+ the index set of <anno>Family1</anno>,
+ then <anno>Family2</anno> is the family with the same index
+ set as <anno>Family1</anno> such
+ that <anno>Family2</anno>[i] is
+ the <seealso marker="#union_n">union</seealso> of
+ <anno>Family1</anno>[i].</p>
<pre>
1> <input>F1 = sofs:from_term([{a,[[1,2],[2,3]]},{b,[[]]}]),</input>
<input>F2 = sofs:family_union(F1),</input>
@@ -831,18 +825,18 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>family_union(Family1, Family2) -> Family3</name>
+ <name name="family_union" arity="2"/>
<fsummary>Return the union of two families.</fsummary>
- <type>
- <v>Family1 = Family2 = Family3 = family()</v>
- </type>
- <desc>
- <p>If Family1 and Family2
- are <seealso marker="#family">families</seealso>, then Family3
- is the family such that the index set is the union of Family1's
- and Family2's index sets, and Family3[i] is the union of
- Family1[i] and Family2[i] if both maps i, Family1[i] or
- Family2[i] otherwise.</p>
+ <desc>
+ <p>If <anno>Family1</anno> and <anno>Family2</anno>
+ are <seealso marker="#family">families</seealso>,
+ then <anno>Family3</anno> is the family such that the index
+ set is the union of <anno>Family1</anno>'s
+ and <anno>Family2</anno>'s index sets,
+ and <anno>Family3</anno>[i] is the union
+ of <anno>Family1</anno>[i] and <anno>Family2</anno>[i] if
+ both maps i, <anno>Family1</anno>[i]
+ or <anno>Family2</anno>[i] otherwise.</p>
<pre>
1> <input>F1 = sofs:family([{a,[1,2]},{b,[3,4]},{c,[5,6]}]),</input>
<input>F2 = sofs:family([{b,[4,5]},{c,[7,8]},{d,[9,10]}]),</input>
@@ -852,15 +846,11 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>field(BinRel) -> Set</name>
+ <name name="field" arity="1"/>
<fsummary>Return the field of a binary relation.</fsummary>
- <type>
- <v>BinRel = binary_relation()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#field">field</seealso> of the
- binary relation BinRel.</p>
+ binary relation <anno>BinRel</anno>.</p>
<pre>
1> <input>R = sofs:relation([{1,a},{1,b},{2,b},{2,c}]),</input>
<input>S = sofs:field(R),</input>
@@ -871,31 +861,24 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>from_external(ExternalSet, Type) -> AnySet</name>
+ <name name="from_external" arity="2"/>
<fsummary>Create a set.</fsummary>
- <type>
- <v>ExternalSet = external_set()</v>
- <v>AnySet = anyset()</v>
- <v>Type = type()</v>
- </type>
<desc>
<p>Creates a set from the <seealso marker="#external_set">external
- set</seealso> ExternalSet
- and the <seealso marker="#type">type</seealso> Type. It is
- assumed that Type is a <seealso marker="#valid_type">valid
- type</seealso> of ExternalSet.</p>
+ set</seealso> <anno>ExternalSet</anno>
+ and the <seealso marker="#type">type</seealso> <anno>Type</anno>.
+ It is assumed that <anno>Type</anno> is
+ a <seealso marker="#valid_type">valid
+ type</seealso> of <anno>ExternalSet</anno>.</p>
</desc>
</func>
<func>
- <name>from_sets(ListOfSets) -> Set</name>
+ <name name="from_sets" arity="1" clause_i="1"/>
<fsummary>Create a set out of a list of sets.</fsummary>
- <type>
- <v>Set = set()</v>
- <v>ListOfSets = [anyset()]</v>
- </type>
<desc>
<p>Returns the <seealso marker="#sets_definition">unordered
- set</seealso> containing the sets of the list ListOfSets.</p>
+ set</seealso> containing the sets of the list
+ <anno>ListOfSets</anno>.</p>
<pre>
1> <input>S1 = sofs:relation([{a,1},{b,2}]),</input>
<input>S2 = sofs:relation([{x,3},{y,4}]),</input>
@@ -905,38 +888,33 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>from_sets(TupleOfSets) -> Ordset</name>
+ <name name="from_sets" arity="1" clause_i="2"/>
<fsummary>Create an ordered set out of a tuple of sets.</fsummary>
- <type>
- <v>Ordset = ordset()</v>
- <v>TupleOfSets = tuple-of(anyset())</v>
- </type>
<desc>
<p>Returns the <seealso marker="#sets_definition">ordered
set</seealso> containing the sets of the non-empty tuple
- TupleOfSets.</p>
+ <anno>TupleOfSets</anno>.</p>
</desc>
</func>
<func>
- <name>from_term(Term [, Type]) -> AnySet</name>
+ <name name="from_term" arity="1"/>
+ <name name="from_term" arity="2"/>
<fsummary>Create a set.</fsummary>
- <type>
- <v>AnySet = anyset()</v>
- <v>Term = term()</v>
- <v>Type = type()</v>
- </type>
<desc>
<p><marker id="from_term"></marker>Creates an element
of <seealso marker="#sets_definition">Sets</seealso> by
- traversing the term Term, sorting lists, removing duplicates and
+ traversing the term <anno>Term</anno>, sorting lists,
+ removing duplicates and
deriving or verifying a <seealso marker="#valid_type">valid
type</seealso> for the so obtained external set. An
- explicitly given <seealso marker="#type">type</seealso> Type
+ explicitly given <seealso marker="#type">type</seealso>
+ <anno>Type</anno>
can be used to limit the depth of the traversal; an atomic
type stops the traversal, as demonstrated by this example
where "foo" and {"foo"} are left unmodified:</p>
<pre>
-1> <input>S = sofs:from_term([{{"foo"},[1,1]},{"foo",[2,2]}], [{atom,[atom]}]),</input>
+1> <input>S = sofs:from_term([{{"foo"},[1,1]},{"foo",[2,2]}],
+[{atom,[atom]}]),</input>
<input>sofs:to_external(S).</input>
[{{"foo"},[1]},{"foo",[2]}]</pre>
<p><c>from_term</c> can be used for creating atomic or ordered
@@ -963,15 +941,12 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>image(BinRel, Set1) -> Set2</name>
+ <name name="image" arity="2"/>
<fsummary>Return the image of a set under a binary relation.</fsummary>
- <type>
- <v>BinRel = binary_relation()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#image">image</seealso> of the
- set Set1 under the binary relation BinRel.</p>
+ set <anno>Set1</anno> under the binary
+ relation <anno>BinRel</anno>.</p>
<pre>
1> <input>R = sofs:relation([{1,a},{2,b},{2,c},{3,d}]),</input>
<input>S1 = sofs:set([1,2]),</input>
@@ -981,42 +956,32 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>intersection(SetOfSets) -> Set</name>
+ <name name="intersection" arity="1"/>
<fsummary>Return the intersection of a set of sets.</fsummary>
- <type>
- <v>Set = set()</v>
- <v>SetOfSets = set_of_sets()</v>
- </type>
<desc>
<p>Returns
the <seealso marker="#intersection_n">intersection</seealso> of
- the set of sets SetOfSets.</p>
+ the set of sets <anno>SetOfSets</anno>.</p>
<p>Intersecting an empty set of sets exits the process with a
<c>badarg</c> message.</p>
</desc>
</func>
<func>
- <name>intersection(Set1, Set2) -> Set3</name>
+ <name name="intersection" arity="2"/>
<fsummary>Return the intersection of two sets.</fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = set()</v>
- </type>
<desc>
<p>Returns
the <seealso marker="#intersection">intersection</seealso> of
- Set1 and Set2.</p>
+ <anno>Set1</anno> and <anno>Set2</anno>.</p>
</desc>
</func>
<func>
- <name>intersection_of_family(Family) -> Set</name>
+ <name name="intersection_of_family" arity="1"/>
<fsummary>Return the intersection of a family.</fsummary>
- <type>
- <v>Family = family()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the intersection of
- the <seealso marker="#family">family</seealso> Family.</p>
+ the <seealso marker="#family">family</seealso> <anno>Family</anno>.
+ </p>
<p>Intersecting an empty family exits the process with a
<c>badarg</c> message.</p>
<pre>
@@ -1027,14 +992,11 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>inverse(Function1) -> Function2</name>
+ <name name="inverse" arity="1"/>
<fsummary>Return the inverse of a function.</fsummary>
- <type>
- <v>Function1 = Function2 = function()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#inverse">inverse</seealso>
- of the function Function1.</p>
+ of the function <anno>Function1</anno>.</p>
<pre>
1> <input>R1 = sofs:relation([{1,a},{2,b},{3,c}]),</input>
<input>R2 = sofs:inverse(R1),</input>
@@ -1043,16 +1005,13 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>inverse_image(BinRel, Set1) -> Set2</name>
+ <name name="inverse_image" arity="2"/>
<fsummary>Return the inverse image of a set under
a binary relation.</fsummary>
- <type>
- <v>BinRel = binary_relation()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
- <p>Returns the <seealso marker="#inverse_image">inverse
- image</seealso> of Set1 under the binary relation BinRel.</p>
+ <p>Returns the <seealso marker="#inverse_image">inverse
+ image</seealso> of <anno>Set1</anno> under the binary
+ relation <anno>BinRel</anno>.</p>
<pre>
1> <input>R = sofs:relation([{1,a},{2,b},{2,c},{3,d}]),</input>
<input>S1 = sofs:set([c,d,e]),</input>
@@ -1062,52 +1021,38 @@ type() = -&nbsp;a type&nbsp;- </pre>
</desc>
</func>
<func>
- <name>is_a_function(BinRel) -> Bool</name>
+ <name name="is_a_function" arity="1"/>
<fsummary>Test for a function.</fsummary>
- <type>
- <v>Bool = bool()</v>
- <v>BinRel = binary_relation()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if the binary relation BinRel is a
- <seealso marker="#function">function</seealso> or the
+ <p>Returns <c>true</c> if the binary relation <anno>BinRel</anno>
+ is a <seealso marker="#function">function</seealso> or the
untyped empty set, <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>is_disjoint(Set1, Set2) -> Bool</name>
+ <name name="is_disjoint" arity="2"/>
<fsummary>Test for disjoint sets.</fsummary>
- <type>
- <v>Bool = bool()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if Set1 and Set2
+ <p>Returns <c>true</c> if <anno>Set1</anno>
+ and <anno>Set2</anno>
are <seealso marker="#disjoint">disjoint</seealso>, <c>false</c>
otherwise.</p>
</desc>
</func>
<func>
- <name>is_empty_set(AnySet) -> Bool</name>
+ <name name="is_empty_set" arity="1"/>
<fsummary>Test for an empty set.</fsummary>
- <type>
- <v>AnySet = anyset()</v>
- <v>Bool = bool()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if Set is an empty unordered set,
- <c>false</c> otherwise.</p>
+ <p>Returns <c>true</c> if <anno>AnySet</anno> is an empty
+ unordered set, <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>is_equal(AnySet1, AnySet2) -> Bool</name>
+ <name name="is_equal" arity="2"/>
<fsummary>Test two sets for equality.</fsummary>
- <type>
- <v>AnySet1 = AnySet2 = anyset()</v>
- <v>Bool = bool()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if the AnySet1 and AnySet2
+ <p>Returns <c>true</c> if the <anno>AnySet1</anno>
+ and <anno>AnySet2</anno>
are <seealso marker="#equal">equal</seealso>, <c>false</c>
otherwise. This example shows that <c>==/2</c> is used when
comparing sets for equality:</p>
@@ -1119,67 +1064,49 @@ true</pre>
</desc>
</func>
<func>
- <name>is_set(AnySet) -> Bool</name>
+ <name name="is_set" arity="1"/>
<fsummary>Test for an unordered set.</fsummary>
- <type>
- <v>AnySet = anyset()</v>
- <v>Bool = bool()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if AnySet is
+ <p>Returns <c>true</c> if <anno>AnySet</anno> is
an <seealso marker="#sets_definition">unordered set</seealso>, and
- <c>false</c> if AnySet is an ordered set or an atomic set.</p>
+ <c>false</c> if <anno>AnySet</anno> is an ordered set or an
+ atomic set.</p>
</desc>
</func>
<func>
- <name>is_sofs_set(Term) -> Bool</name>
+ <name name="is_sofs_set" arity="1"/>
<fsummary>Test for an unordered set.</fsummary>
- <type>
- <v>Bool = bool()</v>
- <v>Term = term()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if Term is
+ <p>Returns <c>true</c> if <anno>Term</anno> is
an <seealso marker="#sets_definition">unordered set</seealso>, an
ordered set or an atomic set, <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>is_subset(Set1, Set2) -> Bool</name>
+ <name name="is_subset" arity="2"/>
<fsummary>Test two sets for subset.</fsummary>
- <type>
- <v>Bool = bool()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if Set1 is
- a <seealso marker="#subset">subset</seealso> of Set2, <c>false</c>
- otherwise.</p>
+ <p>Returns <c>true</c> if <anno>Set1</anno> is
+ a <seealso marker="#subset">subset</seealso>
+ of <anno>Set2</anno>, <c>false</c> otherwise.</p>
</desc>
</func>
<func>
- <name>is_type(Term) -> Bool</name>
+ <name name="is_type" arity="1"/>
<fsummary>Test for a type.</fsummary>
- <type>
- <v>Bool = bool()</v>
- <v>Term = term()</v>
- </type>
<desc>
- <p>Returns <c>true</c> if the term Term is
+ <p>Returns <c>true</c> if the term <anno>Term</anno> is
a <seealso marker="#type">type</seealso>.</p>
</desc>
</func>
<func>
- <name>join(Relation1, I, Relation2, J) -> Relation3</name>
+ <name name="join" arity="4"/>
<fsummary>Return the join of two relations.</fsummary>
- <type>
- <v>Relation1 = Relation2 = Relation3 = relation()</v>
- <v>I = J = integer() > 0</v>
- </type>
<desc>
<p>Returns the <seealso marker="#natural_join">natural
- join</seealso> of the relations Relation1 and Relation2 on
- coordinates I and J.</p>
+ join</seealso> of the relations <anno>Relation1</anno>
+ and <anno>Relation2</anno> on coordinates <anno>I</anno> and
+ <anno>J</anno>.</p>
<pre>
1> <input>R1 = sofs:relation([{a,x,1},{b,y,2}]),</input>
<input>R2 = sofs:relation([{1,f,g},{1,h,i},{2,3,4}]),</input>
@@ -1189,20 +1116,17 @@ true</pre>
</desc>
</func>
<func>
- <name>multiple_relative_product(TupleOfBinRels, BinRel1) -> BinRel2</name>
+ <name name="multiple_relative_product" arity="2"/>
<fsummary>Return the multiple relative product of a tuple of binary
relations and a relation.</fsummary>
- <type>
- <v>TupleOfBinRels = tuple-of(BinRel)</v>
- <v>BinRel = BinRel1 = BinRel2 = binary_relation()</v>
- </type>
- <desc>
- <p>If TupleOfBinRels is a non-empty tuple
- {R[1],&nbsp;...,&nbsp;R[n]} of binary relations and BinRel1
- is a binary relation, then BinRel2 is
+ <desc>
+ <p>If <anno>TupleOfBinRels</anno> is a non-empty tuple
+ {R[1],&nbsp;...,&nbsp;R[n]} of binary relations
+ and <anno>BinRel1</anno> is a binary relation,
+ then <anno>BinRel2</anno> is
the <seealso marker="#multiple_relative_product">multiple relative
product</seealso> of the ordered set
- (R[i],&nbsp;...,&nbsp;R[n]) and BinRel1.</p>
+ (R[i],&nbsp;...,&nbsp;R[n]) and <anno>BinRel1</anno>.</p>
<pre>
1> <input>Ri = sofs:relation([{a,1},{b,2},{c,3}]),</input>
<input>R = sofs:relation([{a,b},{b,c},{c,a}]),</input>
@@ -1212,29 +1136,21 @@ true</pre>
</desc>
</func>
<func>
- <name>no_elements(ASet) -> NoElements</name>
+ <name name="no_elements" arity="1"/>
<fsummary>Return the number of elements of a set.</fsummary>
- <type>
- <v>ASet = set() | ordset()</v>
- <v>NoElements = integer() >= 0 </v>
- </type>
<desc>
<p>Returns the number of elements of the ordered or unordered
- set ASet.</p>
+ set <anno>ASet</anno>.</p>
</desc>
</func>
<func>
- <name>partition(SetOfSets) -> Partition</name>
+ <name name="partition" arity="1"/>
<fsummary>Return the coarsest partition given a set of sets.</fsummary>
- <type>
- <v>SetOfSets = set_of_sets()</v>
- <v>Partition = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#partition">partition</seealso> of
- the union of the set of sets SetOfSets such that two
+ the union of the set of sets <anno>SetOfSets</anno> such that two
elements are considered equal if they belong to the same
- elements of SetOfSets.</p>
+ elements of <anno>SetOfSets</anno>.</p>
<pre>
1> <input>Sets1 = sofs:from_term([[a,b,c],[d,e,f],[g,h,i]]),</input>
<input>Sets2 = sofs:from_term([[b,c,d],[e,f,g],[h,i,j]]),</input>
@@ -1244,17 +1160,12 @@ true</pre>
</desc>
</func>
<func>
- <name>partition(SetFun, Set) -> Partition</name>
+ <name name="partition" arity="2"/>
<fsummary>Return a partition of a set.</fsummary>
- <type>
- <v>SetFun = set_fun()</v>
- <v>Partition = set()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#partition">partition</seealso> of
- Set such that two elements are considered equal if the
- results of applying SetFun are equal.</p>
+ <anno>Set</anno> such that two elements are considered equal
+ if the results of applying <anno>SetFun</anno> are equal.</p>
<pre>
1> <input>Ss = sofs:from_term([[a],[b],[c,d],[e,f]]),</input>
<input>SetFun = fun(S) -> sofs:from_term(sofs:no_elements(S)) end,</input>
@@ -1264,19 +1175,16 @@ true</pre>
</desc>
</func>
<func>
- <name>partition(SetFun, Set1, Set2) -> {Set3, Set4}</name>
+ <name name="partition" arity="3"/>
<fsummary>Return a partition of a set.</fsummary>
- <type>
- <v>SetFun = set_fun()</v>
- <v>Set1 = Set2 = Set3 = Set4 = set()</v>
- </type>
<desc>
<p>Returns a pair of sets that, regarded as constituting a
set, forms a <seealso marker="#partition">partition</seealso> of
- Set1. If the
- result of applying SetFun to an element of Set1 yields an
- element in Set2, the element belongs to Set3, otherwise the
- element belongs to Set4.</p>
+ <anno>Set1</anno>. If the
+ result of applying <anno>SetFun</anno> to an element
+ of <anno>Set1</anno> yields an element in <anno>Set2</anno>,
+ the element belongs to <anno>Set3</anno>, otherwise the
+ element belongs to <anno>Set4</anno>.</p>
<pre>
1> <input>R1 = sofs:relation([{1,a},{2,b},{3,c}]),</input>
<input>S = sofs:set([2,4,6]),</input>
@@ -1289,21 +1197,17 @@ true</pre>
</desc>
</func>
<func>
- <name>partition_family(SetFun, Set) -> Family</name>
+ <name name="partition_family" arity="2"/>
<fsummary>Return a family indexing a partition.</fsummary>
- <type>
- <v>Family = family()</v>
- <v>SetFun = set_fun()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#family">family</seealso>
- Family where the indexed set is
- a <seealso marker="#partition">partition</seealso> of Set
- such that two elements are considered equal if the results
- of applying SetFun are the same value i. This i is the index
- that Family maps onto
- the <seealso marker="#equivalence_class">equivalence
+ <anno>Family</anno> where the indexed set is
+ a <seealso marker="#partition">partition</seealso>
+ of <anno>Set</anno> such that two elements are considered
+ equal if the results of applying <anno>SetFun</anno> are the
+ same value i. This i is the index that <anno>Family</anno>
+ maps onto
+ the <seealso marker="#equivalence_class">equivalence
class</seealso>.</p>
<pre>
1> <input>S = sofs:relation([{a,a,a,a},{a,a,b,b},{a,b,b,b}]),</input>
@@ -1314,18 +1218,15 @@ true</pre>
</desc>
</func>
<func>
- <name>product(TupleOfSets) -> Relation</name>
+ <name name="product" arity="1"/>
<fsummary>Return the Cartesian product of a tuple of sets.</fsummary>
- <type>
- <v>Relation = relation()</v>
- <v>TupleOfSets = tuple-of(set())</v>
- </type>
<desc>
<p>Returns the <seealso marker="#Cartesian_product_tuple">Cartesian
product</seealso> of the non-empty tuple of sets
- TupleOfSets. If (x[1],&nbsp;...,&nbsp;x[n]) is an element of
- the n-ary relation Relation, then x[i] is drawn from element
- i of TupleOfSets.</p>
+ <anno>TupleOfSets</anno>. If (x[1],&nbsp;...,&nbsp;x[n]) is
+ an element of the n-ary relation <anno>Relation</anno>, then
+ x[i] is drawn from element i
+ of <anno>TupleOfSets</anno>.</p>
<pre>
1> <input>S1 = sofs:set([a,b]),</input>
<input>S2 = sofs:set([1,2]),</input>
@@ -1336,15 +1237,12 @@ true</pre>
</desc>
</func>
<func>
- <name>product(Set1, Set2) -> BinRel</name>
+ <name name="product" arity="2"/>
<fsummary>Return the Cartesian product of two sets.</fsummary>
- <type>
- <v>BinRel = binary_relation()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#Cartesian_product">Cartesian
- product</seealso> of Set1 and Set2.</p>
+ product</seealso> of <anno>Set1</anno>
+ and <anno>Set2</anno>.</p>
<pre>
1> <input>S1 = sofs:set([1,2]),</input>
<input>S2 = sofs:set([a,b]),</input>
@@ -1356,19 +1254,16 @@ true</pre>
</desc>
</func>
<func>
- <name>projection(SetFun, Set1) -> Set2</name>
+ <name name="projection" arity="2"/>
<fsummary>Return a set of substituted elements.</fsummary>
- <type>
- <v>SetFun = set_fun()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
<p>Returns the set created by substituting each element of
- Set1 by the result of applying SetFun to the element.</p>
- <p>If SetFun is a number i&nbsp;&gt;=&nbsp;1 and Set1 is a
- relation, then the returned set is
- the <seealso marker="#projection">projection</seealso> of Set1
- onto coordinate i.</p>
+ <anno>Set1</anno> by the result of
+ applying <anno>SetFun</anno> to the element.</p>
+ <p>If <anno>SetFun</anno> is a number i&nbsp;&gt;=&nbsp;1 and
+ <anno>Set1</anno> is a relation, then the returned set is
+ the <seealso marker="#projection">projection</seealso> of
+ <anno>Set1</anno> onto coordinate i.</p>
<pre>
1> <input>S1 = sofs:from_term([{1,a},{2,b},{3,a}]),</input>
<input>S2 = sofs:projection(2, S1),</input>
@@ -1377,15 +1272,11 @@ true</pre>
</desc>
</func>
<func>
- <name>range(BinRel) -> Set</name>
+ <name name="range" arity="1"/>
<fsummary>Return the range of a binary relation.</fsummary>
- <type>
- <v>BinRel = binary_relation()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#range">range</seealso> of the
- binary relation BinRel.</p>
+ binary relation <anno>BinRel</anno>.</p>
<pre>
1> <input>R = sofs:relation([{1,a},{1,b},{2,b},{2,c}]),</input>
<input>S = sofs:range(R),</input>
@@ -1394,41 +1285,33 @@ true</pre>
</desc>
</func>
<func>
- <name>relation(Tuples [, Type]) -> Relation</name>
+ <name name="relation" arity="1"/>
+ <name name="relation" arity="2"/>
<fsummary>Create a relation.</fsummary>
- <type>
- <v>N = integer()</v>
- <v>Type = N | type()</v>
- <v>Relation = relation()</v>
- <v>Tuples = [tuple()]</v>
- </type>
<desc>
<p>Creates a <seealso marker="#relation">relation</seealso>.
<c>relation(R,&nbsp;T)</c> is equivalent to
<c>from_term(R,&nbsp;T)</c>, if T is
a <seealso marker="#type">type</seealso> and the result is a
- relation. If Type is an integer N, then
+ relation. If <anno>Type</anno> is an integer N, then
<c>[{atom,&nbsp;...,&nbsp;atom}])</c>, where the size of the
tuple is N, is used as type of the relation. If no type is
- explicitly given, the size of the first tuple of Tuples is
+ explicitly given, the size of the first tuple of
+ <anno>Tuples</anno> is
used if there is such a tuple. <c>relation([])</c> is
equivalent to <c>relation([],&nbsp;2)</c>.</p>
</desc>
</func>
<func>
- <name>relation_to_family(BinRel) -> Family</name>
+ <name name="relation_to_family" arity="1"/>
<fsummary>Create a family from a binary relation.</fsummary>
- <type>
- <v>Family = family()</v>
- <v>BinRel = binary_relation()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#family">family</seealso>
- Family such that the index set is equal to
+ <anno>Family</anno> such that the index set is equal to
the <seealso marker="#domain">domain</seealso> of the binary
- relation BinRel, and Family[i] is
+ relation <anno>BinRel</anno>, and <anno>Family</anno>[i] is
the <seealso marker="#image">image</seealso> of the set of i
- under BinRel.</p>
+ under <anno>BinRel</anno>.</p>
<pre>
1> <input>R = sofs:relation([{b,1},{c,2},{c,3}]),</input>
<input>F = sofs:relation_to_family(R),</input>
@@ -1437,63 +1320,57 @@ true</pre>
</desc>
</func>
<func>
- <name>relative_product(TupleOfBinRels [, BinRel1]) -> BinRel2</name>
- <fsummary>Return the relative product of a tuple of binary relations
+ <name name="relative_product" arity="1"/>
+ <name name="relative_product" arity="2" clause_i="1"/>
+ <fsummary>Return the relative product of a list of binary relations
and a binary relation.</fsummary>
- <type>
- <v>TupleOfBinRels = tuple-of(BinRel)</v>
- <v>BinRel = BinRel1 = BinRel2 = binary_relation()</v>
- </type>
- <desc>
- <p>If TupleOfBinRels is a non-empty tuple
- {R[1],&nbsp;...,&nbsp;R[n]} of binary relations and BinRel1
- is a binary relation, then BinRel2 is
- the <seealso marker="#tuple_relative_product">relative
- product</seealso> of the ordered set (R[i],&nbsp;...,&nbsp;R[n])
- and BinRel1.</p>
- <p>If BinRel1 is omitted, the relation of equality between the
- elements of
- the <seealso marker="#Cartesian_product_tuple">Cartesian
- product</seealso> of the ranges of R[i],
+ <desc>
+ <p>If <anno>ListOfBinRels</anno> is a non-empty list
+ [R[1],&nbsp;...,&nbsp;R[n]] of binary relations and
+ <anno>BinRel1</anno>
+ is a binary relation, then <anno>BinRel2</anno> is the <seealso
+ marker="#tuple_relative_product">relative product</seealso>
+ of the ordered set (R[i],&nbsp;...,&nbsp;R[n]) and
+ <anno>BinRel1</anno>.</p>
+ <p>If <anno>BinRel1</anno> is omitted, the relation of equality
+ between the elements of
+ the <seealso marker="#Cartesian_product_tuple">Cartesian
+ product</seealso> of the ranges of R[i],
range&nbsp;R[1]&nbsp;&times;&nbsp;...&nbsp;&times;&nbsp;range&nbsp;R[n],
is used instead (intuitively, nothing is "lost").</p>
<pre>
1> <input>TR = sofs:relation([{1,a},{1,aa},{2,b}]),</input>
<input>R1 = sofs:relation([{1,u},{2,v},{3,c}]),</input>
-<input>R2 = sofs:relative_product({TR, R1}),</input>
+<input>R2 = sofs:relative_product([TR, R1]),</input>
<input>sofs:to_external(R2).</input>
[{1,{a,u}},{1,{aa,u}},{2,{b,v}}]</pre>
- <p>Note that <c>relative_product({R1},&nbsp;R2)</c> is
+ <p>Note that <c>relative_product([R1],&nbsp;R2)</c> is
different from <c>relative_product(R1,&nbsp;R2)</c>; the
- tuple of one element is not identified with the element
+ list of one element is not identified with the element
itself.</p>
</desc>
</func>
<func>
- <name>relative_product(BinRel1, BinRel2) -> BinRel3</name>
+ <name name="relative_product" arity="2" clause_i="2"/>
<fsummary>Return the relative product of
two binary relations.</fsummary>
- <type>
- <v>BinRel1 = BinRel2 = BinRel3 = binary_relation()</v>
- </type>
<desc>
<p><marker id="relprod_impl"></marker>Returns
the <seealso marker="#relative_product">relative
- product</seealso> of the binary relations BinRel1 and BinRel2.</p>
+ product</seealso> of the binary relations <anno>BinRel1</anno>
+ and <anno>BinRel2</anno>.</p>
</desc>
</func>
<func>
- <name>relative_product1(BinRel1, BinRel2) -> BinRel3</name>
+ <name name="relative_product1" arity="2"/>
<fsummary>Return the relative_product of
two binary relations.</fsummary>
- <type>
- <v>BinRel1 = BinRel2 = BinRel3 = binary_relation()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#relative_product">relative
product</seealso> of
the <seealso marker="#converse">converse</seealso> of the
- binary relation BinRel1 and the binary relation BinRel2.</p>
+ binary relation <anno>BinRel1</anno> and the binary
+ relation <anno>BinRel2</anno>.</p>
<pre>
1> <input>R1 = sofs:relation([{1,a},{1,aa},{2,b}]),</input>
<input>R2 = sofs:relation([{1,u},{2,v},{3,c}]),</input>
@@ -1505,15 +1382,12 @@ true</pre>
</desc>
</func>
<func>
- <name>restriction(BinRel1, Set) -> BinRel2</name>
+ <name name="restriction" arity="2"/>
<fsummary>Return a restriction of a binary relation.</fsummary>
- <type>
- <v>BinRel1 = BinRel2 = binary_relation()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#restriction">restriction</seealso> of
- the binary relation BinRel1 to Set.</p>
+ the binary relation <anno>BinRel1</anno>
+ to <anno>Set</anno>.</p>
<pre>
1> <input>R1 = sofs:relation([{1,a},{2,b},{3,c}]),</input>
<input>S = sofs:set([1,2,4]),</input>
@@ -1523,15 +1397,12 @@ true</pre>
</desc>
</func>
<func>
- <name>restriction(SetFun, Set1, Set2) -> Set3</name>
+ <name name="restriction" arity="3"/>
<fsummary>Return a restriction of a set.</fsummary>
- <type>
- <v>SetFun = set_fun()</v>
- <v>Set1 = Set2 = Set3 = set()</v>
- </type>
<desc>
- <p>Returns a subset of Set1 containing those elements that
- yield an element in Set2 as the result of applying SetFun.</p>
+ <p>Returns a subset of <anno>Set1</anno> containing those
+ elements that yield an element in <anno>Set2</anno> as the
+ result of applying <anno>SetFun</anno>.</p>
<pre>
1> <input>S1 = sofs:relation([{1,a},{2,b},{3,c}]),</input>
<input>S2 = sofs:set([b,c,d]),</input>
@@ -1541,13 +1412,9 @@ true</pre>
</desc>
</func>
<func>
- <name>set(Terms [, Type]) -> Set</name>
+ <name name="set" arity="1"/>
+ <name name="set" arity="2"/>
<fsummary>Create a set of atoms or any type of sets.</fsummary>
- <type>
- <v>Set = set()</v>
- <v>Terms = [term()]</v>
- <v>Type = type()</v>
- </type>
<desc>
<p>Creates an <seealso marker="#sets_definition">unordered
set</seealso>. <c>set(L,&nbsp;T)</c> is equivalent to
@@ -1557,18 +1424,16 @@ true</pre>
</desc>
</func>
<func>
- <name>specification(Fun, Set1) -> Set2</name>
+ <name name="specification" arity="2"/>
<fsummary>Select a subset using a predicate.</fsummary>
- <type>
- <v>Fun = spec_fun()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
<desc>
- <p>Returns the set containing every element of Set1 for which
- Fun returns <c>true</c>. If Fun is a tuple
+ <p>Returns the set containing every element
+ of <anno>Set1</anno> for which <anno>Fun</anno>
+ returns <c>true</c>. If <anno>Fun</anno> is a tuple
<c>{external,&nbsp;Fun2}</c>, Fun2 is applied to the
<seealso marker="#external_set">external set</seealso> of
- each element, otherwise Fun is applied to each element.</p>
+ each element, otherwise <anno>Fun</anno> is applied to each
+ element.</p>
<pre>
1> <input>R1 = sofs:relation([{a,1},{b,2}]),</input>
<input>R2 = sofs:relation([{x,1},{x,2},{y,3}]),</input>
@@ -1579,15 +1444,13 @@ true</pre>
</desc>
</func>
<func>
- <name>strict_relation(BinRel1) -> BinRel2</name>
+ <name name="strict_relation" arity="1"/>
<fsummary>Return the strict relation corresponding to
a given relation.</fsummary>
- <type>
- <v>BinRel1 = BinRel2 = binary_relation()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#strict_relation">strict
- relation</seealso> corresponding to the binary relation BinRel1.</p>
+ relation</seealso> corresponding to the binary
+ relation <anno>BinRel1</anno>.</p>
<pre>
1> <input>R1 = sofs:relation([{1,1},{1,2},{2,1},{2,2}]),</input>
<input>R2 = sofs:strict_relation(R1),</input>
@@ -1596,16 +1459,13 @@ true</pre>
</desc>
</func>
<func>
- <name>substitution(SetFun, Set1) -> Set2</name>
+ <name name="substitution" arity="2"/>
<fsummary>Return a function with a given set as domain.</fsummary>
- <type>
- <v>SetFun = set_fun()</v>
- <v>Set1 = Set2 = set()</v>
- </type>
- <desc>
- <p>Returns a function, the domain of which is Set1. The value
- of an element of the domain is the result of applying SetFun
- to the element.</p>
+ <desc>
+ <p>Returns a function, the domain of which
+ is <anno>Set1</anno>. The value of an element of the domain
+ is the result of applying <anno>SetFun</anno> to the
+ element.</p>
<pre>
1> <input>L = [{a,1},{b,2}].</input>
[{a,1},{b,2}]
@@ -1647,14 +1507,12 @@ images2(SetOfSets, BinRel) ->
</desc>
</func>
<func>
- <name>symdiff(Set1, Set2) -> Set3</name>
+ <name name="symdiff" arity="2"/>
<fsummary>Return the symmetric difference of two sets.</fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#symmetric_difference">symmetric
- difference</seealso> (or the Boolean sum) of Set1 and Set2.</p>
+ difference</seealso> (or the Boolean sum)
+ of <anno>Set1</anno> and <anno>Set2</anno>.</p>
<pre>
1> <input>S1 = sofs:set([1,2,3]),</input>
<input>S2 = sofs:set([2,3,4]),</input>
@@ -1664,88 +1522,67 @@ images2(SetOfSets, BinRel) ->
</desc>
</func>
<func>
- <name>symmetric_partition(Set1, Set2) -> {Set3, Set4, Set5}</name>
+ <name name="symmetric_partition" arity="2"/>
<fsummary>Return a partition of two sets.</fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = Set4 = Set5 = set()</v>
- </type>
<desc>
- <p>Returns a triple of sets: Set3 contains the elements
- of Set1 that do not belong to Set2; Set4 contains the
- elements of Set1 that belong to Set2; Set5 contains the
- elements of Set2 that do not belong to Set1.</p>
+ <p>Returns a triple of sets: <anno>Set3</anno> contains the
+ elements of <anno>Set1</anno> that do not belong
+ to <anno>Set2</anno>; <anno>Set4</anno> contains the
+ elements of <anno>Set1</anno> that belong
+ to <anno>Set2</anno>; <anno>Set5</anno> contains the
+ elements of <anno>Set2</anno> that do not belong
+ to <anno>Set1</anno>.</p>
</desc>
</func>
<func>
- <name>to_external(AnySet) -> ExternalSet</name>
+ <name name="to_external" arity="1"/>
<fsummary>Return the elements of a set.</fsummary>
- <type>
- <v>ExternalSet = external_set()</v>
- <v>AnySet = anyset()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#external_set">external
set</seealso> of an atomic, ordered or unordered set.</p>
</desc>
</func>
<func>
- <name>to_sets(ASet) -> Sets</name>
+ <name name="to_sets" arity="1"/>
<fsummary>Return a list or a tuple of the elements of set.</fsummary>
- <type>
- <v>ASet = set() | ordset()</v>
- <v>Sets = tuple_of(AnySet) | [AnySet]</v>
- </type>
<desc>
- <p>Returns the elements of the ordered set ASet as a tuple of
- sets, and the elements of the unordered set ASet as a sorted
- list of sets without duplicates.</p>
+ <p>Returns the elements of the ordered set <anno>ASet</anno>
+ as a tuple of sets, and the elements of the unordered set
+ <anno>ASet</anno> as a sorted list of sets without
+ duplicates.</p>
</desc>
</func>
<func>
- <name>type(AnySet) -> Type</name>
+ <name name="type" arity="1"/>
<fsummary>Return the type of a set.</fsummary>
- <type>
- <v>AnySet = anyset()</v>
- <v>Type = type()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#type">type</seealso> of an
atomic, ordered or unordered set.</p>
</desc>
</func>
<func>
- <name>union(SetOfSets) -> Set</name>
+ <name name="union" arity="1"/>
<fsummary>Return the union of a set of sets.</fsummary>
- <type>
- <v>Set = set()</v>
- <v>SetOfSets = set_of_sets()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#union_n">union</seealso> of the
- set of sets SetOfSets.</p>
+ set of sets <anno>SetOfSets</anno>.</p>
</desc>
</func>
<func>
- <name>union(Set1, Set2) -> Set3</name>
+ <name name="union" arity="2"/>
<fsummary>Return the union of two sets.</fsummary>
- <type>
- <v>Set1 = Set2 = Set3 = set()</v>
- </type>
<desc>
<p>Returns the <seealso marker="#union">union</seealso> of
- Set1 and Set2.</p>
+ <anno>Set1</anno> and <anno>Set2</anno>.</p>
</desc>
</func>
<func>
- <name>union_of_family(Family) -> Set</name>
+ <name name="union_of_family" arity="1"/>
<fsummary>Return the union of a family.</fsummary>
- <type>
- <v>Family = family()</v>
- <v>Set = set()</v>
- </type>
<desc>
<p>Returns the union of
- the <seealso marker="#family">family</seealso> Family.</p>
+ the <seealso marker="#family">family</seealso> <anno>Family</anno>.
+ </p>
<pre>
1> <input>F = sofs:family([{a,[0,2,4]},{b,[0,1,2]},{c,[2,3]}]),</input>
<input>S = sofs:union_of_family(F),</input>
@@ -1754,17 +1591,15 @@ images2(SetOfSets, BinRel) ->
</desc>
</func>
<func>
- <name>weak_relation(BinRel1) -> BinRel2</name>
+ <name name="weak_relation" arity="1"/>
<fsummary>Return the weak relation corresponding to
a given relation.</fsummary>
- <type>
- <v>BinRel1 = BinRel2 = binary_relation()</v>
- </type>
<desc>
<p>Returns a subset S of the <seealso marker="#weak_relation">weak
relation</seealso> W
- corresponding to the binary relation BinRel1. Let F be the
- <seealso marker="#field">field</seealso> of BinRel1. The
+ corresponding to the binary relation <anno>BinRel1</anno>.
+ Let F be the <seealso marker="#field">field</seealso> of
+ <anno>BinRel1</anno>. The
subset S is defined so that x S y if x W y for some x in F
and for some y in F.</p>
<pre>
diff --git a/lib/stdlib/doc/src/specs.xml b/lib/stdlib/doc/src/specs.xml
new file mode 100644
index 0000000000..98338b5ec2
--- /dev/null
+++ b/lib/stdlib/doc/src/specs.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="latin1" ?>
+<specs xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:include href="../specs/specs_array.xml"/>
+ <xi:include href="../specs/specs_base64.xml"/>
+ <xi:include href="../specs/specs_beam_lib.xml"/>
+ <xi:include href="../specs/specs_binary.xml"/>
+ <xi:include href="../specs/specs_c.xml"/>
+ <xi:include href="../specs/specs_calendar.xml"/>
+ <xi:include href="../specs/specs_dets.xml"/>
+ <xi:include href="../specs/specs_dict.xml"/>
+ <xi:include href="../specs/specs_digraph.xml"/>
+ <xi:include href="../specs/specs_digraph_utils.xml"/>
+ <xi:include href="../specs/specs_epp.xml"/>
+ <xi:include href="../specs/specs_erl_eval.xml"/>
+ <xi:include href="../specs/specs_erl_expand_records.xml"/>
+ <xi:include href="../specs/specs_erl_id_trans.xml"/>
+ <xi:include href="../specs/specs_erl_internal.xml"/>
+ <xi:include href="../specs/specs_erl_lint.xml"/>
+ <xi:include href="../specs/specs_erl_parse.xml"/>
+ <xi:include href="../specs/specs_erl_pp.xml"/>
+ <xi:include href="../specs/specs_erl_scan.xml"/>
+ <xi:include href="../specs/specs_erl_tar.xml"/>
+ <xi:include href="../specs/specs_ets.xml"/>
+ <xi:include href="../specs/specs_file_sorter.xml"/>
+ <xi:include href="../specs/specs_filelib.xml"/>
+ <xi:include href="../specs/specs_filename.xml"/>
+ <xi:include href="../specs/specs_gb_sets.xml"/>
+ <xi:include href="../specs/specs_gb_trees.xml"/>
+ <xi:include href="../specs/specs_gen_event.xml"/>
+ <xi:include href="../specs/specs_gen_fsm.xml"/>
+ <xi:include href="../specs/specs_gen_server.xml"/>
+ <xi:include href="../specs/specs_io.xml"/>
+ <xi:include href="../specs/specs_io_lib.xml"/>
+ <xi:include href="../specs/specs_lib.xml"/>
+ <xi:include href="../specs/specs_lists.xml"/>
+ <xi:include href="../specs/specs_log_mf_h.xml"/>
+ <xi:include href="../specs/specs_math.xml"/>
+ <xi:include href="../specs/specs_ms_transform.xml"/>
+ <xi:include href="../specs/specs_orddict.xml"/>
+ <xi:include href="../specs/specs_ordsets.xml"/>
+ <xi:include href="../specs/specs_pg.xml"/>
+ <xi:include href="../specs/specs_pool.xml"/>
+ <xi:include href="../specs/specs_proc_lib.xml"/>
+ <xi:include href="../specs/specs_proplists.xml"/>
+ <xi:include href="../specs/specs_qlc.xml"/>
+ <xi:include href="../specs/specs_queue.xml"/>
+ <xi:include href="../specs/specs_random.xml"/>
+ <xi:include href="../specs/specs_re.xml"/>
+ <xi:include href="../specs/specs_regexp.xml"/>
+ <xi:include href="../specs/specs_sets.xml"/>
+ <xi:include href="../specs/specs_shell.xml"/>
+ <xi:include href="../specs/specs_shell_default.xml"/>
+ <xi:include href="../specs/specs_slave.xml"/>
+ <xi:include href="../specs/specs_sofs.xml"/>
+ <xi:include href="../specs/specs_string.xml"/>
+ <xi:include href="../specs/specs_supervisor.xml"/>
+ <xi:include href="../specs/specs_supervisor_bridge.xml"/>
+ <xi:include href="../specs/specs_sys.xml"/>
+ <xi:include href="../specs/specs_timer.xml"/>
+ <xi:include href="../specs/specs_unicode.xml"/>
+ <xi:include href="../specs/specs_win32reg.xml"/>
+ <xi:include href="../specs/specs_zip.xml"/>
+</specs>
diff --git a/lib/stdlib/doc/src/string.xml b/lib/stdlib/doc/src/string.xml
index de1b99a2d5..48867ffe72 100644
--- a/lib/stdlib/doc/src/string.xml
+++ b/lib/stdlib/doc/src/string.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -38,65 +38,46 @@
</description>
<funcs>
<func>
- <name>len(String) -> Length</name>
+ <name name="len" arity="1"/>
<fsummary>Return the length of a string</fsummary>
- <type>
- <v>String = string()</v>
- <v>Length = integer()</v>
- </type>
<desc>
<p>Returns the number of characters in the string.</p>
</desc>
</func>
<func>
- <name>equal(String1, String2) -> bool()</name>
+ <name name="equal" arity="2"/>
<fsummary>Test string equality</fsummary>
- <type>
- <v>String1 = String2 = string()</v>
- </type>
<desc>
<p>Tests whether two strings are equal. Returns <c>true</c> if
they are, otherwise <c>false</c>.</p>
</desc>
</func>
<func>
- <name>concat(String1, String2) -> String3</name>
+ <name name="concat" arity="2"/>
<fsummary>Concatenate two strings</fsummary>
- <type>
- <v>String1 = String2 = String3 = string()</v>
- </type>
<desc>
<p>Concatenates two strings to form a new string. Returns the
new string.</p>
</desc>
</func>
<func>
- <name>chr(String, Character) -> Index</name>
- <name>rchr(String, Character) -> Index</name>
+ <name name="chr" arity="2"/>
+ <name name="rchr" arity="2"/>
<fsummary>Return the index of the first/last occurrence of<c>Character</c>in <c>String</c></fsummary>
- <type>
- <v>String = string()</v>
- <v>Character = char()</v>
- <v>Index = integer()</v>
- </type>
<desc>
<p>Returns the index of the first/last occurrence of
- <c>Character</c> in <c>String</c>. <c>0</c> is returned if <c>Character</c> does not
+ <c><anno>Character</anno></c> in <c><anno>String</anno></c>. <c>0</c> is returned if <c><anno>Character</anno></c> does not
occur.</p>
</desc>
</func>
<func>
- <name>str(String, SubString) -> Index</name>
- <name>rstr(String, SubString) -> Index</name>
+ <name name="str" arity="2"/>
+ <name name="rstr" arity="2"/>
<fsummary>Find the index of a substring</fsummary>
- <type>
- <v>String = SubString = string()</v>
- <v>Index = integer()</v>
- </type>
<desc>
<p>Returns the position where the first/last occurrence of
- <c>SubString</c> begins in <c>String</c>. <c>0</c> is returned if <c>SubString</c>
- does not exist in <c>String</c>.
+ <c><anno>SubString</anno></c> begins in <c><anno>String</anno></c>. <c>0</c> is returned if <c><anno>SubString</anno></c>
+ does not exist in <c><anno>String</anno></c>.
For example:</p>
<code type="none">
> string:str(" Hello Hello World World ", "Hello World").
@@ -104,17 +85,13 @@
</desc>
</func>
<func>
- <name>span(String, Chars) -> Length </name>
- <name>cspan(String, Chars) -> Length</name>
+ <name name="span" arity="2"/>
+ <name name="cspan" arity="2"/>
<fsummary>Span characters at start of string</fsummary>
- <type>
- <v>String = Chars = string()</v>
- <v>Length = integer()</v>
- </type>
<desc>
<p>Returns the length of the maximum initial segment of
- String, which consists entirely of characters from (not
- from) Chars.</p>
+ <c><anno>String</anno></c>, which consists entirely of characters from (not
+ from) <c><anno>Chars</anno></c>.</p>
<p>For example:</p>
<code type="none">
> string:span("\t abcdef", " \t").
@@ -124,17 +101,13 @@
</desc>
</func>
<func>
- <name>substr(String, Start) -> SubString</name>
- <name>substr(String, Start, Length) -> Substring</name>
+ <name name="substr" arity="2"/>
+ <name name="substr" arity="3"/>
<fsummary>Return a substring of <c>String</c></fsummary>
- <type>
- <v>String = SubString = string()</v>
- <v>Start = Length = integer()</v>
- </type>
<desc>
- <p>Returns a substring of <c>String</c>, starting at the
- position <c>Start</c>, and ending at the end of the string or
- at length <c>Length</c>.</p>
+ <p>Returns a substring of <c><anno>String</anno></c>, starting at the
+ position <c><anno>Start</anno></c>, and ending at the end of the string or
+ at length <c><anno>Length</anno></c>.</p>
<p>For example:</p>
<code type="none">
> substr("Hello World", 4, 5).
@@ -142,15 +115,11 @@
</desc>
</func>
<func>
- <name>tokens(String, SeparatorList) -> Tokens</name>
+ <name name="tokens" arity="2"/>
<fsummary>Split string into tokens</fsummary>
- <type>
- <v>String = SeparatorList = string()</v>
- <v>Tokens = [string()]</v>
- </type>
<desc>
- <p>Returns a list of tokens in <c>String</c>, separated by the
- characters in <c>SeparatorList</c>.</p>
+ <p>Returns a list of tokens in <c><anno>String</anno></c>, separated by the
+ characters in <c><anno>SeparatorList</anno></c>.</p>
<p>For example:</p>
<code type="none">
> tokens("abc defxxghix jkl", "x ").
@@ -158,15 +127,11 @@
</desc>
</func>
<func>
- <name>join(StringList, Separator) -> String</name>
+ <name name="join" arity="2"/>
<fsummary>Join a list of strings with separator</fsummary>
- <type>
- <v>StringList = [string()]</v>
- <v>Separator = string()</v>
- </type>
<desc>
- <p>Returns a string with the elements of <c>StringList</c>
- separated by the string in <c>Seperator</c>.</p>
+ <p>Returns a string with the elements of <c><anno>StringList</anno></c>
+ separated by the string in <c><anno>Separator</anno></c>.</p>
<p>For example:</p>
<code type="none">
> join(["one", "two", "three"], ", ").
@@ -174,44 +139,30 @@
</desc>
</func>
<func>
- <name>chars(Character, Number) -> String</name>
- <name>chars(Character, Number, Tail) -> String</name>
+ <name name="chars" arity="2"/>
+ <name name="chars" arity="3"/>
<fsummary>Returns a string consisting of numbers of characters</fsummary>
- <type>
- <v>Character = char()</v>
- <v>Number = integer()</v>
- <v>String = string()</v>
- </type>
<desc>
- <p>Returns a string consisting of <c>Number</c> of characters
- <c>Character</c>. Optionally, the string can end with the
- string <c>Tail</c>.</p>
+ <p>Returns a string consisting of <c><anno>Number</anno></c> of characters
+ <c><anno>Character</anno></c>. Optionally, the string can end with the
+ string <c><anno>Tail</anno></c>.</p>
</desc>
</func>
<func>
- <name>copies(String, Number) -> Copies</name>
+ <name name="copies" arity="2"/>
<fsummary>Copy a string</fsummary>
- <type>
- <v>String = Copies = string()</v>
- <v>Number = integer()</v>
- </type>
<desc>
- <p>Returns a string containing <c>String</c> repeated
- <c>Number</c> times.</p>
+ <p>Returns a string containing <c><anno>String</anno></c> repeated
+ <c><anno>Number</anno></c> times.</p>
</desc>
</func>
<func>
- <name>words(String) -> Count</name>
- <name>words(String, Character) -> Count</name>
+ <name name="words" arity="1"/>
+ <name name="words" arity="2"/>
<fsummary>Count blank separated words</fsummary>
- <type>
- <v>String = string()</v>
- <v>Character = char()</v>
- <v>Count = integer()</v>
- </type>
<desc>
- <p>Returns the number of words in <c>String</c>, separated by
- blanks or <c>Character</c>.</p>
+ <p>Returns the number of words in <c><anno>String</anno></c>, separated by
+ blanks or <c><anno>Character</anno></c>.</p>
<p>For example:</p>
<code type="none">
> words(" Hello old boy!", $o).
@@ -219,17 +170,12 @@
</desc>
</func>
<func>
- <name>sub_word(String, Number) -> Word</name>
- <name>sub_word(String, Number, Character) -> Word</name>
+ <name name="sub_word" arity="2"/>
+ <name name="sub_word" arity="3"/>
<fsummary>Extract subword</fsummary>
- <type>
- <v>String = Word = string()</v>
- <v>Character = char()</v>
- <v>Number = integer()</v>
- </type>
<desc>
- <p>Returns the word in position <c>Number</c> of <c>String</c>.
- Words are separated by blanks or <c>Character</c>s.</p>
+ <p>Returns the word in position <c><anno>Number</anno></c> of <c><anno>String</anno></c>.
+ Words are separated by blanks or <c><anno>Character</anno></c>s.</p>
<p>For example:</p>
<code type="none">
> string:sub_word(" Hello old boy !",3,$o).
@@ -237,19 +183,14 @@
</desc>
</func>
<func>
- <name>strip(String) -> Stripped</name>
- <name>strip(String, Direction) -> Stripped</name>
- <name>strip(String, Direction, Character) -> Stripped</name>
+ <name name="strip" arity="1"/>
+ <name name="strip" arity="2"/>
+ <name name="strip" arity="3"/>
<fsummary>Strip leading or trailing characters</fsummary>
- <type>
- <v>String = Stripped = string()</v>
- <v>Direction = left | right | both</v>
- <v>Character = char()</v>
- </type>
<desc>
<p>Returns a string, where leading and/or trailing blanks or a
- number of <c>Character</c> have been removed.
- <c>Direction</c> can be <c>left</c>, <c>right</c>, or
+ number of <c><anno>Character</anno></c> have been removed.
+ <c><anno>Direction</anno></c> can be <c>left</c>, <c>right</c>, or
<c>both</c> and indicates from which direction blanks are to be
removed. The function <c>strip/1</c> is equivalent to
<c>strip(String, both)</c>.</p>
@@ -260,19 +201,14 @@
</desc>
</func>
<func>
- <name>left(String, Number) -> Left</name>
- <name>left(String, Number, Character) -> Left</name>
+ <name name="left" arity="2"/>
+ <name name="left" arity="3"/>
<fsummary>Adjust left end of string</fsummary>
- <type>
- <v>String = Left = string()</v>
- <v>Character = char</v>
- <v>Number = integer()</v>
- </type>
<desc>
- <p>Returns the <c>String</c> with the length adjusted in
- accordance with <c>Number</c>. The left margin is
- fixed. If the <c>length(String)</c> &lt; <c>Number</c>,
- <c>String</c> is padded with blanks or <c>Character</c>s.</p>
+ <p>Returns the <c><anno>String</anno></c> with the length adjusted in
+ accordance with <c><anno>Number</anno></c>. The left margin is
+ fixed. If the <c>length(<anno>String</anno>)</c> &lt; <c><anno>Number</anno></c>,
+ <c><anno>String</anno></c> is padded with blanks or <c><anno>Character</anno></c>s.</p>
<p>For example:</p>
<code type="none">
> string:left("Hello",10,$.).
@@ -280,19 +216,14 @@
</desc>
</func>
<func>
- <name>right(String, Number) -> Right</name>
- <name>right(String, Number, Character) -> Right</name>
+ <name name="right" arity="2"/>
+ <name name="right" arity="3"/>
<fsummary>Adjust right end of string</fsummary>
- <type>
- <v>String = Right = string()</v>
- <v>Character = char</v>
- <v>Number = integer()</v>
- </type>
<desc>
- <p>Returns the <c>String</c> with the length adjusted in
- accordance with <c>Number</c>. The right margin is
- fixed. If the length of <c>(String)</c> &lt; <c>Number</c>,
- <c>String</c> is padded with blanks or <c>Character</c>s.</p>
+ <p>Returns the <c><anno>String</anno></c> with the length adjusted in
+ accordance with <c><anno>Number</anno></c>. The right margin is
+ fixed. If the length of <c>(<anno>String</anno>)</c> &lt; <c><anno>Number</anno></c>,
+ <c><anno>String</anno></c> is padded with blanks or <c><anno>Character</anno></c>s.</p>
<p>For example:</p>
<code type="none">
> string:right("Hello", 10, $.).
@@ -300,32 +231,23 @@
</desc>
</func>
<func>
- <name>centre(String, Number) -> Centered</name>
- <name>centre(String, Number, Character) -> Centered</name>
+ <name name="centre" arity="2"/>
+ <name name="centre" arity="3"/>
<fsummary>Center a string</fsummary>
- <type>
- <v>String = Centered = string()</v>
- <v>Character = char</v>
- <v>Number = integer()</v>
- </type>
<desc>
- <p>Returns a string, where <c>String</c> is centred in the
+ <p>Returns a string, where <c><anno>String</anno></c> is centred in the
string and surrounded by blanks or characters. The resulting
- string will have the length <c>Number</c>.</p>
+ string will have the length <c><anno>Number</anno></c>.</p>
</desc>
</func>
<func>
- <name>sub_string(String, Start) -> SubString</name>
- <name>sub_string(String, Start, Stop) -> SubString</name>
+ <name name="sub_string" arity="2"/>
+ <name name="sub_string" arity="3"/>
<fsummary>Extract a substring</fsummary>
- <type>
- <v>String = SubString = string()</v>
- <v>Start = Stop = integer()</v>
- </type>
<desc>
- <p>Returns a substring of <c>String</c>, starting at the
- position <c>Start</c> to the end of the string, or to and
- including the <c>Stop</c> position.</p>
+ <p>Returns a substring of <c><anno>String</anno></c>, starting at the
+ position <c><anno>Start</anno></c> to the end of the string, or to and
+ including the <c><anno>Stop</anno></c> position.</p>
<p>For example:</p>
<code type="none">
sub_string("Hello World", 4, 8).
@@ -383,15 +305,15 @@ sub_string("Hello World", 4, 8).
</desc>
</func>
<func>
- <name>to_lower(String) -> Result</name>
- <name>to_lower(Char) -> CharResult</name>
- <name>to_upper(String) -> Result</name>
- <name>to_upper(Char) -> CharResult</name>
+ <name name="to_lower" arity="1" clause_i="1"/>
+ <name name="to_lower" arity="1" clause_i="2"/>
+ <name name="to_upper" arity="1" clause_i="1"/>
+ <name name="to_upper" arity="1" clause_i="2"/>
<fsummary>Convert case of string (ISO/IEC 8859-1)</fsummary>
- <type>
- <v>String = Result = string()</v>
- <v>Char = CharResult = integer()</v>
- </type>
+ <type variable="String" name_i="1"/>
+ <type variable="Result" name_i="1"/>
+ <type variable="Char"/>
+ <type variable="CharResult"/>
<desc>
<p>The given string or character is case-converted. Note that
the supported character set is ISO/IEC 8859-1 (a.k.a. Latin 1),
diff --git a/lib/stdlib/doc/src/supervisor.xml b/lib/stdlib/doc/src/supervisor.xml
index d6203bdaa0..009aa60faa 100644
--- a/lib/stdlib/doc/src/supervisor.xml
+++ b/lib/stdlib/doc/src/supervisor.xml
@@ -199,51 +199,81 @@ child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules}
</item>
</list>
</section>
+ <datatypes>
+ <datatype>
+ <name name="child"/>
+ </datatype>
+ <datatype>
+ <name name="child_id"/>
+ <desc><p>Not a <c>pid()</c>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="child_spec"/>
+ </datatype>
+ <datatype>
+ <name name="mfargs"/>
+ <desc><p><c>A</c> (the argument list) has the value
+ <c>undefined</c> if <c>Restart</c> is <c>temporary</c>.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="modules"/>
+ </datatype>
+ <datatype>
+ <name name="restart"/>
+ </datatype>
+ <datatype>
+ <name name="shutdown"/>
+ </datatype>
+ <datatype>
+ <name name="strategy"/>
+ </datatype>
+ <datatype>
+ <name name="sup_ref"/>
+ </datatype>
+ <datatype>
+ <name name="worker"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>start_link(Module, Args) -> Result</name>
- <name>start_link(SupName, Module, Args) -> Result</name>
+ <name name="start_link" arity="2"/>
+ <name name="start_link" arity="3"/>
<fsummary>Create a supervisor process.</fsummary>
- <type>
- <v>SupName = {local,Name} | {global,Name}</v>
- <v>&nbsp;Name = atom()</v>
- <v>Module = atom()</v>
- <v>Args = term()</v>
- <v>Result = {ok,Pid} | ignore | {error,Error}</v>
- <v>&nbsp;Pid = pid()</v>
- <v>&nbsp;Error = {already_started,Pid}} | shutdown | term()</v>
- </type>
+ <type name="startlink_ret"/>
+ <type name="startlink_err"/>
+ <type name="sup_name"/>
<desc>
<p>Creates a supervisor process as part of a supervision tree.
The function will, among other things, ensure that
the supervisor is linked to the calling process (its
supervisor).</p>
- <p>The created supervisor process calls <c>Module:init/1</c> to
+ <p>The created supervisor process calls <c><anno>Module</anno>:init/1</c> to
find out about restart strategy, maximum restart frequency
and child processes. To ensure a synchronized start-up
procedure, <c>start_link/2,3</c> does not return until
- <c>Module:init/1</c> has returned and all child processes
+ <c><anno>Module</anno>:init/1</c> has returned and all child processes
have been started.</p>
- <p>If <c>SupName={local,Name}</c> the supervisor is registered
+ <p>If <c><anno>SupName</anno>={local,Name}</c> the supervisor is registered
locally as <c>Name</c> using <c>register/2</c>. If
- <c>SupName={global,Name}</c> the supervisor is registered
+ <c><anno>SupName</anno>={global,Name}</c> the supervisor is registered
globally as <c>Name</c> using <c>global:register_name/2</c>.
If no name is provided, the supervisor is not registered.</p>
- <p><c>Module</c> is the name of the callback module.</p>
- <p><c>Args</c> is an arbitrary term which is passed as
- the argument to <c>Module:init/1</c>.</p>
+ <p><c><anno>Module</anno></c> is the name of the callback module.</p>
+ <p><c><anno>Args</anno></c> is an arbitrary term which is passed as
+ the argument to <c><anno>Module</anno>:init/1</c>.</p>
<p>If the supervisor and its child processes are successfully
created (i.e. if all child process start functions return
<c>{ok,Child}</c>, <c>{ok,Child,Info}</c>, or <c>ignore</c>)
the function returns <c>{ok,Pid}</c>, where <c>Pid</c> is
the pid of the supervisor. If there already exists a process
- with the specified <c>SupName</c> the function returns
+ with the specified <c><anno>SupName</anno></c> the function returns
<c>{error,{already_started,Pid}}</c>, where <c>Pid</c> is
the pid of that process.</p>
- <p>If <c>Module:init/1</c> returns <c>ignore</c>, this function
+ <p>If <c><anno>Module</anno>:init/1</c> returns <c>ignore</c>, this function
returns <c>ignore</c> as well and the supervisor terminates
with reason <c>normal</c>.
- If <c>Module:init/1</c> fails or returns an incorrect value,
+ If <c><anno>Module</anno>:init/1</c> fails or returns an incorrect value,
this function returns <c>{error,Term}</c> where <c>Term</c>
is a term with information about the error, and the supervisor
terminates with reason <c>Term</c>.</p>
@@ -255,21 +285,15 @@ child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules}
</desc>
</func>
<func>
- <name>start_child(SupRef, ChildSpec) -> Result</name>
+ <name name="start_child" arity="2"/>
<fsummary>Dynamically add a child process to a supervisor.</fsummary>
- <type>
- <v>SupRef = Name | {Name,Node} | {global,Name} | pid()</v>
- <v>&nbsp;Name = Node = atom()</v>
- <v>ChildSpec = child_spec() | [term()]</v>
- <v>Result = {ok,Child} | {ok,Child,Info} | {error,Error}</v>
- <v>&nbsp;Child = pid() | undefined</v>
- <v>&nbsp;Info = term()</v>
- <v>&nbsp;Error = already_present | {already_started,Child} | term()</v>
- </type>
+ <type name="child_spec"/>
+ <type name="startchild_ret"/>
+ <type name="startchild_err"/>
<desc>
<p>Dynamically adds a child specification to the supervisor
- <c>SupRef</c> which starts the corresponding child process.</p>
- <p><c>SupRef</c> can be:</p>
+ <c><anno>SupRef</anno></c> which starts the corresponding child process.</p>
+ <p><marker id="SupRef"><c><anno>SupRef</anno></c></marker> can be:</p>
<list type="bulleted">
<item>the pid,</item>
<item><c>Name</c>, if the supervisor is locally registered,</item>
@@ -278,26 +302,26 @@ child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules}
<item><c>{global,Name}</c>, if the supervisor is globally
registered.</item>
</list>
- <p><c>ChildSpec</c> should be a valid child specification
+ <p><c><anno>ChildSpec</anno></c> should be a valid child specification
(unless the supervisor is a <c>simple_one_for_one</c>
supervisor, see below). The child process will be started by
using the start function as defined in the child
specification.</p>
<p>If the case of a <c>simple_one_for_one</c> supervisor,
the child specification defined in <c>Module:init/1</c> will
- be used and <c>ChildSpec</c> should instead be an arbitrary
- list of terms <c>List</c>. The child process will then be
- started by appending <c>List</c> to the existing start
+ be used and <c><anno>ChildSpec</anno></c> should instead be an arbitrary
+ list of terms <c><anno>List</anno></c>. The child process will then be
+ started by appending <c><anno>List</anno></c> to the existing start
function arguments, i.e. by calling
- <c>apply(M, F, A++List)</c> where <c>{M,F,A}</c> is the start
+ <c>apply(M, F, A++<anno>List</anno>)</c> where <c>{M,F,A}</c> is the start
function defined in the child specification.</p>
<p>If there already exists a child specification with
- the specified <c>Id</c>, <c>ChildSpec</c> is discarded and
+ the specified <c><anno>Id</anno></c>, <c><anno>ChildSpec</anno></c> is discarded and
the function returns <c>{error,already_present}</c> or
- <c>{error,{already_started,Child}}</c>, depending on if
+ <c>{error,{already_started,<anno>Child</anno>}}</c>, depending on if
the corresponding child process is running or not.</p>
- <p>If the child process start function returns <c>{ok,Child}</c>
- or <c>{ok,Child,Info}</c>, the child specification and pid is
+ <p>If the child process start function returns <c>{ok,<anno>Child</anno>}</c>
+ or <c>{ok,<anno>Child</anno>,<anno>Info</anno>}</c>, the child specification and pid is
added to the supervisor and the function returns the same
value.</p>
<p>If the child process start function returns <c>ignore</c>,
@@ -312,27 +336,20 @@ child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules}
</desc>
</func>
<func>
- <name>terminate_child(SupRef, Id) -> Result</name>
+ <name name="terminate_child" arity="2"/>
<fsummary>Terminate a child process belonging to a supervisor.</fsummary>
- <type>
- <v>SupRef = Name | {Name,Node} | {global,Name} | pid()</v>
- <v>&nbsp;Name = Node = atom()</v>
- <v>Id = pid() | term()</v>
- <v>Result = ok | {error,Error}</v>
- <v>&nbsp;Error = not_found | simple_one_for_one</v>
- </type>
<desc>
- <p>Tells the supervisor <c>SupRef</c> to terminate the given
+ <p>Tells the supervisor <c><anno>SupRef</anno></c> to terminate the given
child.</p>
<p>If the supervisor is not <c>simple_one_for_one</c>,
- <c>Id</c> must be the child specification identifier. The
+ <c><anno>Id</anno></c> must be the child specification identifier. The
process, if there is one, is terminated but the child
specification is kept by the supervisor. The child process
may later be restarted by the supervisor. The child process
can also be restarted explicitly by calling
<c>restart_child/2</c>. Use <c>delete_child/2</c> to remove
the child specification.</p>
- <p>If the supervisor is <c>simple_one_for_one</c>, <c>Id</c>
+ <p>If the supervisor is <c>simple_one_for_one</c>, <c><anno>Id</anno></c>
must be the child process' <c>pid()</c>. I the specified
process is alive, but is not a child of the given
supervisor, the function will return
@@ -340,119 +357,93 @@ child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules}
identifier is given instead instead of a <c>pid()</c>, the
function will return <c>{error,simple_one_for_one}</c>.</p>
<p>If successful, the function returns <c>ok</c>. If there is
- no child specification with the specified <c>Id</c>, the
+ no child specification with the specified <c><anno>Id</anno></c>, the
function returns <c>{error,not_found}</c>.</p>
<p>See <c>start_child/2</c> for a description of
- <c>SupRef</c>.</p>
+ <c><anno>SupRef</anno></c>.</p>
</desc>
</func>
<func>
- <name>delete_child(SupRef, Id) -> Result</name>
+ <name name="delete_child" arity="2"/>
<fsummary>Delete a child specification from a supervisor.</fsummary>
- <type>
- <v>SupRef = Name | {Name,Node} | {global,Name} | pid()</v>
- <v>&nbsp;Name = Node = atom()</v>
- <v>Id = term()</v>
- <v>Result = ok | {error,Error}</v>
- <v>&nbsp;Error = running | not_found | simple_one_for_one</v>
- </type>
<desc>
- <p>Tells the supervisor <c>SupRef</c> to delete the child
- specification identified by <c>Id</c>. The corresponding child
+ <p>Tells the supervisor <c><anno>SupRef</anno></c> to delete the child
+ specification identified by <c><anno>Id</anno></c>. The corresponding child
process must not be running, use <c>terminate_child/2</c> to
terminate it.</p>
- <p>See <c>start_child/2</c> for a description of <c>SupRef</c>.</p>
+ <p>See <seealso marker="#SupRef"><c>start_child/2</c></seealso> for a description of
+ <c>SupRef</c>.</p>
<p>If successful, the function returns <c>ok</c>. If the child
- specification identified by <c>Id</c> exists but
+ specification identified by <c><anno>Id</anno></c> exists but
the corresponding child process is running, the function
returns <c>{error,running}</c>. If the child specification
- identified by <c>Id</c> does not exist, the function returns
+ identified by <c><anno>Id</anno></c> does not exist, the function returns
<c>{error,not_found}</c>.</p>
</desc>
</func>
<func>
- <name>restart_child(SupRef, Id) -> Result</name>
+ <name name="restart_child" arity="2"/>
<fsummary>Restart a terminated child process belonging to a supervisor.</fsummary>
- <type>
- <v>SupRef = Name | {Name,Node} | {global,Name} | pid()</v>
- <v>&nbsp;Name = Node = atom()</v>
- <v>Id = term()</v>
- <v>Result = {ok,Child} | {ok,Child,Info} | {error,Error}</v>
- <v>&nbsp;Child = pid() | undefined</v>
- <v>&nbsp;Error = running | not_found | simple_one_for_one | term()</v>
- </type>
<desc>
- <p>Tells the supervisor <c>SupRef</c> to restart a child process
+ <p>Tells the supervisor <c><anno>SupRef</anno></c> to restart a child process
corresponding to the child specification identified by
- <c>Id</c>. The child specification must exist and
+ <c><anno>Id</anno></c>. The child specification must exist and
the corresponding child process must not be running.</p>
- <p>See <c>start_child/2</c> for a description of <c>SupRef</c>.</p>
- <p>If the child specification identified by <c>Id</c> does not
+ <p>See <seealso marker="#SupRef"><c>start_child/2</c></seealso> for a description of
+ <c>SupRef</c>.</p>
+ <p>If the child specification identified by <c><anno>Id</anno></c> does not
exist, the function returns <c>{error,not_found}</c>. If
the child specification exists but the corresponding process
is already running, the function returns
<c>{error,running}</c>.</p>
- <p>If the child process start function returns <c>{ok,Child}</c>
- or <c>{ok,Child,Info}</c>, the pid is added to the supervisor
+ <p>If the child process start function returns <c>{ok,<anno>Child</anno>}</c>
+ or <c>{ok,<anno>Child</anno>,<anno>Info</anno>}</c>, the pid is added to the supervisor
and the function returns the same value.</p>
<p>If the child process start function returns <c>ignore</c>,
the pid remains set to <c>undefined</c> and the function
returns <c>{ok,undefined}</c>.</p>
<p>If the child process start function returns an error tuple or
an erroneous value, or if it fails, the function returns
- <c>{error,Error}</c> where <c>Error</c> is a term containing
+ <c>{error,<anno>Error</anno>}</c> where <c><anno>Error</anno></c> is a term containing
information about the error.</p>
</desc>
</func>
<func>
- <name>which_children(SupRef) -> [{Id,Child,Type,Modules}]</name>
+ <name name="which_children" arity="1"/>
<fsummary>Return information about all children specifications and child processes belonging to a supervisor.</fsummary>
- <type>
- <v>SupRef = Name | {Name,Node} | {global,Name} | pid()</v>
- <v>&nbsp;Name = Node = atom()</v>
- <v>Id = term() | undefined</v>
- <v>Child = pid() | undefined</v>
- <v>Type = worker | supervisor</v>
- <v>Modules = [Module] | dynamic</v>
- <v>&nbsp;Module = atom()</v>
- </type>
<desc>
<p>Returns a newly created list with information about all child
specifications and child processes belonging to
- the supervisor <c>SupRef</c>.</p>
+ the supervisor <c><anno>SupRef</anno></c>.</p>
<p>Note that calling this function when supervising a large
number of children under low memory conditions can cause an
out of memory exception.</p>
- <p>See <c>start_child/2</c> for a description of <c>SupRef</c>.</p>
+ <p>See <seealso marker="#SupRef"><c>start_child/2</c></seealso> for a description of
+ <c>SupRef</c>.</p>
<p>The information given for each child specification/process
is:</p>
<list type="bulleted">
<item>
- <p><c>Id</c> - as defined in the child specification or
+ <p><c><anno>Id</anno></c> - as defined in the child specification or
<c>undefined</c> in the case of a
<c>simple_one_for_one</c> supervisor.</p>
</item>
<item>
- <p><c>Child</c> - the pid of the corresponding child
+ <p><c><anno>Child</anno></c> - the pid of the corresponding child
process, or <c>undefined</c> if there is no such process.</p>
</item>
<item>
- <p><c>Type</c> - as defined in the child specification.</p>
+ <p><c><anno>Type</anno></c> - as defined in the child specification.</p>
</item>
<item>
- <p><c>Modules</c> - as defined in the child specification.</p>
+ <p><c><anno>Modules</anno></c> - as defined in the child specification.</p>
</item>
</list>
</desc>
</func>
<func>
- <name>count_children(SupRef) -> PropListOfCounts</name>
+ <name name="count_children" arity="1"/>
<fsummary>Return counts for the number of childspecs, active children, supervisors and workers.</fsummary>
- <type>
- <v>SupRef = Name | {Name,Node} | {global,Name} | pid()</v>
- <v>&nbsp;Name = Node = atom()</v>
- <v>PropListOfCounts = [{specs, ChildSpecCount}, {active, ActiveProcessCount}, {supervisors, ChildSupervisorCount}, {workers, ChildWorkerCount}]</v>
- </type>
<desc>
<p>Returns a property list (see <c>proplists</c>) containing the
counts for each of the following elements of the supervisor's
@@ -479,17 +470,12 @@ child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules}
</desc>
</func>
<func>
- <name>check_childspecs([ChildSpec]) -> Result</name>
+ <name name="check_childspecs" arity="1"/>
<fsummary>Check if children specifications are syntactically correct.</fsummary>
- <type>
- <v>ChildSpec = child_spec()</v>
- <v>Result = ok | {error,Error}</v>
- <v>&nbsp;Error = term()</v>
- </type>
<desc>
<p>This function takes a list of child specification as argument
and returns <c>ok</c> if all of them are syntactically
- correct, or <c>{error,Error}</c> otherwise.</p>
+ correct, or <c>{error,<anno>Error</anno>}</c> otherwise.</p>
</desc>
</func>
</funcs>
@@ -506,9 +492,9 @@ child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules}
<type>
<v>Args = term()</v>
<v>Result = {ok,{{RestartStrategy,MaxR,MaxT},[ChildSpec]}} | ignore</v>
- <v>&nbsp;RestartStrategy = one_for_all | one_for_one | rest_for_one | simple_one_for_one</v>
- <v>&nbsp;MaxR = MaxT = int()>=0</v>
- <v>&nbsp;ChildSpec = child_spec()</v>
+ <v>&nbsp;RestartStrategy = <seealso marker="#type-strategy">strategy()</seealso></v>
+ <v>&nbsp;MaxR = MaxT = integer()>=0</v>
+ <v>&nbsp;ChildSpec = <seealso marker="#type-child_spec">child_spec()</seealso></v>
</type>
<desc>
<p>Whenever a supervisor is started using
diff --git a/lib/stdlib/doc/src/supervisor_bridge.xml b/lib/stdlib/doc/src/supervisor_bridge.xml
index cbd0d9230b..c1a5e7947f 100644
--- a/lib/stdlib/doc/src/supervisor_bridge.xml
+++ b/lib/stdlib/doc/src/supervisor_bridge.xml
@@ -50,46 +50,37 @@
</description>
<funcs>
<func>
- <name>start_link(Module, Args) -> Result</name>
- <name>start_link(SupBridgeName, Module, Args) -> Result</name>
+ <name name="start_link" arity="2"/>
+ <name name="start_link" arity="3"/>
<fsummary>Create a supervisor bridge process.</fsummary>
- <type>
- <v>SupBridgeName = {local,Name} | {global,Name}</v>
- <v>&nbsp;Name = atom()</v>
- <v>Module = atom()</v>
- <v>Args = term()</v>
- <v>Result = {ok,Pid} | ignore | {error,Error}</v>
- <v>&nbsp;Pid = pid()</v>
- <v>&nbsp;Error = {already_started,Pid} | term()</v>
- </type>
<desc>
<p>Creates a supervisor_bridge process, linked to the calling
- process, which calls <c>Module:init/1</c> to start the subsystem.
+ process, which calls <c><anno>Module</anno>:init/1</c> to start the subsystem.
To ensure a synchronized start-up procedure, this function does
- not return until <c>Module:init/1</c> has returned.</p>
- <p>If <c>SupBridgeName={local,Name}</c> the supervisor_bridge is
- registered locally as <c>Name</c> using <c>register/2</c>.
- If <c>SupBridgeName={global,Name}</c> the supervisor_bridge is
- registered globally as <c>Name</c> using
+ not return until <c><anno>Module</anno>:init/1</c> has returned.</p>
+ <p>If <c><anno>SupBridgeName</anno>={local,<anno>Name</anno>}</c> the supervisor_bridge is
+ registered locally as <c><anno>Name</anno></c> using <c>register/2</c>.
+ If <c><anno>SupBridgeName</anno>={global,<anno>Name</anno>}</c> the supervisor_bridge is
+ registered globally as <c><anno>Name</anno></c> using
<c>global:register_name/2</c>.
If no name is provided, the supervisor_bridge is not registered.
If there already exists a process with the specified
- <c>SupBridgeName</c> the function returns
- <c>{error,{already_started,Pid}}</c>, where <c>Pid</c> is the pid
+ <c><anno>SupBridgeName</anno></c> the function returns
+ <c>{error,{already_started,<anno>Pid</anno>}}</c>, where <c><anno>Pid</anno></c> is the pid
of that process.</p>
- <p><c>Module</c> is the name of the callback module.</p>
- <p><c>Args</c> is an arbitrary term which is passed as the argument
- to <c>Module:init/1</c>.</p>
+ <p><c><anno>Module</anno></c> is the name of the callback module.</p>
+ <p><c><anno>Args</anno></c> is an arbitrary term which is passed as the argument
+ to <c><anno>Module</anno>:init/1</c>.</p>
<p>If the supervisor_bridge and the subsystem are successfully
- started the function returns <c>{ok,Pid}</c>, where <c>Pid</c> is
+ started the function returns <c>{ok,<anno>Pid</anno>}</c>, where <c><anno>Pid</anno></c> is
is the pid of the supervisor_bridge.</p>
- <p>If <c>Module:init/1</c> returns <c>ignore</c>, this function
+ <p>If <c><anno>Module</anno>:init/1</c> returns <c>ignore</c>, this function
returns <c>ignore</c> as well and the supervisor_bridge terminates
with reason <c>normal</c>.
- If <c>Module:init/1</c> fails or returns an error tuple or an
- incorrect value, this function returns <c>{error,Term}</c> where
- <c>Term</c> is a term with information about the error, and
- the supervisor_bridge terminates with reason <c>Term</c>.</p>
+ If <c><anno>Module</anno>:init/1</c> fails or returns an error tuple or an
+ incorrect value, this function returns <c>{error,<anno>Error</anno>r}</c> where
+ <c><anno>Error</anno></c> is a term with information about the error, and
+ the supervisor_bridge terminates with reason <c><anno>Error</anno></c>.</p>
</desc>
</func>
</funcs>
diff --git a/lib/stdlib/doc/src/sys.xml b/lib/stdlib/doc/src/sys.xml
index efa8922a9d..073faf2df2 100644
--- a/lib/stdlib/doc/src/sys.xml
+++ b/lib/stdlib/doc/src/sys.xml
@@ -39,24 +39,12 @@
<p>Functions used for implementation of processes
should also understand system messages such as debugging
messages and code change. These functions must be used to implement the use of system messages for a process; either directly, or through standard behaviours, such as <c>gen_server</c>.</p>
- <p>The following types are used in the functions defined below:</p>
- <list type="bulleted">
- <item>
- <p><c>Name = pid() | atom() | {global, atom()}</c></p>
- </item>
- <item>
- <p><c>Timeout = int() >= 0 | infinity</c></p>
- </item>
- <item>
- <p><c>system_event() = {in, Msg} | {in, Msg, From} | {out, Msg, To} | term()</c></p>
- </item>
- </list>
<p>The default timeout is 5000 ms, unless otherwise specified. The
<c>timeout</c> defines the time period to wait for the process to
respond to a request. If the process does not respond, the
function evaluates <c>exit({timeout, {M, F, A}})</c>.
</p>
- <p>The functions make reference to a debug structure.
+ <p><marker id="dbg_opt"/>The functions make reference to a debug structure.
The debug structure is a list of <c>dbg_opt()</c>.
<c>dbg_opt()</c> is an internal data type used by the
<c>handle_system_msg/6</c> function. No debugging is performed if it is an empty list.
@@ -113,20 +101,31 @@
own system events. It is always up to the process itself
to format these events.</p>
</section>
+ <datatypes>
+ <datatype>
+ <name name="name"/>
+ </datatype>
+ <datatype>
+ <name name="system_event"/>
+ </datatype>
+ <datatype>
+ <name name="dbg_opt"/>
+ <desc><p>See <seealso marker="#dbg_opt">above</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="dbg_fun"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>log(Name,Flag)</name>
- <name>log(Name,Flag,Timeout) -> ok | {ok, [system_event()]}</name>
+ <name name="log" arity="2"/>
+ <name name="log" arity="3"/>
<fsummary>Log system events in memory</fsummary>
- <type>
- <v>Flag = true | {true, N} | false | get | print</v>
- <v>N = integer() > 0</v>
- </type>
<desc>
<p>Turns the logging of system events On or Off. If On, a
- maximum of <c>N</c> events are kept in the
- debug structure (the default is 10). If <c>Flag</c> is <c>get</c>, a list of all
- logged events is returned. If <c>Flag</c> is <c>print</c>, the
+ maximum of <c><anno>N</anno></c> events are kept in the
+ debug structure (the default is 10). If <c><anno>Flag</anno></c> is <c>get</c>, a list of all
+ logged events is returned. If <c><anno>Flag</anno></c> is <c>print</c>, the
logged events are printed to <c>standard_io</c>. The events are
formatted with a function that is defined by the process that
generated the event (with a call to
@@ -134,13 +133,9 @@
</desc>
</func>
<func>
- <name>log_to_file(Name,Flag)</name>
- <name>log_to_file(Name,Flag,Timeout) -> ok | {error, open_file}</name>
+ <name name="log_to_file" arity="2"/>
+ <name name="log_to_file" arity="3"/>
<fsummary>Log system events to the specified file</fsummary>
- <type>
- <v>Flag = FileName | false</v>
- <v>FileName = string()</v>
- </type>
<desc>
<p>Enables or disables the logging of all system events in textual
format to the file. The events are formatted with a function that is
@@ -149,27 +144,18 @@
</desc>
</func>
<func>
- <name>statistics(Name,Flag)</name>
- <name>statistics(Name,Flag,Timeout) -> ok | {ok, Statistics} </name>
+ <name name="statistics" arity="2"/>
+ <name name="statistics" arity="3"/>
<fsummary>Enable or disable the collections of statistics</fsummary>
- <type>
- <v>Flag = true | false | get</v>
- <v>Statistics = [{start_time, {Date1, Time1}}, {current_time, {Date, Time2}}, {reductions, integer()}, {messages_in, integer()}, {messages_out, integer()}]</v>
- <v>Date1 = Date2 = {Year, Month, Day}</v>
- <v>Time1 = Time2 = {Hour, Min, Sec}</v>
- </type>
<desc>
- <p>Enables or disables the collection of statistics. If <c>Flag</c> is
+ <p>Enables or disables the collection of statistics. If <c><anno>Flag</anno></c> is
<c>get</c>, the statistical collection is returned.</p>
</desc>
</func>
<func>
- <name>trace(Name,Flag)</name>
- <name>trace(Name,Flag,Timeout) -> void()</name>
+ <name name="trace" arity="2"/>
+ <name name="trace" arity="3"/>
<fsummary>Print all system events on <c>standard_io</c></fsummary>
- <type>
- <v>Flag = boolean()</v>
- </type>
<desc>
<p>Prints all system events on <c>standard_io</c>. The events are
formatted with a function that is defined by the process that
@@ -178,8 +164,8 @@
</desc>
</func>
<func>
- <name>no_debug(Name)</name>
- <name>no_debug(Name,Timeout) -> void()</name>
+ <name name="no_debug" arity="1"/>
+ <name name="no_debug" arity="2"/>
<fsummary>Turn off debugging</fsummary>
<desc>
<p>Turns off all debugging for the process. This includes
@@ -188,8 +174,8 @@
</desc>
</func>
<func>
- <name>suspend(Name)</name>
- <name>suspend(Name,Timeout) -> void()</name>
+ <name name="suspend" arity="1"/>
+ <name name="suspend" arity="2"/>
<fsummary>Suspend the process</fsummary>
<desc>
<p>Suspends the process. When the process is suspended, it
@@ -198,49 +184,37 @@
</desc>
</func>
<func>
- <name>resume(Name)</name>
- <name>resume(Name,Timeout) -> void()</name>
+ <name name="resume" arity="1"/>
+ <name name="resume" arity="2"/>
<fsummary>Resume a suspended process</fsummary>
<desc>
<p>Resumes a suspended process.</p>
</desc>
</func>
<func>
- <name>change_code(Name, Module, OldVsn, Extra)</name>
- <name>change_code(Name, Module, OldVsn, Extra, Timeout) -> ok | {error, Reason}</name>
+ <name name="change_code" arity="4"/>
+ <name name="change_code" arity="5"/>
<fsummary>Send the code change system message to the process</fsummary>
- <type>
- <v>OldVsn = undefined | term()</v>
- <v>Module = atom()</v>
- <v>Extra = term()</v>
- </type>
<desc>
<p>Tells the process to change code. The process must be
- suspended to handle this message. The <c>Extra</c> argument is
+ suspended to handle this message. The <c><anno>Extra</anno></c> argument is
reserved for each process to use as its own. The function
- <c>Mod:system_code_change/4</c> is called. <c>OldVsn</c> is
- the old version of the <c>Module</c>.</p>
+ <c><anno>Module</anno>:system_code_change/4</c> is called. <c><anno>OldVsn</anno></c> is
+ the old version of the <c><anno>Module</anno></c>.</p>
</desc>
</func>
<func>
- <name>get_status(Name)</name>
- <name>get_status(Name,Timeout) -> {status, Pid, {module, Mod}, [PDict, SysState, Parent, Dbg, Misc]}</name>
+ <name name="get_status" arity="1"/>
+ <name name="get_status" arity="2"/>
<fsummary>Get the status of the process</fsummary>
- <type>
- <v>PDict = [{Key, Value}]</v>
- <v>SysState = running | suspended</v>
- <v>Parent = pid()</v>
- <v>Dbg = [dbg_opt()]</v>
- <v>Misc = term()</v>
- </type>
<desc>
<p>Gets the status of the process.</p>
- <p>The value of <c>Misc</c> varies for different types of
+ <p>The value of <c><anno>Misc</anno></c> varies for different types of
processes. For example, a <c>gen_server</c> process returns
the callback module's state, and a <c>gen_fsm</c> process
returns information such as its current state name. Callback
modules for <c>gen_server</c> and <c>gen_fsm</c> can also
- customise the value of <c>Misc</c> by exporting
+ customise the value of <c><anno>Misc</anno></c> by exporting
a <c>format_status/2</c> function that contributes
module-specific information;
see <seealso marker="gen_server#Module:format_status/2">gen_server:format_status/2</seealso>
@@ -249,17 +223,9 @@
</desc>
</func>
<func>
- <name>install(Name,{Func,FuncState})</name>
- <name>install(Name,{Func,FuncState},Timeout)</name>
+ <name name="install" arity="2"/>
+ <name name="install" arity="3"/>
<fsummary>Install a debug function in the process</fsummary>
- <type>
- <v>Func = dbg_fun()</v>
- <v>dbg_fun() = fun(FuncState, Event, ProcState) -> done | NewFuncState</v>
- <v>FuncState = term()</v>
- <v>Event = system_event()</v>
- <v>ProcState = term()</v>
- <v>NewFuncState = term()</v>
- </type>
<desc>
<p>This function makes it possible to install other debug
functions than the ones defined above. An example of such a
@@ -267,22 +233,19 @@
special event and performs some action when the event is
generated. This could, for example, be turning on low level tracing.
</p>
- <p><c>Func</c> is called whenever a system event is
+ <p><c><anno>Func</anno></c> is called whenever a system event is
generated. This function should return <c>done</c>, or a new
func state. In the first case, the function is removed. It is removed
if the function fails.</p>
</desc>
</func>
<func>
- <name>remove(Name,Func)</name>
- <name>remove(Name,Func,Timeout) -> void()</name>
+ <name name="remove" arity="2"/>
+ <name name="remove" arity="3"/>
<fsummary>Remove a debug function from the process</fsummary>
- <type>
- <v>Func = dbg_fun()</v>
- </type>
<desc>
<p>Removes a previously installed debug function from the
- process. <c>Func</c> must be the same as previously
+ process. <c><anno>Func</anno></c> must be the same as previously
installed.</p>
</desc>
</func>
@@ -296,86 +259,65 @@
</section>
<funcs>
<func>
- <name>debug_options(Options) -> [dbg_opt()]</name>
+ <name name="debug_options" arity="1"/>
<fsummary>Convert a list of options to a debug structure</fsummary>
- <type>
- <v>Options = [Opt]</v>
- <v>Opt = trace | log | statistics | {log_to_file, FileName} | {install, {Func, FuncState}}</v>
- <v>Func = dbg_fun()</v>
- <v>FuncState = term()</v>
- </type>
<desc>
<p>This function can be used by a process that initiates a debug
structure from a list of options. The values of the
- <c>Opt</c> argument are the same as the corresponding
+ <c><anno>Opt</anno></c> argument are the same as the corresponding
functions.</p>
</desc>
</func>
<func>
- <name>get_debug(Item,Debug,Default) -> term()</name>
+ <name name="get_debug" arity="3"/>
<fsummary>Get the data associated with a debug option</fsummary>
- <type>
- <v>Item = log | statistics</v>
- <v>Debug = [dbg_opt()]</v>
- <v>Default = term()</v>
- </type>
<desc>
- <p>This function gets the data associated with a debug option. <c>Default</c> is returned if the
- <c>Item</c> is not found. Can be
+ <p>This function gets the data associated with a debug option. <c><anno>Default</anno></c> is returned if the
+ <c><anno>Item</anno></c> is not found. Can be
used by the process to retrieve debug data for printing
before it terminates.</p>
</desc>
</func>
<func>
- <name>handle_debug([dbg_opt()],FormFunc,Extra,Event) -> [dbg_opt()]</name>
+ <name name="handle_debug" arity="4"/>
<fsummary>Generate a system event</fsummary>
- <type>
- <v>FormFunc = dbg_fun()</v>
- <v>Extra = term()</v>
- <v>Event = system_event()</v>
- </type>
<desc>
- <p>This function is called by a process when it generates a system event. <c>FormFunc</c> is a formatting function which is called as <c>FormFunc(Device, Event, Extra)</c> in order to print the events, which is necessary if tracing is activated. <c>Extra</c> is any
- extra information which the process needs in the format function, for example the name of the process.</p>
+ <p>This function is called by a process when it generates a
+ system event. <c><anno>FormFunc</anno></c> is a formatting
+ function which is called as <c><anno>FormFunc</anno>(Device,
+ <anno>Event</anno>, <anno>Extra</anno>)</c> in order to print
+ the events, which is necessary if tracing is activated.
+ <c><anno>Extra</anno></c> is any extra information which the
+ process needs in the format function, for example the name
+ of the process.</p>
</desc>
</func>
<func>
- <name>handle_system_msg(Msg,From,Parent,Module,Debug,Misc)</name>
+ <name name="handle_system_msg" arity="6"/>
<fsummary>Take care of system messages</fsummary>
- <type>
- <v>Msg = term()</v>
- <v>From = pid()</v>
- <v>Parent = pid()</v>
- <v>Module = atom()</v>
- <v>Debug = [dbg_opt()]</v>
- <v>Misc = term()</v>
- </type>
<desc>
<p>This function is used by a process module that wishes to take care of system
- messages. The process receives a <c>{system, From, Msg}</c>
- message and passes the <c>Msg</c> and <c>From</c> to this
+ messages. The process receives a <c>{system, <anno>From</anno>, <anno>Msg</anno>}</c>
+ message and passes the <c><anno>Msg</anno></c> and <c><anno>From</anno></c> to this
function.
</p>
<p>This function <em>never</em> returns. It calls the function
- <c>Module:system_continue(Parent, NDebug, Misc)</c> where the
+ <c><anno>Module</anno>:system_continue(<anno>Parent</anno>, NDebug, <anno>Misc</anno>)</c> where the
process continues the execution, or
- <c>Module:system_terminate(Reason, Parent, Debug, Misc)</c> if
- the process should terminate. The <c>Module</c> must export
+ <c><anno>Module</anno>:system_terminate(Reason, <anno>Parent</anno>, <anno>Debug</anno>, <anno>Misc</anno>)</c> if
+ the process should terminate. The <c><anno>Module</anno></c> must export
<c>system_continue/3</c>, <c>system_terminate/4</c>, and
<c>system_code_change/4</c> (see below).
</p>
- <p>The <c>Misc</c> argument can be used to save internal data
+ <p>The <c><anno>Misc</anno></c> argument can be used to save internal data
in a process, for example its state. It is sent to
- <c>Module:system_continue/3</c> or
- <c>Module:system_terminate/4</c></p>
+ <c><anno>Module</anno>:system_continue/3</c> or
+ <c><anno>Module</anno>:system_terminate/4</c></p>
</desc>
</func>
<func>
- <name>print_log(Debug) -> void()</name>
+ <name name="print_log" arity="1"/>
<fsummary>Print the logged events in the debug structure</fsummary>
- <type>
- <v>Debug = [dbg_opt()]</v>
- </type>
<desc>
<p>Prints the logged system events in the debug structure
using <c>FormFunc</c> as defined when the event was
@@ -383,11 +325,11 @@
</desc>
</func>
<func>
- <name>Mod:system_continue(Parent, Debug, Misc)</name>
+ <name>Mod:system_continue(Parent, Debug, Misc) -> none()</name>
<fsummary>Called when the process should continue its execution</fsummary>
<type>
<v>Parent = pid()</v>
- <v>Debug = [dbg_opt()]</v>
+ <v>Debug = [<seealso marker="#type-dbg_opt">dbg_opt()</seealso>]</v>
<v>Misc = term()</v>
</type>
<desc>
@@ -397,12 +339,12 @@
</desc>
</func>
<func>
- <name>Mod:system_terminate(Reason, Parent, Debug, Misc)</name>
+ <name>Mod:system_terminate(Reason, Parent, Debug, Misc) -> none()</name>
<fsummary>Called when the process should terminate</fsummary>
<type>
<v>Reason = term()</v>
<v>Parent = pid()</v>
- <v>Debug = [dbg_opt()]</v>
+ <v>Debug = [<seealso marker="#type-dbg_opt">dbg_opt()</seealso>]</v>
<v>Misc = term()</v>
</type>
<desc>
diff --git a/lib/stdlib/doc/src/timer.xml b/lib/stdlib/doc/src/timer.xml
index cae655f801..b741ab7db1 100644
--- a/lib/stdlib/doc/src/timer.xml
+++ b/lib/stdlib/doc/src/timer.xml
@@ -49,9 +49,19 @@
as requested.
</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="time"/>
+ <desc><p>Time in milliseconds.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="tref"/>
+ <desc><p>A timer reference.</p></desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>start() -> ok</name>
+ <name name="start" arity="0"/>
<fsummary>Start a global timer server (named <c>timer_server</c>).</fsummary>
<desc>
<p>Starts the timer server. Normally, the server does not need
@@ -62,214 +72,181 @@
</desc>
</func>
<func>
- <name>apply_after(Time, Module, Function, Arguments) -> {ok, Tref} | {error, Reason}</name>
+ <name name="apply_after" arity="4"/>
<fsummary>Apply <c>Module:Function(Arguments)</c>after a specified <c>Time</c>.</fsummary>
- <type>
- <v>Time = integer() in Milliseconds</v>
- <v>Module = Function = atom()</v>
- <v>Arguments = [term()]</v>
- </type>
<desc>
- <p>Evaluates <c>apply(M, F, A)</c> after <c>Time</c> amount of time
- has elapsed. Returns <c>{ok, TRef}</c>, or <c>{error, Reason}</c>.</p>
+ <p>Evaluates <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Arguments</anno>)</c> after <c><anno>Time</anno></c> amount of time
+ has elapsed. Returns <c>{ok, <anno>TRef</anno>}</c>, or <c>{error, <anno>Reason</anno>}</c>.</p>
</desc>
</func>
<func>
- <name>send_after(Time, Pid, Message) -> {ok, TRef} | {error,Reason}</name>
- <name>send_after(Time, Message) -> {ok, TRef} | {error,Reason}</name>
+ <name name="send_after" arity="2"/>
+ <name name="send_after" arity="3"/>
<fsummary>Send <c>Message</c>to <c>Pid</c>after a specified <c>Time</c>.</fsummary>
- <type>
- <v>Time = integer() in Milliseconds</v>
- <v>Pid = pid() | atom()</v>
- <v>Message = term()</v>
- <v>Result = {ok, TRef} | {error, Reason}</v>
- </type>
<desc>
<p></p>
<taglist>
<tag><c>send_after/3</c></tag>
<item>
- <p>Evaluates <c>Pid ! Message</c> after <c>Time</c> amount
- of time has elapsed. (<c>Pid</c> can also be an atom of a
- registered name.) Returns <c>{ok, TRef}</c>, or
- <c>{error, Reason}</c>.</p>
+ <p>Evaluates <c><anno>Pid</anno> ! <anno>Message</anno></c> after <c><anno>Time</anno></c> amount
+ of time has elapsed. (<c><anno>Pid</anno></c> can also be an atom of a
+ registered name.) Returns <c>{ok, <anno>TRef</anno>}</c>, or
+ <c>{error, <anno>Reason</anno>}</c>.</p>
</item>
<tag><c>send_after/2</c></tag>
<item>
- <p>Same as <c>send_after(Time, self(), Message)</c>.</p>
+ <p>Same as <c>send_after(<anno>Time</anno>, self(), <anno>Message</anno>)</c>.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>exit_after(Time, Pid, Reason1) -> {ok, TRef} | {error,Reason2}</name>
- <name>exit_after(Time, Reason1) -> {ok, TRef} | {error,Reason2}</name>
- <name>kill_after(Time, Pid)-> {ok, TRef} | {error,Reason2}</name>
- <name>kill_after(Time) -> {ok, TRef} | {error,Reason2}</name>
+ <name name="kill_after" arity="1"/>
+ <name name="kill_after" arity="2"/>
+ <name name="exit_after" arity="2"/>
+ <name name="exit_after" arity="3"/>
<fsummary>Send an exit signal with <c>Reason</c>after a specified <c>Time</c>.</fsummary>
- <type>
- <v>Time = integer() in milliseconds</v>
- <v>Pid = pid() | atom()</v>
- <v>Reason1 = Reason2 = term()</v>
- </type>
<desc>
<p></p>
<taglist>
<tag><c>exit_after/3</c></tag>
<item>
- <p>Send an exit signal with reason <c>Reason1</c> to Pid
- <c>Pid</c>. Returns <c>{ok, TRef}</c>, or
- <c>{error, Reason2}</c>.</p>
+ <p>Send an exit signal with reason <c><anno>Reason1</anno></c> to Pid
+ <c><anno>Pid</anno></c>. Returns <c>{ok, <anno>TRef</anno>}</c>, or
+ <c>{error, <anno>Reason2</anno>}</c>.</p>
</item>
<tag><c>exit_after/2</c></tag>
<item>
- <p>Same as <c>exit_after(Time, self(), Reason1)</c>. </p>
+ <p>Same as <c>exit_after(<anno>Time</anno>, self(), <anno>Reason1</anno>)</c>. </p>
</item>
<tag><c>kill_after/2</c></tag>
<item>
- <p>Same as <c>exit_after(Time, Pid, kill)</c>. </p>
+ <p>Same as <c>exit_after(<anno>Time</anno>, <anno>Pid</anno>, kill)</c>. </p>
</item>
<tag><c>kill_after/1</c></tag>
<item>
- <p>Same as <c>exit_after(Time, self(), kill)</c>. </p>
+ <p>Same as <c>exit_after(<anno>Time</anno>, self(), kill)</c>. </p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>apply_interval(Time, Module, Function, Arguments) -> {ok, TRef} | {error, Reason}</name>
+ <name name="apply_interval" arity="4"/>
<fsummary>Evaluate <c>Module:Function(Arguments)</c>repeatedly at intervals of <c>Time</c>.</fsummary>
- <type>
- <v>Time = integer() in milliseconds</v>
- <v>Module = Function = atom()</v>
- <v>Arguments = [term()]</v>
- </type>
<desc>
- <p>Evaluates <c>apply(Module, Function, Arguments)</c> repeatedly at
- intervals of <c>Time</c>. Returns <c>{ok, TRef}</c>, or
- <c>{error, Reason}</c>.</p>
+ <p>Evaluates <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Arguments</anno>)</c> repeatedly at
+ intervals of <c><anno>Time</anno></c>. Returns <c>{ok, <anno>TRef</anno>}</c>, or
+ <c>{error, <anno>Reason</anno>}</c>.</p>
</desc>
</func>
<func>
- <name>send_interval(Time, Pid, Message) -> {ok, TRef} | {error, Reason}</name>
- <name>send_interval(Time, Message) -> {ok, TRef} | {error, Reason}</name>
+ <name name="send_interval" arity="2"/>
+ <name name="send_interval" arity="3"/>
<fsummary>Send <c>Message</c>repeatedly at intervals of <c>Time</c>.</fsummary>
- <type>
- <v>Time = integer() in milliseconds</v>
- <v>Pid = pid() | atom()</v>
- <v>Message = term()</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p></p>
<taglist>
<tag><c>send_interval/3</c></tag>
<item>
- <p>Evaluates <c>Pid ! Message</c> repeatedly after <c>Time</c>
- amount of time has elapsed. (<c>Pid</c> can also be an atom of
- a registered name.) Returns <c>{ok, TRef}</c> or
- <c>{error, Reason}</c>.</p>
+ <p>Evaluates <c><anno>Pid</anno> ! <anno>Message</anno></c> repeatedly after <c><anno>Time</anno></c>
+ amount of time has elapsed. (<c><anno>Pid</anno></c> can also be an atom of
+ a registered name.) Returns <c>{ok, <anno>TRef</anno>}</c> or
+ <c>{error, <anno>Reason</anno>}</c>.</p>
</item>
<tag><c>send_interval/2</c></tag>
<item>
- <p>Same as <c>send_interval(Time, self(), Message)</c>.</p>
+ <p>Same as <c>send_interval(<anno>Time</anno>, self(), <anno>Message</anno>)</c>.</p>
</item>
</taglist>
</desc>
</func>
<func>
- <name>cancel(TRef) -> {ok, cancel} | {error, Reason}</name>
+ <name name="cancel" arity="1"/>
<fsummary>Cancel a previously requested timeout identified by <c>TRef</c>.</fsummary>
<desc>
- <p>Cancels a previously requested timeout. <c>TRef</c> is a unique
+ <p>Cancels a previously requested timeout. <c><anno>TRef</anno></c> is a unique
timer reference returned by the timer function in question. Returns
- <c>{ok, cancel}</c>, or <c>{error, Reason}</c> when <c>TRef</c>
+ <c>{ok, cancel}</c>, or <c>{error, <anno>Reason</anno>}</c> when <c><anno>TRef</anno></c>
is not a timer reference.</p>
</desc>
</func>
<func>
- <name>sleep(Time) -> ok</name>
+ <name name="sleep" arity="1"/>
<fsummary>Suspend the calling process for <c>Time</c>amount of milliseconds.</fsummary>
- <type>
- <v>Time = integer() in milliseconds or the atom infinity</v>
- </type>
<desc>
- <p>Suspends the process calling this function for <c>Time</c> amount
+ <p>Suspends the process calling this function for <c><anno>Time</anno></c> amount
of milliseconds and then returns <c>ok</c>, or suspend the process
- forever if <c>Time</c> is the atom <c>infinity</c>. Naturally, this
+ forever if <c><anno>Time</anno></c> is the atom <c>infinity</c>. Naturally, this
function does <em>not</em> return immediately.</p>
</desc>
</func>
<func>
- <name>tc(Module, Function, Arguments) -> {Time, Value}</name>
- <name>tc(Fun, Arguments) -> {Time, Value}</name>
+ <name name="tc" arity="1"/>
+ <name name="tc" arity="2"/>
+ <name name="tc" arity="3"/>
<fsummary>Measure the real time it takes to evaluate <c>apply(Module,
Function, Arguments)</c> or <c>apply(Fun, Arguments)</c></fsummary>
- <type>
- <v>Module = Function = atom()</v>
- <v>Fun = fun()</v>
- <v>Arguments = [term()]</v>
- <v>Time = integer() in microseconds</v>
- <v>Value = term()</v>
- </type>
+ <type_desc variable="Time">In microseconds</type_desc>
<desc>
<p></p>
<taglist>
<tag><c>tc/3</c></tag>
<item>
- <p>Evaluates <c>apply(Module, Function, Arguments)</c> and measures
- the elapsed real time as reported by <c>now/0</c>.
- Returns <c>{Time, Value}</c>, where
- <c>Time</c> is the elapsed real time in <em>microseconds</em>,
- and <c>Value</c> is what is returned from the apply.</p>
+ <p>Evaluates <c>apply(<anno>Module</anno>, <anno>Function</anno>, <anno>Arguments</anno>)</c> and measures
+ the elapsed real time as reported by <c>os:timestamp/0</c>.
+ Returns <c>{<anno>Time</anno>, <anno>Value</anno>}</c>, where
+ <c><anno>Time</anno></c> is the elapsed real time in <em>microseconds</em>,
+ and <c><anno>Value</anno></c> is what is returned from the apply.</p>
</item>
<tag><c>tc/2</c></tag>
<item>
- <p>Evaluates <c>apply(Fun, Arguments)</c>. Otherwise works
+ <p>Evaluates <c>apply(<anno>Fun</anno>, <anno>Arguments</anno>)</c>. Otherwise works
like <c>tc/3</c>.</p>
</item>
+ <tag><c>tc/1</c></tag>
+ <item>
+ <p>Evaluates <c><anno>Fun</anno>()</c>. Otherwise works like <c>tc/2</c>.</p>
+ </item>
+
</taglist>
</desc>
</func>
<func>
- <name>now_diff(T2, T1) -> Tdiff</name>
+ <name name="now_diff" arity="2"/>
<fsummary>Calculate time difference between <c>now/0</c>timestamps</fsummary>
- <type>
- <v>T1 = T2 = {MegaSecs, Secs, MicroSecs}</v>
- <v>Tdiff = MegaSecs = Secs = MicroSecs = integer()</v>
- </type>
+ <type_desc variable="Tdiff">In microseconds</type_desc>
<desc>
- <p>Calculates the time difference <c>Tdiff = T2 - T1</c> in
- <em>microseconds</em>, where <c>T1</c> and <c>T2</c> probably
+ <p>Calculates the time difference <c><anno>Tdiff</anno> = <anno>T2</anno> - <anno>T1</anno></c> in
+ <em>microseconds</em>, where <c><anno>T1</anno></c> and <c><anno>T2</anno></c> probably
are timestamp tuples returned from <c>erlang:now/0</c>.</p>
</desc>
</func>
<func>
- <name>seconds(Seconds) -> Milliseconds</name>
+ <name name="seconds" arity="1"/>
<fsummary>Convert <c>Seconds</c>to <c>Milliseconds</c>.</fsummary>
<desc>
- <p>Returns the number of milliseconds in <c>Seconds</c>.</p>
+ <p>Returns the number of milliseconds in <c><anno>Seconds</anno></c>.</p>
</desc>
</func>
<func>
- <name>minutes(Minutes) -> Milliseconds</name>
+ <name name="minutes" arity="1"/>
<fsummary>Converts <c>Minutes</c>to <c>Milliseconds</c>.</fsummary>
<desc>
- <p>Return the number of milliseconds in <c>Minutes</c>.</p>
+ <p>Return the number of milliseconds in <c><anno>Minutes</anno></c>.</p>
</desc>
</func>
<func>
- <name>hours(Hours) -> Milliseconds</name>
+ <name name="hours" arity="1"/>
<fsummary>Convert <c>Hours</c>to <c>Milliseconds</c>.</fsummary>
<desc>
- <p>Returns the number of milliseconds in <c>Hours</c>.</p>
+ <p>Returns the number of milliseconds in <c><anno>Hours</anno></c>.</p>
</desc>
</func>
<func>
- <name>hms(Hours, Minutes, Seconds) -> Milliseconds</name>
+ <name name="hms" arity="3"/>
<fsummary>Convert <c>Hours</c>+<c>Minutes</c>+<c>Seconds</c>to <c>Milliseconds</c>.</fsummary>
<desc>
- <p>Returns the number of milliseconds in <c>Hours + Minutes + Seconds</c>.</p>
+ <p>Returns the number of milliseconds in <c><anno>Hours</anno> + <anno>Minutes</anno> + <anno>Seconds</anno></c>.</p>
</desc>
</func>
</funcs>
diff --git a/lib/stdlib/doc/src/unicode.xml b/lib/stdlib/doc/src/unicode.xml
index cb1cfa8ed0..d02763f75c 100644
--- a/lib/stdlib/doc/src/unicode.xml
+++ b/lib/stdlib/doc/src/unicode.xml
@@ -38,50 +38,83 @@
<p>It is recommended to only use external encodings for communication with external entities where this is required. When working inside the Erlang/OTP environment, it is recommended to keep binaries in UTF-8 when representing Unicode characters. Latin1 encoding is supported both for backward compatibility and for communication with external entities not supporting Unicode character sets.</p>
</description>
- <section>
- <title>DATA TYPES</title>
- <marker id="type-charlist"></marker>
- <code type="none">
-unicode_binary() = binary() with characters encoded in UTF-8 coding standard
-unicode_char() = integer() representing valid unicode codepoint
-
-chardata() = charlist() | unicode_binary()
-
-charlist() = [unicode_char() | unicode_binary() | charlist()]
- a unicode_binary is allowed as the tail of the list</code>
-
- <code type="none">
-external_unicode_binary() = binary()
- with characters coded in a user specified Unicode encoding other
- than UTF-8 (UTF-16 or UTF-32)
-
-external_chardata() = external_charlist() | external_unicode_binary()
-
-external_charlist() = [unicode_char() | external_unicode_binary() | external_charlist()]
- an external_unicode_binary is allowed as the tail of the list</code>
-
- <code type="none">
-latin1_binary() = binary() with characters coded in iso-latin-1
-latin1_char() = integer() representing valid latin1 character (0-255)
-
-latin1_chardata() = latin1_charlist() | latin1_binary()
+ <datatypes>
+ <datatype>
+ <name name="encoding"/>
+ </datatype>
+ <datatype>
+ <name name="endian"/>
+ </datatype>
+ <datatype>
+ <name name="unicode_binary"/>
+ <desc>
+ <p>A binary() with characters encoded in the UTF-8 coding standard.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="unicode_char"/>
+ <desc>
+ <p>An integer() representing a valid unicode codepoint.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="chardata"/>
+ </datatype>
+ <datatype>
+ <name name="charlist"/>
+ <desc>
+ <p>A unicode_binary is allowed as the tail of the list.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="external_unicode_binary"/>
+ <desc>
+ <p>A <c>binary()</c> with characters coded in a user specified Unicode
+ encoding other than UTF-8 (UTF-16 or UTF-32).</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="external_chardata"/>
+ </datatype>
+ <datatype>
+ <name name="external_charlist"/>
+ <desc>
+ <p>An <c>external_unicode_binary()</c> is allowed as the tail
+ of the list.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="latin1_binary"/>
+ <desc><p>A <c>binary()</c> with characters coded in iso-latin-1.</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="latin1_char"/>
+ <desc><p>An <c>integer()</c> representing valid latin1
+ character (0-255).</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="latin1_chardata"/>
+ </datatype>
+ <datatype>
+ <name name="latin1_charlist"/>
+ <desc><p>A <c>latin1_binary()</c> is allowed as the tail of
+ the list.</p>
+ </desc>
+ </datatype>
+ </datatypes>
-latin1_charlist() = [latin1_char() | latin1_binary() | latin1_charlist()]
- a latin1_binary is allowed as the tail of the list</code>
- </section>
<funcs>
<func>
- <name>bom_to_encoding(Bin) -> {Encoding,Length}</name>
+ <name name="bom_to_encoding" arity="1"/>
<fsummary>Identify UTF byte order marks in a binary.</fsummary>
- <type>
- <v>Bin = binary() of byte_size 4 or more</v>
- <v>Encoding = latin1 | utf8 | {utf16,little} | {utf16,big} | {utf32,little} | {utf32,big}</v>
- <v>Length = int()</v>
- </type>
+ <type name="endian"/>
+ <type_desc variable="Bin">A binary() of byte_size 4 or more.</type_desc>
<desc>
<p>Check for a UTF byte order mark (BOM) in the beginning of a
- binary. If the supplied binary <c>Bin</c> begins with a valid
+ binary. If the supplied binary <c><anno>Bin</anno></c> begins with a valid
byte order mark for either UTF-8, UTF-16 or UTF-32, the function
returns the encoding identified along with the length of the BOM
in bytes.</p>
@@ -90,23 +123,24 @@ latin1_charlist() = [latin1_char() | latin1_binary() | latin1_charlist()]
</desc>
</func>
<func>
- <name>characters_to_list(Data) -> list() | {error, list(), RestData} | {incomplete, list(), binary()} </name>
+ <name name="characters_to_list" arity="1"/>
<fsummary>Convert a collection of characters to list of Unicode characters</fsummary>
- <type>
- <v>Data = latin1_chardata() | chardata() | external_chardata()</v>
- <v>RestData = latin1_chardata() | chardata() | external_chardata()</v>
- </type>
<desc>
- <p>Same as characters_to_list(Data,unicode).</p>
+ <p>Same as characters_to_list(<anno>Data</anno>,unicode).</p>
</desc>
</func>
<func>
- <name>characters_to_list(Data, InEncoding) -> list() | {error, list(), RestData} | {incomplete, list(), binary()} </name>
+ <name>characters_to_list(Data, InEncoding) -> Result</name>
<fsummary>Convert a collection of characters to list of Unicode characters</fsummary>
<type>
- <v>Data = latin1_chardata() | chardata() | external_chardata()</v>
- <v>RestData = latin1_chardata() | chardata() | external_chardata()</v>
- <v>InEncoding = latin1 | unicode | utf8 | utf16 | utf32 | {utf16,little} | {utf16,big} | {utf32,little} | {utf32,big}</v>
+ <v>Data = <seealso marker="#type-latin1_chardata">latin1_chardata()</seealso>
+ | <seealso marker="#type-chardata">chardata()</seealso>
+ | <seealso marker="#type-external_chardata">external_chardata()</seealso></v>
+ <v>Result = list() | {error, list(), RestData} | {incomplete, list(), binary()}</v>
+ <v>RestData = <seealso marker="#type-latin1_chardata">latin1_chardata()</seealso>
+ | <seealso marker="#type-chardata">chardata()</seealso>
+ | <seealso marker="#type-external_chardata">external_chardata()</seealso></v>
+ <v>InEncoding = <seealso marker="#type-encoding">encoding()</seealso></v>
</type>
<desc>
@@ -234,44 +268,42 @@ latin1_charlist() = [latin1_char() | latin1_binary() | latin1_charlist()]
</desc>
</func>
<func>
- <name>characters_to_binary(Data) -> binary() | {error, binary(), RestData} | {incomplete, binary(), binary()} </name>
- <fsummary>Convert a collection of characters to an UTF-8 binary</fsummary> <type>
- <v>Data = latin1_chardata() | chardata() | external_chardata()</v>
- <v>RestData = latin1_chardata() | chardata() | external_chardata()</v>
- </type>
+ <name name="characters_to_binary" arity="1"/>
+ <fsummary>Convert a collection of characters to an UTF-8 binary</fsummary>
<desc>
<p>Same as characters_to_binary(Data, unicode, unicode).</p>
</desc>
</func>
<func>
- <name>characters_to_binary(Data,InEncoding) -> binary() | {error, binary(), RestData} | {incomplete, binary(), binary()} </name>
- <fsummary>Convert a collection of characters to an UTF-8 binary</fsummary> <type>
- <v>Data = latin1_chardata() | chardata() | external_chardata()</v>
- <v>RestData = latin1_chardata() | chardata() | external_chardata()</v>
- <v>InEncoding = latin1 | unicode | utf8 | utf16 | utf32 | {utf16,little} | {utf16,big} | {utf32,little} | {utf32,big}</v>
+ <name>characters_to_binary(Data,InEncoding) -> Result</name>
+ <fsummary>Convert a collection of characters to an UTF-8 binary</fsummary>
+
+ <type>
+ <v>Data = <seealso marker="#type-latin1_chardata">latin1_chardata()</seealso>
+ | <seealso marker="#type-chardata">chardata()</seealso>
+ | <seealso marker="#type-external_chardata">external_chardata()</seealso></v>
+ <v>Result = binary() | {error, binary(), RestData} | {incomplete, binary(), binary()}</v>
+ <v>RestData = <seealso marker="#type-latin1_chardata">latin1_chardata()</seealso>
+ | <seealso marker="#type-chardata">chardata()</seealso>
+ | <seealso marker="#type-external_chardata">external_chardata()</seealso></v>
+ <v>InEncoding = <seealso marker="#type-encoding">encoding()</seealso></v>
</type>
<desc>
<p>Same as characters_to_binary(Data, InEncoding, unicode).</p>
</desc>
</func>
<func>
- <name>characters_to_binary(Data, InEncoding, OutEncoding) -> binary() | {error, binary(), RestData} | {incomplete, binary(), binary()} </name>
+ <name name="characters_to_binary" arity="3"/>
<fsummary>Convert a collection of characters to an UTF-8 binary</fsummary>
- <type>
- <v>Data = latin1_chardata() | chardata() | external_chardata()</v>
- <v>RestData = latin1_chardata() | chardata() | external_chardata()</v>
- <v>InEncoding = latin1 | unicode | utf8 | utf16 | utf32 | {utf16,little} | {utf16,big} | {utf32,little} | {utf32,big}</v>
- <v>OutEncoding = latin1 | unicode | utf8 | utf16 | utf32| {utf16,little} | {utf16,big} | {utf32,little} | {utf32,big}</v>
- </type>
<desc>
<p>This function behaves as <seealso
marker="#characters_to_list/2">
characters_to_list/2</seealso>, but produces an binary
instead of a unicode list. The
- <c>InEncoding</c> defines how input is to be interpreted if
+ <c><anno>InEncoding</anno></c> defines how input is to be interpreted if
binaries are present in the <c>Data</c>, while
- <c>OutEncoding</c> defines in what format output is to be
+ <c><anno>OutEncoding</anno></c> defines in what format output is to be
generated.</p>
<p>The option <c>unicode</c> is an alias for <c>utf8</c>, as this is the
@@ -291,17 +323,13 @@ latin1_charlist() = [latin1_char() | latin1_binary() | latin1_charlist()]
</desc>
</func>
<func>
- <name>encoding_to_bom(InEncoding) -> Bin</name>
+ <name name="encoding_to_bom" arity="1"/>
<fsummary>Create a binary UTF byte order mark from encoding.</fsummary>
- <type>
- <v>Bin = binary() of byte_size 4 or less</v>
- <v>InEncoding = latin1 | unicode | utf8 | utf16 | utf32 | {utf16,little} | {utf16,big} | {utf32,little} | {utf32,big}</v>
- <v>Length = int()</v>
- </type>
+ <type_desc variable="Bin">A binary() of byte_size 4 or more.</type_desc>
<desc>
<p>Create an UTF byte order mark (BOM) as a binary from the
- supplied <c>InEncoding</c>. The BOM is, if supported at all,
+ supplied <c><anno>InEncoding</anno></c>. The BOM is, if supported at all,
expected to be placed first in UTF encoded files or
messages.</p>
diff --git a/lib/stdlib/doc/src/win32reg.xml b/lib/stdlib/doc/src/win32reg.xml
index 28960cd098..99fd7fdeb6 100644
--- a/lib/stdlib/doc/src/win32reg.xml
+++ b/lib/stdlib/doc/src/win32reg.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2000</year><year>2009</year>
+ <year>2000</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -85,14 +85,22 @@ hkdd HKEY_DYN_DATA</pre>
<p>For additional information on the Windows registry consult the Win32
Programmer's Reference.</p>
</description>
+ <datatypes>
+ <datatype>
+ <name name="reg_handle"/>
+ <desc><p>As returned by <seealso marker="#open/1">open/1</seealso>.</p></desc>
+ </datatype>
+ <datatype>
+ <name name="name"/>
+ </datatype>
+ <datatype>
+ <name name="value"/>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>change_key(RegHandle, Key) -> ReturnValue</name>
+ <name name="change_key" arity="2"/>
<fsummary>Move to a key in the registry</fsummary>
- <type>
- <v>RegHandle = term()</v>
- <v>Key = string()</v>
- </type>
<desc>
<p>Changes the current key to another key. Works like cd.
The key can be specified as a relative path or as an
@@ -100,12 +108,8 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>change_key_create(RegHandle, Key) -> ReturnValue</name>
+ <name name="change_key_create" arity="2"/>
<fsummary>Move to a key, create it if it is not there</fsummary>
- <type>
- <v>RegHandle = term()</v>
- <v>Key = string()</v>
- </type>
<desc>
<p>Creates a key, or just changes to it, if it is already there. Works
like a combination of <c>mkdir</c> and <c>cd</c>. Calls the Win32 API function
@@ -114,23 +118,16 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>close(RegHandle)-> ReturnValue</name>
+ <name name="close" arity="1"/>
<fsummary>Close the registry.</fsummary>
- <type>
- <v>RegHandle = term()</v>
- </type>
<desc>
- <p>Closes the registry. After that, the <c>RegHandle</c> cannot
+ <p>Closes the registry. After that, the <c><anno>RegHandle</anno></c> cannot
be used.</p>
</desc>
</func>
<func>
- <name>current_key(RegHandle) -> ReturnValue</name>
+ <name name="current_key" arity="1"/>
<fsummary>Return the path to the current key.</fsummary>
- <type>
- <v>RegHandle = term()</v>
- <v>ReturnValue = {ok, string()}</v>
- </type>
<desc>
<p>Returns the path to the current key. This is the equivalent of <c>pwd</c>.</p>
<p>Note that the current key is stored in the driver, and might be
@@ -138,12 +135,8 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>delete_key(RegHandle) -> ReturnValue</name>
+ <name name="delete_key" arity="1"/>
<fsummary>Delete the current key</fsummary>
- <type>
- <v>RegHandle = term()</v>
- <v>ReturnValue = ok | {error, ErrorId}</v>
- </type>
<desc>
<p>Deletes the current key, if it is valid. Calls the Win32 API
function <c>RegDeleteKey()</c>. Note that this call does not change the current key,
@@ -152,12 +145,8 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>delete_value(RegHandle, Name) -> ReturnValue</name>
+ <name name="delete_value" arity="2"/>
<fsummary>Delete the named value on the current key.</fsummary>
- <type>
- <v>RegHandle = term()</v>
- <v>ReturnValue = ok | {error, ErrorId}</v>
- </type>
<desc>
<p>Deletes a named value on the current key. The atom <c>default</c> is
used for the the default value.</p>
@@ -165,12 +154,8 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>expand(String) -> ExpandedString</name>
+ <name name="expand" arity="1"/>
<fsummary>Expand a string with environment variables</fsummary>
- <type>
- <v>String = string()</v>
- <v>ExpandedString = string()</v>
- </type>
<desc>
<p>Expands a string containing environment variables between percent
characters. Anything between two % is taken for a environment
@@ -180,23 +165,15 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>format_error(ErrorId) -> ErrorString</name>
+ <name name="format_error" arity="1"/>
<fsummary>Convert an POSIX errorcode to a string</fsummary>
- <type>
- <v>ErrorId = atom()</v>
- <v>ErrorString = string()</v>
- </type>
<desc>
<p>Convert an POSIX errorcode to a string (by calling <c>erl_posix_msg:message</c>).</p>
</desc>
</func>
<func>
- <name>open(OpenModeList)-> ReturnValue</name>
+ <name name="open" arity="1"/>
<fsummary>Open the registry for reading or writing</fsummary>
- <type>
- <v>OpenModeList = [OpenMode]</v>
- <v>OpenMode = read | write</v>
- </type>
<desc>
<p>Opens the registry for reading or writing. The current key will be the root
(<c>HKEY_CLASSES_ROOT</c>). The <c>read</c> flag in the mode list can be omitted.</p>
@@ -204,12 +181,8 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>set_value(RegHandle, Name, Value) -> ReturnValue</name>
+ <name name="set_value" arity="3"/>
<fsummary>Set value at the current registry key with specified name.</fsummary>
- <type>
- <v>Name = string() | default</v>
- <v>Value = string() | integer() | binary()</v>
- </type>
<desc>
<p>Sets the named (or default) value to value. Calls the Win32
API function <c>RegSetValueEx()</c>. The value can be of three types, and
@@ -221,13 +194,8 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>sub_keys(RegHandle) -> ReturnValue</name>
+ <name name="sub_keys" arity="1"/>
<fsummary>Get subkeys to the current key.</fsummary>
- <type>
- <v>ReturnValue = {ok, SubKeys} | {error, ErrorId}</v>
- <v>SubKeys = [SubKey]</v>
- <v>SubKey = string()</v>
- </type>
<desc>
<p>Returns a list of subkeys to the current key. Calls the Win32
API function <c>EnumRegKeysEx()</c>.</p>
@@ -235,13 +203,8 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>value(RegHandle, Name) -> ReturnValue</name>
+ <name name="value" arity="2"/>
<fsummary>Get the named value on the current key.</fsummary>
- <type>
- <v>Name = string() | default</v>
- <v>ReturnValue = {ok, Value}</v>
- <v>Value = string() | integer() | binary()</v>
- </type>
<desc>
<p>Retrieves the named value (or default) on the current key.
Registry values of type <c>REG_SZ</c>, are returned as strings. Type <c>REG_DWORD</c>
@@ -249,15 +212,8 @@ hkdd HKEY_DYN_DATA</pre>
</desc>
</func>
<func>
- <name>values(RegHandle) -> ReturnValue</name>
+ <name name="values" arity="1"/>
<fsummary>Get all values on the current key.</fsummary>
- <type>
- <v>ReturnValue = {ok, ValuePairs} | {ok, ErrorId}</v>
- <v>ValuePairs = [ValuePair]</v>
- <v>ValuePair = {Name, Value}</v>
- <v>Name = string | default</v>
- <v>Value = string() | integer() | binary()</v>
- </type>
<desc>
<p>Retrieves a list of all values on the current key. The values
have types corresponding to the registry types, see <c>value</c>.
diff --git a/lib/stdlib/doc/src/zip.xml b/lib/stdlib/doc/src/zip.xml
index 529a70a23d..b03fc7f4e2 100644
--- a/lib/stdlib/doc/src/zip.xml
+++ b/lib/stdlib/doc/src/zip.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2006</year><year>2010</year>
+ <year>2006</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -85,67 +85,55 @@
recreated.</p>
</section>
- <section>
- <title>DATA TYPES</title>
- <code type="none">
-zip_file() </code>
- <p>The record <c>zip_file</c> contains the following fields.</p>
- <taglist>
- <tag><c>name = string()</c></tag>
- <item>
- <p>the name of the file</p>
- </item>
- <tag><c>info = file_info()</c></tag>
- <item>
- <p>file info as in
- <seealso marker="erts:file#read_file_info/1">file:read_file_info/1</seealso></p>
- </item>
- <tag><c>comment = string()</c></tag>
- <item>
- <p>the comment for the file in the zip archive</p>
- </item>
- <tag><c>offset = integer()</c></tag>
- <item>
- <p>the offset of the file in the zip archive (used internally)</p>
- </item>
- <tag><c>comp_size = integer()</c></tag>
- <item>
- <p>the compressed size of the file (the uncompressed size is found
- in <c>info</c>)</p>
- </item>
- </taglist>
- <code type="none">zip_comment</code>
- <p>The record <c>zip_comment</c> just contains the archive comment for
- a zip archive</p>
- <taglist>
- <tag><c>comment = string()</c></tag>
- <item>
- <p>the comment for the zip archive</p>
- </item>
- </taglist>
- </section>
+ <datatypes>
+ <datatype>
+ <name name="zip_comment"/>
+ <desc>
+ <p>The record <c>zip_comment</c> just contains the archive comment for
+ a zip archive</p>
+ </desc>
+ </datatype>
+ <datatype>
+ <name name="zip_file"/>
+ <desc>
+ <p>The record <c>zip_file</c> contains the following fields.</p>
+ <taglist>
+ <tag><c>name</c></tag>
+ <item>
+ <p>the name of the file</p>
+ </item>
+ <tag><c>info</c></tag>
+ <item>
+ <p>file info as in
+ <seealso marker="kernel:file#read_file_info/1">file:read_file_info/1</seealso></p>
+ </item>
+ <tag><c>comment</c></tag>
+ <item>
+ <p>the comment for the file in the zip archive</p>
+ </item>
+ <tag><c>offset</c></tag>
+ <item>
+ <p>the offset of the file in the zip archive (used internally)</p>
+ </item>
+ <tag><c>comp_size</c></tag>
+ <item>
+ <p>the compressed size of the file (the uncompressed size is found
+ in <c>info</c>)</p>
+ </item>
+ </taglist>
+ </desc>
+ </datatype>
+ </datatypes>
<funcs>
<func>
- <name>zip(Name, FileList) -> RetValue</name>
- <name>zip(Name, FileList, Options) -> RetValue</name>
- <name>create(Name, FileList) -> RetValue</name>
- <name>create(Name, FileList, Options) -> RetValue</name>
+ <name name="zip" arity="2"/>
+ <name name="zip" arity="3"/>
+ <name name="create" arity="2"/>
+ <name name="create" arity="3"/>
<fsummary>Create a zip archive with options</fsummary>
- <type>
- <v>Name = filename()</v>
- <v>FileList = [FileSpec]</v>
- <v>FileSpec = filename() | {filename(), binary()} | {filename(), binary(), #file_info{}}</v>
- <v>Options = [Option]</v>
- <v>Option = memory | cooked | verbose | {comment, Comment} | {cwd, CWD} | {compress, What} | {uncompress, What}</v>
- <v>What = all | [Extension] | {add, [Extension]} | {del, [Extension]}</v>
- <v>Extension = string()</v>
- <v>Comment = CWD = string()</v>
- <v>RetValue = {ok, Name} | {ok, {Name, binary()}} | {error, Reason}</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>The <marker id="zip_2"></marker><c>zip</c> function creates a
- zip archive containing the files specified in <c>FileList</c>.</p>
+ zip archive containing the files specified in <c><anno>FileList</anno></c>.</p>
<p>As synonyms, the functions <c>create/2</c> and <c>create/3</c>
are provided, to make it resemble the <c>erl_tar</c> module.</p>
<p>The file-list is a list of files, with paths relative to the
@@ -161,9 +149,9 @@ zip_file() </code>
<c>.Z</c>, <c>.zip</c>, <c>.zoo</c>, <c>.arc</c>, <c>.lzh</c>,
<c>.arj</c>.</p>
<p>It is possible to override the default behavior and
- explicitly control what types of files should be
- compressed by using the <c>{compress, What}</c> and
- <c>{uncompress, What}</c> options. It is possible to have
+ explicitly control what types of files that should be
+ compressed by using the <c>{compress, <anno>What</anno>}</c> and
+ <c>{uncompress, <anno>What</anno>}</c> options. It is possible to have
several <c>compress</c> and <c>uncompress</c> options. In
order to trigger compression of a file, its extension must
match with the
@@ -191,22 +179,22 @@ zip_file() </code>
<tag><c>memory</c></tag>
<item>
<p>The output will not be to a file, but instead as a tuple
- <c>{FileName, binary()}</c>. The binary will be a full zip
+ <c>{<anno>FileName</anno>, binary()}</c>. The binary will be a full zip
archive with header, and can be extracted with for instance
<c>unzip/2</c>.</p>
</item>
- <tag><c>{comment, Comment}</c></tag>
+ <tag><c>{comment, <anno>Comment</anno>}</c></tag>
<item>
<p>Add a comment to the zip-archive.</p>
</item>
- <tag><c>{cwd, CWD}</c></tag>
+ <tag><c>{cwd, <anno>CWD</anno>}</c></tag>
<item>
<p>Use the given directory as current directory, it will be
prepended to file names when adding them, although it will not
be in the zip-archive. (Acting like a file:set_cwd/1, but
without changing the global cwd property.)</p>
</item>
- <tag><c>{compress, What}</c></tag>
+ <tag><c>{compress, <anno>What</anno>}</c></tag>
<item>
<p>Controls what types of files will be
compressed. It is by default set to <c>all</c>. The
@@ -215,18 +203,18 @@ zip_file() </code>
<tag><c>all</c></tag>
<item><p> means that all files will be compressed (as long
as they pass the <c>uncompress</c> condition).</p></item>
- <tag><c>[Extension]</c></tag>
+ <tag><c>[<anno>Extension</anno>]</c></tag>
<item><p>means that only files with exactly these extensions
will be compressed.</p></item>
- <tag><c>{add,[Extension]}</c></tag>
+ <tag><c>{add,[<anno>Extension</anno>]}</c></tag>
<item><p>adds these extensions to the list of compress
extensions.</p></item>
- <tag><c>{del,[Extension]}</c></tag>
+ <tag><c>{del,[<anno>Extension</anno>]}</c></tag>
<item><p>deletes these extensions from the list of compress
extensions.</p></item>
</taglist>
</item>
- <tag><c>{uncompress, What}</c></tag>
+ <tag><c>{uncompress, <anno>What</anno>}</c></tag>
<item>
<p>Controls what types of files will be uncompressed. It is by
default set to <c>[".Z",".zip",".zoo",".arc",".lzh",".arj"]</c>.
@@ -234,13 +222,13 @@ zip_file() </code>
<taglist>
<tag><c>all</c></tag>
<item><p> means that no files will be compressed.</p></item>
- <tag><c>[Extension]</c></tag>
+ <tag><c>[<anno>Extension</anno>]</c></tag>
<item><p>means that files with these extensions will be
uncompressed.</p></item>
- <tag><c>{add,[Extension]}</c></tag>
+ <tag><c>{add,[<anno>Extension</anno>]}</c></tag>
<item><p>adds these extensions to the list of uncompress
extensions.</p></item>
- <tag><c>{del,[Extension]}</c></tag>
+ <tag><c>{del,[<anno>Extension</anno>]}</c></tag>
<item><p>deletes these extensions from the list of uncompress
extensions.</p></item>
</taglist>
@@ -249,23 +237,11 @@ zip_file() </code>
</desc>
</func>
<func>
- <name>unzip(Archive) -> RetValue</name>
- <name>unzip(Archive, Options) -> RetValue</name>
- <name>extract(Archive) -> RetValue</name>
- <name>extract(Archive, Options) -> RetValue</name>
+ <name name="unzip" arity="1"/>
+ <name name="unzip" arity="2"/>
+ <name name="extract" arity="1"/>
+ <name name="extract" arity="2"/>
<fsummary>Extract files from a zip archive</fsummary>
- <type>
- <v>Archive = filename() | binary()</v>
- <v>Options = [Option]</v>
- <v>Option = {file_list, FileList} | keep_old_files | verbose | memory | {file_filter, FileFilter} | {cwd, CWD}</v>
- <v>FileList = [filename()]</v>
- <v>FileBinList = [{filename(),binary()}]</v>
- <v>FileFilter = fun(ZipFile) -> true | false</v>
- <v>CWD = string()</v>
- <v>ZipFile = zip_file()</v>
- <v>RetValue = {ok,FileList} | {ok,FileBinList} | {error, Reason} | {error, {Name, Reason}}</v>
- <v>Reason = term()</v>
- </type>
<desc>
<p>The <marker id="unzip_1"></marker>
<c>unzip/1</c> function extracts
@@ -273,17 +249,17 @@ zip_file() </code>
<marker id="unzip_2"></marker>
<c>unzip/2</c> function provides options
to extract some files, and more.</p>
- <p>If the <c>Archive</c> argument is given as a binary,
+ <p>If the <c><anno>Archive</anno></c> argument is given as a binary,
the contents of the binary is assumed to be a zip archive,
otherwise it should be a filename.</p>
<p>The following options are available:</p>
<taglist>
- <tag><c>{file_list, FileList}</c></tag>
+ <tag><c>{file_list, <anno>FileList</anno>}</c></tag>
<item>
<p>By default, all files will be extracted from the zip
- archive. With the <c>{file_list,FileList}</c> option,
+ archive. With the <c>{file_list, <anno>FileList</anno>}</c> option,
the <c>unzip/2</c> function will only extract the files
- whose names are included in <c>FileList</c>. The full
+ whose names are included in <c><anno>FileList</anno></c>. The full
paths, including the names of all sub directories within
the zip archive, must be specified.</p>
</item>
@@ -329,29 +305,29 @@ zip_file() </code>
</desc>
</func>
<func>
- <name>foldl(Fun, Acc0, Archive) -> {ok, Acc1} | {error, Reason}</name>
+ <name name="foldl" arity="3"/>
<fsummary>Fold a function over all files in a zip archive</fsummary>
- <type>
- <v>Fun = fun(FileInArchive, GetInfo, GetBin, AccIn) -> AccOut</v>
- <v>FileInArchive = filename()</v>
- <v>GetInfo = fun() -> #file_info{}</v>
- <v>GetBin = fun() -> binary()</v>
- <v>Acc0 = Acc1 = AccIn = AccOut = term()</v>
- <v>Archive = filename() | {filename(), binary()}</v>
- </type>
<desc>
<p>The <marker id="foldl_3"></marker> <c>foldl/3</c> function
- calls <c>Fun(FileInArchive, GetInfo, GetBin, AccIn)</c> on
- successive files in the <c>Archive</c>, starting with <c>AccIn
- == Acc0</c>. <c>FileInArchive</c> is the name that the file
- has in the archive. <c>GetInfo</c> is a fun that returns info
- about the the file. <c>GetBin</c> returns the contents of the
- file. Both <c>GetInfo</c> and <c>GetBin</c> must be called
- within the <c>Fun</c>. Their behavior is undefined if they are
- called outside the context of the <c>Fun</c>. The <c>Fun</c>
+ calls <c><anno>Fun</anno>(<anno>FileInArchive</anno>, <anno>GetInfo
+ </anno>, <anno>GetBin</anno>, <anno>AccIn</anno>)</c> on
+ successive files in the <c>Archive</c>, starting with
+ <c><anno>AccIn</anno>
+ == <anno>Acc0</anno></c>. <c><anno>FileInArchive</anno></c> is
+ the name that the file
+ has in the archive. <c><anno>GetInfo</anno></c> is a fun that
+ returns info
+ about the the file. <c><anno>GetBin</anno></c> returns the contents
+ of the
+ file. Both <c><anno>GetInfo</anno></c> and <c><anno>GetBin</anno></c>
+ must be called
+ within the <c><anno>Fun</anno></c>. Their behavior is undefined if
+ they are
+ called outside the context of the <c><anno>Fun</anno></c>.
+ The <c><anno>Fun</anno></c>
must return a new accumulator which is passed to the next
call. <c>foldl/3</c> returns the final value of the
- accumulator. <c>Acc0</c> is returned if the archive is
+ accumulator. <c><anno>Acc0</anno></c> is returned if the archive is
empty. It is not necessary to iterate over all files in the
archive. The iteration may be ended prematurely in a
controlled manner by throwing an exception.</p>
@@ -387,26 +363,16 @@ zip_file() </code>
</desc>
</func>
<func>
- <name>list_dir(Archive) -> RetValue</name>
- <name>list_dir(Archive, Options)</name>
- <name>table(Archive) -> RetValue</name>
- <name>table(Archive, Options)</name>
+ <name name="list_dir" arity="1"/>
+ <name name="list_dir" arity="2"/>
+ <name name="table" arity="1" />
+ <name name="table" arity="2"/>
<fsummary>Retrieve the name of all files in a zip archive</fsummary>
- <type>
- <v>Archive = filename() | binary()</v>
- <v>RetValue = {ok, [Comment, Files]} | {error, Reason}</v>
- <v>Comment = zip_comment()</v>
- <v>Files = [zip_file()]</v>
- <v>Options = [Option]</v>
- <v>Option = cooked</v>
- <v>Reason = term()</v>
- </type>
<desc>
- <p>The <marker id="list_dir_1"></marker>
-<c>list_dir/1</c> function retrieves
- the names of all files in the zip archive <c>Archive</c>. The
- <marker id="list_dir_2"></marker>
-<c>list_dir/2</c> function provides options.</p>
+ <p>The <marker id="list_dir_1"></marker><c>list_dir/1</c>
+ function retrieves the names of all files in the zip archive
+ <c><anno>Archive</anno></c>. The <marker id="list_dir_2"></marker>
+ <c>list_dir/2</c> function provides options.</p>
<p>As synonyms, the functions <c>table/2</c> and <c>table/3</c>
are provided, to make it resemble the <c>erl_tar</c> module.</p>
<p>The result value is the tuple <c>{ok, List}</c>, where <c>List</c>
@@ -425,43 +391,27 @@ zip_file() </code>
</desc>
</func>
<func>
- <name>t(Archive)</name>
+ <name name="t" arity="1"/>
<fsummary>Print the name of each file in a zip archive</fsummary>
- <type>
- <v>Archive = filename() | binary() | ZipHandle</v>
- <v>ZipHandle = pid()</v>
- </type>
<desc>
- <p>The <marker id="t_1"></marker>
-<c>t/1</c> function prints the names
- of all files in the zip archive <c>Archive</c> to the Erlang shell.
+ <p>The <marker id="t_1"></marker><c>t/1</c> function prints the names
+ of all files in the zip archive <c><anno>Archive</anno></c> to the Erlang shell.
(Similar to "<c>tar&nbsp;t</c>".)</p>
</desc>
</func>
<func>
- <name>tt(Archive)</name>
+ <name name="tt" arity="1"/>
<fsummary>Print name and information for each file in a zip archive</fsummary>
- <type>
- <v>Archive = filename() | binary()</v>
- </type>
<desc>
- <p>The <marker id="tt_1"></marker>
-<c>tt/1</c> function prints names and
- information about all files in the zip archive <c>Archive</c> to
+ <p>The <marker id="tt_1"></marker><c>tt/1</c> function prints names and
+ information about all files in the zip archive <c><anno>Archive</anno></c> to
the Erlang shell. (Similar to "<c>tar tv</c>".)</p>
</desc>
</func>
<func>
- <name>zip_open(Archive) -> {ok, ZipHandle} | {error, Reason}</name>
- <name>zip_open(Archive, Options) -> {ok, ZipHandle} | {error, Reason}</name>
+ <name name="zip_open" arity="1"/>
+ <name name="zip_open" arity="2"/>
<fsummary>Open an archive and return a handle to it</fsummary>
- <type>
- <v>Archive = filename() | binary()</v>
- <v>Options = [Option]</v>
- <v>Options = cooked | memory | {cwd, CWD}</v>
- <v>CWD = string()</v>
- <v>ZipHandle = pid()</v>
- </type>
<desc>
<p>The <marker id="zip_open"></marker>
<c>zip_open</c> function opens a
@@ -472,29 +422,19 @@ zip_file() </code>
</desc>
</func>
<func>
- <name>zip_list_dir(ZipHandle) -> Result | {error, Reason}</name>
+ <name name="zip_list_dir" arity="1"/>
<fsummary>Return a table of files in open zip archive</fsummary>
- <type>
- <v>Result = [ZipComment, ZipFile...]</v>
- <v>ZipComment = #zip_comment{}</v>
- <v>ZipFile = #zip_file{}</v>
- <v>ZipHandle = pid()</v>
- </type>
<desc>
- <p>The <marker id="zip_list_dir"></marker>
-<c>zip_list_dir/1</c> function
- returns the file list of an open zip archive.</p>
+ <p>The <marker id="zip_list_dir"></marker>
+ <c>zip_list_dir/1</c> function
+ returns the file list of an open zip archive. The first returned
+ element is the zip archive comment.</p>
</desc>
</func>
<func>
- <name>zip_get(ZipHandle) -> {ok, [Result]} | {error, Reason}</name>
- <name>zip_get(FileName, ZipHandle) -> {ok, Result} | {error, Reason}</name>
+ <name name="zip_get" arity="1"/>
+ <name name="zip_get" arity="2"/>
<fsummary>Extract files from an open archive</fsummary>
- <type>
- <v>FileName = filename()</v>
- <v>ZipHandle = pid()</v>
- <v>Result = filename() | {filename(), binary()}</v>
- </type>
<desc>
<p>The <marker id="zip_get"></marker>
<c>zip_get</c> function extracts
@@ -505,11 +445,8 @@ zip_file() </code>
</desc>
</func>
<func>
- <name>zip_close(ZipHandle) -> ok | {error, einval}</name>
+ <name name="zip_close" arity="1"/>
<fsummary>Close an open archive</fsummary>
- <type>
- <v>ZipHandle = pid()</v>
- </type>
<desc>
<p>The <marker id="zip_close"></marker>
<c>zip_close/1</c> function closes
diff --git a/lib/stdlib/include/zip.hrl b/lib/stdlib/include/zip.hrl
index 2b5ddc1dfe..6e3ed9c78a 100644
--- a/lib/stdlib/include/zip.hrl
+++ b/lib/stdlib/include/zip.hrl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2006-2009. All Rights Reserved.
+%% Copyright Ericsson AB 2006-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -19,7 +19,7 @@
-record(zip_file, {
name :: string(), % file name
- info :: #file_info{},
+ info :: file:file_info(),
comment :: string(), % zip file comment
offset :: non_neg_integer(), % offset of file's local header in archive
comp_size :: non_neg_integer() % compressed size
diff --git a/lib/stdlib/src/array.erl b/lib/stdlib/src/array.erl
index 83576c9fd3..2f69e2b0a4 100644
--- a/lib/stdlib/src/array.erl
+++ b/lib/stdlib/src/array.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2007-2009. All Rights Reserved.
+%% Copyright Ericsson AB 2007-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -163,17 +163,17 @@
-type array_indx() :: non_neg_integer().
--type array_opt() :: 'fixed' | non_neg_integer()
- | {'default', term()} | {'fixed', boolean()}
- | {'size', non_neg_integer()}.
+-type array_opt() :: {'fixed', boolean()} | 'fixed'
+ | {'default', Value :: term()}
+ | {'size', N :: non_neg_integer()}
+ | (N :: non_neg_integer()).
-type array_opts() :: array_opt() | [array_opt()].
--type indx_pair() :: {array_indx(), term()}.
+-type indx_pair() :: {Index :: array_indx(), Value :: term()}.
-type indx_pairs() :: [indx_pair()].
%%--------------------------------------------------------------------------
-%% @spec () -> array()
%% @doc Create a new, extendible array with initial size zero.
%% @equiv new([])
%%
@@ -185,7 +185,6 @@
new() ->
new([]).
-%% @spec (Options::term()) -> array()
%% @doc Create a new array according to the given options. By default,
%% the array is extendible and has initial size zero. Array indices
%% start at 0.
@@ -224,12 +223,11 @@ new() ->
%% @see from_list/2
%% @see fix/1
--spec new(array_opts()) -> array().
+-spec new(Options :: array_opts()) -> array().
new(Options) ->
new_0(Options, 0, false).
-%% @spec (Size::integer(), Options::term()) -> array()
%% @doc Create a new array according to the given size and options. If
%% `Size' is not a nonnegative integer, the call fails with reason
%% `badarg'. By default, the array has fixed size. Note that any size
@@ -245,7 +243,7 @@ new(Options) ->
%%
%% @see new/1
--spec new(non_neg_integer(), array_opts()) -> array().
+-spec new(Size :: non_neg_integer(), Options :: array_opts()) -> array().
new(Size, Options) when is_integer(Size), Size >= 0 ->
new_0(Options, Size, true);
@@ -293,13 +291,12 @@ find_max(_I, M) ->
M.
-%% @spec (X::term()) -> boolean()
%% @doc Returns `true' if `X' appears to be an array, otherwise `false'.
%% Note that the check is only shallow; there is no guarantee that `X'
%% is a well-formed array representation even if this function returns
%% `true'.
--spec is_array(term()) -> boolean().
+-spec is_array(X :: term()) -> boolean().
is_array(#array{size = Size, max = Max})
when is_integer(Size), is_integer(Max) ->
@@ -308,25 +305,23 @@ is_array(_) ->
false.
-%% @spec (array()) -> integer()
%% @doc Get the number of entries in the array. Entries are numbered
%% from 0 to `size(Array)-1'; hence, this is also the index of the first
%% entry that is guaranteed to not have been previously set.
%% @see set/3
%% @see sparse_size/1
--spec size(array()) -> non_neg_integer().
+-spec size(Array :: array()) -> non_neg_integer().
size(#array{size = N}) -> N;
size(_) -> erlang:error(badarg).
-%% @spec (array()) -> term()
%% @doc Get the value used for uninitialized entries.
%%
%% @see new/2
--spec default(array()) -> term().
+-spec default(Array :: array()) -> term().
default(#array{default = D}) -> D;
default(_) -> erlang:error(badarg).
@@ -405,23 +400,21 @@ new_test_() ->
-endif.
-%% @spec (array()) -> array()
%% @doc Fix the size of the array. This prevents it from growing
%% automatically upon insertion; see also {@link set/3}.
%% @see relax/1
--spec fix(array()) -> array().
+-spec fix(Array :: array()) -> array().
fix(#array{}=A) ->
A#array{max = 0}.
-%% @spec (array()) -> boolean()
%% @doc Check if the array has fixed size.
%% Returns `true' if the array is fixed, otherwise `false'.
%% @see fix/1
--spec is_fix(array()) -> boolean().
+-spec is_fix(Array :: array()) -> boolean().
is_fix(#array{max = 0}) -> true;
is_fix(#array{}) -> false.
@@ -455,12 +448,11 @@ fix_test_() ->
-endif.
-%% @spec (array()) -> array()
%% @doc Make the array resizable. (Reverses the effects of {@link
%% fix/1}.)
%% @see fix/1
--spec relax(array()) -> array().
+-spec relax(Array :: array()) -> array().
relax(#array{size = N}=A) ->
A#array{max = find_max(N-1, ?LEAFSIZE)}.
@@ -481,12 +473,11 @@ relax_test_() ->
-endif.
-%% @spec (integer(), array()) -> array()
%% @doc Change the size of the array. If `Size' is not a nonnegative
%% integer, the call fails with reason `badarg'. If the given array has
%% fixed size, the resulting array will also have fixed size.
--spec resize(non_neg_integer(), array()) -> array().
+-spec resize(Size :: non_neg_integer(), Array :: array()) -> array().
resize(Size, #array{size = N, max = M, elements = E}=A)
when is_integer(Size), Size >= 0 ->
@@ -510,8 +501,6 @@ resize(_Size, _) ->
erlang:error(badarg).
-%% @spec (array()) -> array()
-
%% @doc Change the size of the array to that reported by {@link
%% sparse_size/1}. If the given array has fixed size, the resulting
%% array will also have fixed size.
@@ -519,7 +508,7 @@ resize(_Size, _) ->
%% @see resize/2
%% @see sparse_size/1
--spec resize(array()) -> array().
+-spec resize(Array :: array()) -> array().
resize(Array) ->
resize(sparse_size(Array), Array).
@@ -559,7 +548,6 @@ resize_test_() ->
-endif.
-%% @spec (integer(), term(), array()) -> array()
%% @doc Set entry `I' of the array to `Value'. If `I' is not a
%% nonnegative integer, or if the array has fixed size and `I' is larger
%% than the maximum index, the call fails with reason `badarg'.
@@ -570,7 +558,7 @@ resize_test_() ->
%% @see get/2
%% @see reset/2
--spec set(array_indx(), term(), array()) -> array().
+-spec set(I :: array_indx(), Value :: term(), Array :: array()) -> array().
set(I, Value, #array{size = N, max = M, default = D, elements = E}=A)
when is_integer(I), I >= 0 ->
@@ -624,7 +612,6 @@ expand(I, _S, X, D) ->
setelement(I+1, ?NEW_LEAF(D), X).
-%% @spec (integer(), array()) -> term()
%% @doc Get the value of entry `I'. If `I' is not a nonnegative
%% integer, or if the array has fixed size and `I' is larger than the
%% maximum index, the call fails with reason `badarg'.
@@ -634,7 +621,7 @@ expand(I, _S, X, D) ->
%% @see set/3
--spec get(array_indx(), array()) -> term().
+-spec get(I :: array_indx(), Array :: array()) -> term().
get(I, #array{size = N, max = M, elements = E, default = D})
when is_integer(I), I >= 0 ->
@@ -660,7 +647,6 @@ get_1(I, E, _D) ->
element(I+1, E).
-%% @spec (integer(), array()) -> array()
%% @doc Reset entry `I' to the default value for the array.
%% If the value of entry `I' is the default value the array will be
%% returned unchanged. Reset will never change size of the array.
@@ -675,7 +661,7 @@ get_1(I, E, _D) ->
%% TODO: a reset_range function
--spec reset(array_indx(), array()) -> array().
+-spec reset(I :: array_indx(), Array :: array()) -> array().
reset(I, #array{size = N, max = M, default = D, elements = E}=A)
when is_integer(I), I >= 0 ->
@@ -756,13 +742,12 @@ set_get_test_() ->
-endif.
-%% @spec (array()) -> list()
%% @doc Converts the array to a list.
%%
%% @see from_list/2
%% @see sparse_to_list/1
--spec to_list(array()) -> list().
+-spec to_list(Array :: array()) -> list().
to_list(#array{size = 0}) ->
[];
@@ -831,12 +816,11 @@ to_list_test_() ->
-endif.
-%% @spec (array()) -> list()
%% @doc Converts the array to a list, skipping default-valued entries.
%%
%% @see to_list/1
--spec sparse_to_list(array()) -> list().
+-spec sparse_to_list(Array :: array()) -> list().
sparse_to_list(#array{size = 0}) ->
[];
@@ -901,15 +885,13 @@ sparse_to_list_test_() ->
-endif.
-%% @spec (list()) -> array()
%% @equiv from_list(List, undefined)
--spec from_list(list()) -> array().
+-spec from_list(List :: list()) -> array().
from_list(List) ->
from_list(List, undefined).
-%% @spec (list(), term()) -> array()
%% @doc Convert a list to an extendible array. `Default' is used as the value
%% for uninitialized entries of the array. If `List' is not a proper list,
%% the call fails with reason `badarg'.
@@ -917,7 +899,7 @@ from_list(List) ->
%% @see new/2
%% @see to_list/1
--spec from_list(list(), term()) -> array().
+-spec from_list(List :: list(), Default :: term()) -> array().
from_list([], Default) ->
new({default,Default});
@@ -1011,13 +993,12 @@ from_list_test_() ->
-endif.
-%% @spec (array()) -> [{Index::integer(), Value::term()}]
%% @doc Convert the array to an ordered list of pairs `{Index, Value}'.
%%
%% @see from_orddict/2
%% @see sparse_to_orddict/1
--spec to_orddict(array()) -> indx_pairs().
+-spec to_orddict(Array :: array()) -> indx_pairs().
to_orddict(#array{size = 0}) ->
[];
@@ -1104,13 +1085,12 @@ to_orddict_test_() ->
-endif.
-%% @spec (array()) -> [{Index::integer(), Value::term()}]
%% @doc Convert the array to an ordered list of pairs `{Index, Value}',
%% skipping default-valued entries.
%%
%% @see to_orddict/1
--spec sparse_to_orddict(array()) -> indx_pairs().
+-spec sparse_to_orddict(Array :: array()) -> indx_pairs().
sparse_to_orddict(#array{size = 0}) ->
[];
@@ -1188,15 +1168,13 @@ sparse_to_orddict_test_() ->
-endif.
-%% @spec (list()) -> array()
%% @equiv from_orddict(Orddict, undefined)
--spec from_orddict(indx_pairs()) -> array().
+-spec from_orddict(Orddict :: indx_pairs()) -> array().
from_orddict(Orddict) ->
from_orddict(Orddict, undefined).
-%% @spec (list(), term()) -> array()
%% @doc Convert an ordered list of pairs `{Index, Value}' to a
%% corresponding extendible array. `Default' is used as the value for
%% uninitialized entries of the array. If `List' is not a proper,
@@ -1206,7 +1184,7 @@ from_orddict(Orddict) ->
%% @see new/2
%% @see to_orddict/1
--spec from_orddict(indx_pairs(), term()) -> array().
+-spec from_orddict(Orddict :: indx_pairs(), Default :: term()) -> array().
from_orddict([], Default) ->
new({default,Default});
@@ -1392,7 +1370,6 @@ from_orddict_test_() ->
-endif.
-%% @spec (Function, array()) -> array()
%% Function = (Index::integer(), Value::term()) -> term()
%% @doc Map the given function onto each element of the array. The
%% elements are visited in order from the lowest index to the highest.
@@ -1402,7 +1379,8 @@ from_orddict_test_() ->
%% @see foldr/3
%% @see sparse_map/2
--spec map(fun((array_indx(), _) -> _), array()) -> array().
+-spec map(Function, Array :: array()) -> array() when
+ Function :: fun((Index :: array_indx(), Value :: _) -> _).
map(Function, Array=#array{size = N, elements = E, default = D})
when is_function(Function, 2) ->
@@ -1485,7 +1463,6 @@ map_test_() ->
-endif.
-%% @spec (Function, array()) -> array()
%% Function = (Index::integer(), Value::term()) -> term()
%% @doc Map the given function onto each element of the array, skipping
%% default-valued entries. The elements are visited in order from the
@@ -1494,7 +1471,8 @@ map_test_() ->
%%
%% @see map/2
--spec sparse_map(fun((array_indx(), _) -> _), array()) -> array().
+-spec sparse_map(Function, Array :: array()) -> array() when
+ Function :: fun((Index :: array_indx(), Value :: _) -> _).
sparse_map(Function, Array=#array{size = N, elements = E, default = D})
when is_function(Function, 2) ->
@@ -1580,9 +1558,6 @@ sparse_map_test_() ->
-endif.
-%% @spec (Function, InitialAcc::term(), array()) -> term()
-%% Function = (Index::integer(), Value::term(), Acc::term()) ->
-%% term()
%% @doc Fold the elements of the array using the given function and
%% initial accumulator value. The elements are visited in order from the
%% lowest index to the highest. If `Function' is not a function, the
@@ -1592,7 +1567,8 @@ sparse_map_test_() ->
%% @see map/2
%% @see sparse_foldl/3
--spec foldl(fun((array_indx(), _, A) -> B), A, array()) -> B.
+-spec foldl(Function, InitialAcc :: A, Array :: array()) -> B when
+ Function :: fun((Index :: array_indx(), Value :: _, Acc :: A) -> B).
foldl(Function, A, #array{size = N, elements = E, default = D})
when is_function(Function, 3) ->
@@ -1656,9 +1632,6 @@ foldl_test_() ->
-endif.
-%% @spec (Function, InitialAcc::term(), array()) -> term()
-%% Function = (Index::integer(), Value::term(), Acc::term()) ->
-%% term()
%% @doc Fold the elements of the array using the given function and
%% initial accumulator value, skipping default-valued entries. The
%% elements are visited in order from the lowest index to the highest.
@@ -1667,7 +1640,8 @@ foldl_test_() ->
%% @see foldl/3
%% @see sparse_foldr/3
--spec sparse_foldl(fun((array_indx(), _, A) -> B), A, array()) -> B.
+-spec sparse_foldl(Function, InitialAcc :: A, Array :: array()) -> B when
+ Function :: fun((Index :: array_indx(), Value :: _, Acc :: A) -> B).
sparse_foldl(Function, A, #array{size = N, elements = E, default = D})
when is_function(Function, 3) ->
@@ -1735,9 +1709,6 @@ sparse_foldl_test_() ->
-endif.
-%% @spec (Function, InitialAcc::term(), array()) -> term()
-%% Function = (Index::integer(), Value::term(), Acc::term()) ->
-%% term()
%% @doc Fold the elements of the array right-to-left using the given
%% function and initial accumulator value. The elements are visited in
%% order from the highest index to the lowest. If `Function' is not a
@@ -1746,7 +1717,8 @@ sparse_foldl_test_() ->
%% @see foldl/3
%% @see map/2
--spec foldr(fun((array_indx(), _, A) -> B), A, array()) -> B.
+-spec foldr(Function, InitialAcc :: A, Array :: array()) -> B when
+ Function :: fun((Index :: array_indx(), Value :: _, Acc :: A) -> B).
foldr(Function, A, #array{size = N, elements = E, default = D})
when is_function(Function, 3) ->
@@ -1815,9 +1787,6 @@ foldr_test_() ->
-endif.
-%% @spec (Function, InitialAcc::term(), array()) -> term()
-%% Function = (Index::integer(), Value::term(), Acc::term()) ->
-%% term()
%% @doc Fold the elements of the array right-to-left using the given
%% function and initial accumulator value, skipping default-valued
%% entries. The elements are visited in order from the highest index to
@@ -1827,7 +1796,8 @@ foldr_test_() ->
%% @see foldr/3
%% @see sparse_foldl/3
--spec sparse_foldr(fun((array_indx(), _, A) -> B), A, array()) -> B.
+-spec sparse_foldr(Function, InitialAcc :: A, Array :: array()) -> B when
+ Function :: fun((Index :: array_indx(), Value :: _, Acc :: A) -> B).
sparse_foldr(Function, A, #array{size = N, elements = E, default = D})
when is_function(Function, 3) ->
@@ -1870,7 +1840,6 @@ sparse_foldr_3(I, T, Ix, A, F, D) ->
end.
-%% @spec (array()) -> integer()
%% @doc Get the number of entries in the array up until the last
%% non-default valued entry. In other words, returns `I+1' if `I' is the
%% last non-default valued entry in the array, or zero if no such entry
@@ -1878,7 +1847,7 @@ sparse_foldr_3(I, T, Ix, A, F, D) ->
%% @see size/1
%% @see resize/1
--spec sparse_size(array()) -> non_neg_integer().
+-spec sparse_size(Array :: array()) -> non_neg_integer().
sparse_size(A) ->
F = fun (I, _V, _A) -> throw({value, I}) end,
diff --git a/lib/stdlib/src/base64.erl b/lib/stdlib/src/base64.erl
index a14a72ac6d..5d800e87b8 100644
--- a/lib/stdlib/src/base64.erl
+++ b/lib/stdlib/src/base64.erl
@@ -38,7 +38,9 @@
%% Description: Encodes a plain ASCII string (or binary) into base64.
%%-------------------------------------------------------------------------
--spec encode_to_string(string() | binary()) -> ascii_string().
+-spec encode_to_string(Data) -> Base64String when
+ Data :: string() | binary(),
+ Base64String :: ascii_string().
encode_to_string(Bin) when is_binary(Bin) ->
encode_to_string(binary_to_list(Bin));
@@ -53,7 +55,9 @@ encode_to_string(List) when is_list(List) ->
%% Description: Encodes a plain ASCII string (or binary) into base64.
%%-------------------------------------------------------------------------
--spec encode(string() | binary()) -> binary().
+-spec encode(Data) -> Base64 when
+ Data :: string() | binary(),
+ Base64 :: binary().
encode(Bin) when is_binary(Bin) ->
encode_binary(Bin);
@@ -102,14 +106,18 @@ encode_binary(Bin) ->
%% whereas decode crashes if an illegal character is found
%%-------------------------------------------------------------------------
--spec decode(string() | binary()) -> binary().
+-spec decode(Base64) -> Data when
+ Base64 :: string() | binary(),
+ Data :: binary().
decode(Bin) when is_binary(Bin) ->
decode_binary(<<>>, Bin);
decode(List) when is_list(List) ->
list_to_binary(decode_l(List)).
--spec mime_decode(string() | binary()) -> binary().
+-spec mime_decode(Base64) -> Data when
+ Base64 :: string() | binary(),
+ Data :: binary().
mime_decode(Bin) when is_binary(Bin) ->
mime_decode_binary(<<>>, Bin);
@@ -139,14 +147,18 @@ mime_decode_l(List) ->
%% whereas decode crashes if an illegal character is found
%%-------------------------------------------------------------------------
--spec decode_to_string(string() | binary()) -> string().
+-spec decode_to_string(Base64) -> DataString when
+ Base64 :: string() | binary(),
+ DataString :: string().
decode_to_string(Bin) when is_binary(Bin) ->
decode_to_string(binary_to_list(Bin));
decode_to_string(List) when is_list(List) ->
decode_l(List).
--spec mime_decode_to_string(string() | binary()) -> string().
+-spec mime_decode_to_string(Base64) -> DataString when
+ Base64 :: string() | binary(),
+ DataString :: string().
mime_decode_to_string(Bin) when is_binary(Bin) ->
mime_decode_to_string(binary_to_list(Bin));
diff --git a/lib/stdlib/src/beam_lib.erl b/lib/stdlib/src/beam_lib.erl
index 74d4ad3da7..d9c645d787 100644
--- a/lib/stdlib/src/beam_lib.erl
+++ b/lib/stdlib/src/beam_lib.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2000-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2000-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -54,13 +54,9 @@
-type beam() :: module() | file:filename() | binary().
-%% XXX: THE FOLLOWING SHOULD BE IMPORTED FROM SOMEWHERE ELSE
--type forms() :: term().
+-type forms() :: [erl_parse:abstract_form()].
--type abst_vsn() :: atom().
--type abst_code() :: {abst_vsn(), forms()} | 'no_abstract_code'.
--type attribute() :: atom().
--type attrvalue() :: term().
+-type abst_code() :: {AbstVersion :: atom(), forms()} | 'no_abstract_code'.
-type dataB() :: binary().
-type index() :: non_neg_integer().
-type label() :: integer().
@@ -74,9 +70,9 @@
| 'atoms'.
-type chunkref() :: chunkname() | chunkid().
--type attrib_entry() :: {attribute(), [attrvalue()]}.
--type compinfo_entry() :: {atom(), term()}.
--type labeled_entry() :: {atom(), arity(), label()}.
+-type attrib_entry() :: {Attribute :: atom(), [AttributeValue :: term()]}.
+-type compinfo_entry() :: {InfoKey :: atom(), term()}.
+-type labeled_entry() :: {Function :: atom(), arity(), label()}.
-type chunkdata() :: {chunkid(), dataB()}
| {'abstract_code', abst_code()}
@@ -85,20 +81,17 @@
| {'exports', [{atom(), arity()}]}
| {'labeled_exports', [labeled_entry()]}
| {'imports', [mfa()]}
- | {'indexed_imports', [{index(), module(), atom(), arity()}]}
+ | {'indexed_imports', [{index(), module(), Function :: atom(), arity()}]}
| {'locals', [{atom(), arity()}]}
| {'labeled_locals', [labeled_entry()]}
| {'atoms', [{integer(), atom()}]}.
--type info_pair() :: {'file', file:filename()}
- | {'binary', binary()}
- | {'module', module()}
- | {'chunks', [{chunkid(), integer(), integer()}]}.
-
%% Error reasons
-type info_rsn() :: {'chunk_too_big', file:filename(),
- chunkid(), integer(), integer()}
- | {'invalid_beam_file', file:filename(), integer()}
+ chunkid(), ChunkSize :: non_neg_integer(),
+ FileSize :: non_neg_integer()}
+ | {'invalid_beam_file', file:filename(),
+ Position :: non_neg_integer()}
| {'invalid_chunk', file:filename(), chunkid()}
| {'missing_chunk', file:filename(), chunkid()}
| {'not_a_beam_file', file:filename()}
@@ -118,20 +111,34 @@
%% Exported functions
%%
--spec info(beam()) -> [info_pair()] | {'error', 'beam_lib', info_rsn()}.
+-spec info(Beam) -> [InfoPair] | {'error', 'beam_lib', info_rsn()} when
+ Beam :: beam(),
+ InfoPair :: {'file', Filename :: file:filename()}
+ | {'binary', Binary :: binary()}
+ | {'module', Module :: module()}
+ | {'chunks', [{ChunkId :: chunkid(),
+ Pos :: non_neg_integer(),
+ Size :: non_neg_integer()}]}.
info(File) ->
read_info(beam_filename(File)).
--spec chunks(beam(), [chunkref()]) ->
- {'ok', {module(), [chunkdata()]}} | {'error', 'beam_lib', chnk_rsn()}.
+-spec chunks(Beam, ChunkRefs) ->
+ {'ok', {module(), [chunkdata()]}} |
+ {'error', 'beam_lib', chnk_rsn()} when
+ Beam :: beam(),
+ ChunkRefs :: [chunkref()].
chunks(File, Chunks) ->
read_chunk_data(File, Chunks).
--spec chunks(beam(), [chunkref()], ['allow_missing_chunks']) ->
- {'ok', {module(), [{chunkref(), chunkdata() | 'missing_chunk'}]}}
- | {'error', 'beam_lib', chnk_rsn()}.
+-spec chunks(Beam, ChunkRefs, Options) ->
+ {'ok', {module(), [ChunkResult]}} |
+ {'error', 'beam_lib', chnk_rsn()} when
+ Beam :: beam(),
+ ChunkRefs :: [chunkref()],
+ Options :: ['allow_missing_chunks'],
+ ChunkResult :: chunkdata() | {ChunkRef :: chunkref(), 'missing_chunk'}.
chunks(File, Chunks, Options) ->
try read_chunk_data(File, Chunks, Options)
@@ -142,49 +149,65 @@ chunks(File, Chunks, Options) ->
all_chunks(File) ->
read_all_chunks(File).
--spec cmp(beam(), beam()) -> 'ok' | {'error', 'beam_lib', cmp_rsn()}.
+-spec cmp(Beam1, Beam2) -> 'ok' | {'error', 'beam_lib', cmp_rsn()} when
+ Beam1 :: beam(),
+ Beam2 :: beam().
cmp(File1, File2) ->
try cmp_files(File1, File2)
catch Error -> Error end.
--spec cmp_dirs(atom() | file:filename(), atom() | file:filename()) ->
- {[file:filename()], [file:filename()],
- [{file:filename(), file:filename()}]}
- | {'error', 'beam_lib', {'not_a_directory', term()} | info_rsn()}.
+-spec cmp_dirs(Dir1, Dir2) ->
+ {Only1, Only2, Different} | {'error', 'beam_lib', Reason} when
+ Dir1 :: atom() | file:filename(),
+ Dir2 :: atom() | file:filename(),
+ Only1 :: [file:filename()],
+ Only2 :: [file:filename()],
+ Different :: [{Filename1 :: file:filename(), Filename2 :: file:filename()}],
+ Reason :: {'not_a_directory', term()} | info_rsn().
cmp_dirs(Dir1, Dir2) ->
catch compare_dirs(Dir1, Dir2).
--spec diff_dirs(atom() | file:filename(), atom() | file:filename()) ->
- 'ok' | {'error', 'beam_lib', {'not_a_directory', term()} | info_rsn()}.
+-spec diff_dirs(Dir1, Dir2) -> 'ok' | {'error', 'beam_lib', Reason} when
+ Dir1 :: atom() | file:filename(),
+ Dir2 :: atom() | file:filename(),
+ Reason :: {'not_a_directory', term()} | info_rsn().
diff_dirs(Dir1, Dir2) ->
catch diff_directories(Dir1, Dir2).
--spec strip(beam()) ->
- {'ok', {module(), beam()}} | {'error', 'beam_lib', info_rsn()}.
+-spec strip(Beam1) ->
+ {'ok', {module(), Beam2}} | {'error', 'beam_lib', info_rsn()} when
+ Beam1 :: beam(),
+ Beam2 :: beam().
strip(FileName) ->
try strip_file(FileName)
catch Error -> Error end.
--spec strip_files([beam()]) ->
- {'ok', [{module(), beam()}]} | {'error', 'beam_lib', info_rsn()}.
+-spec strip_files(Files) ->
+ {'ok', [{module(), Beam}]} | {'error', 'beam_lib', info_rsn()} when
+ Files :: [beam()],
+ Beam :: beam().
strip_files(Files) when is_list(Files) ->
try strip_fils(Files)
catch Error -> Error end.
--spec strip_release(atom() | file:filename()) ->
+-spec strip_release(Dir) ->
{'ok', [{module(), file:filename()}]}
- | {'error', 'beam_lib', {'not_a_directory', term()} | info_rsn()}.
+ | {'error', 'beam_lib', Reason} when
+ Dir :: atom() | file:filename(),
+ Reason :: {'not_a_directory', term()} | info_rsn().
strip_release(Root) ->
catch strip_rel(Root).
--spec version(beam()) ->
- {'ok', {module(), [term()]}} | {'error', 'beam_lib', chnk_rsn()}.
+-spec version(Beam) ->
+ {'ok', {module(), [Version :: term()]}} |
+ {'error', 'beam_lib', chnk_rsn()} when
+ Beam :: beam().
version(File) ->
case catch read_chunk_data(File, [attributes]) of
@@ -195,8 +218,10 @@ version(File) ->
Error
end.
--spec md5(beam()) ->
- {'ok', {module(), binary()}} | {'error', 'beam_lib', chnk_rsn()}.
+-spec md5(Beam) ->
+ {'ok', {module(), MD5}} | {'error', 'beam_lib', chnk_rsn()} when
+ Beam :: beam(),
+ MD5 :: binary().
md5(File) ->
case catch read_significant_chunks(File) of
@@ -207,7 +232,8 @@ md5(File) ->
Error
end.
--spec format_error(term()) -> [char() | string()].
+-spec format_error(Reason) -> io_lib:chars() when
+ Reason :: term().
format_error({error, Error}) ->
format_error(Error);
@@ -260,12 +286,15 @@ format_error(E) ->
| {'debug_info', mode(), module(), file:filename()}.
-type crypto_fun() :: fun((crypto_fun_arg()) -> term()).
--spec crypto_key_fun(crypto_fun()) -> 'ok' | {'error', term()}.
+-spec crypto_key_fun(CryptoKeyFun) -> 'ok' | {'error', Reason} when
+ CryptoKeyFun :: crypto_fun(),
+ Reason :: badfun | exists | term().
crypto_key_fun(F) ->
call_crypto_server({crypto_key_fun, F}).
--spec clear_crypto_key_fun() -> 'undefined' | {'ok', term()}.
+-spec clear_crypto_key_fun() -> 'undefined' | {'ok', Result} when
+ Result :: 'undefined' | term().
clear_crypto_key_fun() ->
call_crypto_server(clear_crypto_key_fun).
diff --git a/lib/stdlib/src/binary.erl b/lib/stdlib/src/binary.erl
index f6489788b2..cb1e12ae46 100644
--- a/lib/stdlib/src/binary.erl
+++ b/lib/stdlib/src/binary.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2010. All Rights Reserved.
+%% Copyright Ericsson AB 2010-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -38,11 +38,28 @@
%% Implemented in this module:
-export([split/2,split/3,replace/3,replace/4]).
+-opaque cp() :: tuple().
+-type part() :: {Start :: non_neg_integer(), Length :: integer()}.
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% split
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+-spec split(Subject, Pattern) -> Parts when
+ Subject :: binary(),
+ Pattern :: binary() | [binary()] | cp(),
+ Parts :: [binary()].
+
split(H,N) ->
split(H,N,[]).
+
+-spec split(Subject, Pattern, Options) -> Parts when
+ Subject :: binary(),
+ Pattern :: binary() | [binary()] | cp(),
+ Options :: [Option],
+ Option :: {scope, part()} | trim | global,
+ Parts :: [binary()].
+
split(Haystack,Needles,Options) ->
try
{Part,Global,Trim} = get_opts_split(Options,{no,false,false}),
@@ -89,8 +106,26 @@ do_split(H,[{A,B}|T],N,Trim) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% replace
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+-spec replace(Subject, Pattern, Replacement) -> Result when
+ Subject :: binary(),
+ Pattern :: binary() | [ binary() ] | cp(),
+ Replacement :: binary(),
+ Result :: binary().
+
replace(H,N,R) ->
replace(H,N,R,[]).
+
+-spec replace(Subject, Pattern, Replacement, Options) -> Result when
+ Subject :: binary(),
+ Pattern :: binary() | [ binary() ] | cp(),
+ Replacement :: binary(),
+ Options :: [Option],
+ Option :: global | {scope, part()} | {insert_replaced, InsPos},
+ InsPos :: OnePos | [ OnePos ],
+ OnePos :: non_neg_integer(),
+ Result :: binary().
+
replace(Haystack,Needles,Replacement,Options) ->
try
true = is_binary(Replacement), % Make badarg instead of function clause
diff --git a/lib/stdlib/src/c.erl b/lib/stdlib/src/c.erl
index 235ea939a8..febfdd6285 100644
--- a/lib/stdlib/src/c.erl
+++ b/lib/stdlib/src/c.erl
@@ -71,11 +71,16 @@ help() ->
%% c(FileName)
%% Compile a file/module.
--spec c(file:name()) -> {'ok', module()} | 'error'.
+-spec c(File) -> {'ok', Module} | 'error' when
+ File :: file:name(),
+ Module :: module().
c(File) -> c(File, []).
--spec c(file:name(), [compile:option()]) -> {'ok', module()} | 'error'.
+-spec c(File, Options) -> {'ok', Module} | 'error' when
+ File :: file:name(),
+ Options :: [compile:option()],
+ Module :: module().
c(File, Opts0) when is_list(Opts0) ->
Opts = [report_errors,report_warnings|Opts0],
@@ -140,7 +145,8 @@ check_load(_, Mod) -> {ok, Mod}.
%% with constant c2 defined, c1=v1 (v1 must be a term!), include dir
%% IDir, outdir ODir.
--spec lc([erl_compile:cmd_line_arg()]) -> 'ok' | 'error'.
+-spec lc(Files) -> 'ok' | 'error' when
+ Files :: [File :: erl_compile:cmd_line_arg()].
lc(Args) ->
case catch split(Args, [], []) of
@@ -205,12 +211,17 @@ make_term(Str) ->
throw(error)
end.
--spec nc(file:name()) -> {'ok', module()} | 'error'.
+-spec nc(File) -> {'ok', Module} | 'error' when
+ File :: file:name(),
+ Module :: module().
nc(File) -> nc(File, []).
--spec nc(file:name(), [compile:option()] | compile:option()) ->
- {'ok', module} | 'error'.
+-spec nc(File, Options) -> {'ok', Module} | 'error' when
+ File :: file:name(),
+ Options :: [Option] | Option,
+ Option:: compile:option(),
+ Module :: module().
nc(File, Opts0) when is_list(Opts0) ->
Opts = Opts0 ++ [report_errors, report_warnings],
@@ -234,14 +245,17 @@ nc(File, Opt) when is_atom(Opt) ->
%% l(Mod)
%% Reload module Mod from file of same name
--spec l(module()) -> code:load_ret().
+-spec l(Module) -> code:load_ret() when
+ Module :: module().
l(Mod) ->
code:purge(Mod),
code:load_file(Mod).
%% Network version of l/1
-%%-spec nl(module()) ->
+-spec nl(Module) -> abcast | error when
+ Module :: module().
+
nl(Mod) ->
case code:get_object_code(Mod) of
{_Module, Bin, Fname} ->
@@ -396,15 +410,20 @@ fetch(Key, Info) ->
false -> 0
end.
--spec pid(non_neg_integer(), non_neg_integer(), non_neg_integer()) -> pid().
+-spec pid(X, Y, Z) -> pid() when
+ X :: non_neg_integer(),
+ Y :: non_neg_integer(),
+ Z :: non_neg_integer().
pid(X, Y, Z) ->
list_to_pid("<" ++ integer_to_list(X) ++ "." ++
integer_to_list(Y) ++ "." ++
integer_to_list(Z) ++ ">").
--spec i(non_neg_integer(), non_neg_integer(), non_neg_integer()) ->
- [{atom(), term()}].
+-spec i(X, Y, Z) -> [{atom(), term()}] when
+ X :: non_neg_integer(),
+ Y :: non_neg_integer(),
+ Z :: non_neg_integer().
i(X, Y, Z) -> pinfo(pid(X, Y, Z)).
@@ -413,7 +432,8 @@ i(X, Y, Z) -> pinfo(pid(X, Y, Z)).
q() ->
init:stop().
--spec bt(pid()) -> 'ok' | 'undefined'.
+-spec bt(Pid) -> 'ok' | 'undefined' when
+ Pid :: pid().
bt(Pid) ->
case catch erlang:process_display(Pid, backtrace) of
@@ -476,7 +496,8 @@ bi(I) ->
%%
%% Short and nice form of module info
%%
--spec m(module()) -> 'ok'.
+-spec m(Module) -> 'ok' when
+ Module :: module().
m(M) ->
L = M:module_info(),
@@ -664,7 +685,8 @@ pwd() ->
ok = io:format("Cannot determine current directory\n")
end.
--spec cd(file:name()) -> 'ok'.
+-spec cd(Dir) -> 'ok' when
+ Dir :: file:name().
cd(Dir) ->
file:set_cwd(Dir),
@@ -679,7 +701,8 @@ cd(Dir) ->
ls() ->
ls(".").
--spec ls(file:name()) -> 'ok'.
+-spec ls(Dir) -> 'ok' when
+ Dir :: file:name().
ls(Dir) ->
case file:list_dir(Dir) of
@@ -729,12 +752,19 @@ w(X) ->
%% memory/[0,1]
%%
--spec memory() -> [{atom(), non_neg_integer()}].
+-spec memory() -> [{Type, Size}] when
+ Type :: atom(),
+ Size :: non_neg_integer().
memory() -> erlang:memory().
--spec memory(atom()) -> non_neg_integer()
- ; ([atom()]) -> [{atom(), non_neg_integer()}].
+-spec memory(Type) -> Size when
+ Type :: atom(),
+ Size :: non_neg_integer()
+ ; (Types) -> [{Type, Size}] when
+ Types :: [Type],
+ Type :: atom(),
+ Size :: non_neg_integer().
memory(TypeSpec) -> erlang:memory(TypeSpec).
diff --git a/lib/stdlib/src/calendar.erl b/lib/stdlib/src/calendar.erl
index 33725d999c..8d1071209e 100644
--- a/lib/stdlib/src/calendar.erl
+++ b/lib/stdlib/src/calendar.erl
@@ -63,6 +63,8 @@
%% Types
%%----------------------------------------------------------------------
+-export_type([t_now/0]).
+
-type year() :: non_neg_integer().
-type year1970() :: 1970..10000. % should probably be 1970..
-type month() :: 1..12.
@@ -74,7 +76,9 @@
-type ldom() :: 28 | 29 | 30 | 31. % last day of month
-type weeknum() :: 1..53.
--type t_now() :: {non_neg_integer(),non_neg_integer(),non_neg_integer()}.
+-type t_now() :: {MegaSecs :: non_neg_integer(),
+ Secs :: non_neg_integer(),
+ MicroSecs :: non_neg_integer()}.
-type t_date() :: {year(),month(),day()}.
-type t_time() :: {hour(),minute(),second()}.
@@ -106,7 +110,11 @@
%% January 1st.
%%
%% df/2 catches the case Year<0
--spec date_to_gregorian_days(year(),month(),day()) -> non_neg_integer().
+-spec date_to_gregorian_days(Year, Month, Day) -> Days when
+ Year :: year(),
+ Month :: month(),
+ Day :: day(),
+ Days :: non_neg_integer().
date_to_gregorian_days(Year, Month, Day) when is_integer(Day), Day > 0 ->
Last = last_day_of_the_month(Year, Month),
if
@@ -114,7 +122,9 @@ date_to_gregorian_days(Year, Month, Day) when is_integer(Day), Day > 0 ->
dy(Year) + dm(Month) + df(Year, Month) + Day - 1
end.
--spec date_to_gregorian_days(t_date()) -> non_neg_integer().
+-spec date_to_gregorian_days(Date) -> Days when
+ Date :: t_date(),
+ Days :: non_neg_integer().
date_to_gregorian_days({Year, Month, Day}) ->
date_to_gregorian_days(Year, Month, Day).
@@ -124,7 +134,9 @@ date_to_gregorian_days({Year, Month, Day}) ->
%% Computes the total number of seconds starting from year 0,
%% January 1st.
%%
--spec datetime_to_gregorian_seconds(t_datetime()) -> non_neg_integer().
+-spec datetime_to_gregorian_seconds(DateTime) -> Seconds when
+ DateTime :: t_datetime(),
+ Seconds :: non_neg_integer().
datetime_to_gregorian_seconds({Date, Time}) ->
?SECONDS_PER_DAY*date_to_gregorian_days(Date) +
time_to_seconds(Time).
@@ -135,18 +147,23 @@ datetime_to_gregorian_seconds({Date, Time}) ->
%%
%% Returns: 1 | .. | 7. Monday = 1, Tuesday = 2, ..., Sunday = 7.
%%
--spec day_of_the_week(year(), month(), day()) -> daynum().
+-spec day_of_the_week(Year, Month, Day) -> daynum() when
+ Year :: year(),
+ Month :: month(),
+ Day :: day().
day_of_the_week(Year, Month, Day) ->
(date_to_gregorian_days(Year, Month, Day) + 5) rem 7 + 1.
--spec day_of_the_week(t_date()) -> daynum().
+-spec day_of_the_week(Date) -> daynum() when
+ Date:: t_date().
day_of_the_week({Year, Month, Day}) ->
day_of_the_week(Year, Month, Day).
%% gregorian_days_to_date(Days) = {Year, Month, Day}
%%
--spec gregorian_days_to_date(non_neg_integer()) -> t_date().
+-spec gregorian_days_to_date(Days) -> t_date() when
+ Days :: non_neg_integer().
gregorian_days_to_date(Days) ->
{Year, DayOfYear} = day_to_year(Days),
{Month, DayOfMonth} = year_day_to_date(Year, DayOfYear),
@@ -155,7 +172,8 @@ gregorian_days_to_date(Days) ->
%% gregorian_seconds_to_datetime(Secs)
%%
--spec gregorian_seconds_to_datetime(non_neg_integer()) -> t_datetime().
+-spec gregorian_seconds_to_datetime(Seconds) -> t_datetime() when
+ Seconds :: non_neg_integer().
gregorian_seconds_to_datetime(Secs) when Secs >= 0 ->
Days = Secs div ?SECONDS_PER_DAY,
Rest = Secs rem ?SECONDS_PER_DAY,
@@ -164,7 +182,8 @@ gregorian_seconds_to_datetime(Secs) when Secs >= 0 ->
%% is_leap_year(Year) = true | false
%%
--spec is_leap_year(year()) -> boolean().
+-spec is_leap_year(Year) -> boolean() when
+ Year :: year().
is_leap_year(Y) when is_integer(Y), Y >= 0 ->
is_leap_year1(Y).
@@ -188,7 +207,8 @@ iso_week_number() ->
%%
%% Calculates the iso week number for the given date.
%%
--spec iso_week_number(t_date()) -> t_yearweeknum().
+-spec iso_week_number(Date) -> t_yearweeknum() when
+ Date :: t_date().
iso_week_number({Year, Month, Day}) ->
D = date_to_gregorian_days({Year, Month, Day}),
W01_1_Year = gregorian_days_of_iso_w01_1(Year),
@@ -216,7 +236,10 @@ iso_week_number({Year, Month, Day}) ->
%%
%% Returns the number of days in a month.
%%
--spec last_day_of_the_month(year(), month()) -> ldom().
+-spec last_day_of_the_month(Year, Month) -> LastDay when
+ Year :: year(),
+ Month :: month(),
+ LastDay :: ldom().
last_day_of_the_month(Y, M) when is_integer(Y), Y >= 0 ->
last_day_of_the_month1(Y, M).
@@ -244,7 +267,9 @@ local_time() ->
%% local_time_to_universal_time(DateTime)
%%
--spec local_time_to_universal_time(t_datetime1970()) -> t_datetime1970().
+-spec local_time_to_universal_time(DateTime1) -> DateTime2 when
+ DateTime1 :: t_datetime1970(),
+ DateTime2 :: t_datetime1970().
local_time_to_universal_time(DateTime) ->
erlang:localtime_to_universaltime(DateTime).
@@ -254,7 +279,9 @@ local_time_to_universal_time(DateTime) ->
local_time_to_universal_time(DateTime, IsDst) ->
erlang:localtime_to_universaltime(DateTime, IsDst).
--spec local_time_to_universal_time_dst(t_datetime1970()) -> [t_datetime1970()].
+-spec local_time_to_universal_time_dst(DateTime1) -> [DateTime] when
+ DateTime1 :: t_datetime1970(),
+ DateTime :: t_datetime1970().
local_time_to_universal_time_dst(DateTime) ->
UtDst = erlang:localtime_to_universaltime(DateTime, true),
Ut = erlang:localtime_to_universaltime(DateTime, false),
@@ -282,12 +309,14 @@ local_time_to_universal_time_dst(DateTime) ->
%% = MilliSec = integer()
%% Returns: {date(), time()}, date() = {Y, M, D}, time() = {H, M, S}.
%%
--spec now_to_datetime(t_now()) -> t_datetime1970().
+-spec now_to_datetime(Now) -> t_datetime1970() when
+ Now :: t_now().
now_to_datetime({MSec, Sec, _uSec}) ->
Sec0 = MSec*1000000 + Sec + ?DAYS_FROM_0_TO_1970*?SECONDS_PER_DAY,
gregorian_seconds_to_datetime(Sec0).
--spec now_to_universal_time(t_now()) -> t_datetime1970().
+-spec now_to_universal_time(Now) -> t_datetime1970() when
+ Now :: t_now().
now_to_universal_time(Now) ->
now_to_datetime(Now).
@@ -296,7 +325,8 @@ now_to_universal_time(Now) ->
%%
%% Args: Now = now()
%%
--spec now_to_local_time(t_now()) -> t_datetime1970().
+-spec now_to_local_time(Now) -> t_datetime1970() when
+ Now :: t_now().
now_to_local_time({MSec, Sec, _uSec}) ->
erlang:universaltime_to_localtime(
now_to_universal_time({MSec, Sec, _uSec})).
@@ -305,7 +335,10 @@ now_to_local_time({MSec, Sec, _uSec}) ->
%% seconds_to_daystime(Secs) = {Days, {Hour, Minute, Second}}
%%
--spec seconds_to_daystime(integer()) -> {integer(), t_time()}.
+-spec seconds_to_daystime(Seconds) -> {Days, Time} when
+ Seconds :: integer(),
+ Days :: integer(),
+ Time :: t_time().
seconds_to_daystime(Secs) ->
Days0 = Secs div ?SECONDS_PER_DAY,
Secs0 = Secs rem ?SECONDS_PER_DAY,
@@ -323,7 +356,8 @@ seconds_to_daystime(Secs) ->
%% Wraps.
%%
-type secs_per_day() :: 0..?SECONDS_PER_DAY.
--spec seconds_to_time(secs_per_day()) -> t_time().
+-spec seconds_to_time(Seconds) -> t_time() when
+ Seconds :: secs_per_day().
seconds_to_time(Secs) when Secs >= 0, Secs < ?SECONDS_PER_DAY ->
Secs0 = Secs rem ?SECONDS_PER_DAY,
Hour = Secs0 div ?SECONDS_PER_HOUR,
@@ -340,8 +374,11 @@ seconds_to_time(Secs) when Secs >= 0, Secs < ?SECONDS_PER_DAY ->
%% Date = {Year, Month, Day}, Time = {Hour, Minute, Sec},
%% Year = Month = Day = Hour = Minute = Sec = integer()
%%
--type timediff() :: {integer(), t_time()}.
--spec time_difference(t_datetime(), t_datetime()) -> timediff().
+-spec time_difference(T1, T2) -> {Days, Time} when
+ T1 :: t_datetime(),
+ T2 :: t_datetime(),
+ Days :: integer(),
+ Time :: t_time().
time_difference({{Y1, Mo1, D1}, {H1, Mi1, S1}},
{{Y2, Mo2, D2}, {H2, Mi2, S2}}) ->
Secs = datetime_to_gregorian_seconds({{Y2, Mo2, D2}, {H2, Mi2, S2}}) -
@@ -352,7 +389,8 @@ time_difference({{Y1, Mo1, D1}, {H1, Mi1, S1}},
%%
%% time_to_seconds(Time)
%%
--spec time_to_seconds(t_time()) -> secs_per_day().
+-spec time_to_seconds(Time) -> secs_per_day() when
+ Time :: t_time().
time_to_seconds({H, M, S}) when is_integer(H), is_integer(M), is_integer(S) ->
H * ?SECONDS_PER_HOUR +
M * ?SECONDS_PER_MINUTE + S.
@@ -368,7 +406,8 @@ universal_time() ->
%% universal_time_to_local_time(DateTime)
%%
--spec universal_time_to_local_time(t_datetime()) -> t_datetime().
+-spec universal_time_to_local_time(DateTime) -> t_datetime() when
+ DateTime :: t_datetime1970().
universal_time_to_local_time(DateTime) ->
erlang:universaltime_to_localtime(DateTime).
@@ -376,7 +415,10 @@ universal_time_to_local_time(DateTime) ->
%% valid_date(Year, Month, Day) = true | false
%% valid_date({Year, Month, Day}) = true | false
%%
--spec valid_date(integer(), integer(), integer()) -> boolean().
+-spec valid_date(Year, Month, Day) -> boolean() when
+ Year :: integer(),
+ Month :: integer(),
+ Day :: integer().
valid_date(Y, M, D) when is_integer(Y), is_integer(M), is_integer(D) ->
valid_date1(Y, M, D).
@@ -386,7 +428,8 @@ valid_date1(Y, M, D) when Y >= 0, M > 0, M < 13, D > 0 ->
valid_date1(_, _, _) ->
false.
--spec valid_date({integer(),integer(),integer()}) -> boolean().
+-spec valid_date(Date) -> boolean() when
+ Date :: t_date().
valid_date({Y, M, D}) ->
valid_date(Y, M, D).
diff --git a/lib/stdlib/src/dets.erl b/lib/stdlib/src/dets.erl
index 6c91f1efb7..671b5a9dd4 100644
--- a/lib/stdlib/src/dets.erl
+++ b/lib/stdlib/src/dets.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -97,10 +97,6 @@
-include("dets.hrl").
--type object() :: tuple().
--type pattern() :: atom() | tuple().
--type tab_name() :: atom() | reference().
-
%%% This is the implementation of the mnesia file storage. Each (non
%%% ram-copy) table is maintained in a corresponding .DAT file. The
%%% dat file is organized as a segmented linear hashlist. The head of
@@ -179,6 +175,21 @@
%%-define(PROFILE(C), C).
-define(PROFILE(C), void).
+-type access() :: 'read' | 'read_write'.
+-type auto_save() :: 'infinity' | non_neg_integer().
+-opaque bindings_cont() :: #dets_cont{}.
+-opaque cont() :: #dets_cont{}.
+-type keypos() :: pos_integer().
+-type match_spec() :: ets:match_spec().
+-type object() :: tuple().
+-type no_slots() :: non_neg_integer() | 'default'.
+-opaque object_cont() :: #dets_cont{}.
+-type pattern() :: atom() | tuple().
+-opaque select_cont() :: #dets_cont{}.
+-type tab_name() :: term().
+-type type() :: 'bag' | 'duplicate_bag' | 'set'.
+-type version() :: 8 | 9 | 'default'.
+
%%% Some further debug code was added in R12B-1 (stdlib-1.15.1):
%%% - there is a new open_file() option 'debug';
%%% - there is a new OS environment variable 'DETS_DEBUG';
@@ -203,9 +214,13 @@ add_user(Pid, Tab, Args) ->
all() ->
dets_server:all().
--type cont() :: #dets_cont{}.
--spec bchunk(tab_name(), 'start' | cont()) ->
- {cont(), binary() | tuple()} | '$end_of_table' | {'error', term()}.
+-spec bchunk(Name, Continuation) ->
+ {Continuation2, Data} | '$end_of_table' | {'error', Reason} when
+ Name :: tab_name(),
+ Continuation :: 'start' | cont(),
+ Continuation2 :: cont(),
+ Data :: binary() | tuple(),
+ Reason :: term().
bchunk(Tab, start) ->
badarg(treq(Tab, {bchunk_init, Tab}), [Tab, start]);
@@ -214,7 +229,9 @@ bchunk(Tab, #dets_cont{what = bchunk, tab = Tab} = State) ->
bchunk(Tab, Term) ->
erlang:error(badarg, [Tab, Term]).
--spec close(tab_name()) -> 'ok' | {'error', term()}.
+-spec close(Name) -> 'ok' | {'error', Reason} when
+ Name :: tab_name(),
+ Reason :: term().
close(Tab) ->
case dets_server:close(Tab) of
@@ -224,12 +241,17 @@ close(Tab) ->
Reply
end.
--spec delete(tab_name(), term()) -> 'ok' | {'error', term()}.
+-spec delete(Name, Key) -> 'ok' | {'error', Reason} when
+ Name :: tab_name(),
+ Key :: term(),
+ Reason :: term().
delete(Tab, Key) ->
badarg(treq(Tab, {delete_key, [Key]}), [Tab, Key]).
--spec delete_all_objects(tab_name()) -> 'ok' | {'error', term()}.
+-spec delete_all_objects(Name) -> 'ok' | {'error', Reason} when
+ Name :: tab_name(),
+ Reason :: term().
delete_all_objects(Tab) ->
case treq(Tab, delete_all_objects) of
@@ -241,7 +263,10 @@ delete_all_objects(Tab) ->
Reply
end.
--spec delete_object(tab_name(), object()) -> 'ok' | {'error', term()}.
+-spec delete_object(Name, Object) -> 'ok' | {'error', Reason} when
+ Name :: tab_name(),
+ Object :: object(),
+ Reason :: term().
delete_object(Tab, O) ->
badarg(treq(Tab, {delete_object, [O]}), [Tab, O]).
@@ -264,23 +289,42 @@ fsck(Fname, Version) ->
end
end.
--spec first(tab_name()) -> term() | '$end_of_table'.
+-spec first(Name) -> Key | '$end_of_table' when
+ Name :: tab_name(),
+ Key :: term().
first(Tab) ->
badarg_exit(treq(Tab, first), [Tab]).
--spec foldr(fun((object(), Acc) -> Acc), Acc, tab_name()) -> Acc | {'error', term()}.
+-spec foldr(Function, Acc0, Name) -> Acc | {'error', Reason} when
+ Name :: tab_name(),
+ Function :: fun((Object :: object(), AccIn) -> AccOut),
+ Acc0 :: term(),
+ Acc :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ Reason :: term().
foldr(Fun, Acc, Tab) ->
foldl(Fun, Acc, Tab).
--spec foldl(fun((object(), Acc) -> Acc), Acc, tab_name()) -> Acc | {'error', term()}.
+-spec foldl(Function, Acc0, Name) -> Acc | {'error', Reason} when
+ Name :: tab_name(),
+ Function :: fun((Object :: object(), AccIn) -> AccOut),
+ Acc0 :: term(),
+ Acc :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ Reason :: term().
foldl(Fun, Acc, Tab) ->
Ref = make_ref(),
do_traverse(Fun, Acc, Tab, Ref).
--spec from_ets(tab_name(), ets:tab()) -> 'ok' | {'error', term()}.
+-spec from_ets(Name, EtsTab) -> 'ok' | {'error', Reason} when
+ Name :: tab_name(),
+ EtsTab :: ets:tab(),
+ Reason :: term().
from_ets(DTab, ETab) ->
ets:safe_fixtable(ETab, true),
@@ -304,6 +348,15 @@ from_ets_fun(LC, ETab) ->
{L, from_ets_fun(ets:select(C), ETab)}
end.
+-spec info(Name) -> InfoList | 'undefined' when
+ Name :: tab_name(),
+ InfoList :: [InfoTuple],
+ InfoTuple :: {'file_size', non_neg_integer()}
+ | {'filename', file:name()}
+ | {'keypos', keypos()}
+ | {'size', non_neg_integer()}
+ | {'type', type()}.
+
info(Tab) ->
case catch dets_server:get_pid(Tab) of
{'EXIT', _Reason} ->
@@ -312,6 +365,14 @@ info(Tab) ->
undefined(req(Pid, info))
end.
+-spec info(Name, Item) -> Value | 'undefined' when
+ Name :: tab_name(),
+ Item :: 'access' | 'auto_save' | 'bchunk_format'
+ | 'hash' | 'file_size' | 'filename' | 'keypos' | 'memory'
+ | 'no_keys' | 'no_objects' | 'no_slots' | 'owner' | 'ram_file'
+ | 'safe_fixed' | 'size' | 'type' | 'version',
+ Value :: term().
+
info(Tab, owner) ->
case catch dets_server:get_pid(Tab) of
Pid when is_pid(Pid) ->
@@ -334,9 +395,26 @@ info(Tab, Tag) ->
undefined(req(Pid, {info, Tag}))
end.
+-spec init_table(Name, InitFun) -> ok | {'error', Reason} when
+ Name :: tab_name(),
+ InitFun :: fun((Arg) -> Res),
+ Arg :: read | close,
+ Res :: end_of_input | {[object()], InitFun} | {Data, InitFun} | term(),
+ Reason :: term(),
+ Data :: binary() | tuple().
+
init_table(Tab, InitFun) ->
init_table(Tab, InitFun, []).
+-spec init_table(Name, InitFun, Options) -> ok | {'error', Reason} when
+ Name :: tab_name(),
+ InitFun :: fun((Arg) -> Res),
+ Arg :: read | close,
+ Res :: end_of_input | {[object()], InitFun} | {Data, InitFun} | term(),
+ Options :: [{min_no_slots,no_slots()} | {format,term | bchunk}],
+ Reason :: term(),
+ Data :: binary() | tuple().
+
init_table(Tab, InitFun, Options) when is_function(InitFun) ->
case options(Options, [format, min_no_slots]) of
{badarg,_} ->
@@ -350,11 +428,20 @@ init_table(Tab, InitFun, Options) when is_function(InitFun) ->
init_table(Tab, InitFun, Options) ->
erlang:error(badarg, [Tab, InitFun, Options]).
+-spec insert(Name, Objects) -> 'ok' | {'error', Reason} when
+ Name :: tab_name(),
+ Objects :: object() | [object()],
+ Reason :: term().
+
insert(Tab, Objs) when is_list(Objs) ->
badarg(treq(Tab, {insert, Objs}), [Tab, Objs]);
insert(Tab, Obj) ->
badarg(treq(Tab, {insert, [Obj]}), [Tab, Obj]).
+-spec insert_new(Name, Objects) -> boolean() when
+ Name :: tab_name(),
+ Objects :: object() | [object()].
+
insert_new(Tab, Objs) when is_list(Objs) ->
badarg(treq(Tab, {insert_new, Objs}), [Tab, Objs]);
insert_new(Tab, Obj) ->
@@ -366,9 +453,17 @@ internal_close(Pid) ->
internal_open(Pid, Ref, Args) ->
req(Pid, {internal_open, Ref, Args}).
+-spec is_compatible_bchunk_format(Name, BchunkFormat) -> boolean() when
+ Name :: tab_name(),
+ BchunkFormat :: binary().
+
is_compatible_bchunk_format(Tab, Term) ->
badarg(treq(Tab, {is_compatible_bchunk_format, Term}), [Tab, Term]).
+-spec is_dets_file(Filename) -> boolean() | {'error', Reason} when
+ Filename :: file:name(),
+ Reason :: term().
+
is_dets_file(FileName) ->
case catch read_file_header(FileName, read, false) of
{ok, Fd, FH} ->
@@ -382,6 +477,12 @@ is_dets_file(FileName) ->
Other
end.
+-spec lookup(Name, Key) -> Objects | {'error', Reason} when
+ Name :: tab_name(),
+ Key :: term(),
+ Objects :: [object()],
+ Reason :: term().
+
lookup(Tab, Key) ->
badarg(treq(Tab, {lookup_keys, [Key]}), [Tab, Key]).
@@ -394,19 +495,43 @@ lookup_keys(Tab, Keys) ->
erlang:error(badarg, [Tab, Keys])
end.
+-spec match(Name, Pattern) -> [Match] | {'error', Reason} when
+ Name :: tab_name(),
+ Pattern :: pattern(),
+ Match :: [term()],
+ Reason :: term().
+
match(Tab, Pat) ->
badarg(safe_match(Tab, Pat, bindings), [Tab, Pat]).
+-spec match(Name, Pattern, N) ->
+ {[Match], Continuation} | '$end_of_table' | {'error', Reason} when
+ Name :: tab_name(),
+ Pattern :: pattern(),
+ N :: 'default' | non_neg_integer(),
+ Continuation :: bindings_cont(),
+ Match :: [term()],
+ Reason :: term().
+
match(Tab, Pat, N) ->
badarg(init_chunk_match(Tab, Pat, bindings, N), [Tab, Pat, N]).
+-spec match(Continuation) ->
+ {[Match], Continuation2} | '$end_of_table' | {'error', Reason} when
+ Continuation :: bindings_cont(),
+ Continuation2 :: bindings_cont(),
+ Match :: [term()],
+ Reason :: term().
+
match(State) when State#dets_cont.what =:= bindings ->
badarg(chunk_match(State), [State]);
match(Term) ->
erlang:error(badarg, [Term]).
--spec match_delete(tab_name(), pattern()) ->
- non_neg_integer() | 'ok' | {'error', term()}.
+-spec match_delete(Name, Pattern) -> 'ok' | {'error', Reason} when
+ Name :: tab_name(),
+ Pattern :: pattern(),
+ Reason :: term().
match_delete(Tab, Pat) ->
badarg(match_delete(Tab, Pat, delete), [Tab, Pat]).
@@ -434,23 +559,60 @@ do_match_delete(Tab, _Proc, Error, _What, _N) ->
safe_fixtable(Tab, false),
Error.
+-spec match_object(Name, Pattern) -> Objects | {'error', Reason} when
+ Name :: tab_name(),
+ Pattern :: pattern(),
+ Objects :: [object()],
+ Reason :: term().
+
match_object(Tab, Pat) ->
badarg(safe_match(Tab, Pat, object), [Tab, Pat]).
+-spec match_object(Name, Pattern, N) ->
+ {Objects, Continuation} | '$end_of_table' | {'error', Reason} when
+ Name :: tab_name(),
+ Pattern :: pattern(),
+ N :: 'default' | non_neg_integer(),
+ Continuation :: object_cont(),
+ Objects :: [object()],
+ Reason :: term().
+
match_object(Tab, Pat, N) ->
badarg(init_chunk_match(Tab, Pat, object, N), [Tab, Pat, N]).
+-spec match_object(Continuation) ->
+ {Objects, Continuation2} | '$end_of_table' | {'error', Reason} when
+ Continuation :: object_cont(),
+ Continuation2 :: object_cont(),
+ Objects :: [object()],
+ Reason :: term().
+
match_object(State) when State#dets_cont.what =:= object ->
badarg(chunk_match(State), [State]);
match_object(Term) ->
erlang:error(badarg, [Term]).
+-spec member(Name, Key) -> boolean() | {'error', Reason} when
+ Name :: tab_name(),
+ Key :: term(),
+ Reason :: term().
+
member(Tab, Key) ->
badarg(treq(Tab, {member, Key}), [Tab, Key]).
+-spec next(Name, Key1) -> Key2 | '$end_of_table' when
+ Name :: tab_name(),
+ Key1 :: term(),
+ Key2 :: term().
+
next(Tab, Key) ->
badarg_exit(treq(Tab, {next, Key}), [Tab, Key]).
+-spec open_file(Filename) -> {'ok', Reference} | {'error', Reason} when
+ Filename :: file:name(),
+ Reference :: reference(),
+ Reason :: term().
+
%% Assuming that a file already exists, open it with the
%% parameters as already specified in the file itself.
%% Return a ref leading to the file.
@@ -462,6 +624,22 @@ open_file(File) ->
einval(Reply, [File])
end.
+-spec open_file(Name, Args) -> {'ok', Name} | {'error', Reason} when
+ Name :: tab_name(),
+ Args :: [OpenArg],
+ OpenArg :: {'access', access()}
+ | {'auto_save', auto_save()}
+ | {'estimated_no_objects', non_neg_integer()}
+ | {'file', file:name()}
+ | {'max_no_slots', no_slots()}
+ | {'min_no_slots', no_slots()}
+ | {'keypos', keypos()}
+ | {'ram_file', boolean()}
+ | {'repair', boolean() | 'force'}
+ | {'type', type()}
+ | {'version', version()},
+ Reason :: term().
+
open_file(Tab, Args) when is_list(Args) ->
case catch defaults(Tab, Args) of
OpenArgs when is_record(OpenArgs, open_args) ->
@@ -477,12 +655,21 @@ open_file(Tab, Args) when is_list(Args) ->
open_file(Tab, Arg) ->
open_file(Tab, [Arg]).
+-spec pid2name(Pid) -> {'ok', Name} | 'undefined' when
+ Pid :: pid(),
+ Name :: tab_name().
+
pid2name(Pid) ->
dets_server:pid2name(Pid).
remove_user(Pid, From) ->
req(Pid, {close, From}).
+-spec repair_continuation(Continuation, MatchSpec) -> Continuation2 when
+ Continuation :: select_cont(),
+ Continuation2 :: select_cont(),
+ MatchSpec :: match_spec().
+
repair_continuation(#dets_cont{match_program = B}=Cont, MS)
when is_binary(B) ->
case ets:is_compiled_ms(B) of
@@ -496,25 +683,63 @@ repair_continuation(#dets_cont{}=Cont, _MS) ->
repair_continuation(T, MS) ->
erlang:error(badarg, [T, MS]).
+-spec safe_fixtable(Name, Fix) -> 'ok' when
+ Name :: tab_name(),
+ Fix :: boolean().
+
safe_fixtable(Tab, Bool) when Bool; not Bool ->
badarg(treq(Tab, {safe_fixtable, Bool}), [Tab, Bool]);
safe_fixtable(Tab, Term) ->
erlang:error(badarg, [Tab, Term]).
+-spec select(Name, MatchSpec) -> Selection | {'error', Reason} when
+ Name :: tab_name(),
+ MatchSpec :: match_spec(),
+ Selection :: [term()],
+ Reason :: term().
+
select(Tab, Pat) ->
badarg(safe_match(Tab, Pat, select), [Tab, Pat]).
+-spec select(Name, MatchSpec, N) ->
+ {Selection, Continuation} | '$end_of_table' | {'error', Reason} when
+ Name :: tab_name(),
+ MatchSpec :: match_spec(),
+ N :: 'default' | non_neg_integer(),
+ Continuation :: select_cont(),
+ Selection :: [term()],
+ Reason :: term().
+
select(Tab, Pat, N) ->
badarg(init_chunk_match(Tab, Pat, select, N), [Tab, Pat, N]).
+-spec select(Continuation) ->
+ {Selection, Continuation2} | '$end_of_table' | {'error', Reason} when
+ Continuation :: select_cont(),
+ Continuation2 :: select_cont(),
+ Selection :: [term()],
+ Reason :: term().
+
select(State) when State#dets_cont.what =:= select ->
badarg(chunk_match(State), [State]);
select(Term) ->
erlang:error(badarg, [Term]).
+-spec select_delete(Name, MatchSpec) -> N | {'error', Reason} when
+ Name :: tab_name(),
+ MatchSpec :: match_spec(),
+ N :: non_neg_integer(),
+ Reason :: term().
+
select_delete(Tab, Pat) ->
badarg(match_delete(Tab, Pat, select), [Tab, Pat]).
+-spec slot(Name, I) -> '$end_of_table' | Objects | {'error', Reason} when
+ Name :: tab_name(),
+ I :: non_neg_integer(),
+ Objects :: [object()],
+ Reason :: term().
+
slot(Tab, Slot) when is_integer(Slot), Slot >= 0 ->
badarg(treq(Tab, {slot, Slot}), [Tab, Slot]);
slot(Tab, Term) ->
@@ -529,12 +754,29 @@ stop() ->
istart_link(Server) ->
{ok, proc_lib:spawn_link(dets, init, [self(), Server])}.
+-spec sync(Name) -> 'ok' | {'error', Reason} when
+ Name :: tab_name(),
+ Reason :: term().
+
sync(Tab) ->
badarg(treq(Tab, sync), [Tab]).
+-spec table(Name) -> QueryHandle when
+ Name :: tab_name(),
+ QueryHandle :: qlc:query_handle().
+
table(Tab) ->
table(Tab, []).
+-spec table(Name, Options) -> QueryHandle when
+ Name :: tab_name(),
+ Options :: Option | [Option],
+ Option :: {'n_objects', Limit}
+ | {'traverse', TraverseMethod},
+ Limit :: 'default' | pos_integer(),
+ TraverseMethod :: 'first_next' | 'select' | {'select', match_spec()},
+ QueryHandle :: qlc:query_handle().
+
table(Tab, Opts) ->
case options(Opts, [traverse, n_objects]) of
{badarg,_} ->
@@ -612,6 +854,11 @@ table_info(_Tab, _) ->
%% End of table/2.
+-spec to_ets(Name, EtsTab) -> EtsTab | {'error', Reason} when
+ Name :: tab_name(),
+ EtsTab :: ets:tab(),
+ Reason :: term().
+
to_ets(DTab, ETab) ->
case ets:info(ETab, protection) of
undefined ->
@@ -621,6 +868,16 @@ to_ets(DTab, ETab) ->
foldl(Fun, ETab, DTab)
end.
+-spec traverse(Name, Fun) -> Return | {'error', Reason} when
+ Name :: tab_name(),
+ Fun :: fun((Object) -> FunReturn),
+ FunReturn :: 'continue' | {'continue', Val} | {'done', Value},
+ Val :: term(),
+ Value :: term(),
+ Object :: object(),
+ Return :: [term()],
+ Reason :: term().
+
traverse(Tab, Fun) ->
Ref = make_ref(),
TFun =
@@ -638,6 +895,14 @@ traverse(Tab, Fun) ->
end,
do_traverse(TFun, [], Tab, Ref).
+-spec update_counter(Name, Key, Increment) -> Result when
+ Name :: tab_name(),
+ Key :: term(),
+ Increment :: {Pos, Incr} | Incr,
+ Pos :: integer(),
+ Incr :: integer(),
+ Result :: integer().
+
update_counter(Tab, Key, C) ->
badarg(treq(Tab, {update_counter, Key, C}), [Tab, Key, C]).
diff --git a/lib/stdlib/src/dict.erl b/lib/stdlib/src/dict.erl
index 7e51141098..2e9eba4bfa 100644
--- a/lib/stdlib/src/dict.erl
+++ b/lib/stdlib/src/dict.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
+%% Copyright Ericsson AB 2000-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -80,7 +80,9 @@ new() ->
Empty = mk_seg(?seg_size),
#dict{empty=Empty,segs={Empty}}.
--spec is_key(term(), dict()) -> boolean().
+-spec is_key(Key, Dict) -> boolean() when
+ Key :: term(),
+ Dict :: dict().
is_key(Key, D) ->
Slot = get_slot(D, Key),
@@ -91,21 +93,29 @@ find_key(K, [?kv(K,_Val)|_]) -> true;
find_key(K, [_|Bkt]) -> find_key(K, Bkt);
find_key(_, []) -> false.
--spec to_list(dict()) -> [{term(), term()}].
+-spec to_list(Dict) -> List when
+ Dict :: dict(),
+ List :: [{Key :: term(), Value :: term()}].
to_list(D) ->
fold(fun (Key, Val, List) -> [{Key,Val}|List] end, [], D).
--spec from_list([{term(), term()}]) -> dict().
+-spec from_list(List) -> Dict when
+ List :: [{Key :: term(), Value :: term()}],
+ Dict :: dict().
from_list(L) ->
lists:foldl(fun ({K,V}, D) -> store(K, V, D) end, new(), L).
--spec size(dict()) -> non_neg_integer().
+-spec size(Dict) -> non_neg_integer() when
+ Dict :: dict().
size(#dict{size=N}) when is_integer(N), N >= 0 -> N.
--spec fetch(term(), dict()) -> term().
+-spec fetch(Key, Dict) -> Value when
+ Key :: term(),
+ Dict :: dict(),
+ Value :: term().
fetch(Key, D) ->
Slot = get_slot(D, Key),
@@ -119,7 +129,10 @@ fetch_val(K, [?kv(K,Val)|_]) -> Val;
fetch_val(K, [_|Bkt]) -> fetch_val(K, Bkt);
fetch_val(_, []) -> throw(badarg).
--spec find(term(), dict()) -> {'ok', term()} | 'error'.
+-spec find(Key, Dict) -> {'ok', Value} | 'error' when
+ Key :: term(),
+ Dict :: dict(),
+ Value :: term().
find(Key, D) ->
Slot = get_slot(D, Key),
@@ -130,12 +143,17 @@ find_val(K, [?kv(K,Val)|_]) -> {ok,Val};
find_val(K, [_|Bkt]) -> find_val(K, Bkt);
find_val(_, []) -> error.
--spec fetch_keys(dict()) -> [term()].
+-spec fetch_keys(Dict) -> Keys when
+ Dict :: dict(),
+ Keys :: [term()].
fetch_keys(D) ->
fold(fun (Key, _Val, Keys) -> [Key|Keys] end, [], D).
--spec erase(term(), dict()) -> dict().
+-spec erase(Key, Dict1) -> Dict2 when
+ Key :: term(),
+ Dict1 :: dict(),
+ Dict2 :: dict().
%% Erase all elements with key Key.
erase(Key, D0) ->
@@ -150,7 +168,11 @@ erase_key(Key, [E|Bkt0]) ->
{[E|Bkt1],Dc};
erase_key(_, []) -> {[],0}.
--spec store(term(), term(), dict()) -> dict().
+-spec store(Key, Value, Dict1) -> Dict2 when
+ Key :: term(),
+ Value :: term(),
+ Dict1 :: dict(),
+ Dict2 :: dict().
store(Key, Val, D0) ->
Slot = get_slot(D0, Key),
@@ -166,7 +188,11 @@ store_bkt_val(Key, New, [Other|Bkt0]) ->
{[Other|Bkt1],Ic};
store_bkt_val(Key, New, []) -> {[?kv(Key,New)],1}.
--spec append(term(), term(), dict()) -> dict().
+-spec append(Key, Value, Dict1) -> Dict2 when
+ Key :: term(),
+ Value :: term(),
+ Dict1 :: dict(),
+ Dict2 :: dict().
append(Key, Val, D0) ->
Slot = get_slot(D0, Key),
@@ -182,7 +208,11 @@ append_bkt(Key, Val, [Other|Bkt0]) ->
{[Other|Bkt1],Ic};
append_bkt(Key, Val, []) -> {[?kv(Key,[Val])],1}.
--spec append_list(term(), [term()], dict()) -> dict().
+-spec append_list(Key, ValList, Dict1) -> Dict2 when
+ Key :: term(),
+ ValList :: [Value :: term()],
+ Dict1 :: dict(),
+ Dict2 :: dict().
append_list(Key, L, D0) ->
Slot = get_slot(D0, Key),
@@ -252,7 +282,11 @@ app_list_bkt(Key, L, []) -> {[?kv(Key,L)],1}.
%% {Bkt1,Dc} = on_key_bkt(Key, F, Bkt0),
%% {[Other|Bkt1],Dc}.
--spec update(term(), fun((term()) -> term()), dict()) -> dict().
+-spec update(Key, Fun, Dict1) -> Dict2 when
+ Key :: term(),
+ Fun :: fun((Value1 :: term()) -> Value2 :: term()),
+ Dict1 :: dict(),
+ Dict2 :: dict().
update(Key, F, D0) ->
Slot = get_slot(D0, Key),
@@ -271,7 +305,12 @@ update_bkt(Key, F, [Other|Bkt0]) ->
update_bkt(_Key, _F, []) ->
throw(badarg).
--spec update(term(), fun((term()) -> term()), term(), dict()) -> dict().
+-spec update(Key, Fun, Initial, Dict1) -> Dict2 when
+ Key :: term(),
+ Initial :: term(),
+ Fun :: fun((Value1 :: term()) -> Value2 :: term()),
+ Dict1 :: dict(),
+ Dict2 :: dict().
update(Key, F, Init, D0) ->
Slot = get_slot(D0, Key),
@@ -286,7 +325,11 @@ update_bkt(Key, F, I, [Other|Bkt0]) ->
{[Other|Bkt1],Ic};
update_bkt(Key, F, I, []) when is_function(F, 1) -> {[?kv(Key,I)],1}.
--spec update_counter(term(), number(), dict()) -> dict().
+-spec update_counter(Key, Increment, Dict1) -> Dict2 when
+ Key :: term(),
+ Increment :: number(),
+ Dict1 :: dict(),
+ Dict2 :: dict().
update_counter(Key, Incr, D0) when is_number(Incr) ->
Slot = get_slot(D0, Key),
@@ -301,20 +344,38 @@ counter_bkt(Key, I, [Other|Bkt0]) ->
{[Other|Bkt1],Ic};
counter_bkt(Key, I, []) -> {[?kv(Key,I)],1}.
--spec fold(fun((term(), term(), term()) -> term()), term(), dict()) -> term().
+-spec fold(Fun, Acc0, Dict) -> Acc1 when
+ Fun :: fun((Key, Value, AccIn) -> AccOut),
+ Key :: term(),
+ Value :: term(),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ Dict :: dict().
%% Fold function Fun over all "bags" in Table and return Accumulator.
fold(F, Acc, D) -> fold_dict(F, Acc, D).
--spec map(fun((term(), term()) -> term()), dict()) -> dict().
+-spec map(Fun, Dict1) -> Dict2 when
+ Fun :: fun((Key :: term(), Value1 :: term()) -> Value2 :: term()),
+ Dict1 :: dict(),
+ Dict2 :: dict().
map(F, D) -> map_dict(F, D).
--spec filter(fun((term(), term()) -> boolean()), dict()) -> dict().
+-spec filter(Pred, Dict1) -> Dict2 when
+ Pred :: fun((Key :: term(), Value :: term()) -> boolean()),
+ Dict1 :: dict(),
+ Dict2 :: dict().
filter(F, D) -> filter_dict(F, D).
--spec merge(fun((term(), term(), term()) -> term()), dict(), dict()) -> dict().
+-spec merge(Fun, Dict1, Dict2) -> Dict3 when
+ Fun :: fun((Key :: term(), Value1 :: term(), Value2 :: term()) -> Value :: term()),
+ Dict1 :: dict(),
+ Dict2 :: dict(),
+ Dict3 :: dict().
merge(F, D1, D2) when D1#dict.size < D2#dict.size ->
fold_dict(fun (K, V1, D) ->
diff --git a/lib/stdlib/src/digraph.erl b/lib/stdlib/src/digraph.erl
index 5edc868a94..e3f87d2c57 100644
--- a/lib/stdlib/src/digraph.erl
+++ b/lib/stdlib/src/digraph.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -53,7 +53,8 @@
-type label() :: term().
-type vertex() :: term().
--type add_edge_err_rsn() :: {'bad_edge', [vertex()]} | {'bad_vertex', vertex()}.
+-type add_edge_err_rsn() :: {'bad_edge', Path :: [vertex()]}
+ | {'bad_vertex', V :: vertex()}.
%%
%% Type is a list of
@@ -70,7 +71,8 @@
new() -> new([]).
--spec new([d_type()]) -> digraph().
+-spec new(Type) -> digraph() when
+ Type :: [d_type()].
new(Type) ->
case check_type(Type, protected, []) of
@@ -113,16 +115,20 @@ set_type([], G) -> G.
%% Data access functions
--spec delete(digraph()) -> 'true'.
+-spec delete(G) -> 'true' when
+ G :: digraph().
delete(G) ->
ets:delete(G#digraph.vtab),
ets:delete(G#digraph.etab),
ets:delete(G#digraph.ntab).
--spec info(digraph()) -> [{'cyclicity', d_cyclicity()} |
- {'memory', non_neg_integer()} |
- {'protection', d_protection()}].
+-spec info(G) -> InfoList when
+ G :: digraph(),
+ InfoList :: [{'cyclicity', Cyclicity :: d_cyclicity()} |
+ {'memory', NoWords :: non_neg_integer()} |
+ {'protection', Protection :: d_protection()}].
+
info(G) ->
VT = G#digraph.vtab,
ET = G#digraph.etab,
@@ -135,32 +141,45 @@ info(G) ->
Memory = ets:info(VT, memory) + ets:info(ET, memory) + ets:info(NT, memory),
[{cyclicity, Cyclicity}, {memory, Memory}, {protection, Protection}].
--spec add_vertex(digraph()) -> vertex().
+-spec add_vertex(G) -> vertex() when
+ G :: digraph().
add_vertex(G) ->
do_add_vertex({new_vertex_id(G), []}, G).
--spec add_vertex(digraph(), vertex()) -> vertex().
+-spec add_vertex(G, V) -> vertex() when
+ G :: digraph(),
+ V :: vertex().
add_vertex(G, V) ->
do_add_vertex({V, []}, G).
--spec add_vertex(digraph(), vertex(), label()) -> vertex().
+-spec add_vertex(G, V, Label) -> vertex() when
+ G :: digraph(),
+ V :: vertex(),
+ Label :: label().
add_vertex(G, V, D) ->
do_add_vertex({V, D}, G).
--spec del_vertex(digraph(), vertex()) -> 'true'.
+-spec del_vertex(G, V) -> 'true' when
+ G :: digraph(),
+ V :: vertex().
del_vertex(G, V) ->
do_del_vertex(V, G).
--spec del_vertices(digraph(), [vertex()]) -> 'true'.
+-spec del_vertices(G, Vertices) -> 'true' when
+ G :: digraph(),
+ Vertices :: [vertex()].
del_vertices(G, Vs) ->
do_del_vertices(Vs, G).
--spec vertex(digraph(), vertex()) -> {vertex(), label()} | 'false'.
+-spec vertex(G, V) -> {V, Label} | 'false' when
+ G :: digraph(),
+ V :: vertex(),
+ Label :: label().
vertex(G, V) ->
case ets:lookup(G#digraph.vtab, V) of
@@ -168,12 +187,15 @@ vertex(G, V) ->
[Vertex] -> Vertex
end.
--spec no_vertices(digraph()) -> non_neg_integer().
+-spec no_vertices(G) -> non_neg_integer() when
+ G :: digraph().
no_vertices(G) ->
ets:info(G#digraph.vtab, size).
--spec vertices(digraph()) -> [vertex()].
+-spec vertices(G) -> Vertices when
+ G :: digraph(),
+ Vertices :: [vertex()].
vertices(G) ->
ets:select(G#digraph.vtab, [{{'$1', '_'}, [], ['$1']}]).
@@ -188,85 +210,125 @@ source_vertices(G) ->
sink_vertices(G) ->
collect_vertices(G, out).
--spec in_degree(digraph(), vertex()) -> non_neg_integer().
+-spec in_degree(G, V) -> non_neg_integer() when
+ G :: digraph(),
+ V :: vertex().
in_degree(G, V) ->
length(ets:lookup(G#digraph.ntab, {in, V})).
--spec in_neighbours(digraph(), vertex()) -> [vertex()].
+-spec in_neighbours(G, V) -> Vertex when
+ G :: digraph(),
+ V :: vertex(),
+ Vertex :: [vertex()].
in_neighbours(G, V) ->
ET = G#digraph.etab,
NT = G#digraph.ntab,
collect_elems(ets:lookup(NT, {in, V}), ET, 2).
--spec in_edges(digraph(), vertex()) -> [edge()].
+-spec in_edges(G, V) -> Edges when
+ G :: digraph(),
+ V :: vertex(),
+ Edges :: [edge()].
in_edges(G, V) ->
ets:select(G#digraph.ntab, [{{{in, V}, '$1'}, [], ['$1']}]).
--spec out_degree(digraph(), vertex()) -> non_neg_integer().
+-spec out_degree(G, V) -> non_neg_integer() when
+ G :: digraph(),
+ V :: vertex().
out_degree(G, V) ->
length(ets:lookup(G#digraph.ntab, {out, V})).
--spec out_neighbours(digraph(), vertex()) -> [vertex()].
+-spec out_neighbours(G, V) -> Vertices when
+ G :: digraph(),
+ V :: vertex(),
+ Vertices :: [vertex()].
out_neighbours(G, V) ->
ET = G#digraph.etab,
NT = G#digraph.ntab,
collect_elems(ets:lookup(NT, {out, V}), ET, 3).
--spec out_edges(digraph(), vertex()) -> [edge()].
+-spec out_edges(G, V) -> Edges when
+ G :: digraph(),
+ V :: vertex(),
+ Edges :: [edge()].
out_edges(G, V) ->
ets:select(G#digraph.ntab, [{{{out, V}, '$1'}, [], ['$1']}]).
--spec add_edge(digraph(), vertex(), vertex()) ->
- edge() | {'error', add_edge_err_rsn()}.
+-spec add_edge(G, V1, V2) -> edge() | {'error', add_edge_err_rsn()} when
+ G :: digraph(),
+ V1 :: vertex(),
+ V2 :: vertex().
add_edge(G, V1, V2) ->
do_add_edge({new_edge_id(G), V1, V2, []}, G).
--spec add_edge(digraph(), vertex(), vertex(), label()) ->
- edge() | {'error', add_edge_err_rsn()}.
+-spec add_edge(G, V1, V2, Label) -> edge() | {'error', add_edge_err_rsn()} when
+ G :: digraph(),
+ V1 :: vertex(),
+ V2 :: vertex(),
+ Label :: label().
add_edge(G, V1, V2, D) ->
do_add_edge({new_edge_id(G), V1, V2, D}, G).
--spec add_edge(digraph(), edge(), vertex(), vertex(), label()) ->
- edge() | {'error', add_edge_err_rsn()}.
+-spec add_edge(G, E, V1, V2, Label) -> edge() | {'error', add_edge_err_rsn()} when
+ G :: digraph(),
+ E :: edge(),
+ V1 :: vertex(),
+ V2 :: vertex(),
+ Label :: label().
add_edge(G, E, V1, V2, D) ->
do_add_edge({E, V1, V2, D}, G).
--spec del_edge(digraph(), edge()) -> 'true'.
+-spec del_edge(G, E) -> 'true' when
+ G :: digraph(),
+ E :: edge().
del_edge(G, E) ->
do_del_edges([E], G).
--spec del_edges(digraph(), [edge()]) -> 'true'.
+-spec del_edges(G, Edges) -> 'true' when
+ G :: digraph(),
+ Edges :: [edge()].
del_edges(G, Es) ->
do_del_edges(Es, G).
--spec no_edges(digraph()) -> non_neg_integer().
+-spec no_edges(G) -> non_neg_integer() when
+ G :: digraph().
no_edges(G) ->
ets:info(G#digraph.etab, size).
--spec edges(digraph()) -> [edge()].
+-spec edges(G) -> Edges when
+ G :: digraph(),
+ Edges :: [edge()].
edges(G) ->
ets:select(G#digraph.etab, [{{'$1', '_', '_', '_'}, [], ['$1']}]).
--spec edges(digraph(), vertex()) -> [edge()].
+-spec edges(G, V) -> Edges when
+ G :: digraph(),
+ V :: vertex(),
+ Edges :: [edge()].
edges(G, V) ->
ets:select(G#digraph.ntab, [{{{out, V},'$1'}, [], ['$1']},
{{{in, V}, '$1'}, [], ['$1']}]).
--spec edge(digraph(), edge()) -> {edge(),vertex(),vertex(),label()} | 'false'.
+-spec edge(G, E) -> {E, V1, V2, Label} | 'false' when
+ G :: digraph(),
+ E :: edge(),
+ V1 :: vertex(),
+ V2 :: vertex(),
+ Label :: label().
edge(G, E) ->
case ets:lookup(G#digraph.etab,E) of
@@ -277,7 +339,7 @@ edge(G, E) ->
%%
%% Generate a "unique" edge identifier (relative to this graph)
%%
--spec new_edge_id(digraph()) -> nonempty_improper_list('$e', non_neg_integer()).
+-spec new_edge_id(digraph()) -> edge().
new_edge_id(G) ->
NT = G#digraph.ntab,
@@ -289,7 +351,7 @@ new_edge_id(G) ->
%%
%% Generate a "unique" vertex identifier (relative to this graph)
%%
--spec new_vertex_id(digraph()) -> nonempty_improper_list('$v', non_neg_integer()).
+-spec new_vertex_id(digraph()) -> vertex().
new_vertex_id(G) ->
NT = G#digraph.ntab,
@@ -444,7 +506,10 @@ acyclic_add_edge(E, V1, V2, Label, G) ->
%% Delete all paths from vertex V1 to vertex V2
%%
--spec del_path(digraph(), vertex(), vertex()) -> 'true'.
+-spec del_path(G, V1, V2) -> 'true' when
+ G :: digraph(),
+ V1 :: vertex(),
+ V2 :: vertex().
del_path(G, V1, V2) ->
case get_path(G, V1, V2) of
@@ -463,7 +528,10 @@ del_path(G, V1, V2) ->
%% been searched.
%%
--spec get_cycle(digraph(), vertex()) -> [vertex(),...] | 'false'.
+-spec get_cycle(G, V) -> Vertices | 'false' when
+ G :: digraph(),
+ V :: vertex(),
+ Vertices :: [vertex(),...].
get_cycle(G, V) ->
case one_path(out_neighbours(G, V), V, [], [V], [V], 2, G, 1) of
@@ -481,7 +549,11 @@ get_cycle(G, V) ->
%% if no path exists false is returned
%%
--spec get_path(digraph(), vertex(), vertex()) -> [vertex(),...] | 'false'.
+-spec get_path(G, V1, V2) -> Vertices | 'false' when
+ G :: digraph(),
+ V1 :: vertex(),
+ V2 :: vertex(),
+ Vertices :: [vertex(),...].
get_path(G, V1, V2) ->
one_path(out_neighbours(G, V1), V2, [], [V1], [V1], 1, G, 1).
@@ -516,7 +588,10 @@ one_path([], _, [], _, _, _, _, _Counter) -> false.
%% Like get_cycle/2, but a cycle of length one is preferred.
%%
--spec get_short_cycle(digraph(), vertex()) -> [vertex(),...] | 'false'.
+-spec get_short_cycle(G, V) -> Vertices | 'false' when
+ G :: digraph(),
+ V :: vertex(),
+ Vertices :: [vertex(),...].
get_short_cycle(G, V) ->
get_short_path(G, V, V).
@@ -526,7 +601,11 @@ get_short_cycle(G, V) ->
%% to find a short path.
%%
--spec get_short_path(digraph(), vertex(), vertex()) -> [vertex(),...] | 'false'.
+-spec get_short_path(G, V1, V2) -> Vertices | 'false' when
+ G :: digraph(),
+ V1 :: vertex(),
+ V2 :: vertex(),
+ Vertices :: [vertex(),...].
get_short_path(G, V1, V2) ->
T = new(),
diff --git a/lib/stdlib/src/digraph_utils.erl b/lib/stdlib/src/digraph_utils.erl
index 080cae4742..e221be15a1 100644
--- a/lib/stdlib/src/digraph_utils.erl
+++ b/lib/stdlib/src/digraph_utils.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1999-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1999-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -38,48 +38,66 @@
%% A convenient type alias
%%
--type vertices() :: [digraph:vertex()].
-
%%
%% Exported functions
%%
--spec components(digraph()) -> vertices().
+-spec components(Digraph) -> [Component] when
+ Digraph :: digraph(),
+ Component :: [digraph:vertex()].
components(G) ->
forest(G, fun inout/3).
--spec strong_components(digraph()) -> vertices().
+-spec strong_components(Digraph) -> [StrongComponent] when
+ Digraph :: digraph(),
+ StrongComponent :: [digraph:vertex()].
strong_components(G) ->
forest(G, fun in/3, revpostorder(G)).
--spec cyclic_strong_components(digraph()) -> vertices().
+-spec cyclic_strong_components(Digraph) -> [StrongComponent] when
+ Digraph :: digraph(),
+ StrongComponent :: [digraph:vertex()].
cyclic_strong_components(G) ->
remove_singletons(strong_components(G), G, []).
--spec reachable(vertices(), digraph()) -> vertices().
+-spec reachable(Vertices, Digraph) -> Reachable when
+ Digraph :: digraph(),
+ Vertices :: [digraph:vertex()],
+ Reachable :: [digraph:vertex()].
reachable(Vs, G) when is_list(Vs) ->
lists:append(forest(G, fun out/3, Vs, first)).
--spec reachable_neighbours(vertices(), digraph()) -> vertices().
+-spec reachable_neighbours(Vertices, Digraph) -> Reachable when
+ Digraph :: digraph(),
+ Vertices :: [digraph:vertex()],
+ Reachable :: [digraph:vertex()].
reachable_neighbours(Vs, G) when is_list(Vs) ->
lists:append(forest(G, fun out/3, Vs, not_first)).
--spec reaching(vertices(), digraph()) -> vertices().
+-spec reaching(Vertices, Digraph) -> Reaching when
+ Digraph :: digraph(),
+ Vertices :: [digraph:vertex()],
+ Reaching :: [digraph:vertex()].
reaching(Vs, G) when is_list(Vs) ->
lists:append(forest(G, fun in/3, Vs, first)).
--spec reaching_neighbours(vertices(), digraph()) -> vertices().
+-spec reaching_neighbours(Vertices, Digraph) -> Reaching when
+ Digraph :: digraph(),
+ Vertices :: [digraph:vertex()],
+ Reaching :: [digraph:vertex()].
reaching_neighbours(Vs, G) when is_list(Vs) ->
lists:append(forest(G, fun in/3, Vs, not_first)).
--spec topsort(digraph()) -> vertices() | 'false'.
+-spec topsort(Digraph) -> Vertices | 'false' when
+ Digraph :: digraph(),
+ Vertices :: [digraph:vertex()].
topsort(G) ->
L = revpostorder(G),
@@ -88,12 +106,15 @@ topsort(G) ->
false -> false
end.
--spec is_acyclic(digraph()) -> boolean().
+-spec is_acyclic(Digraph) -> boolean() when
+ Digraph :: digraph().
is_acyclic(G) ->
loop_vertices(G) =:= [] andalso topsort(G) =/= false.
--spec arborescence_root(digraph()) -> 'no' | {'yes', digraph:vertex()}.
+-spec arborescence_root(Digraph) -> 'no' | {'yes', Root} when
+ Digraph :: digraph(),
+ Root :: digraph:vertex().
arborescence_root(G) ->
case digraph:no_edges(G) =:= digraph:no_vertices(G) - 1 of
@@ -114,23 +135,30 @@ arborescence_root(G) ->
no
end.
--spec is_arborescence(digraph()) -> boolean().
+-spec is_arborescence(Digraph) -> boolean() when
+ Digraph :: digraph().
is_arborescence(G) ->
arborescence_root(G) =/= no.
--spec is_tree(digraph()) -> boolean().
+-spec is_tree(Digraph) -> boolean() when
+ Digraph :: digraph().
is_tree(G) ->
(digraph:no_edges(G) =:= digraph:no_vertices(G) - 1)
andalso (length(components(G)) =:= 1).
--spec loop_vertices(digraph()) -> vertices().
+-spec loop_vertices(Digraph) -> Vertices when
+ Digraph :: digraph(),
+ Vertices :: [digraph:vertex()].
loop_vertices(G) ->
[V || V <- digraph:vertices(G), is_reflexive_vertex(V, G)].
--spec subgraph(digraph(), vertices()) -> digraph().
+-spec subgraph(Digraph, Vertices) -> SubGraph when
+ Digraph :: digraph(),
+ Vertices :: [digraph:vertex()],
+ SubGraph :: digraph().
subgraph(G, Vs) ->
try
@@ -140,10 +168,12 @@ subgraph(G, Vs) ->
erlang:error(badarg)
end.
--type option() :: {'type', 'inherit' | [digraph:d_type()]}
- | {'keep_labels', boolean()}.
-
--spec subgraph(digraph(), vertices(), [option()]) -> digraph().
+-spec subgraph(Digraph, Vertices, Options) -> SubGraph when
+ Digraph :: digraph(),
+ SubGraph :: digraph(),
+ Vertices :: [digraph:vertex()],
+ Options :: [{'type', SubgraphType} | {'keep_labels', boolean()}],
+ SubgraphType :: 'inherit' | [digraph:d_type()].
subgraph(G, Vs, Opts) ->
try
@@ -153,7 +183,9 @@ subgraph(G, Vs, Opts) ->
erlang:error(badarg)
end.
--spec condensation(digraph()) -> digraph().
+-spec condensation(Digraph) -> CondensedDigraph when
+ Digraph :: digraph(),
+ CondensedDigraph :: digraph().
condensation(G) ->
SCs = strong_components(G),
@@ -176,12 +208,16 @@ condensation(G) ->
ets:delete(I2C),
SCG.
--spec preorder(digraph()) -> vertices().
+-spec preorder(Digraph) -> Vertices when
+ Digraph :: digraph(),
+ Vertices :: [digraph:vertex()].
preorder(G) ->
lists:reverse(revpreorder(G)).
--spec postorder(digraph()) -> vertices().
+-spec postorder(Digraph) -> Vertices when
+ Digraph :: digraph(),
+ Vertices :: [digraph:vertex()].
postorder(G) ->
lists:reverse(revpostorder(G)).
diff --git a/lib/stdlib/src/epp.erl b/lib/stdlib/src/epp.erl
index e5ccaddbb4..d804c1dee5 100644
--- a/lib/stdlib/src/epp.erl
+++ b/lib/stdlib/src/epp.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -29,6 +29,7 @@
%%------------------------------------------------------------------------
-type macros() :: [{atom(), term()}].
+-type epp_handle() :: pid().
%% Epp state record.
-record(epp, {file, %Current file
@@ -61,14 +62,23 @@
%% parse_file(FileName, IncludePath, PreDefMacros)
%% macro_defs(Epp)
--spec open(file:name(), [file:name()]) ->
- {'ok', pid()} | {'error', term()}.
+-spec open(FileName, IncludePath) ->
+ {'ok', Epp} | {'error', ErrorDescriptor} when
+ FileName :: file:name(),
+ IncludePath :: [DirectoryName :: file:name()],
+ Epp :: epp_handle(),
+ ErrorDescriptor :: term().
open(Name, Path) ->
open(Name, Path, []).
--spec open(file:name(), [file:name()], macros()) ->
- {'ok', pid()} | {'error', term()}.
+-spec open(FileName, IncludePath, PredefMacros) ->
+ {'ok', Epp} | {'error', ErrorDescriptor} when
+ FileName :: file:name(),
+ IncludePath :: [DirectoryName :: file:name()],
+ PredefMacros :: macros(),
+ Epp :: epp_handle(),
+ ErrorDescriptor :: term().
open(Name, Path, Pdm) ->
Self = self(),
@@ -80,7 +90,8 @@ open(Name, File, StartLocation, Path, Pdm) ->
Epp = spawn(fun() -> server(Self, Name, File, StartLocation,Path,Pdm) end),
epp_request(Epp).
--spec close(pid()) -> 'ok'.
+-spec close(Epp) -> 'ok' when
+ Epp :: epp_handle().
close(Epp) ->
%% Make sure that close is synchronous as a courtesy to test
@@ -93,6 +104,13 @@ close(Epp) ->
scan_erl_form(Epp) ->
epp_request(Epp, scan_erl_form).
+-spec parse_erl_form(Epp) ->
+ {'ok', AbsForm} | {'eof', Line} | {error, ErrorInfo} when
+ Epp :: epp_handle(),
+ AbsForm :: erl_parse:abstract_form(),
+ Line :: erl_scan:line(),
+ ErrorInfo :: erl_scan:error_info() | erl_parse:error_info().
+
parse_erl_form(Epp) ->
case epp_request(Epp, scan_erl_form) of
{ok,Toks} ->
@@ -107,6 +125,9 @@ macro_defs(Epp) ->
%% format_error(ErrorDescriptor) -> String
%% Return a string describing the error.
+-spec format_error(ErrorDescriptor) -> io_lib:chars() when
+ ErrorDescriptor :: term().
+
format_error(cannot_parse) ->
io_lib:format("cannot parse file, giving up", []);
format_error({bad,W}) ->
@@ -146,6 +167,16 @@ format_error(E) -> file:format_error(E).
%% parse_file(FileName, IncludePath, [PreDefMacro]) ->
%% {ok,[Form]} | {error,OpenError}
+-spec parse_file(FileName, IncludePath, PredefMacros) ->
+ {'ok', [Form]} | {error, OpenError} when
+ FileName :: file:name(),
+ IncludePath :: [DirectoryName :: file:name()],
+ Form :: erl_parse:abstract_form() | {'error', ErrorInfo} | {'eof',Line},
+ PredefMacros :: macros(),
+ Line :: erl_scan:line(),
+ ErrorInfo :: erl_scan:error_info() | erl_parse:error_info(),
+ OpenError :: file:posix() | badarg | system_limit.
+
parse_file(Ifile, Path, Predefs) ->
case open(Ifile, Path, Predefs) of
{ok,Epp} ->
diff --git a/lib/stdlib/src/erl_eval.erl b/lib/stdlib/src/erl_eval.erl
index ea1b179ee5..46288cf467 100644
--- a/lib/stdlib/src/erl_eval.erl
+++ b/lib/stdlib/src/erl_eval.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -34,6 +34,37 @@
-import(lists, [reverse/1,foldl/3,member/2]).
+-export_type([binding_struct/0]).
+
+-type(expression() :: erl_parse:abstract_expr()).
+-type(expressions() :: [erl_parse:abstract_expr()]).
+-type(expression_list() :: [expression()]).
+-type(clauses() :: [erl_parse:abstract_clause()]).
+-type(name() :: term()).
+-type(value() :: term()).
+-type(bindings() :: [{name(), value()}]).
+-opaque(binding_struct() :: orddict:orddict()).
+
+-type(lfun_value_handler() :: fun((Name :: atom(),
+ Arguments :: [term()]) ->
+ Value :: value())).
+-type(lfun_eval_handler() :: fun((Name :: atom(),
+ Arguments :: expression_list(),
+ Bindings :: binding_struct()) ->
+ {value,
+ Value :: value(),
+ NewBindings :: binding_struct()})).
+-type(local_function_handler() :: {value, lfun_value_handler()}
+ | {eval, lfun_eval_handler()}
+ | none).
+
+-type(func_spec() :: {Module :: module(), Function :: atom()} | function()).
+-type(nlfun_handler() :: fun((FuncSpec :: func_spec(),
+ Arguments :: [term()]) ->
+ term())).
+-type(non_local_function_handler() :: {value, nlfun_handler()}
+ | none).
+
%% exprs(ExpressionSeq, Bindings)
%% exprs(ExpressionSeq, Bindings, LocalFuncHandler)
%% exprs(ExpressionSeq, Bindings, LocalFuncHandler, ExternalFuncHandler)
@@ -45,6 +76,11 @@
%% that there are valid constructs in Expression to be taken care of
%% by a function handler but considerad errors by erl_lint.
+-spec(exprs(Expressions, Bindings) -> {value, Value, NewBindings} when
+ Expressions :: expressions(),
+ Bindings :: binding_struct(),
+ Value :: value(),
+ NewBindings :: binding_struct()).
exprs(Exprs, Bs) ->
case check_command(Exprs, Bs) of
ok ->
@@ -53,9 +89,25 @@ exprs(Exprs, Bs) ->
erlang:raise(error, Error, [{?MODULE,exprs,2}])
end.
+-spec(exprs(Expressions, Bindings, LocalFunctionHandler) ->
+ {value, Value, NewBindings} when
+ Expressions :: expressions(),
+ Bindings :: binding_struct(),
+ LocalFunctionHandler :: local_function_handler(),
+ Value :: value(),
+ NewBindings :: binding_struct()).
exprs(Exprs, Bs, Lf) ->
exprs(Exprs, Bs, Lf, none, none).
+-spec(exprs(Expressions, Bindings, LocalFunctionHandler,
+ NonLocalFunctionHandler) ->
+ {value, Value, NewBindings} when
+ Expressions :: expressions(),
+ Bindings :: binding_struct(),
+ LocalFunctionHandler :: local_function_handler(),
+ NonLocalFunctionHandler :: non_local_function_handler(),
+ Value :: value(),
+ NewBindings :: binding_struct()).
exprs(Exprs, Bs, Lf, Ef) ->
exprs(Exprs, Bs, Lf, Ef, none).
@@ -75,6 +127,11 @@ exprs([E|Es], Bs0, Lf, Ef, RBs) ->
%%
%% Only expr/2 checks the command by calling erl_lint. See exprs/2.
+-spec(expr(Expression, Bindings) -> {value, Value, NewBindings} when
+ Expression :: expression(),
+ Bindings :: binding_struct(),
+ Value :: value(),
+ NewBindings :: binding_struct()).
expr(E, Bs) ->
case check_command([E], Bs) of
ok ->
@@ -83,9 +140,25 @@ expr(E, Bs) ->
erlang:raise(error, Error, [{?MODULE,expr,2}])
end.
+-spec(expr(Expression, Bindings, LocalFunctionHandler) ->
+ {value, Value, NewBindings} when
+ Expression :: expression(),
+ Bindings :: binding_struct(),
+ LocalFunctionHandler :: local_function_handler(),
+ Value :: value(),
+ NewBindings :: binding_struct()).
expr(E, Bs, Lf) ->
expr(E, Bs, Lf, none, none).
+-spec(expr(Expression, Bindings, LocalFunctionHandler,
+ NonLocalFunctionHandler) ->
+ {value, Value, NewBindings} when
+ Expression :: expression(),
+ Bindings :: binding_struct(),
+ LocalFunctionHandler :: local_function_handler(),
+ NonLocalFunctionHandler :: non_local_function_handler(),
+ Value :: value(),
+ NewBindings :: binding_struct()).
expr(E, Bs, Lf, Ef) ->
expr(E, Bs, Lf, Ef, none).
@@ -114,6 +187,16 @@ fun_data(F) when is_function(F) ->
fun_data(_T) ->
false.
+-spec(expr(Expression, Bindings, LocalFunctionHandler,
+ NonLocalFunctionHandler, ReturnFormat) ->
+ {value, Value, NewBindings} | Value when
+ Expression :: expression(),
+ Bindings :: binding_struct(),
+ LocalFunctionHandler :: local_function_handler(),
+ NonLocalFunctionHandler :: non_local_function_handler(),
+ ReturnFormat :: none | value,
+ Value :: value(),
+ NewBindings :: binding_struct()).
expr({var,_,V}, Bs, _Lf, _Ef, RBs) ->
case binding(V, Bs) of
{value,Val} ->
@@ -384,12 +467,9 @@ local_func(Func, As0, Bs0, {value,F}, value) ->
local_func(Func, As0, Bs0, {value,F}, RBs) ->
{As1,Bs1} = expr_list(As0, Bs0, {value,F}),
ret_expr(F(Func, As1), Bs1, RBs);
-local_func(Func, As0, Bs0, {value,F,Eas}, value) ->
- {As1,_Bs1} = expr_list(As0, Bs0, {value,F,Eas}),
- apply(F, [Func,As1|Eas]);
local_func(Func, As0, Bs0, {value,F,Eas}, RBs) ->
- {As1,Bs1} = expr_list(As0, Bs0, {value,F,Eas}),
- ret_expr(apply(F, [Func,As1|Eas]), Bs1, RBs);
+ Fun = fun(Name, Args) -> apply(F, [Name,Args|Eas]) end,
+ local_func(Func, As0, Bs0, {value, Fun}, RBs);
local_func(Func, As, Bs, {eval,F}, RBs) ->
local_func2(F(Func, As, Bs), RBs);
local_func(Func, As, Bs, {eval,F,Eas}, RBs) ->
@@ -613,12 +693,33 @@ eval_fun([], As, _Bs, _Lf, _Ef, _RBs) ->
%% expr_list(ExpressionList, Bindings, LocalFuncHandler, ExternalFuncHandler)
%% Evaluate a list of expressions "in parallel" at the same level.
+-spec(expr_list(ExpressionList, Bindings) -> {ValueList, NewBindings} when
+ ExpressionList :: expression_list(),
+ Bindings :: binding_struct(),
+ ValueList :: [value()],
+ NewBindings :: binding_struct()).
expr_list(Es, Bs) ->
expr_list(Es, Bs, none, none).
+-spec(expr_list(ExpressionList, Bindings, LocalFunctionHandler) ->
+ {ValueList, NewBindings} when
+ ExpressionList :: expression_list(),
+ Bindings :: binding_struct(),
+ LocalFunctionHandler :: local_function_handler(),
+ ValueList :: [value()],
+ NewBindings :: binding_struct()).
expr_list(Es, Bs, Lf) ->
expr_list(Es, Bs, Lf, none).
+-spec(expr_list(ExpressionList, Bindings, LocalFunctionHandler,
+ NonLocalFunctionHandler) ->
+ {ValueList, NewBindings} when
+ ExpressionList :: expression_list(),
+ Bindings :: binding_struct(),
+ LocalFunctionHandler :: local_function_handler(),
+ NonLocalFunctionHandler :: non_local_function_handler(),
+ ValueList :: [value()],
+ NewBindings :: binding_struct()).
expr_list(Es, Bs, Lf, Ef) ->
expr_list(Es, [], Bs, Bs, Lf, Ef).
@@ -757,6 +858,15 @@ send_all([], _) -> true.
%% match_clause -> {Body, Bindings} or nomatch
+-spec(match_clause(Clauses, ValueList, Bindings, LocalFunctionHandler) ->
+ {Body, NewBindings} | nomatch when
+ Clauses :: clauses(),
+ ValueList :: [value()],
+ Bindings :: binding_struct(),
+ LocalFunctionHandler :: local_function_handler(),
+ Body :: expression_list(),
+ NewBindings :: binding_struct()).
+
match_clause(Cs, Vs, Bs, Lf) ->
match_clause(Cs, Vs, Bs, Lf, none).
@@ -973,18 +1083,30 @@ match_list(_, _, _Bs, _BBs) ->
%% add_binding(Name, Value, Bindings)
%% del_binding(Name, Bindings)
+-spec(new_bindings() -> binding_struct()).
new_bindings() -> orddict:new().
+-spec(bindings(BindingStruct :: binding_struct()) -> bindings()).
bindings(Bs) -> orddict:to_list(Bs).
+-spec(binding(Name, BindingStruct) -> {value, value()} | unbound when
+ Name :: name(),
+ BindingStruct :: binding_struct()).
binding(Name, Bs) ->
case orddict:find(Name, Bs) of
{ok,Val} -> {value,Val};
error -> unbound
end.
+-spec(add_binding(Name, Value, BindingStruct) -> binding_struct() when
+ Name :: name(),
+ Value :: value(),
+ BindingStruct :: binding_struct()).
add_binding(Name, Val, Bs) -> orddict:store(Name, Val, Bs).
+-spec(del_binding(Name, BindingStruct) -> binding_struct() when
+ Name :: name(),
+ BindingStruct :: binding_struct()).
del_binding(Name, Bs) -> orddict:erase(Name, Bs).
add_bindings(Bs1, Bs2) ->
diff --git a/lib/stdlib/src/erl_expand_records.erl b/lib/stdlib/src/erl_expand_records.erl
index 61ce41f714..eada563914 100644
--- a/lib/stdlib/src/erl_expand_records.erl
+++ b/lib/stdlib/src/erl_expand_records.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2005-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2005-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -38,6 +38,10 @@
checked_ra=[] % succesfully accessed records
}).
+-spec(module(AbsForms, CompileOptions) -> AbsForms when
+ AbsForms :: [erl_parse:abstract_form()],
+ CompileOptions :: [compile:option()]).
+
%% Is is assumed that Fs is a valid list of forms. It should pass
%% erl_lint without errors.
module(Fs0, Opts0) ->
diff --git a/lib/stdlib/src/erl_internal.erl b/lib/stdlib/src/erl_internal.erl
index b30b02a96f..478f05e792 100644
--- a/lib/stdlib/src/erl_internal.erl
+++ b/lib/stdlib/src/erl_internal.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1998-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1998-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -54,7 +54,9 @@
%%---------------------------------------------------------------------------
%% Erlang builtin functions allowed in guards.
--spec guard_bif(Name::atom(), Arity::arity()) -> boolean().
+-spec guard_bif(Name, Arity) -> boolean() when
+ Name :: atom(),
+ Arity :: arity().
guard_bif(abs, 1) -> true;
guard_bif(float, 1) -> true;
@@ -92,7 +94,9 @@ guard_bif(binary_part, 3) -> true;
guard_bif(Name, A) when is_atom(Name), is_integer(A) -> false.
%% Erlang type tests.
--spec type_test(Name::atom(), Arity::arity()) -> boolean().
+-spec type_test(Name, Arity) -> boolean() when
+ Name :: atom(),
+ Arity :: arity().
type_test(Name, Arity) ->
new_type_test(Name, Arity) orelse old_type_test(Name, Arity).
@@ -135,7 +139,9 @@ old_type_test(record, 2) -> true;
old_type_test(function, 1) -> true;
old_type_test(Name, A) when is_atom(Name), is_integer(A) -> false.
--spec arith_op(Op::atom(), Arity::arity()) -> boolean().
+-spec arith_op(OpName, Arity) -> boolean() when
+ OpName :: atom(),
+ Arity :: arity().
arith_op('+', 1) -> true;
arith_op('-', 1) -> true;
@@ -153,7 +159,9 @@ arith_op('bsl', 2) -> true;
arith_op('bsr', 2) -> true;
arith_op(Op, A) when is_atom(Op), is_integer(A) -> false.
--spec bool_op(Op::atom(), Arity::arity()) -> boolean().
+-spec bool_op(OpName, Arity) -> boolean() when
+ OpName :: atom(),
+ Arity :: arity().
bool_op('not', 1) -> true;
bool_op('and', 2) -> true;
@@ -161,7 +169,9 @@ bool_op('or', 2) -> true;
bool_op('xor', 2) -> true;
bool_op(Op, A) when is_atom(Op), is_integer(A) -> false.
--spec comp_op(Op::atom(), Arity::arity()) -> boolean().
+-spec comp_op(OpName, Arity) -> boolean() when
+ OpName :: atom(),
+ Arity :: arity().
comp_op('==', 2) -> true;
comp_op('/=', 2) -> true;
@@ -173,18 +183,25 @@ comp_op('=:=', 2) -> true;
comp_op('=/=', 2) -> true;
comp_op(Op, A) when is_atom(Op), is_integer(A) -> false.
--spec list_op(Op::atom(), Arity::arity()) -> boolean().
+-spec list_op(OpName, Arity) -> boolean() when
+ OpName :: atom(),
+ Arity :: arity().
list_op('++', 2) -> true;
list_op('--', 2) -> true;
list_op(Op, A) when is_atom(Op), is_integer(A) -> false.
--spec send_op(Op::atom(), Arity::arity()) -> boolean().
+-spec send_op(OpName, Arity) -> boolean() when
+ OpName :: atom(),
+ Arity :: arity().
send_op('!', 2) -> true;
send_op(Op, A) when is_atom(Op), is_integer(A) -> false.
--spec op_type(atom(), arity()) -> 'arith' | 'bool' | 'comp' | 'list' | 'send'.
+-spec op_type(OpName, Arity) -> Type when
+ OpName :: atom(),
+ Arity :: arity(),
+ Type :: 'arith' | 'bool' | 'comp' | 'list' | 'send'.
op_type('+', 1) -> arith;
op_type('-', 1) -> arith;
@@ -221,7 +238,9 @@ op_type('!', 2) -> send.
bif(erlang, Name, Arity) -> bif(Name, Arity);
bif(M, F, A) when is_atom(M), is_atom(F), is_integer(A) -> false.
--spec bif(Name::atom(), Arity::arity()) -> boolean().
+-spec bif(Name, Arity) -> boolean() when
+ Name :: atom(),
+ Arity::arity().
%% Returns true if erlang:Name/Arity is an auto-imported BIF, false otherwise.
%% Use erlang:is_bultin(Mod, Name, Arity) to find whether a function is a BIF
%% (meaning implemented in C) or not.
diff --git a/lib/stdlib/src/erl_lint.erl b/lib/stdlib/src/erl_lint.erl
index cfb9f0ca98..dd0b9bc2ab 100644
--- a/lib/stdlib/src/erl_lint.erl
+++ b/lib/stdlib/src/erl_lint.erl
@@ -128,10 +128,15 @@ value_option(Flag, Default, On, OnVal, Off, OffVal, Opts) ->
}).
-type lint_state() :: #lint{}.
+-type error_description() :: term().
+-type error_info() :: {erl_scan:line(), module(), error_description()}.
%% format_error(Error)
%% Return a string describing the error.
+-spec format_error(ErrorDescriptor) -> io_lib:chars() when
+ ErrorDescriptor :: error_description().
+
format_error(undefined_module) ->
"no module definition";
format_error({bad_module_name, M}) ->
@@ -419,16 +424,39 @@ used_vars(Exprs, BindingsList) ->
%% apply_lambda/2 has been called to shut lint up. N.B. these lists are
%% really all ordsets!
+-spec(module(AbsForms) -> {ok, Warnings} | {error, Errors, Warnings} when
+ AbsForms :: [erl_parse:abstract_form()],
+ Warnings :: [{file:filename(),[ErrorInfo]}],
+ Errors :: [{FileName2 :: file:filename(),[ErrorInfo]}],
+ ErrorInfo :: error_info()).
+
module(Forms) ->
Opts = compiler_options(Forms),
St = forms(Forms, start("nofile", Opts)),
return_status(St).
+-spec(module(AbsForms, FileName) ->
+ {ok, Warnings} | {error, Errors, Warnings} when
+ AbsForms :: [erl_parse:abstract_form()],
+ FileName :: atom() | string(),
+ Warnings :: [{file:filename(),[ErrorInfo]}],
+ Errors :: [{FileName2 :: file:filename(),[ErrorInfo]}],
+ ErrorInfo :: error_info()).
+
module(Forms, FileName) ->
Opts = compiler_options(Forms),
St = forms(Forms, start(FileName, Opts)),
return_status(St).
+-spec(module(AbsForms, FileName, CompileOptions) ->
+ {ok, Warnings} | {error, Errors, Warnings} when
+ AbsForms :: [erl_parse:abstract_form()],
+ FileName :: atom() | string(),
+ CompileOptions :: [compile:option()],
+ Warnings :: [{file:filename(),[ErrorInfo]}],
+ Errors :: [{FileName2 :: file:filename(),[ErrorInfo]}],
+ ErrorInfo :: error_info()).
+
module(Forms, FileName, Opts0) ->
%% We want the options given on the command line to take
%% precedence over options in the module.
@@ -1877,6 +1905,9 @@ gexpr_list(Es, Vt, St) ->
%% is_guard_test(Expression) -> boolean().
%% Test if a general expression is a guard test.
+-spec is_guard_test(Expr) -> boolean() when
+ Expr :: erl_parse:abstract_expr().
+
is_guard_test(E) ->
is_guard_test2(E, dict:new()).
diff --git a/lib/stdlib/src/erl_parse.yrl b/lib/stdlib/src/erl_parse.yrl
index 15b45d72f4..bd5d65a1e1 100644
--- a/lib/stdlib/src/erl_parse.yrl
+++ b/lib/stdlib/src/erl_parse.yrl
@@ -511,6 +511,15 @@ Erlang code.
%% of the generated .erl file by the HiPE compiler. Please do not remove.
-compile([{hipe,[{regalloc,linear_scan}]}]).
+-export_type([abstract_clause/0, abstract_expr/0, abstract_form/0,
+ error_info/0]).
+
+-type abstract_clause() :: term().
+-type abstract_expr() :: term().
+-type abstract_form() :: term().
+-type error_description() :: term().
+-type error_info() :: {erl_scan:line(), module(), error_description()}.
+-type token() :: {Tag :: atom(), Line :: erl_scan:line()}.
%% mkop(Op, Arg) -> {op,Line,Op,Arg}.
%% mkop(Left, Op, Right) -> {op,Line,Op,Left,Right}.
@@ -534,11 +543,19 @@ Erlang code.
%% These really suck and are only here until Calle gets multiple
%% entry points working.
+-spec parse_form(Tokens) -> {ok, AbsForm} | {error, ErrorInfo} when
+ Tokens :: [token()],
+ AbsForm :: abstract_form(),
+ ErrorInfo :: error_info().
parse_form([{'-',L1},{atom,L2,spec}|Tokens]) ->
parse([{'-',L1},{'spec',L2}|Tokens]);
parse_form(Tokens) ->
parse(Tokens).
+-spec parse_exprs(Tokens) -> {ok, ExprList} | {error, ErrorInfo} when
+ Tokens :: [token()],
+ ExprList :: [abstract_expr()],
+ ErrorInfo :: error_info().
parse_exprs(Tokens) ->
case parse([{atom,0,f},{'(',0},{')',0},{'->',0}|Tokens]) of
{ok,{function,_Lf,f,0,[{clause,_Lc,[],[],Exprs}]}} ->
@@ -546,6 +563,10 @@ parse_exprs(Tokens) ->
{error,_} = Err -> Err
end.
+-spec parse_term(Tokens) -> {ok, Term} | {error, ErrorInfo} when
+ Tokens :: [token()],
+ Term :: term(),
+ ErrorInfo :: error_info().
parse_term(Tokens) ->
case parse([{atom,0,f},{'(',0},{')',0},{'->',0}|Tokens]) of
{ok,{function,_Lf,f,0,[{clause,_Lc,[],[],[Expr]}]}} ->
@@ -830,6 +851,7 @@ check_clauses(Cs, Name, Arity) ->
build_try(L,Es,Scs,{Ccs,As}) ->
{'try',L,Es,Scs,Ccs,As}.
+-spec ret_err(_, _) -> no_return().
ret_err(L, S) ->
{location,Location} = get_attribute(L, location),
return_error(Location, S).
@@ -846,10 +868,11 @@ mapl(F, [H|T]) ->
mapl(_, []) ->
[].
-%% normalise(AbsTerm)
-%% abstract(Term)
%% Convert between the abstract form of a term and a term.
+-spec normalise(AbsTerm) -> Data when
+ AbsTerm :: abstract_expr(),
+ Data :: term().
normalise({char,_,C}) -> C;
normalise({integer,_,I}) -> I;
normalise({float,_,F}) -> F;
@@ -887,6 +910,9 @@ normalise_list([H|T]) ->
normalise_list([]) ->
[].
+-spec abstract(Data) -> AbsTerm when
+ Data :: term(),
+ AbsTerm :: abstract_expr().
abstract(T) when is_integer(T) -> {integer,0,T};
abstract(T) when is_float(T) -> {float,0,T};
abstract(T) when is_atom(T) -> {atom,0,T};
@@ -955,13 +981,18 @@ abstract_list([H|T], Line) ->
abstract_list([], _Line) ->
[].
-%% tokens(AbsTerm) -> [Token]
-%% tokens(AbsTerm, More) -> [Token]
%% Generate a list of tokens representing the abstract term.
+-spec tokens(AbsTerm) -> Tokens when
+ AbsTerm :: abstract_expr(),
+ Tokens :: [token()].
tokens(Abs) ->
tokens(Abs, []).
+-spec tokens(AbsTerm, MoreTokens) -> Tokens when
+ AbsTerm :: abstract_expr(),
+ MoreTokens :: [token()],
+ Tokens :: [token()].
tokens({char,L,C}, More) -> [{char,L,C}|More];
tokens({integer,L,N}, More) -> [{integer,L,N}|More];
tokens({float,L,F}, More) -> [{float,L,F}|More];
diff --git a/lib/stdlib/src/erl_pp.erl b/lib/stdlib/src/erl_pp.erl
index 66c80a45cb..7dc19f2e9b 100644
--- a/lib/stdlib/src/erl_pp.erl
+++ b/lib/stdlib/src/erl_pp.erl
@@ -31,25 +31,53 @@
-define(MAXLINE, 72).
+-type(hook_function() :: none
+ | fun((Expr :: erl_parse:abstract_expr(),
+ CurrentIndentation :: integer(),
+ CurrentPrecedence :: non_neg_integer(),
+ HookFunction :: hook_function()) ->
+ io_lib:chars())).
+
%%%
%%% Exported functions
%%%
+-spec(form(Form) -> io_lib:chars() when
+ Form :: erl_parse:abstract_form()).
+
form(Thing) ->
form(Thing, none).
+-spec(form(Form, HookFunction) -> io_lib:chars() when
+ Form :: erl_parse:abstract_form(),
+ HookFunction :: hook_function()).
+
form(Thing, Hook) ->
frmt(lform(Thing, Hook)).
+-spec(attribute(Attribute) -> io_lib:chars() when
+ Attribute :: erl_parse:abstract_form()).
+
attribute(Thing) ->
attribute(Thing, none).
+-spec(attribute(Attribute, HookFunction) -> io_lib:chars() when
+ Attribute :: erl_parse:abstract_form(),
+ HookFunction :: hook_function()).
+
attribute(Thing, Hook) ->
frmt(lattribute(Thing, Hook)).
+-spec(function(Function) -> io_lib:chars() when
+ Function :: erl_parse:abstract_form()).
+
function(F) ->
function(F, none).
+-spec(function(Function, HookFunction) -> io_lib:chars() when
+ Function :: erl_parse:abstract_form(),
+ HookFunction :: hook_function()).
+
function(F, Hook) ->
frmt(lfunction(F, Hook)).
@@ -59,30 +87,67 @@ rule(R) ->
rule(R, Hook) ->
frmt(lrule(R, Hook)).
+-spec(guard(Guard) -> io_lib:chars() when
+ Guard :: [erl_parse:abstract_expr()]).
+
guard(Gs) ->
guard(Gs, none).
+-spec(guard(Guard, HookFunction) -> io_lib:chars() when
+ Guard :: [erl_parse:abstract_expr()],
+ HookFunction :: hook_function()).
+
guard(Gs, Hook) ->
frmt(lguard(Gs, Hook)).
+-spec(exprs(Expressions) -> io_lib:chars() when
+ Expressions :: [erl_parse:abstract_expr()]).
+
exprs(Es) ->
exprs(Es, 0, none).
+-spec(exprs(Expressions, HookFunction) -> io_lib:chars() when
+ Expressions :: [erl_parse:abstract_expr()],
+ HookFunction :: hook_function()).
+
exprs(Es, Hook) ->
exprs(Es, 0, Hook).
+-spec(exprs(Expressions, Indent, HookFunction) -> io_lib:chars() when
+ Expressions :: [erl_parse:abstract_expr()],
+ Indent :: integer(),
+ HookFunction :: hook_function()).
+
exprs(Es, I, Hook) ->
frmt({seq,[],[],[$,],lexprs(Es, Hook)}, I).
+-spec(expr(Expression) -> io_lib:chars() when
+ Expression :: erl_parse:abstract_expr()).
+
expr(E) ->
frmt(lexpr(E, 0, none)).
+-spec(expr(Expression, HookFunction) -> io_lib:chars() when
+ Expression :: erl_parse:abstract_expr(),
+ HookFunction :: hook_function()).
+
expr(E, Hook) ->
frmt(lexpr(E, 0, Hook)).
+-spec(expr(Expression, Indent, HookFunction) -> io_lib:chars() when
+ Expression :: erl_parse:abstract_expr(),
+ Indent :: integer(),
+ HookFunction :: hook_function()).
+
expr(E, I, Hook) ->
frmt(lexpr(E, 0, Hook), I).
+-spec(expr(Expression, Indent, Precedence, HookFunction) -> io_lib:chars() when
+ Expression :: erl_parse:abstract_expr(),
+ Indent :: integer(),
+ Precedence :: non_neg_integer(),
+ HookFunction :: hook_function()).
+
expr(E, I, P, Hook) ->
frmt(lexpr(E, P, Hook), I).
diff --git a/lib/stdlib/src/erl_scan.erl b/lib/stdlib/src/erl_scan.erl
index 18f64c46d0..718ca2e91a 100644
--- a/lib/stdlib/src/erl_scan.erl
+++ b/lib/stdlib/src/erl_scan.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -99,7 +99,8 @@
%%----------------------------------------------------------------------------
--spec format_error(Error :: term()) -> string().
+-spec format_error(ErrorDescriptor) -> string() when
+ ErrorDescriptor :: error_description().
format_error({string,Quote,Head}) ->
lists:flatten(["unterminated " ++ string_thing(Quote) ++
" starting with " ++
@@ -112,20 +113,33 @@ format_error({base,Base}) ->
format_error(Other) ->
lists:flatten(io_lib:write(Other)).
--type string_return() :: {'ok', tokens(), location()}
- | {'error', error_info(), location()}.
-
--spec string(String :: string()) -> string_return().
+-spec string(String) -> Return when
+ String :: string(),
+ Return :: {'ok', Tokens :: tokens(), EndLocation}
+ | {'error', ErrorInfo :: error_info(), ErrorLocation},
+ EndLocation :: location(),
+ ErrorLocation :: location().
string(String) ->
string(String, 1, []).
--spec string(String :: string(), StartLocation :: location()) ->
- string_return().
+-spec string(String, StartLocation) -> Return when
+ String :: string(),
+ Return :: {'ok', Tokens :: tokens(), EndLocation}
+ | {'error', ErrorInfo :: error_info(), ErrorLocation},
+ StartLocation :: location(),
+ EndLocation :: location(),
+ ErrorLocation :: location().
string(String, StartLocation) ->
string(String, StartLocation, []).
--spec string(String :: string(), StartLocation :: location(),
- Options :: options()) -> string_return().
+-spec string(String, StartLocation, Options) -> Return when
+ String :: string(),
+ Options :: options(),
+ Return :: {'ok', Tokens :: tokens(), EndLocation}
+ | {'error', ErrorInfo :: error_info(), ErrorLocation},
+ StartLocation :: location(),
+ EndLocation :: location(),
+ ErrorLocation :: location().
string(String, Line, Options) when ?STRING(String), ?ALINE(Line) ->
string1(String, options(Options), Line, no_col, []);
string(String, {Line,Column}, Options) when ?STRING(String),
@@ -136,29 +150,37 @@ string(String, {Line,Column}, Options) when ?STRING(String),
-type char_spec() :: string() | 'eof'.
-type cont_fun() :: fun((char_spec(), #erl_scan{}, line(), column(),
tokens(), any()) -> any()).
--opaque return_cont() :: {string(), column(), tokens(), line(),
- #erl_scan{}, cont_fun(), any()}.
--type cont() :: return_cont() | [].
--type tokens_result() :: {'ok', tokens(), location()}
- | {'eof', location()}
- | {'error', error_info(), location()}.
--type tokens_return() :: {'done', tokens_result(), char_spec()}
- | {'more', return_cont()}.
-
--spec tokens(Cont :: cont(), CharSpec :: char_spec(),
- StartLocation :: location()) -> tokens_return().
+-opaque return_cont() :: {erl_scan_continuation,
+ string(), column(), tokens(), line(),
+ #erl_scan{}, any(), cont_fun()}.
+-type tokens_result() :: {'ok', Tokens :: tokens(), EndLocation :: location()}
+ | {'eof', EndLocation :: location()}
+ | {'error', ErrorInfo :: error_info(),
+ EndLocation :: location()}.
+
+-spec tokens(Continuation, CharSpec, StartLocation) -> Return when
+ Continuation :: return_cont() | [],
+ CharSpec :: char_spec(),
+ StartLocation :: location(),
+ Return :: {'done',Result :: tokens_result(),LeftOverChars :: char_spec()}
+ | {'more', Continuation1 :: return_cont()}.
tokens(Cont, CharSpec, StartLocation) ->
tokens(Cont, CharSpec, StartLocation, []).
--spec tokens(Cont :: cont(), CharSpec :: char_spec(),
- StartLocation :: location(), Options :: options()) ->
- tokens_return().
+-spec tokens(Continuation, CharSpec, StartLocation, Options) -> Return when
+ Continuation :: return_cont() | [],
+ CharSpec :: char_spec(),
+ StartLocation :: location(),
+ Options :: options(),
+ Return :: {'done',Result :: tokens_result(),LeftOverChars :: char_spec()}
+ | {'more', Continuation1 :: return_cont()}.
tokens([], CharSpec, Line, Options) when ?ALINE(Line) ->
tokens1(CharSpec, options(Options), Line, no_col, [], fun scan/6, []);
tokens([], CharSpec, {Line,Column}, Options) when ?ALINE(Line),
?COLUMN(Column) ->
tokens1(CharSpec, options(Options), Line, Column, [], fun scan/6, []);
-tokens({Cs,Col,Toks,Line,St,Any,Fun}, CharSpec, _Loc, _Opts) ->
+tokens({erl_scan_continuation,Cs,Col,Toks,Line,St,Any,Fun},
+ CharSpec, _Loc, _Opts) ->
tokens1(Cs++CharSpec, St, Line, Col, Toks, Fun, Any).
-type attribute_item() :: 'column' | 'length' | 'line'
@@ -172,13 +194,22 @@ tokens({Cs,Col,Toks,Line,St,Any,Fun}, CharSpec, _Loc, _Opts) ->
-type token_info() :: {'category', category()} | {'symbol', symbol()}
| attribute_info().
--spec token_info(token()) -> [token_info()].
+-spec token_info(Token) -> TokenInfo when
+ Token :: token(),
+ TokenInfo :: [TokenInfoTuple :: token_info()].
token_info(Token) ->
Items = [category,column,length,line,symbol,text], % undefined order
token_info(Token, Items).
--spec token_info(token(), token_item()) -> token_info() | 'undefined';
- (token(), [token_item()]) -> [token_info()].
+-spec token_info(Token, TokenItem) -> TokenInfo | 'undefined' when
+ Token :: token(),
+ TokenItem :: token_item(),
+ TokenInfo :: TokenInfoTuple :: token_info();
+ (Token, TokenItems) -> [TokenInfo] when
+ Token :: token(),
+ TokenItems :: [TokenItem],
+ TokenItem :: token_item(),
+ TokenInfo :: [TokenInfoTuple :: token_info()].
token_info(_Token, []) ->
[];
token_info(Token, [Item|Items]) when is_atom(Item) ->
@@ -201,14 +232,23 @@ token_info({_Category,Attrs}, Item) ->
token_info({_Category,Attrs,_Symbol}, Item) ->
attributes_info(Attrs, Item).
--spec attributes_info(attributes()) -> [attribute_info()].
+-spec attributes_info(Attributes) -> AttributesInfo when
+ Attributes :: attributes(),
+ AttributesInfo :: [AttributeInfoTuple :: attribute_info()].
attributes_info(Attributes) ->
Items = [column,length,line,text], % undefined order
attributes_info(Attributes, Items).
--spec attributes_info(attributes(), attribute_item()) ->
- attribute_info() | 'undefined';
- (attributes(), [attribute_item()]) -> [attribute_info()].
+-spec attributes_info(Attributes, AttributeItem) ->
+ AttributeInfo | 'undefined' when
+ Attributes :: attributes(),
+ AttributeItem :: attribute_item(),
+ AttributeInfo :: AttributeInfoTuple :: attribute_info();
+ (Attributes, AttributeItems) -> [AttributeInfo] when
+ Attributes :: attributes(),
+ AttributeItems :: [AttributeItem],
+ AttributeItem :: attribute_item(),
+ AttributeInfo :: [AttributeInfoTuple :: attribute_info()].
attributes_info(_Attrs, []) ->
[];
attributes_info(Attrs, [A|As]) when is_atom(A) ->
@@ -265,9 +305,10 @@ attributes_info(Attrs, text=Item) ->
attributes_info(T1, T2) ->
erlang:error(badarg, [T1,T2]).
--type setlineattr_fun() :: fun((info_line()) -> info_line()).
-
--spec set_attribute('line', attributes(), setlineattr_fun()) -> attributes().
+-spec set_attribute(AttributeItem, Attributes, SetAttributeFun) -> Attributes when
+ AttributeItem :: 'line',
+ Attributes :: attributes(),
+ SetAttributeFun :: fun((info_line()) -> info_line()).
set_attribute(Tag, Attributes, Fun) when ?SETATTRFUN(Fun) ->
set_attr(Tag, Attributes, Fun).
@@ -374,7 +415,7 @@ set_attr(T1, T2, T3) ->
tokens1(Cs, St, Line, Col, Toks, Fun, Any) when ?STRING(Cs); Cs =:= eof ->
case Fun(Cs, St, Line, Col, Toks, Any) of
{more,{Cs0,Ncol,Ntoks,Nline,Nany,Nfun}} ->
- {more,{Cs0,Ncol,Ntoks,Nline,St,Nany,Nfun}};
+ {more,{erl_scan_continuation,Cs0,Ncol,Ntoks,Nline,St,Nany,Nfun}};
{ok,Toks0,eof,Nline,Ncol} ->
Res = case Toks0 of
[] ->
@@ -1285,7 +1326,7 @@ tabs(8) -> "\t\t\t\t\t\t\t\t";
tabs(9) -> "\t\t\t\t\t\t\t\t\t";
tabs(10) -> "\t\t\t\t\t\t\t\t\t\t".
--spec reserved_word(atom()) -> boolean().
+-spec reserved_word(Atom :: atom()) -> boolean().
reserved_word('after') -> true;
reserved_word('begin') -> true;
reserved_word('case') -> true;
diff --git a/lib/stdlib/src/ets.erl b/lib/stdlib/src/ets.erl
index 6e6e949e2c..afa914a456 100644
--- a/lib/stdlib/src/ets.erl
+++ b/lib/stdlib/src/ets.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -42,7 +42,7 @@
-export([i/0, i/1, i/2, i/3]).
--export_type([tab/0, tid/0]).
+-export_type([tab/0, tid/0, match_spec/0]).
%%-----------------------------------------------------------------------------
@@ -51,22 +51,9 @@
%% a similar definition is also in erl_types
-opaque tid() :: integer().
--type ext_info() :: 'md5sum' | 'object_count'.
--type protection() :: 'private' | 'protected' | 'public'.
--type type() :: 'bag' | 'duplicate_bag' | 'ordered_set' | 'set'.
-
--type table_info() :: {'name', atom()}
- | {'type', type()}
- | {'protection', protection()}
- | {'named_table', boolean()}
- | {'keypos', non_neg_integer()}
- | {'size', non_neg_integer()}
- | {'extended_info', [ext_info()]}
- | {'version', {non_neg_integer(), non_neg_integer()}}.
-
%% these ones are also defined in erl_bif_types
-type match_pattern() :: atom() | tuple().
--type match_specs() :: [{match_pattern(), [_], [_]}].
+-type match_spec() :: [{match_pattern(), [_], [_]}].
%%-----------------------------------------------------------------------------
@@ -86,6 +73,7 @@
%% insert/2
%% is_compiled_ms/1
%% last/1
+%% member/2
%% next/2
%% prev/2
%% rename/2
@@ -101,11 +89,14 @@
%% select/1
%% select/2
%% select/3
+%% select_count/2
%% select_reverse/1
%% select_reverse/2
%% select_reverse/3
%% select_delete/2
+%% setopts/2
%% update_counter/3
+%% update_element/3
%%
-opaque comp_match_spec() :: any(). %% this one is REALLY opaque
@@ -119,7 +110,9 @@ match_spec_run(List, CompiledMS) ->
| {tab(),integer(),integer(),binary(),list(),integer()}
| {tab(),_,_,integer(),binary(),list(),integer(),integer()}.
--spec repair_continuation(continuation(), match_specs()) -> continuation().
+-spec repair_continuation(Continuation, MatchSpec) -> Continuation when
+ Continuation :: continuation(),
+ MatchSpec :: match_spec().
%% $end_of_table is an allowed continuation in ets...
repair_continuation('$end_of_table', _) ->
@@ -153,7 +146,9 @@ repair_continuation(Untouched = {Table,N1,N2,Bin,L,N3}, MS)
{Table,N1,N2,ets:match_spec_compile(MS),L,N3}
end.
--spec fun2ms(function()) -> match_specs().
+-spec fun2ms(LiteralFun) -> MatchSpec when
+ LiteralFun :: function(),
+ MatchSpec :: match_spec().
fun2ms(ShellFun) when is_function(ShellFun) ->
%% Check that this is really a shell fun...
@@ -177,7 +172,13 @@ fun2ms(ShellFun) when is_function(ShellFun) ->
shell]}})
end.
--spec foldl(fun((_, term()) -> term()), term(), tab()) -> term().
+-spec foldl(Function, Acc0, Tab) -> Acc1 when
+ Function :: fun((Element :: term(), AccIn) -> AccOut),
+ Tab :: tab(),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term().
foldl(F, Accu, T) ->
ets:safe_fixtable(T, true),
@@ -198,7 +199,13 @@ do_foldl(F, Accu0, Key, T) ->
ets:next(T, Key), T)
end.
--spec foldr(fun((_, term()) -> term()), term(), tab()) -> term().
+-spec foldr(Function, Acc0, Tab) -> Acc1 when
+ Function :: fun((Element :: term(), AccIn) -> AccOut),
+ Tab :: tab(),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term().
foldr(F, Accu, T) ->
ets:safe_fixtable(T, true),
@@ -219,7 +226,9 @@ do_foldr(F, Accu0, Key, T) ->
ets:prev(T, Key), T)
end.
--spec from_dets(tab(), dets:tab_name()) -> 'true'.
+-spec from_dets(Tab, DetsTab) -> 'true' when
+ Tab :: tab(),
+ DetsTab :: dets:tab_name().
from_dets(EtsTable, DetsTable) ->
case (catch dets:to_ets(DetsTable, EtsTable)) of
@@ -235,7 +244,9 @@ from_dets(EtsTable, DetsTable) ->
erlang:error(Unexpected,[EtsTable,DetsTable])
end.
--spec to_dets(tab(), dets:tab_name()) -> dets:tab_name().
+-spec to_dets(Tab, DetsTab) -> DetsTab when
+ Tab :: tab(),
+ DetsTab :: dets:tab_name().
to_dets(EtsTable, DetsTable) ->
case (catch dets:from_ets(DetsTable, EtsTable)) of
@@ -251,8 +262,11 @@ to_dets(EtsTable, DetsTable) ->
erlang:error(Unexpected,[EtsTable,DetsTable])
end.
--spec test_ms(tuple(), match_specs()) ->
- {'ok', term()} | {'error', [{'warning'|'error', string()}]}.
+-spec test_ms(Tuple, MatchSpec) -> {'ok', Result} | {'error', Errors} when
+ Tuple :: tuple(),
+ MatchSpec :: match_spec(),
+ Result :: term(),
+ Errors :: [{'warning'|'error', string()}].
test_ms(Term, MS) ->
case erlang:match_spec_test(Term, MS, table) of
@@ -262,7 +276,11 @@ test_ms(Term, MS) ->
Error
end.
--spec init_table(tab(), fun(('read' | 'close') -> term())) -> 'true'.
+-spec init_table(Tab, InitFun) -> 'true' when
+ Tab :: tab(),
+ InitFun :: fun((Arg) -> Res),
+ Arg :: 'read' | 'close',
+ Res :: 'end_of_input' | {Objects :: [term()], InitFun} | term().
init_table(Table, Fun) ->
ets:delete_all_objects(Table),
@@ -287,7 +305,9 @@ init_table_sub(Table, [H|T]) ->
ets:insert(Table, H),
init_table_sub(Table, T).
--spec match_delete(tab(), match_pattern()) -> 'true'.
+-spec match_delete(Tab, Pattern) -> 'true' when
+ Tab :: tab(),
+ Pattern :: match_pattern().
match_delete(Table, Pattern) ->
ets:select_delete(Table, [{Pattern,[],[true]}]),
@@ -295,7 +315,9 @@ match_delete(Table, Pattern) ->
%% Produce a list of tuples from a table
--spec tab2list(tab()) -> [tuple()].
+-spec tab2list(Tab) -> [Object] when
+ Tab :: tab(),
+ Object :: tuple().
tab2list(T) ->
ets:match_object(T, '_').
@@ -334,15 +356,21 @@ do_filter(Tab, Key, F, A, Ack) ->
md5sum = false :: boolean()
}).
--type fname() :: string() | atom().
--type t2f_option() :: {'extended_info', [ext_info()]}.
-
--spec tab2file(tab(), fname()) -> 'ok' | {'error', term()}.
+-spec tab2file(Tab, Filename) -> 'ok' | {'error', Reason} when
+ Tab :: tab(),
+ Filename :: file:name(),
+ Reason :: term().
tab2file(Tab, File) ->
tab2file(Tab, File, []).
--spec tab2file(tab(), fname(), [t2f_option()]) -> 'ok' | {'error', term()}.
+-spec tab2file(Tab, Filename, Options) -> 'ok' | {'error', Reason} when
+ Tab :: tab(),
+ Filename :: file:name(),
+ Options :: [Option],
+ Option :: {'extended_info', [ExtInfo]},
+ ExtInfo :: 'md5sum' | 'object_count',
+ Reason :: term().
tab2file(Tab, File, Options) ->
try
@@ -501,14 +529,20 @@ parse_ft_info_options(_,Malformed) ->
%% Opt := {verify,boolean()}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--type f2t_option() :: {'verify', boolean()}.
-
--spec file2tab(fname()) -> {'ok', tab()} | {'error', term()}.
+-spec file2tab(Filename) -> {'ok', Tab} | {'error', Reason} when
+ Filename :: file:name(),
+ Tab :: tab(),
+ Reason :: term().
file2tab(File) ->
file2tab(File, []).
--spec file2tab(fname(), [f2t_option()]) -> {'ok', tab()} | {'error', term()}.
+-spec file2tab(Filename, Options) -> {'ok', Tab} | {'error', Reason} when
+ Filename :: file:name(),
+ Tab :: tab(),
+ Options :: [Option],
+ Option :: {'verify', boolean()},
+ Reason :: term().
file2tab(File, Opts) ->
try
@@ -895,7 +929,22 @@ named_table(false) -> [].
%% information
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec tabfile_info(fname()) -> {'ok', [table_info()]} | {'error', term()}.
+-spec tabfile_info(Filename) -> {'ok', TableInfo} | {'error', Reason} when
+ Filename :: file:name(),
+ TableInfo :: [InfoItem],
+ InfoItem :: {'name', atom()}
+ | {'type', Type}
+ | {'protection', Protection}
+ | {'named_table', boolean()}
+ | {'keypos', non_neg_integer()}
+ | {'size', non_neg_integer()}
+ | {'extended_info', [ExtInfo]}
+ | {'version', {Major :: non_neg_integer(),
+ Minor :: non_neg_integer()}},
+ ExtInfo :: 'md5sum' | 'object_count',
+ Type :: 'bag' | 'duplicate_bag' | 'ordered_set' | 'set',
+ Protection :: 'private' | 'protected' | 'public',
+ Reason :: term().
tabfile_info(File) when is_list(File) ; is_atom(File) ->
try
@@ -932,20 +981,22 @@ tabfile_info(File) when is_list(File) ; is_atom(File) ->
{error,ExReason}
end.
--type qlc__query_handle() :: term(). %% XXX: belongs in 'qlc'
-
--type num_objects() :: 'default' | pos_integer().
--type trav_method() :: 'first_next' | 'last_prev'
- | 'select' | {'select', match_specs()}.
--type table_option() :: {'n_objects', num_objects()}
- | {'traverse', trav_method()}.
-
--spec table(tab()) -> qlc__query_handle().
+-spec table(Tab) -> QueryHandle when
+ Tab :: tab(),
+ QueryHandle :: qlc:query_handle().
table(Tab) ->
table(Tab, []).
--spec table(tab(), table_option() | [table_option()]) -> qlc__query_handle().
+-spec table(Tab, Options) -> QueryHandle when
+ Tab :: tab(),
+ QueryHandle :: qlc:query_handle(),
+ Options :: [Option] | Option,
+ Option :: {'n_objects', NObjects}
+ | {'traverse', TraverseMethod},
+ NObjects :: 'default' | pos_integer(),
+ TraverseMethod :: 'first_next' | 'last_prev'
+ | 'select' | {'select', MatchSpec :: match_spec()}.
table(Tab, Opts) ->
case options(Opts, [traverse, n_objects]) of
@@ -1135,7 +1186,8 @@ to_string(X) ->
lists:flatten(io_lib:format("~p", [X])).
%% view a specific table
--spec i(tab()) -> 'ok'.
+-spec i(Tab) -> 'ok' when
+ Tab :: tab().
i(Tab) ->
i(Tab, 40).
diff --git a/lib/stdlib/src/file_sorter.erl b/lib/stdlib/src/file_sorter.erl
index 2a5b08b581..3f31852afc 100644
--- a/lib/stdlib/src/file_sorter.erl
+++ b/lib/stdlib/src/file_sorter.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2001-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2001-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -50,12 +50,68 @@
%%% Exported functions
%%%
+-export_type([reason/0]).
+
+-type(file_name() :: file:name()).
+-type(file_names() :: [file:name()]).
+-type(i_command() :: read | close).
+-type(i_reply() :: end_of_input | {end_of_input, value()}
+ | {[object()], infun()} | input_reply()).
+-type(infun() :: fun((i_command()) -> i_reply())).
+-type(input() :: file_names() | infun()).
+-type(input_reply() :: term()).
+-type(o_command() :: {value, value()} | [object()] | close).
+-type(o_reply() :: outfun() | output_reply()).
+-type(object() :: term() | binary()).
+-type(outfun() :: fun((o_command()) -> o_reply())).
+-type(output() :: file_name() | outfun()).
+-type(output_reply() :: term()).
+-type(value() :: term()).
+
+-type(options() :: [option()] | option()).
+-type(option() :: {compressed, boolean()}
+ | {header, header_length()}
+ | {format, format()}
+ | {no_files, no_files()}
+ | {order, order()}
+ | {size, size()}
+ | {tmpdir, tmp_directory()}
+ | {unique, boolean()}).
+-type(format() :: binary_term | term | binary | format_fun()).
+-type(format_fun() :: fun((binary()) -> term())).
+-type(header_length() :: pos_integer()).
+-type(key_pos() :: pos_integer() | [pos_integer()]).
+-type(no_files() :: pos_integer()). % > 1
+-type(order() :: ascending | descending | order_fun()).
+-type(order_fun() :: fun((term(), term()) -> boolean())).
+-type(size() :: non_neg_integer()).
+-type(tmp_directory() :: [] | file:name()).
+
+-type(reason() :: bad_object
+ | {bad_object, file_name()}
+ | {bad_term, file_name()}
+ | {file_error, file_name(),
+ file:posix() | badarg | system_limit}
+ | {premature_eof, file_name()}).
+
+-spec(sort(FileName) -> Reply when
+ FileName :: file_name(),
+ Reply :: ok | {error, reason()} | input_reply() | output_reply()).
sort(FileName) ->
sort([FileName], FileName).
+-spec(sort(Input, Output) -> Reply when
+ Input :: input(),
+ Output :: output(),
+ Reply :: ok | {error, reason()} | input_reply() | output_reply()).
sort(Input, Output) ->
sort(Input, Output, []).
+-spec(sort(Input, Output, Options) -> Reply when
+ Input :: input(),
+ Output :: output(),
+ Options :: options(),
+ Reply :: ok | {error, reason()} | input_reply() | output_reply()).
sort(Input0, Output0, Options) ->
case {is_input(Input0), maybe_output(Output0), options(Options)} of
{{true,Input}, {true,Output}, #opts{}=Opts} ->
@@ -64,12 +120,27 @@ sort(Input0, Output0, Options) ->
badarg(culprit(tuple_to_list(T)), [Input0, Output0, Options])
end.
+-spec(keysort(KeyPos, FileName) -> Reply when
+ KeyPos :: key_pos(),
+ FileName :: file_name(),
+ Reply :: ok | {error, reason()} | input_reply() | output_reply()).
keysort(KeyPos, FileName) ->
keysort(KeyPos, [FileName], FileName).
+-spec(keysort(KeyPos, Input, Output) -> Reply when
+ KeyPos :: key_pos(),
+ Input :: input(),
+ Output :: output(),
+ Reply :: ok | {error, reason()} | input_reply() | output_reply()).
keysort(KeyPos, Input, Output) ->
keysort(KeyPos, Input, Output, []).
+-spec(keysort(KeyPos, Input, Output, Options) -> Reply when
+ KeyPos :: key_pos(),
+ Input :: input(),
+ Output :: output(),
+ Options :: options(),
+ Reply :: ok | {error, reason()} | input_reply() | output_reply()).
keysort(KeyPos, Input0, Output0, Options) ->
R = case {is_keypos(KeyPos), is_input(Input0),
maybe_output(Output0), options(Options)} of
@@ -89,9 +160,18 @@ keysort(KeyPos, Input0, Output0, Options) ->
badarg(culprit(O), [KeyPos, Input0, Output0, Options])
end.
+-spec(merge(FileNames, Output) -> Reply when
+ FileNames :: file_names(),
+ Output :: output(),
+ Reply :: ok | {error, reason()} | output_reply()).
merge(Files, Output) ->
merge(Files, Output, []).
+-spec(merge(FileNames, Output, Options) -> Reply when
+ FileNames :: file_names(),
+ Output :: output(),
+ Options :: options(),
+ Reply :: ok | {error, reason()} | output_reply()).
merge(Files0, Output0, Options) ->
case {is_files(Files0), maybe_output(Output0), options(Options)} of
%% size not used
@@ -101,9 +181,20 @@ merge(Files0, Output0, Options) ->
badarg(culprit(tuple_to_list(T)), [Files0, Output0, Options])
end.
+-spec(keymerge(KeyPos, FileNames, Output) -> Reply when
+ KeyPos :: key_pos(),
+ FileNames :: file_names(),
+ Output :: output(),
+ Reply :: ok | {error, reason()} | output_reply()).
keymerge(KeyPos, Files, Output) ->
keymerge(KeyPos, Files, Output, []).
+-spec(keymerge(KeyPos, FileNames, Output, Options) -> Reply when
+ KeyPos :: key_pos(),
+ FileNames :: file_names(),
+ Output :: output(),
+ Options :: options(),
+ Reply :: ok | {error, reason()} | output_reply()).
keymerge(KeyPos, Files0, Output0, Options) ->
R = case {is_keypos(KeyPos), is_files(Files0),
maybe_output(Output0), options(Options)} of
@@ -123,9 +214,21 @@ keymerge(KeyPos, Files0, Output0, Options) ->
badarg(culprit(O), [KeyPos, Files0, Output0, Options])
end.
+-spec(check(FileName) -> Reply when
+ FileName :: file_name(),
+ Reply :: {ok, [Result]} | {error, reason()},
+ Result :: {FileName, TermPosition, term()},
+ TermPosition :: pos_integer()).
check(FileName) ->
check([FileName], []).
+-spec(check(FileNames, Options) -> Reply when
+ FileNames :: file_names(),
+ Options :: options(),
+ Reply :: {ok, [Result]} | {error, reason()},
+ Result :: {FileName, TermPosition, term()},
+ FileName :: file_name(),
+ TermPosition :: pos_integer()).
check(Files0, Options) ->
case {is_files(Files0), options(Options)} of
{{true,Files}, #opts{}=Opts} ->
@@ -134,9 +237,23 @@ check(Files0, Options) ->
badarg(culprit(tuple_to_list(T)), [Files0, Options])
end.
+-spec(keycheck(KeyPos, FileName) -> Reply when
+ KeyPos :: key_pos(),
+ FileName :: file_name(),
+ Reply :: {ok, [Result]} | {error, reason()},
+ Result :: {FileName, TermPosition, term()},
+ TermPosition :: pos_integer()).
keycheck(KeyPos, FileName) ->
keycheck(KeyPos, [FileName], []).
+-spec(keycheck(KeyPos, FileNames, Options) -> Reply when
+ KeyPos :: key_pos(),
+ FileNames :: file_names(),
+ Options :: options(),
+ Reply :: {ok, [Result]} | {error, reason()},
+ Result :: {FileName, TermPosition, term()},
+ FileName :: file_name(),
+ TermPosition :: pos_integer()).
keycheck(KeyPos, Files0, Options) ->
R = case {is_keypos(KeyPos), is_files(Files0), options(Options)} of
{_, _, #opts{format = binary}} ->
diff --git a/lib/stdlib/src/filelib.erl b/lib/stdlib/src/filelib.erl
index c845b61204..d532cea187 100644
--- a/lib/stdlib/src/filelib.erl
+++ b/lib/stdlib/src/filelib.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -40,13 +40,19 @@
erlang:error(UnUsUalVaRiAbLeNaMe)
end).
+-type filename() :: file:name().
+-type dirname() :: filename().
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec wildcard(file:name()) -> [file:filename()].
+-spec wildcard(Wildcard) -> [file:filename()] when
+ Wildcard :: filename() | dirname().
wildcard(Pattern) when is_list(Pattern) ->
?HANDLE_ERROR(do_wildcard(Pattern, file)).
--spec wildcard(file:name(), file:name() | atom()) -> [file:filename()].
+-spec wildcard(Wildcard, Cwd) -> [file:filename()] when
+ Wildcard :: filename() | dirname(),
+ Cwd :: dirname().
wildcard(Pattern, Cwd) when is_list(Pattern), (is_list(Cwd) or is_binary(Cwd)) ->
?HANDLE_ERROR(do_wildcard(Pattern, Cwd, file));
wildcard(Pattern, Mod) when is_list(Pattern), is_atom(Mod) ->
@@ -57,7 +63,8 @@ wildcard(Pattern, Cwd, Mod)
when is_list(Pattern), (is_list(Cwd) or is_binary(Cwd)), is_atom(Mod) ->
?HANDLE_ERROR(do_wildcard(Pattern, Cwd, Mod)).
--spec is_dir(file:name()) -> boolean().
+-spec is_dir(Name) -> boolean() when
+ Name :: filename() | dirname().
is_dir(Dir) ->
do_is_dir(Dir, file).
@@ -65,7 +72,8 @@ is_dir(Dir) ->
is_dir(Dir, Mod) when is_atom(Mod) ->
do_is_dir(Dir, Mod).
--spec is_file(file:name()) -> boolean().
+-spec is_file(Name) -> boolean() when
+ Name :: filename() | dirname().
is_file(File) ->
do_is_file(File, file).
@@ -73,7 +81,8 @@ is_file(File) ->
is_file(File, Mod) when is_atom(Mod) ->
do_is_file(File, Mod).
--spec is_regular(file:name()) -> boolean().
+-spec is_regular(Name) -> boolean() when
+ Name :: filename().
is_regular(File) ->
do_is_regular(File, file).
@@ -81,7 +90,13 @@ is_regular(File) ->
is_regular(File, Mod) when is_atom(Mod) ->
do_is_regular(File, Mod).
--spec fold_files(file:name(), string(), boolean(), fun((_,_) -> _), _) -> _.
+-spec fold_files(Dir, RegExp, Recursive, Fun, AccIn) -> AccOut when
+ Dir :: dirname(),
+ RegExp :: string(),
+ Recursive :: boolean(),
+ Fun :: fun((F :: file:filename(), AccIn) -> AccOut),
+ AccIn :: term(),
+ AccOut :: term().
fold_files(Dir, RegExp, Recursive, Fun, Acc) ->
do_fold_files(Dir, RegExp, Recursive, Fun, Acc, file).
@@ -89,7 +104,8 @@ fold_files(Dir, RegExp, Recursive, Fun, Acc) ->
fold_files(Dir, RegExp, Recursive, Fun, Acc, Mod) when is_atom(Mod) ->
do_fold_files(Dir, RegExp, Recursive, Fun, Acc, Mod).
--spec last_modified(file:name()) -> file:date_time() | 0.
+-spec last_modified(Name) -> file:date_time() | 0 when
+ Name :: filename() | dirname().
last_modified(File) ->
do_last_modified(File, file).
@@ -97,7 +113,8 @@ last_modified(File) ->
last_modified(File, Mod) when is_atom(Mod) ->
do_last_modified(File, Mod).
--spec file_size(file:name()) -> non_neg_integer().
+-spec file_size(Filename) -> non_neg_integer() when
+ Filename :: filename().
file_size(File) ->
do_file_size(File, file).
@@ -237,7 +254,9 @@ do_file_size(File, Mod) ->
%% +type X = filename() | dirname()
%% ensures that the directory name required to create D exists
--spec ensure_dir(file:name()) -> 'ok' | {'error', file:posix()}.
+-spec ensure_dir(Name) -> 'ok' | {'error', Reason} when
+ Name :: filename() | dirname(),
+ Reason :: file:posix().
ensure_dir("/") ->
ok;
ensure_dir(F) ->
diff --git a/lib/stdlib/src/filename.erl b/lib/stdlib/src/filename.erl
index 24abf1e977..1cb9e4a25e 100644
--- a/lib/stdlib/src/filename.erl
+++ b/lib/stdlib/src/filename.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -61,12 +61,15 @@
%% (for WIN32): absname("/") -> "D:/"
--spec absname(file:name()) -> file:filename().
+-spec absname(Filename) -> file:filename() when
+ Filename :: file:name().
absname(Name) ->
{ok, Cwd} = file:get_cwd(),
absname(Name, Cwd).
--spec absname(file:name(), file:filename()) -> file:filename().
+-spec absname(Filename, Dir) -> file:filename() when
+ Filename :: file:name(),
+ Dir :: file:filename().
absname(Name, AbsBase) when is_binary(Name), is_list(AbsBase) ->
absname(Name,filename_string_to_binary(AbsBase));
absname(Name, AbsBase) when is_list(Name), is_binary(AbsBase) ->
@@ -119,7 +122,9 @@ absname_vr([[X, $:]|Name], _, _AbsBase) ->
%% This is just a join/2, but assumes that
%% AbsBase must be absolute and Name must be relative.
--spec absname_join(file:filename(), file:name()) -> file:filename().
+-spec absname_join(Dir, Filename) -> file:filename() when
+ Dir :: file:filename(),
+ Filename :: file:name().
absname_join(AbsBase, Name) ->
join(AbsBase, flatten(Name)).
@@ -131,7 +136,8 @@ absname_join(AbsBase, Name) ->
%% basename("/usr/foo/") -> "foo" (trailing slashes ignored)
%% basename("/") -> []
--spec basename(file:name()) -> file:filename().
+-spec basename(Filename) -> file:filename() when
+ Filename :: file:name().
basename(Name) when is_binary(Name) ->
case os:type() of
{win32,_} ->
@@ -192,7 +198,9 @@ skip_prefix(Name, _) ->
%% rootname(basename("xxx.jam")) -> "xxx"
%% rootname(basename("xxx.erl")) -> "xxx"
--spec basename(file:name(), file:name()) -> file:filename().
+-spec basename(Filename, Ext) -> file:filename() when
+ Filename :: file:name(),
+ Ext :: file:name().
basename(Name, Ext) when is_binary(Name), is_list(Ext) ->
basename(Name,filename_string_to_binary(Ext));
basename(Name, Ext) when is_list(Name), is_binary(Ext) ->
@@ -240,7 +248,8 @@ basename([], _Ext, Tail, _DrvSep2) ->
%% Example: dirname("/usr/src/kalle.erl") -> "/usr/src",
%% dirname("kalle.erl") -> "."
--spec dirname(file:name()) -> file:filename().
+-spec dirname(Filename) -> file:filename() when
+ Filename :: file:name().
dirname(Name) when is_binary(Name) ->
{Dsep,Drivesep} = separators(),
SList = case Dsep of
@@ -332,7 +341,8 @@ dirjoin1([H|T],Acc,Sep) ->
%%
%% On Windows: fn:dirname("\\usr\\src/kalle.erl") -> "/usr/src"
--spec extension(file:name()) -> file:filename().
+-spec extension(Filename) -> file:filename() when
+ Filename :: file:name().
extension(Name) when is_binary(Name) ->
{Dsep,_} = separators(),
SList = case Dsep of
@@ -374,7 +384,8 @@ extension([], Result, _OsType) ->
%% Joins a list of filenames with directory separators.
--spec join([file:filename()]) -> file:filename().
+-spec join(Components) -> file:filename() when
+ Components :: [file:filename()].
join([Name1, Name2|Rest]) ->
join([join(Name1, Name2)|Rest]);
join([Name]) when is_list(Name) ->
@@ -386,7 +397,9 @@ join([Name]) when is_atom(Name) ->
%% Joins two filenames with directory separators.
--spec join(file:filename(), file:filename()) -> file:filename().
+-spec join(Name1, Name2) -> file:filename() when
+ Name1 :: file:filename(),
+ Name2 :: file:filename().
join(Name1, Name2) when is_list(Name1), is_list(Name2) ->
OsType = major_os_type(),
case pathtype(Name2) of
@@ -494,7 +507,8 @@ append(Dir, Name) ->
%% current working volume. (Windows only)
%% Example: a:bar.erl, /temp/foo.erl
--spec pathtype(file:name()) -> 'absolute' | 'relative' | 'volumerelative'.
+-spec pathtype(Path) -> 'absolute' | 'relative' | 'volumerelative' when
+ Path :: file:name().
pathtype(Atom) when is_atom(Atom) ->
pathtype(atom_to_list(Atom));
pathtype(Name) when is_list(Name) or is_binary(Name) ->
@@ -547,7 +561,8 @@ win32_pathtype(_) -> relative.
%% Examples: rootname("/jam.src/kalle") -> "/jam.src/kalle"
%% rootname("/jam.src/foo.erl") -> "/jam.src/foo"
--spec rootname(file:name()) -> file:filename().
+-spec rootname(Filename) -> file:filename() when
+ Filename :: file:name().
rootname(Name) when is_binary(Name) ->
list_to_binary(rootname(binary_to_list(Name))); % No need to handle unicode, . is < 128
rootname(Name0) ->
@@ -576,7 +591,9 @@ rootname([], Root, _Ext, _OsType) ->
%% Examples: rootname("/jam.src/kalle.jam", ".erl") -> "/jam.src/kalle.jam"
%% rootname("/jam.src/foo.erl", ".erl") -> "/jam.src/foo"
--spec rootname(file:name(), file:name()) -> file:filename().
+-spec rootname(Filename, Ext) -> file:filename() when
+ Filename :: file:name(),
+ Ext :: file:name().
rootname(Name, Ext) when is_binary(Name), is_binary(Ext) ->
list_to_binary(rootname(binary_to_list(Name),binary_to_list(Ext)));
rootname(Name, Ext) when is_binary(Name) ->
@@ -602,7 +619,9 @@ rootname2([Char|Rest], Ext, Result) when is_integer(Char) ->
%% split("foo/bar") -> ["foo", "bar"]
%% split("a:\\msdev\\include") -> ["a:/", "msdev", "include"]
--spec split(file:name()) -> [file:filename()].
+-spec split(Filename) -> Components when
+ Filename :: file:name(),
+ Components :: [file:filename()].
split(Name) when is_binary(Name) ->
case os:type() of
{win32, _} -> win32_splitb(Name);
@@ -695,7 +714,8 @@ split([], Comp, Components, OsType) ->
%% will be converted to backslashes. On all platforms, the
%% name will be normalized as done by join/1.
--spec nativename(file:filename()) -> file:filename().
+-spec nativename(Path) -> file:filename() when
+ Path :: file:filename().
nativename(Name0) ->
Name = join([Name0]), %Normalize.
case os:type() of
@@ -747,12 +767,17 @@ separators() ->
%% The paths in the {outdir, Path} and {i, Path} options are guaranteed
%% to be absolute.
--type rule() :: {string(), string()}.
--type ecode() :: 'non_existing' | 'preloaded' | 'interpreted'.
--type option() :: {'i', string()} | {'outdir', string()} | {'d', atom()}.
-
--spec find_src(atom() | string()) ->
- {string(), [option()]} | {'error', {ecode(), atom()}}.
+-spec find_src(Beam) -> {SourceFile, Options}
+ | {error, {ErrorReason, Module}} when
+ Beam :: Module | Filename,
+ Filename :: atom() | string(),
+ Module :: module(),
+ SourceFile :: string(),
+ Options :: [Option],
+ Option :: {'i', Path :: string()}
+ | {'outdir', Path :: string()}
+ | {'d', atom()},
+ ErrorReason :: 'non_existing' | 'preloaded' | 'interpreted'.
find_src(Mod) ->
Default = [{"", ""}, {"ebin", "src"}, {"ebin", "esrc"}],
Rules =
@@ -763,8 +788,18 @@ find_src(Mod) ->
end,
find_src(Mod, Rules).
--spec find_src(atom() | string(), [rule()]) ->
- {string(), [option()]} | {'error', {ecode(), atom()}}.
+-spec find_src(Beam, Rules) -> {SourceFile, Options}
+ | {error, {ErrorReason, Module}} when
+ Beam :: Module | Filename,
+ Filename :: atom() | string(),
+ Rules :: [{BinSuffix :: string(), SourceSuffix :: string()}],
+ Module :: module(),
+ SourceFile :: string(),
+ Options :: [Option],
+ Option :: {'i', Path :: string()}
+ | {'outdir', Path :: string()}
+ | {'d', atom()},
+ ErrorReason :: 'non_existing' | 'preloaded' | 'interpreted'.
find_src(Mod, Rules) when is_atom(Mod) ->
find_src(atom_to_list(Mod), Rules);
find_src(File0, Rules) when is_list(File0) ->
@@ -890,7 +925,8 @@ major_os_type() ->
%% flatten(List)
%% Flatten a list, also accepting atoms.
--spec flatten(file:name()) -> file:filename().
+-spec flatten(Filename) -> file:filename() when
+ Filename :: file:name().
flatten(Bin) when is_binary(Bin) ->
Bin;
flatten(List) ->
diff --git a/lib/stdlib/src/gb_sets.erl b/lib/stdlib/src/gb_sets.erl
index fc5beb28b0..91d21d869c 100644
--- a/lib/stdlib/src/gb_sets.erl
+++ b/lib/stdlib/src/gb_sets.erl
@@ -197,6 +197,7 @@
%% Some types.
-type gb_set_node() :: 'nil' | {term(), _, _}.
+-opaque iter() :: [gb_set_node()].
%% A declaration equivalent to the following is currently hard-coded
%% in erl_types.erl
@@ -205,38 +206,47 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec empty() -> gb_set().
+-spec empty() -> Set when
+ Set :: gb_set().
empty() ->
{0, nil}.
--spec new() -> gb_set().
+-spec new() -> Set when
+ Set :: gb_set().
new() -> empty().
--spec is_empty(gb_set()) -> boolean().
+-spec is_empty(Set) -> boolean() when
+ Set :: gb_set().
is_empty({0, nil}) ->
true;
is_empty(_) ->
false.
--spec size(gb_set()) -> non_neg_integer().
+-spec size(Set) -> non_neg_integer() when
+ Set :: gb_set().
size({Size, _}) ->
Size.
--spec singleton(term()) -> gb_set().
+-spec singleton(Element) -> gb_set() when
+ Element :: term().
singleton(Key) ->
{1, {Key, nil, nil}}.
--spec is_element(term(), gb_set()) -> boolean().
+-spec is_element(Element, Set) -> boolean() when
+ Element :: term(),
+ Set :: gb_set().
is_element(Key, S) ->
is_member(Key, S).
--spec is_member(term(), gb_set()) -> boolean().
+-spec is_member(Element, Set) -> boolean() when
+ Element :: term(),
+ Set :: gb_set().
is_member(Key, {_, T}) ->
is_member_1(Key, T).
@@ -250,7 +260,10 @@ is_member_1(_, {_, _, _}) ->
is_member_1(_, nil) ->
false.
--spec insert(term(), gb_set()) -> gb_set().
+-spec insert(Element, Set1) -> Set2 when
+ Element :: term(),
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
insert(Key, {S, T}) ->
S1 = S + 1,
@@ -306,7 +319,9 @@ count({_, Sm, Bi}) ->
count(nil) ->
{1, 0}.
--spec balance(gb_set()) -> gb_set().
+-spec balance(Set1) -> Set2 when
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
balance({S, T}) ->
{S, balance(T, S)}.
@@ -331,12 +346,18 @@ balance_list_1([Key | L], 1) ->
balance_list_1(L, 0) ->
{nil, L}.
--spec add_element(term(), gb_set()) -> gb_set().
+-spec add_element(Element, Set1) -> Set2 when
+ Element :: term(),
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
add_element(X, S) ->
add(X, S).
--spec add(term(), gb_set()) -> gb_set().
+-spec add(Element, Set1) -> Set2 when
+ Element :: term(),
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
add(X, S) ->
case is_member(X, S) of
@@ -346,23 +367,33 @@ add(X, S) ->
insert(X, S)
end.
--spec from_list([term()]) -> gb_set().
+-spec from_list(List) -> Set when
+ List :: [term()],
+ Set :: gb_set().
from_list(L) ->
from_ordset(ordsets:from_list(L)).
--spec from_ordset([term()]) -> gb_set().
+-spec from_ordset(List) -> Set when
+ List :: [term()],
+ Set :: gb_set().
from_ordset(L) ->
S = length(L),
{S, balance_list(L, S)}.
--spec del_element(term(), gb_set()) -> gb_set().
+-spec del_element(Element, Set1) -> Set2 when
+ Element :: term(),
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
del_element(Key, S) ->
delete_any(Key, S).
--spec delete_any(term(), gb_set()) -> gb_set().
+-spec delete_any(Element, Set1) -> Set2 when
+ Element :: term(),
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
delete_any(Key, S) ->
case is_member(Key, S) of
@@ -372,7 +403,10 @@ delete_any(Key, S) ->
S
end.
--spec delete(term(), gb_set()) -> gb_set().
+-spec delete(Element, Set1) -> Set2 when
+ Element :: term(),
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
delete(Key, {S, T}) ->
{S - 1, delete_1(Key, T)}.
@@ -394,7 +428,10 @@ merge(Smaller, Larger) ->
{Key, Larger1} = take_smallest1(Larger),
{Key, Smaller, Larger1}.
--spec take_smallest(gb_set()) -> {term(), gb_set()}.
+-spec take_smallest(Set1) -> {Element, Set2} when
+ Set1 :: gb_set(),
+ Set2 :: gb_set(),
+ Element :: term().
take_smallest({S, T}) ->
{Key, Larger} = take_smallest1(T),
@@ -406,7 +443,8 @@ take_smallest1({Key, Smaller, Larger}) ->
{Key1, Smaller1} = take_smallest1(Smaller),
{Key1, {Key, Smaller1, Larger}}.
--spec smallest(gb_set()) -> term().
+-spec smallest(Set) -> term() when
+ Set :: gb_set().
smallest({_, T}) ->
smallest_1(T).
@@ -416,7 +454,10 @@ smallest_1({Key, nil, _Larger}) ->
smallest_1({_Key, Smaller, _Larger}) ->
smallest_1(Smaller).
--spec take_largest(gb_set()) -> {term(), gb_set()}.
+-spec take_largest(Set1) -> {Element, Set2} when
+ Set1 :: gb_set(),
+ Set2 :: gb_set(),
+ Element :: term().
take_largest({S, T}) ->
{Key, Smaller} = take_largest1(T),
@@ -428,7 +469,8 @@ take_largest1({Key, Smaller, Larger}) ->
{Key1, Larger1} = take_largest1(Larger),
{Key1, {Key, Smaller, Larger1}}.
--spec largest(gb_set()) -> term().
+-spec largest(Set) -> term() when
+ Set :: gb_set().
largest({_, T}) ->
largest_1(T).
@@ -438,7 +480,9 @@ largest_1({Key, _Smaller, nil}) ->
largest_1({_Key, _Smaller, Larger}) ->
largest_1(Larger).
--spec to_list(gb_set()) -> [term()].
+-spec to_list(Set) -> List when
+ Set :: gb_set(),
+ List :: [term()].
to_list({_, T}) ->
to_list(T, []).
@@ -449,7 +493,9 @@ to_list({Key, Small, Big}, L) ->
to_list(Small, [Key | to_list(Big, L)]);
to_list(nil, L) -> L.
--spec iterator(gb_set()) -> [term()].
+-spec iterator(Set) -> Iter when
+ Set :: gb_set(),
+ Iter :: iter().
iterator({_, T}) ->
iterator(T, []).
@@ -464,7 +510,10 @@ iterator({_, L, _} = T, As) ->
iterator(nil, As) ->
As.
--spec next([term()]) -> {term(), [term()]} | 'none'.
+-spec next(Iter1) -> {Element, Iter2} | 'none' when
+ Iter1 :: iter(),
+ Iter2 :: iter(),
+ Element :: term().
next([{X, _, T} | As]) ->
{X, iterator(T, As)};
@@ -494,7 +543,10 @@ next([]) ->
%% traversing the elements can be devised, but they all have higher
%% overhead.
--spec union(gb_set(), gb_set()) -> gb_set().
+-spec union(Set1, Set2) -> Set3 when
+ Set1 :: gb_set(),
+ Set2 :: gb_set(),
+ Set3 :: gb_set().
union({N1, T1}, {N2, T2}) when N2 < N1 ->
union(to_list_1(T2), N2, T1, N1);
@@ -596,7 +648,9 @@ balance_revlist_1([Key | L], 1) ->
balance_revlist_1(L, 0) ->
{nil, L}.
--spec union([gb_set()]) -> gb_set().
+-spec union(SetList) -> Set when
+ SetList :: [gb_set(),...],
+ Set :: gb_set().
union([S | Ss]) ->
union_list(S, Ss);
@@ -609,7 +663,10 @@ union_list(S, []) -> S.
%% The rest is modelled on the above.
--spec intersection(gb_set(), gb_set()) -> gb_set().
+-spec intersection(Set1, Set2) -> Set3 when
+ Set1 :: gb_set(),
+ Set2 :: gb_set(),
+ Set3 :: gb_set().
intersection({N1, T1}, {N2, T2}) when N2 < N1 ->
intersection(to_list_1(T2), N2, T1, N1);
@@ -657,7 +714,9 @@ intersection_2([], _, As, S) ->
intersection_2(_, [], As, S) ->
{S, balance_revlist(As, S)}.
--spec intersection([gb_set(),...]) -> gb_set().
+-spec intersection(SetList) -> Set when
+ SetList :: [gb_set(),...],
+ Set :: gb_set().
intersection([S | Ss]) ->
intersection_list(S, Ss).
@@ -666,7 +725,9 @@ intersection_list(S, [S1 | Ss]) ->
intersection_list(intersection(S, S1), Ss);
intersection_list(S, []) -> S.
--spec is_disjoint(gb_set(), gb_set()) -> boolean().
+-spec is_disjoint(Set1, Set2) -> boolean() when
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
is_disjoint({N1, T1}, {N2, T2}) when N1 < N2 ->
is_disjoint_1(T1, T2);
@@ -694,12 +755,18 @@ is_disjoint_1(_, nil) ->
%% the sets. Therefore, we always build a new tree, and thus we need to
%% traverse the whole element list of the left operand.
--spec subtract(gb_set(), gb_set()) -> gb_set().
+-spec subtract(Set1, Set2) -> Set3 when
+ Set1 :: gb_set(),
+ Set2 :: gb_set(),
+ Set3 :: gb_set().
subtract(S1, S2) ->
difference(S1, S2).
--spec difference(gb_set(), gb_set()) -> gb_set().
+-spec difference(Set1, Set2) -> Set3 when
+ Set1 :: gb_set(),
+ Set2 :: gb_set(),
+ Set3 :: gb_set().
difference({N1, T1}, {N2, T2}) ->
difference(to_list_1(T1), N1, T2, N2).
@@ -747,7 +814,9 @@ difference_2(Xs, [], As, S) ->
%% Subset testing is much the same thing as set difference, but
%% without the construction of a new set.
--spec is_subset(gb_set(), gb_set()) -> boolean().
+-spec is_subset(Set1, Set2) -> boolean() when
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
is_subset({N1, T1}, {N2, T2}) ->
is_subset(to_list_1(T1), N1, T2, N2).
@@ -788,18 +857,28 @@ is_subset_2(_, []) ->
%% For compatibility with `sets':
--spec is_set(term()) -> boolean().
+-spec is_set(Term) -> boolean() when
+ Term :: term().
is_set({0, nil}) -> true;
is_set({N, {_, _, _}}) when is_integer(N), N >= 0 -> true;
is_set(_) -> false.
--spec filter(fun((term()) -> boolean()), gb_set()) -> gb_set().
+-spec filter(Pred, Set1) -> Set2 when
+ Pred :: fun((E :: term()) -> boolean()),
+ Set1 :: gb_set(),
+ Set2 :: gb_set().
filter(F, S) ->
from_ordset([X || X <- to_list(S), F(X)]).
--spec fold(fun((term(), term()) -> term()), term(), gb_set()) -> term().
+-spec fold(Function, Acc0, Set) -> Acc1 when
+ Function :: fun((E :: term(), AccIn) -> AccOut),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ Set :: gb_set().
fold(F, A, {_, T}) when is_function(F, 2) ->
fold_1(F, A, T).
diff --git a/lib/stdlib/src/gb_trees.erl b/lib/stdlib/src/gb_trees.erl
index d37786a100..6ad861ff5b 100644
--- a/lib/stdlib/src/gb_trees.erl
+++ b/lib/stdlib/src/gb_trees.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2001-2009. All Rights Reserved.
+%% Copyright Ericsson AB 2001-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -153,6 +153,7 @@
%% Some types.
-type gb_tree_node() :: 'nil' | {_, _, _, _}.
+-opaque iter() :: [gb_tree_node()].
%% A declaration equivalent to the following is currently hard-coded
%% in erl_types.erl
@@ -166,21 +167,26 @@
empty() ->
{0, nil}.
--spec is_empty(gb_tree()) -> boolean().
+-spec is_empty(Tree) -> boolean() when
+ Tree :: gb_tree().
is_empty({0, nil}) ->
true;
is_empty(_) ->
false.
--spec size(gb_tree()) -> non_neg_integer().
+-spec size(Tree) -> non_neg_integer() when
+ Tree :: gb_tree().
size({Size, _}) when is_integer(Size), Size >= 0 ->
Size.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec lookup(term(), gb_tree()) -> 'none' | {'value', term()}.
+-spec lookup(Key, Tree) -> 'none' | {'value', Val} when
+ Key :: term(),
+ Val :: term(),
+ Tree :: gb_tree().
lookup(Key, {_, T}) ->
lookup_1(Key, T).
@@ -205,7 +211,9 @@ lookup_1(_, nil) ->
%% This is a specialized version of `lookup'.
--spec is_defined(term(), gb_tree()) -> boolean().
+-spec is_defined(Key, Tree) -> boolean() when
+ Key :: term(),
+ Tree :: gb_tree().
is_defined(Key, {_, T}) ->
is_defined_1(Key, T).
@@ -223,7 +231,10 @@ is_defined_1(_, nil) ->
%% This is a specialized version of `lookup'.
--spec get(term(), gb_tree()) -> term().
+-spec get(Key, Tree) -> Val when
+ Key :: term(),
+ Tree :: gb_tree(),
+ Val :: term().
get(Key, {_, T}) ->
get_1(Key, T).
@@ -237,7 +248,11 @@ get_1(_, {_, Value, _, _}) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec update(term(), term(), gb_tree()) -> gb_tree().
+-spec update(Key, Val, Tree1) -> Tree2 when
+ Key :: term(),
+ Val :: term(),
+ Tree1 :: gb_tree(),
+ Tree2 :: gb_tree().
update(Key, Val, {S, T}) ->
T1 = update_1(Key, Val, T),
@@ -254,7 +269,11 @@ update_1(Key, Value, {_, _, Smaller, Bigger}) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec insert(term(), term(), gb_tree()) -> gb_tree().
+-spec insert(Key, Val, Tree1) -> Tree2 when
+ Key :: term(),
+ Val :: term(),
+ Tree1 :: gb_tree(),
+ Tree2 :: gb_tree().
insert(Key, Val, {S, T}) when is_integer(S) ->
S1 = S+1,
@@ -303,7 +322,11 @@ insert_1(Key, _, _, _) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec enter(term(), term(), gb_tree()) -> gb_tree().
+-spec enter(Key, Val, Tree1) -> Tree2 when
+ Key :: term(),
+ Val :: term(),
+ Tree1 :: gb_tree(),
+ Tree2 :: gb_tree().
enter(Key, Val, T) ->
case is_defined(Key, T) of
@@ -326,7 +349,9 @@ count(nil) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec balance(gb_tree()) -> gb_tree().
+-spec balance(Tree1) -> Tree2 when
+ Tree1 :: gb_tree(),
+ Tree2 :: gb_tree().
balance({S, T}) ->
{S, balance(T, S)}.
@@ -351,7 +376,9 @@ balance_list_1([{Key, Val} | L], 1) ->
balance_list_1(L, 0) ->
{nil, L}.
--spec from_orddict([{_,_}]) -> gb_tree().
+-spec from_orddict(List) -> Tree when
+ List :: [{Key :: term(), Val :: term()}],
+ Tree :: gb_tree().
from_orddict(L) ->
S = length(L),
@@ -359,7 +386,10 @@ from_orddict(L) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec delete_any(term(), gb_tree()) -> gb_tree().
+-spec delete_any(Key, Tree1) -> Tree2 when
+ Key :: term(),
+ Tree1 :: gb_tree(),
+ Tree2 :: gb_tree().
delete_any(Key, T) ->
case is_defined(Key, T) of
@@ -371,7 +401,10 @@ delete_any(Key, T) ->
%%% delete. Assumes that key is present.
--spec delete(term(), gb_tree()) -> gb_tree().
+-spec delete(Key, Tree1) -> Tree2 when
+ Key :: term(),
+ Tree1 :: gb_tree(),
+ Tree2 :: gb_tree().
delete(Key, {S, T}) when is_integer(S), S >= 0 ->
{S - 1, delete_1(Key, T)}.
@@ -397,7 +430,11 @@ merge(Smaller, Larger) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec take_smallest(gb_tree()) -> {term(), term(), gb_tree()}.
+-spec take_smallest(Tree1) -> {Key, Val, Tree2} when
+ Tree1 :: gb_tree(),
+ Tree2 :: gb_tree(),
+ Key :: term(),
+ Val :: term().
take_smallest({Size, Tree}) when is_integer(Size), Size >= 0 ->
{Key, Value, Larger} = take_smallest1(Tree),
@@ -409,7 +446,10 @@ take_smallest1({Key, Value, Smaller, Larger}) ->
{Key1, Value1, Smaller1} = take_smallest1(Smaller),
{Key1, Value1, {Key, Value, Smaller1, Larger}}.
--spec smallest(gb_tree()) -> {term(), term()}.
+-spec smallest(Tree) -> {Key, Val} when
+ Tree :: gb_tree(),
+ Key :: term(),
+ Val :: term().
smallest({_, Tree}) ->
smallest_1(Tree).
@@ -419,7 +459,11 @@ smallest_1({Key, Value, nil, _Larger}) ->
smallest_1({_Key, _Value, Smaller, _Larger}) ->
smallest_1(Smaller).
--spec take_largest(gb_tree()) -> {term(), term(), gb_tree()}.
+-spec take_largest(Tree1) -> {Key, Val, Tree2} when
+ Tree1 :: gb_tree(),
+ Tree2 :: gb_tree(),
+ Key :: term(),
+ Val :: term().
take_largest({Size, Tree}) when is_integer(Size), Size >= 0 ->
{Key, Value, Smaller} = take_largest1(Tree),
@@ -431,7 +475,10 @@ take_largest1({Key, Value, Smaller, Larger}) ->
{Key1, Value1, Larger1} = take_largest1(Larger),
{Key1, Value1, {Key, Value, Smaller, Larger1}}.
--spec largest(gb_tree()) -> {term(), term()}.
+-spec largest(Tree) -> {Key, Val} when
+ Tree :: gb_tree(),
+ Key :: term(),
+ Val :: term().
largest({_, Tree}) ->
largest_1(Tree).
@@ -443,7 +490,10 @@ largest_1({_Key, _Value, _Smaller, Larger}) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec to_list(gb_tree()) -> [{term(), term()}].
+-spec to_list(Tree) -> [{Key, Val}] when
+ Tree :: gb_tree(),
+ Key :: term(),
+ Val :: term().
to_list({_, T}) ->
to_list(T, []).
@@ -456,7 +506,9 @@ to_list(nil, L) -> L.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec keys(gb_tree()) -> [term()].
+-spec keys(Tree) -> [Key] when
+ Tree :: gb_tree(),
+ Key :: term().
keys({_, T}) ->
keys(T, []).
@@ -467,7 +519,9 @@ keys(nil, L) -> L.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec values(gb_tree()) -> [term()].
+-spec values(Tree) -> [Val] when
+ Tree :: gb_tree(),
+ Val :: term().
values({_, T}) ->
values(T, []).
@@ -478,7 +532,9 @@ values(nil, L) -> L.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec iterator(gb_tree()) -> [gb_tree_node()].
+-spec iterator(Tree) -> Iter when
+ Tree :: gb_tree(),
+ Iter :: iter().
iterator({_, T}) ->
iterator_1(T).
@@ -496,7 +552,11 @@ iterator({_, _, L, _} = T, As) ->
iterator(nil, As) ->
As.
--spec next([gb_tree_node()]) -> 'none' | {term(), term(), [gb_tree_node()]}.
+-spec next(Iter1) -> 'none' | {Key, Val, Iter2} when
+ Iter1 :: iter(),
+ Iter2 :: iter(),
+ Key :: term(),
+ Val :: term().
next([{X, V, _, T} | As]) ->
{X, V, iterator(T, As)};
@@ -505,7 +565,10 @@ next([]) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec map(fun((term(), term()) -> term()), gb_tree()) -> gb_tree().
+-spec map(Function, Tree1) -> Tree2 when
+ Function :: fun((K :: term(), V1 :: term()) -> V2 :: term()),
+ Tree1 :: gb_tree(),
+ Tree2 :: gb_tree().
map(F, {Size, Tree}) when is_function(F, 2) ->
{Size, map_1(F, Tree)}.
diff --git a/lib/stdlib/src/gen_event.erl b/lib/stdlib/src/gen_event.erl
index b00910771f..1c4a73680b 100644
--- a/lib/stdlib/src/gen_event.erl
+++ b/lib/stdlib/src/gen_event.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -44,6 +44,9 @@
system_code_change/4,
format_status/2]).
+-export_type([handler/0, handler_args/0, add_handler_ret/0,
+ del_handler_ret/0]).
+
-import(error_logger, [error_msg/2]).
-define(reply(X), From ! {element(2,Tag), X}).
@@ -113,7 +116,11 @@ behaviour_info(_Other) ->
%%---------------------------------------------------------------------------
--type handler() :: atom() | {atom(), term()}.
+-type handler() :: atom() | {atom(), term()}.
+-type handler_args() :: term().
+-type add_handler_ret() :: ok | term() | {'EXIT',term()}.
+-type del_handler_ret() :: ok | term() | {'EXIT',term()}.
+
-type emgr_name() :: {'local', atom()} | {'global', atom()}.
-type emgr_ref() :: atom() | {atom(), atom()} | {'global', atom()} | pid().
-type start_ret() :: {'ok', pid()} | {'error', term()}.
diff --git a/lib/stdlib/src/io.erl b/lib/stdlib/src/io.erl
index 6aeb076a0b..9f65bbfa3a 100644
--- a/lib/stdlib/src/io.erl
+++ b/lib/stdlib/src/io.erl
@@ -41,6 +41,7 @@
-type error_description() :: term(). % Whatever the io-server sends.
-type request_error() :: {'error',error_description()}.
+
%% XXX: Some uses of line() in this file may need to read erl_scan:location()
-type line() :: pos_integer().
@@ -66,12 +67,15 @@ o_request(Io, Request, Func) ->
end.
%% Put chars takes mixed *unicode* list from R13 onwards.
--spec put_chars(iodata()) -> 'ok'.
+-spec put_chars(CharData) -> 'ok' when
+ CharData :: unicode:chardata().
put_chars(Chars) ->
put_chars(default_output(), Chars).
--spec put_chars(device(), iodata()) -> 'ok'.
+-spec put_chars(IoDevice, IoData) -> 'ok' when
+ IoDevice :: device(),
+ IoData :: unicode:chardata().
put_chars(Io, Chars) ->
o_request(Io, {put_chars,unicode,Chars}, put_chars).
@@ -81,7 +85,8 @@ put_chars(Io, Chars) ->
nl() ->
nl(default_output()).
--spec nl(device()) -> 'ok'.
+-spec nl(IoDevice) -> 'ok' when
+ IoDevice :: device().
nl(Io) ->
% o_request(Io, {put_chars,io_lib:nl()}).
@@ -92,7 +97,8 @@ nl(Io) ->
columns() ->
columns(default_output()).
--spec columns(device()) -> {'ok', pos_integer()} | {'error', 'enotsup'}.
+-spec columns(IoDevice) -> {'ok', pos_integer()} | {'error', 'enotsup'} when
+ IoDevice :: device().
columns(Io) ->
case request(Io, {get_geometry,columns}) of
@@ -107,7 +113,8 @@ columns(Io) ->
rows() ->
rows(default_output()).
--spec rows(device()) -> {'ok', pos_integer()} | {'error', 'enotsup'}.
+-spec rows(IoDevice) -> {'ok', pos_integer()} | {'error', 'enotsup'} when
+ IoDevice :: device().
rows(Io) ->
case request(Io,{get_geometry,rows}) of
@@ -117,22 +124,36 @@ rows(Io) ->
{error,enotsup}
end.
--spec get_chars(prompt(), non_neg_integer()) -> iodata() | 'eof'.
+-spec get_chars(Prompt, Count) -> Data | 'eof' when
+ Prompt :: prompt(),
+ Count :: non_neg_integer(),
+ Data :: [unicode:unicode_char()] | unicode:unicode_binary().
get_chars(Prompt, N) ->
get_chars(default_input(), Prompt, N).
--spec get_chars(device(), prompt(), non_neg_integer()) -> iodata() | 'eof'.
+-spec get_chars(IoDevice, Prompt, Count) -> Data | 'eof' | {error, Reason} when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ Count :: non_neg_integer(),
+ Reason :: term(),
+ Data :: [unicode:unicode_char()] | unicode:unicode_binary().
get_chars(Io, Prompt, N) when is_integer(N), N >= 0 ->
request(Io, {get_chars,unicode,Prompt,N}).
--spec get_line(prompt()) -> iodata() | 'eof' | {'error', term()}.
+-spec get_line(Prompt) -> Data | 'eof' | {'error', Reason} when
+ Prompt :: prompt(),
+ Reason :: term(),
+ Data :: [unicode:unicode_char()] | unicode:unicode_binary().
get_line(Prompt) ->
get_line(default_input(), Prompt).
--spec get_line(device(), prompt()) -> iodata() | 'eof' | {'error', term()}.
+-spec get_line(IoDevice, Prompt) -> Data | 'eof' | {'error', term()} when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ Data :: [unicode:unicode_char()] | unicode:unicode_binary().
get_line(Io, Prompt) ->
request(Io, {get_line,unicode,Prompt}).
@@ -156,46 +177,62 @@ get_password(Io) ->
getopts() ->
getopts(default_input()).
--spec getopts(device()) -> [opt_pair()].
+-spec getopts(IoDevice) -> [opt_pair()] when
+ IoDevice :: device().
getopts(Io) ->
request(Io, getopts).
-type setopt() :: 'binary' | 'list' | opt_pair().
--spec setopts([setopt()]) -> 'ok' | {'error', term()}.
+-spec setopts(Opts) -> 'ok' | {'error', Reason} when
+ Opts :: [setopt()],
+ Reason :: term().
setopts(Opts) ->
setopts(default_input(), Opts).
--spec setopts(device(), [setopt()]) -> 'ok' | {'error', term()}.
+-spec setopts(IoDevice, Opts) -> 'ok' | {'error', Reason} when
+ IoDevice :: device(),
+ Opts :: [setopt()],
+ Reason :: term().
setopts(Io, Opts) ->
request(Io, {setopts, Opts}).
%% Writing and reading Erlang terms.
--spec write(term()) -> 'ok'.
+-spec write(Term) -> 'ok' when
+ Term :: term().
write(Term) ->
write(default_output(), Term).
--spec write(device(), term()) -> 'ok'.
+-spec write(IoDevice, Term) -> 'ok' when
+ IoDevice :: device(),
+ Term :: term().
write(Io, Term) ->
o_request(Io, {write,Term}, write).
--spec read(prompt()) ->
- {'ok', term()} | 'eof' | {'error', erl_scan:error_info()}.
+-spec read(Prompt) -> Result when
+ Prompt :: prompt(),
+ Result :: {'ok', Term :: term()}
+ | 'eof'
+ | {'error', ErrorInfo :: erl_scan:error_info()}.
% Read does not use get_until as erl_scan does not work with unicode
% XXX:PaN fixme?
read(Prompt) ->
read(default_input(), Prompt).
--spec read(device(), prompt()) ->
- {'ok', term()} | 'eof' | {'error', erl_scan:error_info()}.
+-spec read(IoDevice, Prompt) -> Result when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ Result :: {'ok', Term :: term()}
+ | 'eof'
+ | {'error', ErrorInfo :: erl_scan:error_info()}.
read(Io, Prompt) ->
case request(Io, {get_until,unicode,Prompt,erl_scan,tokens,[1]}) of
@@ -211,9 +248,13 @@ read(Io, Prompt) ->
Other
end.
--spec read(device(), prompt(), line()) ->
- {'ok', term(), line()} | {'eof', line()} |
- {'error', erl_scan:error_info(), line()}.
+-spec read(IoDevice, Prompt, StartLine) -> Result when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ StartLine :: line(),
+ Result :: {'ok', Term :: term(), EndLine :: line()}
+ | {'eof', EndLine :: line()}
+ | {'error', ErrorInfo :: erl_scan:error_info(), ErrorLine :: line()}.
read(Io, Prompt, StartLine) when is_integer(StartLine) ->
case request(Io, {get_until,unicode,Prompt,erl_scan,tokens,[StartLine]}) of
@@ -239,28 +280,40 @@ conv_reason(_, _Reason) -> badarg.
-type format() :: atom() | string() | binary().
--spec fwrite(format()) -> 'ok'.
+-spec fwrite(Format) -> 'ok' when
+ Format :: format().
fwrite(Format) ->
format(Format).
--spec fwrite(format(), [term()]) -> 'ok'.
+-spec fwrite(Format, Data) -> 'ok' when
+ Format :: format(),
+ Data :: [term()].
fwrite(Format, Args) ->
format(Format, Args).
--spec fwrite(device(), format(), [term()]) -> 'ok'.
+-spec fwrite(IoDevice, Format, Data) -> 'ok' when
+ IoDevice :: device(),
+ Format :: format(),
+ Data :: [term()].
fwrite(Io, Format, Args) ->
format(Io, Format, Args).
--spec fread(prompt(), format()) -> {'ok', [term()]} | 'eof' | {'error',term()}.
+-spec fread(Prompt, Format) -> Result when
+ Prompt :: prompt(),
+ Format :: format(),
+ Result :: {'ok', Terms :: [term()]} | 'eof' | {'error', What :: term()}.
fread(Prompt, Format) ->
fread(default_input(), Prompt, Format).
--spec fread(device(), prompt(), format()) ->
- {'ok', [term()]} | 'eof' | {'error',term()}.
+-spec fread(IoDevice, Prompt, Format) -> Result when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ Format :: format(),
+ Result :: {'ok', Terms :: [term()]} | 'eof' | {'error', What :: term()}.
fread(Io, Prompt, Format) ->
case request(Io, {fread,Prompt,Format}) of
@@ -270,73 +323,104 @@ fread(Io, Prompt, Format) ->
Other
end.
--spec format(format()) -> 'ok'.
+-spec format(Format) -> 'ok' when
+ Format :: format().
format(Format) ->
format(Format, []).
--spec format(format(), [term()]) -> 'ok'.
+-spec format(Format, Data) -> 'ok' when
+ Format :: format(),
+ Data :: [term()].
format(Format, Args) ->
format(default_output(), Format, Args).
--spec format(device(), format(), [term()]) -> 'ok'.
+-spec format(IoDevice, Format, Data) -> 'ok' when
+ IoDevice :: device(),
+ Format :: format(),
+ Data :: [term()].
format(Io, Format, Args) ->
o_request(Io, {format,Format,Args}, format).
%% Scanning Erlang code.
--spec scan_erl_exprs(prompt()) -> erl_scan:tokens_result() | request_error().
+-spec scan_erl_exprs(Prompt) -> Result when
+ Prompt :: prompt(),
+ Result :: erl_scan:tokens_result() | request_error().
scan_erl_exprs(Prompt) ->
scan_erl_exprs(default_input(), Prompt, 1).
--spec scan_erl_exprs(device(), prompt()) -> erl_scan:tokens_result() | request_error().
+-spec scan_erl_exprs(Device, Prompt) -> Result when
+ Device :: device(),
+ Prompt :: prompt(),
+ Result :: erl_scan:tokens_result() | request_error().
scan_erl_exprs(Io, Prompt) ->
scan_erl_exprs(Io, Prompt, 1).
--spec scan_erl_exprs(device(), prompt(), line()) -> erl_scan:tokens_result() | request_error().
+-spec scan_erl_exprs(Device, Prompt, StartLine) -> Result when
+ Device :: device(),
+ Prompt :: prompt(),
+ StartLine :: line(),
+ Result :: erl_scan:tokens_result() | request_error().
scan_erl_exprs(Io, Prompt, Pos0) ->
request(Io, {get_until,unicode,Prompt,erl_scan,tokens,[Pos0]}).
--spec scan_erl_form(prompt()) -> erl_scan:tokens_result() | request_error().
+-spec scan_erl_form(Prompt) -> Result when
+ Prompt :: prompt(),
+ Result :: erl_scan:tokens_result() | request_error().
scan_erl_form(Prompt) ->
scan_erl_form(default_input(), Prompt, 1).
--spec scan_erl_form(device(), prompt()) -> erl_scan:tokens_result() | request_error().
+-spec scan_erl_form(IoDevice, Prompt) -> Result when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ Result :: erl_scan:tokens_result() | request_error().
scan_erl_form(Io, Prompt) ->
scan_erl_form(Io, Prompt, 1).
--spec scan_erl_form(device(), prompt(), line()) -> erl_scan:tokens_result() | request_error().
+-spec scan_erl_form(IoDevice, Prompt, StartLine) -> Result when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ StartLine :: line(),
+ Result :: erl_scan:tokens_result() | request_error().
scan_erl_form(Io, Prompt, Pos0) ->
request(Io, {get_until,unicode,Prompt,erl_scan,tokens,[Pos0]}).
%% Parsing Erlang code.
--type erl_parse_expr_list() :: [_]. %% XXX: should be imported from erl_parse
-
--type parse_ret() :: {'ok', erl_parse_expr_list(), line()}
- | {'eof', line()}
- | {'error', erl_scan:error_info(), line()}
+-type parse_ret() :: {'ok', ExprList :: erl_parse:abstract_expr(), EndLine :: line()}
+ | {'eof', EndLine :: line()}
+ | {'error', ErrorInfo :: erl_scan:error_info(), ErrorLine :: line()}
| request_error().
--spec parse_erl_exprs(prompt()) -> parse_ret().
+-spec parse_erl_exprs(Prompt) -> Result when
+ Prompt :: prompt(),
+ Result :: parse_ret().
parse_erl_exprs(Prompt) ->
parse_erl_exprs(default_input(), Prompt, 1).
--spec parse_erl_exprs(device(), prompt()) -> parse_ret().
+-spec parse_erl_exprs(IoDevice, Prompt) -> Result when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ Result :: parse_ret().
parse_erl_exprs(Io, Prompt) ->
parse_erl_exprs(Io, Prompt, 1).
--spec parse_erl_exprs(device(), prompt(), line()) -> parse_ret().
+-spec parse_erl_exprs(IoDevice, Prompt, StartLine) -> Result when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ StartLine :: line(),
+ Result :: parse_ret().
parse_erl_exprs(Io, Prompt, Pos0) ->
case request(Io, {get_until,unicode,Prompt,erl_scan,tokens,[Pos0]}) of
@@ -349,24 +433,31 @@ parse_erl_exprs(Io, Prompt, Pos0) ->
Other
end.
--type erl_parse_absform() :: _. %% XXX: should be imported from erl_parse
-
--type parse_form_ret() :: {'ok', erl_parse_absform(), line()}
- | {'eof', line()}
- | {'error', erl_scan:error_info(), line()}
+-type parse_form_ret() :: {'ok', AbsForm :: erl_parse:abstract_form(), EndLine :: line()}
+ | {'eof', EndLine :: line()}
+ | {'error', ErrorInfo :: erl_scan:error_info(), ErrorLine :: line()}
| request_error().
--spec parse_erl_form(prompt()) -> parse_form_ret().
+-spec parse_erl_form(Prompt) -> Result when
+ Prompt :: prompt(),
+ Result :: parse_form_ret().
parse_erl_form(Prompt) ->
parse_erl_form(default_input(), Prompt, 1).
--spec parse_erl_form(device(), prompt()) -> parse_form_ret().
+-spec parse_erl_form(IoDevice, Prompt) -> Result when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ Result :: parse_form_ret().
parse_erl_form(Io, Prompt) ->
parse_erl_form(Io, Prompt, 1).
--spec parse_erl_form(device(), prompt(), line()) -> parse_form_ret().
+-spec parse_erl_form(IoDevice, Prompt, StartLine) -> Result when
+ IoDevice :: device(),
+ Prompt :: prompt(),
+ StartLine :: line(),
+ Result :: parse_form_ret().
parse_erl_form(Io, Prompt, Pos0) ->
case request(Io, {get_until,unicode,Prompt,erl_scan,tokens,[Pos0]}) of
diff --git a/lib/stdlib/src/io_lib.erl b/lib/stdlib/src/io_lib.erl
index 4ca9d079b7..54c7283abf 100644
--- a/lib/stdlib/src/io_lib.erl
+++ b/lib/stdlib/src/io_lib.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -75,35 +75,57 @@
collect_line/2, collect_line/3, collect_line/4,
get_until/3, get_until/4]).
--export_type([chars/0]).
+-export_type([chars/0, continuation/0]).
%%----------------------------------------------------------------------
- %% XXX: overapproximates a deep list of (unicode) characters
--type chars() :: [_].
+-type chars() :: [char() | chars()].
-type depth() :: -1 | non_neg_integer().
+-opaque continuation() :: {_, _, _, _}. % XXX: refine
+
%%----------------------------------------------------------------------
%% Interface calls to sub-modules.
--spec fwrite(io:format(), [term()]) -> chars().
+-spec fwrite(Format, Data) -> chars() | UnicodeList when
+ Format :: io:format(),
+ Data :: [term()],
+ UnicodeList :: [unicode:unicode_char()],
+ Data :: [term()].
fwrite(Format, Args) ->
format(Format, Args).
--spec fread(string(), string()) -> io_lib_fread:fread_2_ret().
+-spec fread(Format, String) -> Result when
+ Format :: string(),
+ String :: string(),
+ Result :: {'ok', InputList :: chars(), LeftOverChars :: string()}
+ | {'more', RestFormat :: string(),
+ Nchars :: non_neg_integer(),
+ InputStack :: chars()}
+ | {'error', What :: term()}.
fread(Chars, Format) ->
io_lib_fread:fread(Chars, Format).
--spec fread(io_lib_fread:continuation(), string(), string()) ->
- io_lib_fread:fread_3_ret().
+-spec fread(Continuation, String, Format) -> Return when
+ Continuation :: continuation() | [],
+ String :: string(),
+ Format :: string(),
+ Return :: {'more', Continuation1 :: continuation()}
+ | {'done', Result, LeftOverChars :: string()},
+ Result :: {'ok', InputList :: chars()}
+ | 'eof'
+ | {'error', What :: term()}.
fread(Cont, Chars, Format) ->
io_lib_fread:fread(Cont, Chars, Format).
--spec format(io:format(), [term()]) -> chars().
+-spec format(Format, Data) -> chars() | UnicodeList when
+ Format :: io:format(),
+ Data :: [term()],
+ UnicodeList :: [unicode:unicode_char()].
format(Format, Args) ->
case catch io_lib_format:fwrite(Format, Args) of
@@ -113,17 +135,24 @@ format(Format, Args) ->
Other
end.
--spec print(term()) -> chars().
+-spec print(Term) -> chars() when
+ Term :: term().
print(Term) ->
io_lib_pretty:print(Term).
--spec print(term(), non_neg_integer(), non_neg_integer(), depth()) -> chars().
+-spec print(Term, Column, LineLength, Depth) -> chars() when
+ Term :: term(),
+ Column :: non_neg_integer(),
+ LineLength :: non_neg_integer(),
+ Depth :: depth().
print(Term, Column, LineLength, Depth) ->
io_lib_pretty:print(Term, Column, LineLength, Depth).
--spec indentation(string(), integer()) -> integer().
+-spec indentation(String, StartIndent) -> integer() when
+ String :: string(),
+ StartIndent :: integer().
indentation(Chars, Current) ->
io_lib_format:indentation(Chars, Current).
@@ -158,7 +187,8 @@ format_prompt(Format, Args) ->
%% Return a (non-flattened) list of characters giving a printed
%% representation of the term. write/3 is for backward compatibility.
--spec write(term()) -> chars().
+-spec write(Term) -> chars() when
+ Term :: term().
write(Term) -> write(Term, -1).
@@ -169,7 +199,9 @@ write(Term, D, true) ->
write(Term, D, false) ->
write(Term, D).
--spec write(term(), depth()) -> chars().
+-spec write(Term, Depth) -> chars() when
+ Term :: term(),
+ Depth :: depth().
write(_Term, 0) -> "...";
write(Term, _D) when is_integer(Term) -> integer_to_list(Term);
@@ -234,7 +266,8 @@ write_binary_body(B, _D) ->
%% write_atom(Atom) -> [Char]
%% Generate the list of characters needed to print an atom.
--spec write_atom(atom()) -> chars().
+-spec write_atom(Atom) -> chars() when
+ Atom :: atom().
write_atom(Atom) ->
Chars = atom_to_list(Atom),
@@ -283,7 +316,8 @@ name_char(_) -> false.
%% write_string([Char]) -> [Char]
%% Generate the list of characters needed to print a string.
--spec write_string(string()) -> chars().
+-spec write_string(String) -> chars() when
+ String :: string().
write_string(S) ->
write_string(S, $"). %"
@@ -330,7 +364,8 @@ string_char(_,C, _, Tail) when C < $\240-> %Other control characters.
%% Generate the list of characters needed to print a character constant.
%% Must special case SPACE, $\s, here.
--spec write_char(char()) -> chars().
+-spec write_char(Char) -> chars() when
+ Char :: char().
write_char($\s) -> "$\\s"; %Must special case this.
write_char(C) when is_integer(C), C >= $\000, C =< $\377 ->
@@ -346,7 +381,8 @@ write_unicode_char(Uni) ->
%% Return true if CharList is a (possibly deep) list of characters, else
%% false.
--spec char_list(term()) -> boolean().
+-spec char_list(Term) -> boolean() when
+ Term :: term().
char_list([C|Cs]) when is_integer(C), C >= $\000, C =< $\377 ->
char_list(Cs);
@@ -362,7 +398,8 @@ unicode_char_list([C|Cs]) when is_integer(C), C >= 0, C < 16#D800;
unicode_char_list([]) -> true;
unicode_char_list(_) -> false. %Everything else is false
--spec deep_char_list(term()) -> boolean().
+-spec deep_char_list(Term) -> boolean() when
+ Term :: term().
deep_char_list(Cs) ->
deep_char_list(Cs, []).
@@ -399,7 +436,8 @@ deep_unicode_char_list(_, _More) -> %Everything else is false
%% Return true if CharList is a list of printable characters, else
%% false.
--spec printable_list(term()) -> boolean().
+-spec printable_list(Term) -> boolean() when
+ Term :: term().
printable_list([C|Cs]) when is_integer(C), C >= $\040, C =< $\176 ->
printable_list(Cs);
diff --git a/lib/stdlib/src/io_lib_fread.erl b/lib/stdlib/src/io_lib_fread.erl
index 33553692bc..52aa4d073c 100644
--- a/lib/stdlib/src/io_lib_fread.erl
+++ b/lib/stdlib/src/io_lib_fread.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -22,36 +22,24 @@
-export([fread/2,fread/3]).
--export_type([continuation/0, fread_2_ret/0, fread_3_ret/0]).
-
-import(lists, [reverse/1,reverse/2]).
%%-----------------------------------------------------------------------
-%% Local types
-%%-----------------------------------------------------------------------
-
--type done_arg2() :: {'ok', io_lib:chars()} | 'eof' | {'error', term()}.
-
-%%-----------------------------------------------------------------------
-%% Types also used in other files
-%%-----------------------------------------------------------------------
-
--type continuation() :: [] | {_, _, _, _}. % XXX: refine
-
--type fread_2_ret() :: {'ok', io_lib:chars(), string()}
- | {'more', string(), non_neg_integer(), io_lib:chars()}
- | {'error', term()}.
--type fread_3_ret() :: {'more', continuation()}
- | {'done', done_arg2(), string()}.
-
-%%-----------------------------------------------------------------------
%% fread(Continuation, CharList, FormatString)
%% This is the main function into the re-entrant formatted reader. It
%% repeatedly collects lines and calls fread/2 to format the input until
%% all the format string has been used. And it counts the characters.
--spec fread(io_lib_fread:continuation(), string(), string()) -> fread_3_ret().
+-spec fread(Continuation, String, Format) -> Return when
+ Continuation :: io_lib:continuation() | [],
+ String :: string(),
+ Format :: string(),
+ Return :: {'more', Continuation1 :: io_lib:continuation()}
+ | {'done', Result, LeftOverChars :: string()},
+ Result :: {'ok', InputList :: io_lib:chars()}
+ | 'eof'
+ | {'error', What :: term()}.
fread([], Chars, Format) ->
%%io:format("FREAD: ~w `~s'~n", [Format,Chars]),
@@ -106,7 +94,14 @@ fread_line(Format0, Line, N0, Results0, More, Newline) ->
%% WHITE Skip white space
%% X Literal X
--spec fread(string(), string()) -> fread_2_ret().
+-spec fread(Format, String) -> Result when
+ Format :: string(),
+ String :: string(),
+ Result :: {'ok', InputList :: io_lib:chars(), LeftOverChars :: string()}
+ | {'more', RestFormat :: string(),
+ Nchars :: non_neg_integer(),
+ InputStack :: io_lib:chars()}
+ | {'error', What :: term()}.
fread(Format, Line) ->
fread(Format, Line, 0, []).
diff --git a/lib/stdlib/src/lib.erl b/lib/stdlib/src/lib.erl
index b2cfb00de9..c303ae60b5 100644
--- a/lib/stdlib/src/lib.erl
+++ b/lib/stdlib/src/lib.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -38,7 +38,9 @@ flush_receive() ->
%%
%% Functions for doing standard system format i/o.
%%
--spec error_message(atom() | string() | binary(), [term()]) -> 'ok'.
+-spec error_message(Format, Args) -> 'ok' when
+ Format :: io:format(),
+ Args :: [term()].
error_message(Format, Args) ->
io:format(<<"** ~s **\n">>, [io_lib:format(Format, Args)]).
@@ -55,17 +57,23 @@ progname() ->
no_prog_name
end.
--spec nonl(string()) -> string().
+-spec nonl(String1) -> String2 when
+ String1 :: string(),
+ String2 :: string().
nonl([10]) -> [];
nonl([]) -> [];
nonl([H|T]) -> [H|nonl(T)].
--spec send(pid() | atom() | {atom(), node()}, term()) -> term().
+-spec send(To, Msg) -> Msg when
+ To :: pid() | atom() | {atom(), node()},
+ Msg :: term().
send(To, Msg) -> To ! Msg.
--spec sendw(pid() | atom() | {atom(), node()}, term()) -> term().
+-spec sendw(To, Msg) -> Msg when
+ To :: pid() | atom() | {atom(), node()},
+ Msg :: term().
sendw(To, Msg) ->
To ! {self(), Msg},
@@ -89,7 +97,7 @@ eval_str(Str) when is_list(Str) ->
true ->
case erl_parse:parse_exprs(Toks) of
{ok, Exprs} ->
- case catch erl_eval:exprs(Exprs, []) of
+ case catch erl_eval:exprs(Exprs, erl_eval:new_bindings()) of
{value, Val, _} ->
{ok, Val};
Other ->
diff --git a/lib/stdlib/src/lists.erl b/lib/stdlib/src/lists.erl
index c669c1f7c1..bba46e4cb6 100644
--- a/lib/stdlib/src/lists.erl
+++ b/lib/stdlib/src/lists.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -54,13 +54,21 @@
%% append(X, Y) appends lists X and Y
--spec append([T], [T]) -> [T].
+-spec append(List1, List2) -> List3 when
+ List1 :: [T],
+ List2 :: [T],
+ List3 :: [T],
+ T :: term().
append(L1, L2) -> L1 ++ L2.
%% append(L) appends the list of lists L
--spec append([[T]]) -> [T].
+-spec append(ListOfLists) -> List1 when
+ ListOfLists :: [List],
+ List :: [T],
+ List1 :: [T],
+ T :: term().
append([E]) -> E;
append([H|T]) -> H ++ append(T);
@@ -68,13 +76,20 @@ append([]) -> [].
%% subtract(List1, List2) subtract elements in List2 form List1.
--spec subtract([T], [T]) -> [T].
+-spec subtract(List1, List2) -> List3 when
+ List1 :: [T],
+ List2 :: [T],
+ List3 :: [T],
+ T :: term().
subtract(L1, L2) -> L1 -- L2.
%% reverse(L) reverse all elements in the list L. Is now a BIF!
--spec reverse([T]) -> [T].
+-spec reverse(List1) -> List2 when
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
reverse([] = L) ->
L;
@@ -93,13 +108,21 @@ reverse([A, B | L]) ->
%% nth(N, L) returns the N`th element of the list L
%% nthtail(N, L) returns the N`th tail of the list L
--spec nth(pos_integer(), [T,...]) -> T.
+-spec nth(N, List) -> Elem when
+ N :: pos_integer(),
+ List :: [T,...],
+ Elem :: T,
+ T :: term().
nth(1, [H|_]) -> H;
nth(N, [_|T]) when N > 1 ->
nth(N - 1, T).
--spec nthtail(non_neg_integer(), [T,...]) -> [T].
+-spec nthtail(N, List) -> Tail when
+ N :: non_neg_integer(),
+ List :: [T,...],
+ Tail :: [T],
+ T :: term().
nthtail(1, [_|T]) -> T;
nthtail(N, [_|T]) when N > 1 ->
@@ -108,7 +131,10 @@ nthtail(0, L) when is_list(L) -> L.
%% prefix(Prefix, List) -> (true | false)
--spec prefix([T], [T]) -> boolean().
+-spec prefix(List1, List2) -> boolean() when
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
prefix([X|PreTail], [X|Tail]) ->
prefix(PreTail, Tail);
@@ -117,7 +143,10 @@ prefix([_|_], List) when is_list(List) -> false.
%% suffix(Suffix, List) -> (true | false)
--spec suffix([T], [T]) -> boolean().
+-spec suffix(List1, List2) -> boolean() when
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
suffix(Suffix, List) ->
Delta = length(List) - length(Suffix),
@@ -125,7 +154,10 @@ suffix(Suffix, List) ->
%% last(List) returns the last element in a list.
--spec last([T,...]) -> T.
+-spec last(List) -> Last when
+ List :: [T,...],
+ Last :: T,
+ T :: term().
last([E|Es]) -> last(E, Es).
@@ -137,7 +169,10 @@ last(E, []) -> E.
%% returns the sequence Min..Max
%% Min <= Max and Min and Max must be integers
--spec seq(integer(), integer()) -> [integer()].
+-spec seq(From, To) -> Seq when
+ From :: integer(),
+ To :: integer(),
+ Seq :: [integer()].
seq(First, Last)
when is_integer(First), is_integer(Last), First-1 =< Last ->
@@ -152,7 +187,11 @@ seq_loop(1, X, L) ->
seq_loop(0, _, L) ->
L.
--spec seq(integer(), integer(), integer()) -> [integer()].
+-spec seq(From, To, Incr) -> Seq when
+ From :: integer(),
+ To :: integer(),
+ Incr :: integer(),
+ Seq :: [integer()].
seq(First, Last, Inc)
when is_integer(First), is_integer(Last), is_integer(Inc) ->
@@ -178,7 +217,8 @@ seq_loop(0, _, _, L) ->
%% sum(L) returns the sum of the elements in L
--spec sum([number()]) -> number().
+-spec sum(List) -> number() when
+ List :: [number()].
sum(L) -> sum(L, 0).
@@ -188,7 +228,11 @@ sum([], Sum) -> Sum.
%% duplicate(N, X) -> [X,X,X,.....,X] (N times)
%% return N copies of X
--spec duplicate(non_neg_integer(), T) -> [T].
+-spec duplicate(N, Elem) -> List when
+ N :: non_neg_integer(),
+ Elem :: T,
+ List :: [T],
+ T :: term().
duplicate(N, X) when is_integer(N), N >= 0 -> duplicate(N, X, []).
@@ -197,7 +241,10 @@ duplicate(N, X, L) -> duplicate(N-1, X, [X|L]).
%% min(L) -> returns the minimum element of the list L
--spec min([T,...]) -> T.
+-spec min(List) -> Min when
+ List :: [T,...],
+ Min :: T,
+ T :: term().
min([H|T]) -> min(T, H).
@@ -207,7 +254,10 @@ min([], Min) -> Min.
%% max(L) -> returns the maximum element of the list L
--spec max([T,...]) -> T.
+-spec max(List) -> Max when
+ List :: [T,...],
+ Max :: T,
+ T :: term().
max([H|T]) -> max(T, H).
@@ -218,12 +268,21 @@ max([], Max) -> Max.
%% sublist(List, Start, Length)
%% Returns the sub-list starting at Start of length Length.
--spec sublist([T], pos_integer(), non_neg_integer()) -> [T].
+-spec sublist(List1, Start, Len) -> List2 when
+ List1 :: [T],
+ List2 :: [T],
+ Start :: pos_integer(),
+ Len :: non_neg_integer(),
+ T :: term().
sublist(List, S, L) when is_integer(L), L >= 0 ->
sublist(nthtail(S-1, List), L).
--spec sublist([T], non_neg_integer()) -> [T].
+-spec sublist(List1, Len) -> List2 when
+ List1 :: [T],
+ List2 :: [T],
+ Len :: non_neg_integer(),
+ T :: term().
sublist(List, L) when is_integer(L), is_list(List) ->
sublist_2(List, L).
@@ -238,7 +297,11 @@ sublist_2(List, L) when is_list(List), L > 0 ->
%% delete(Item, List) -> List'
%% Delete the first occurrence of Item from the list L.
--spec delete(T, [T]) -> [T].
+-spec delete(Elem, List1) -> List2 when
+ Elem :: T,
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
delete(Item, [Item|Rest]) -> Rest;
delete(Item, [H|Rest]) ->
@@ -248,7 +311,12 @@ delete(_, []) -> [].
%% Return [{X0, Y0}, {X1, Y1}, ..., {Xn, Yn}] for lists [X0, X1, ...,
%% Xn] and [Y0, Y1, ..., Yn].
--spec zip([A], [B]) -> [{A, B}].
+-spec zip(List1, List2) -> List3 when
+ List1 :: [A],
+ List2 :: [B],
+ List3 :: [{A, B}],
+ A :: term(),
+ B :: term().
zip([X | Xs], [Y | Ys]) -> [{X, Y} | zip(Xs, Ys)];
zip([], []) -> [].
@@ -256,7 +324,12 @@ zip([], []) -> [].
%% Return {[X0, X1, ..., Xn], [Y0, Y1, ..., Yn]}, for a list [{X0, Y0},
%% {X1, Y1}, ..., {Xn, Yn}].
--spec unzip([{A, B}]) -> {[A], [B]}.
+-spec unzip(List1) -> {List2, List3} when
+ List1 :: [{A, B}],
+ List2 :: [A],
+ List3 :: [B],
+ A :: term(),
+ B :: term().
unzip(Ts) -> unzip(Ts, [], []).
@@ -266,7 +339,14 @@ unzip([], Xs, Ys) -> {reverse(Xs), reverse(Ys)}.
%% Return [{X0, Y0, Z0}, {X1, Y1, Z1}, ..., {Xn, Yn, Zn}] for lists [X0,
%% X1, ..., Xn], [Y0, Y1, ..., Yn] and [Z0, Z1, ..., Zn].
--spec zip3([A], [B], [C]) -> [{A, B, C}].
+-spec zip3(List1, List2, List3) -> List4 when
+ List1 :: [A],
+ List2 :: [B],
+ List3 :: [C],
+ List4 :: [{A, B, C}],
+ A :: term(),
+ B :: term(),
+ C :: term().
zip3([X | Xs], [Y | Ys], [Z | Zs]) -> [{X, Y, Z} | zip3(Xs, Ys, Zs)];
zip3([], [], []) -> [].
@@ -274,7 +354,14 @@ zip3([], [], []) -> [].
%% Return {[X0, X1, ..., Xn], [Y0, Y1, ..., Yn], [Z0, Z1, ..., Zn]}, for
%% a list [{X0, Y0, Z0}, {X1, Y1, Z1}, ..., {Xn, Yn, Zn}].
--spec unzip3([{A, B, C}]) -> {[A], [B], [C]}.
+-spec unzip3(List1) -> {List2, List3, List4} when
+ List1 :: [{A, B, C}],
+ List2 :: [A],
+ List3 :: [B],
+ List4 :: [C],
+ A :: term(),
+ B :: term(),
+ C :: term().
unzip3(Ts) -> unzip3(Ts, [], [], []).
@@ -286,7 +373,14 @@ unzip3([], Xs, Ys, Zs) ->
%% Return [F(X0, Y0), F(X1, Y1), ..., F(Xn, Yn)] for lists [X0, X1, ...,
%% Xn] and [Y0, Y1, ..., Yn].
--spec zipwith(fun((X, Y) -> R), [X], [Y]) -> [R].
+-spec zipwith(Combine, List1, List2) -> List3 when
+ Combine :: fun((X, Y) -> T),
+ List1 :: [X],
+ List2 :: [Y],
+ List3 :: [T],
+ X :: term(),
+ Y :: term(),
+ T :: term().
zipwith(F, [X | Xs], [Y | Ys]) -> [F(X, Y) | zipwith(F, Xs, Ys)];
zipwith(F, [], []) when is_function(F, 2) -> [].
@@ -294,7 +388,16 @@ zipwith(F, [], []) when is_function(F, 2) -> [].
%% Return [F(X0, Y0, Z0), F(X1, Y1, Z1), ..., F(Xn, Yn, Zn)] for lists
%% [X0, X1, ..., Xn], [Y0, Y1, ..., Yn] and [Z0, Z1, ..., Zn].
--spec zipwith3(fun((X, Y, Z) -> R), [X], [Y], [Z]) -> [R].
+-spec zipwith3(Combine, List1, List2, List3) -> List4 when
+ Combine :: fun((X, Y, Z) -> T),
+ List1 :: [X],
+ List2 :: [Y],
+ List3 :: [Z],
+ List4 :: [T],
+ X :: term(),
+ Y :: term(),
+ Z :: term(),
+ T :: term().
zipwith3(F, [X | Xs], [Y | Ys], [Z | Zs]) ->
[F(X, Y, Z) | zipwith3(F, Xs, Ys, Zs)];
@@ -303,7 +406,10 @@ zipwith3(F, [], [], []) when is_function(F, 3) -> [].
%% sort(List) -> L
%% sorts the list L
--spec sort([T]) -> [T].
+-spec sort(List1) -> List2 when
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
sort([X, Y | L] = L0) when X =< Y ->
case L of
@@ -350,7 +456,11 @@ sort_1(X, [], R) ->
%% merge(List) -> L
%% merges a list of sorted lists
--spec merge([[T]]) -> [T].
+-spec merge(ListOfLists) -> List1 when
+ ListOfLists :: [List],
+ List :: [T],
+ List1 :: [T],
+ T :: term().
merge(L) ->
mergel(L, []).
@@ -358,7 +468,14 @@ merge(L) ->
%% merge3(X, Y, Z) -> L
%% merges three sorted lists X, Y and Z
--spec merge3([X], [Y], [Z]) -> [(X | Y | Z)].
+-spec merge3(List1, List2, List3) -> List4 when
+ List1 :: [X],
+ List2 :: [Y],
+ List3 :: [Z],
+ List4 :: [(X | Y | Z)],
+ X :: term(),
+ Y :: term(),
+ Z :: term().
merge3(L1, [], L3) ->
merge(L1, L3);
@@ -382,7 +499,12 @@ rmerge3(L1, [H2 | T2], [H3 | T3]) ->
%% merge(X, Y) -> L
%% merges two sorted lists X and Y
--spec merge([X], [Y]) -> [(X | Y)].
+-spec merge(List1, List2) -> List3 when
+ List1 :: [X],
+ List2 :: [Y],
+ List3 :: [(X | Y)],
+ X :: term(),
+ Y :: term().
merge(T1, []) ->
T1;
@@ -405,8 +527,9 @@ rmerge(T1, [H2 | T2]) ->
%% in L - the elements in L can be atoms, numbers of strings.
%% Returns a list of characters.
--type concat_thing() :: atom() | integer() | float() | string().
--spec concat([concat_thing()]) -> string().
+-spec concat(Things) -> string() when
+ Things :: [Thing],
+ Thing :: atom() | integer() | float() | string().
concat(List) ->
flatmap(fun thing_to_list/1, List).
@@ -420,12 +543,17 @@ thing_to_list(X) when is_list(X) -> X. %Assumed to be a string
%% flatten(List, Tail)
%% Flatten a list, adding optional tail.
--spec flatten([term()]) -> [term()].
+-spec flatten(DeepList) -> List when
+ DeepList :: [term() | DeepList],
+ List :: [term()].
flatten(List) when is_list(List) ->
do_flatten(List, []).
--spec flatten([term()], [term()]) -> [term()].
+-spec flatten(DeepList, Tail) -> List when
+ DeepList :: [term() | DeepList],
+ Tail :: [term()],
+ List :: [term()].
flatten(List, Tail) when is_list(List), is_list(Tail) ->
do_flatten(List, Tail).
@@ -440,7 +568,8 @@ do_flatten([], Tail) ->
%% flatlength(List)
%% Calculate the length of a list of lists.
--spec flatlength([term()]) -> non_neg_integer().
+-spec flatlength(DeepList) -> non_neg_integer() when
+ DeepList :: [term() | DeepList].
flatlength(List) ->
flatlength(List, 0).
@@ -481,7 +610,12 @@ flatlength([], L) -> L.
% keysearch3(Key, N, T);
%keysearch3(Key, N, []) -> false.
--spec keydelete(term(), pos_integer(), [T]) -> [T] when T :: tuple().
+-spec keydelete(Key, N, TupleList1) -> TupleList2 when
+ Key :: term(),
+ N :: pos_integer(),
+ TupleList1 :: [Tuple],
+ TupleList2 :: [Tuple],
+ Tuple :: tuple().
keydelete(K, N, L) when is_integer(N), N > 0 ->
keydelete3(K, N, L).
@@ -491,7 +625,12 @@ keydelete3(Key, N, [H|T]) ->
[H|keydelete3(Key, N, T)];
keydelete3(_, _, []) -> [].
--spec keyreplace(term(), pos_integer(), [tuple()], tuple()) -> [tuple()].
+-spec keyreplace(Key, N, TupleList1, NewTuple) -> TupleList2 when
+ Key :: term(),
+ N :: pos_integer(),
+ TupleList1 :: [tuple()],
+ TupleList2 :: [tuple()],
+ NewTuple :: tuple().
keyreplace(K, N, L, New) when is_integer(N), N > 0, is_tuple(New) ->
keyreplace3(K, N, L, New).
@@ -502,8 +641,12 @@ keyreplace3(Key, Pos, [H|T], New) ->
[H|keyreplace3(Key, Pos, T, New)];
keyreplace3(_, _, [], _) -> [].
--spec keytake(term(), pos_integer(), [tuple()]) ->
- {'value', tuple(), [tuple()]} | 'false'.
+-spec keytake(Key, N, TupleList1) -> {value, Tuple, TupleList2} | false when
+ Key :: term(),
+ N :: pos_integer(),
+ TupleList1 :: [tuple()],
+ TupleList2 :: [tuple()],
+ Tuple :: tuple().
keytake(Key, N, L) when is_integer(N), N > 0 ->
keytake(Key, N, L, []).
@@ -514,7 +657,12 @@ keytake(Key, N, [H|T], L) ->
keytake(Key, N, T, [H|L]);
keytake(_K, _N, [], _L) -> false.
--spec keystore(term(), pos_integer(), [tuple()], tuple()) -> [tuple(),...].
+-spec keystore(Key, N, TupleList1, NewTuple) -> TupleList2 when
+ Key :: term(),
+ N :: pos_integer(),
+ TupleList1 :: [tuple()],
+ TupleList2 :: [tuple(), ...],
+ NewTuple :: tuple().
keystore(K, N, L, New) when is_integer(N), N > 0, is_tuple(New) ->
keystore2(K, N, L, New).
@@ -526,7 +674,11 @@ keystore2(Key, N, [H|T], New) ->
keystore2(_Key, _N, [], New) ->
[New].
--spec keysort(pos_integer(), [T]) -> [T] when T :: tuple().
+-spec keysort(N, TupleList1) -> TupleList2 when
+ N :: pos_integer(),
+ TupleList1 :: [Tuple],
+ TupleList2 :: [Tuple],
+ Tuple :: tuple().
keysort(I, L) when is_integer(I), I > 0 ->
case L of
@@ -583,8 +735,13 @@ keysort_1(I, X, EX, [Y | L], R) ->
keysort_1(_I, X, _EX, [], R) ->
lists:reverse(R, [X]).
--spec keymerge(pos_integer(), [X], [Y]) ->
- [R] when X :: tuple(), Y :: tuple(), R :: tuple().
+-spec keymerge(N, TupleList1, TupleList2) -> TupleList3 when
+ N :: pos_integer(),
+ TupleList1 :: [T1],
+ TupleList2 :: [T2],
+ TupleList3 :: [(T1 | T2)],
+ T1 :: tuple(),
+ T2 :: tuple().
keymerge(Index, T1, L2) when is_integer(Index), Index > 0 ->
case L2 of
@@ -611,7 +768,11 @@ rkeymerge(Index, T1, L2) when is_integer(Index), Index > 0 ->
lists:reverse(M, [])
end.
--spec ukeysort(pos_integer(), [T]) -> [T] when T :: tuple().
+-spec ukeysort(N, TupleList1) -> TupleList2 when
+ N :: pos_integer(),
+ TupleList1 :: [Tuple],
+ TupleList2 :: [Tuple],
+ Tuple :: tuple().
ukeysort(I, L) when is_integer(I), I > 0 ->
case L of
@@ -676,8 +837,13 @@ ukeysort_1(I, X, EX, [Y | L]) ->
ukeysort_1(_I, X, _EX, []) ->
[X].
--spec ukeymerge(pos_integer(), [X], [Y]) ->
- [(X | Y)] when X :: tuple(), Y :: tuple().
+-spec ukeymerge(N, TupleList1, TupleList2) -> TupleList3 when
+ N :: pos_integer(),
+ TupleList1 :: [T1],
+ TupleList2 :: [T2],
+ TupleList3 :: [(T1 | T2)],
+ T1 :: tuple(),
+ T2 :: tuple().
ukeymerge(Index, L1, T2) when is_integer(Index), Index > 0 ->
case L1 of
@@ -704,7 +870,11 @@ rukeymerge(Index, T1, L2) when is_integer(Index), Index > 0 ->
lists:reverse(M, [])
end.
--spec keymap(fun((term()) -> term()), pos_integer(), [tuple()]) -> [tuple()].
+-spec keymap(Fun, N, TupleList1) -> TupleList2 when
+ Fun :: fun((Term1 :: term()) -> Term2 :: term()),
+ N :: pos_integer(),
+ TupleList1 :: [tuple()],
+ TupleList2 :: [tuple()].
keymap(Fun, Index, [Tup|Tail]) ->
[setelement(Index, Tup, Fun(element(Index, Tup)))|keymap(Fun, Index, Tail)];
@@ -713,7 +883,11 @@ keymap(Fun, Index, []) when is_integer(Index), Index >= 1,
%%% Suggestion from OTP-2948: sort and merge with Fun.
--spec sort(fun((T, T) -> boolean()), [T]) -> [T].
+-spec sort(Fun, List1) -> List2 when
+ Fun :: fun((A :: T, B :: T) -> boolean()),
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
sort(Fun, []) when is_function(Fun, 2) ->
[];
@@ -727,7 +901,13 @@ sort(Fun, [X, Y | T]) ->
fsplit_2(Y, X, Fun, T, [], [])
end.
--spec merge(fun((X, Y) -> boolean()), [X], [Y]) -> [(X | Y)].
+-spec merge(Fun, List1, List2) -> List3 when
+ Fun :: fun((A, B) -> boolean()),
+ List1 :: [A],
+ List2 :: [B],
+ List3 :: [(A | B)],
+ A :: term(),
+ B :: term().
merge(Fun, T1, [H2 | T2]) when is_function(Fun, 2) ->
lists:reverse(fmerge2_1(T1, H2, Fun, T2, []), []);
@@ -743,7 +923,11 @@ rmerge(Fun, T1, [H2 | T2]) when is_function(Fun, 2) ->
rmerge(Fun, T1, []) when is_function(Fun, 2) ->
T1.
--spec usort(fun((T, T) -> boolean()), [T]) -> [T].
+-spec usort(Fun, List1) -> List2 when
+ Fun :: fun((T, T) -> boolean()),
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
usort(Fun, [_] = L) when is_function(Fun, 2) ->
L;
@@ -770,7 +954,13 @@ usort_1(Fun, X, [Y | L]) ->
ufsplit_2(Y, L, Fun, [X])
end.
--spec umerge(fun((X, Y) -> boolean()), [X], [Y]) -> [(X | Y)].
+-spec umerge(Fun, List1, List2) -> List3 when
+ Fun :: fun((A, B) -> boolean()),
+ List1 :: [A],
+ List2 :: [B],
+ List3 :: [(A | B)],
+ A :: term(),
+ B :: term().
umerge(Fun, [], T2) when is_function(Fun, 2) ->
T2;
@@ -789,7 +979,10 @@ rumerge(Fun, T1, [H2 | T2]) when is_function(Fun, 2) ->
%% usort(List) -> L
%% sorts the list L, removes duplicates
--spec usort([T]) -> [T].
+-spec usort(List1) -> List2 when
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
usort([X, Y | L] = L0) when X < Y ->
case L of
@@ -844,7 +1037,11 @@ usort_1(X, []) ->
%% umerge(List) -> L
%% merges a list of sorted lists without duplicates, removes duplicates
--spec umerge([[T]]) -> [T].
+-spec umerge(ListOfLists) -> List1 when
+ ListOfLists :: [List],
+ List :: [T],
+ List1 :: [T],
+ T :: term().
umerge(L) ->
umergel(L).
@@ -853,7 +1050,14 @@ umerge(L) ->
%% merges three sorted lists X, Y and Z without duplicates,
%% removes duplicates
--spec umerge3([X], [Y], [Z]) -> [(X | Y | Z)].
+-spec umerge3(List1, List2, List3) -> List4 when
+ List1 :: [X],
+ List2 :: [Y],
+ List3 :: [Z],
+ List4 :: [(X | Y | Z)],
+ X :: term(),
+ Y :: term(),
+ Z :: term().
umerge3(L1, [], L3) ->
umerge(L1, L3);
@@ -878,7 +1082,12 @@ rumerge3(L1, [H2 | T2], [H3 | T3]) ->
%% umerge(X, Y) -> L
%% merges two sorted lists X and Y without duplicates, removes duplicates
--spec umerge([X], [Y]) -> [(X | Y)].
+-spec umerge(List1, List2) -> List3 when
+ List1 :: [X],
+ List2 :: [Y],
+ List3 :: [(X | Y)],
+ X :: term(),
+ Y :: term().
umerge([], T2) ->
T2;
@@ -924,7 +1133,10 @@ rumerge(T1, [H2 | T2]) ->
%% There are also versions with an extra argument, ExtraArgs, which is a
%% list of extra arguments to each call.
--spec all(fun((T) -> boolean()), [T]) -> boolean().
+-spec all(Pred, List) -> boolean() when
+ Pred :: fun((Elem :: T) -> boolean()),
+ List :: [T],
+ T :: term().
all(Pred, [Hd|Tail]) ->
case Pred(Hd) of
@@ -933,7 +1145,10 @@ all(Pred, [Hd|Tail]) ->
end;
all(Pred, []) when is_function(Pred, 1) -> true.
--spec any(fun((T) -> boolean()), [T]) -> boolean().
+-spec any(Pred, List) -> boolean() when
+ Pred :: fun((Elem :: T) -> boolean()),
+ List :: [T],
+ T :: term().
any(Pred, [Hd|Tail]) ->
case Pred(Hd) of
@@ -942,31 +1157,59 @@ any(Pred, [Hd|Tail]) ->
end;
any(Pred, []) when is_function(Pred, 1) -> false.
--spec map(fun((D) -> R), [D]) -> [R].
+-spec map(Fun, List1) -> List2 when
+ Fun :: fun((A) -> B),
+ List1 :: [A],
+ List2 :: [B],
+ A :: term(),
+ B :: term().
map(F, [H|T]) ->
[F(H)|map(F, T)];
map(F, []) when is_function(F, 1) -> [].
--spec flatmap(fun((D) -> [R]), [D]) -> [R].
+-spec flatmap(Fun, List1) -> List2 when
+ Fun :: fun((A) -> [B]),
+ List1 :: [A],
+ List2 :: [B],
+ A :: term(),
+ B :: term().
flatmap(F, [Hd|Tail]) ->
F(Hd) ++ flatmap(F, Tail);
flatmap(F, []) when is_function(F, 1) -> [].
--spec foldl(fun((T, term()) -> term()), term(), [T]) -> term().
+-spec foldl(Fun, Acc0, List) -> Acc1 when
+ Fun :: fun((Elem :: T, AccIn) -> AccOut),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ List :: [T],
+ T :: term().
foldl(F, Accu, [Hd|Tail]) ->
foldl(F, F(Hd, Accu), Tail);
foldl(F, Accu, []) when is_function(F, 2) -> Accu.
--spec foldr(fun((T, term()) -> term()), term(), [T]) -> term().
+-spec foldr(Fun, Acc0, List) -> Acc1 when
+ Fun :: fun((Elem :: T, AccIn) -> AccOut),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ List :: [T],
+ T :: term().
foldr(F, Accu, [Hd|Tail]) ->
F(Hd, foldr(F, Accu, Tail));
foldr(F, Accu, []) when is_function(F, 2) -> Accu.
--spec filter(Pred :: fun((T) -> boolean()), List :: [T]) -> [T].
+-spec filter(Pred, List1) -> List2 when
+ Pred :: fun((Elem :: T) -> boolean()),
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
filter(Pred, List) when is_function(Pred, 1) ->
[ E || E <- List, Pred(E) ].
@@ -974,7 +1217,12 @@ filter(Pred, List) when is_function(Pred, 1) ->
%% Equivalent to {filter(F, L), filter(NotF, L)}, if NotF = 'fun(X) ->
%% not F(X) end'.
--spec partition(Pred :: fun((T) -> boolean()), List :: [T]) -> {[T], [T]}.
+-spec partition(Pred, List) -> {Satisfying, NotSatisfying} when
+ Pred :: fun((Elem :: T) -> boolean()),
+ List :: [T],
+ Satisfying :: [T],
+ NotSatisfying :: [T],
+ T :: term().
partition(Pred, L) ->
partition(Pred, L, [], []).
@@ -1000,14 +1248,26 @@ zf(F, [Hd|Tail]) ->
end;
zf(F, []) when is_function(F, 1) -> [].
--spec foreach(F :: fun((T) -> term()), List :: [T]) -> 'ok'.
+-spec foreach(Fun, List) -> ok when
+ Fun :: fun((Elem :: T) -> term()),
+ List :: [T],
+ T :: term().
foreach(F, [Hd|Tail]) ->
F(Hd),
foreach(F, Tail);
foreach(F, []) when is_function(F, 1) -> ok.
--spec mapfoldl(fun((A, term()) -> {B, term()}), term(), [A]) -> {[B], term()}.
+-spec mapfoldl(Fun, Acc0, List1) -> {List2, Acc1} when
+ Fun :: fun((A, AccIn) -> {B, AccOut}),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ List1 :: [A],
+ List2 :: [B],
+ A :: term(),
+ B :: term().
mapfoldl(F, Accu0, [Hd|Tail]) ->
{R,Accu1} = F(Hd, Accu0),
@@ -1015,7 +1275,16 @@ mapfoldl(F, Accu0, [Hd|Tail]) ->
{[R|Rs],Accu2};
mapfoldl(F, Accu, []) when is_function(F, 2) -> {[],Accu}.
--spec mapfoldr(fun((A, term()) -> {B, term()}), term(), [A]) -> {[B], term()}.
+-spec mapfoldr(Fun, Acc0, List1) -> {List2, Acc1} when
+ Fun :: fun((A, AccIn) -> {B, AccOut}),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ List1 :: [A],
+ List2 :: [B],
+ A :: term(),
+ B :: term().
mapfoldr(F, Accu0, [Hd|Tail]) ->
{Rs,Accu1} = mapfoldr(F, Accu0, Tail),
@@ -1023,7 +1292,11 @@ mapfoldr(F, Accu0, [Hd|Tail]) ->
{[R|Rs],Accu2};
mapfoldr(F, Accu, []) when is_function(F, 2) -> {[],Accu}.
--spec takewhile(fun((T) -> boolean()), [T]) -> [T].
+-spec takewhile(Pred, List1) -> List2 when
+ Pred :: fun((Elem :: T) -> boolean()),
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
takewhile(Pred, [Hd|Tail]) ->
case Pred(Hd) of
@@ -1032,7 +1305,11 @@ takewhile(Pred, [Hd|Tail]) ->
end;
takewhile(Pred, []) when is_function(Pred, 1) -> [].
--spec dropwhile(fun((T) -> boolean()), [T]) -> [T].
+-spec dropwhile(Pred, List1) -> List2 when
+ Pred :: fun((Elem :: T) -> boolean()),
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
dropwhile(Pred, [Hd|Tail]=Rest) ->
case Pred(Hd) of
@@ -1041,7 +1318,12 @@ dropwhile(Pred, [Hd|Tail]=Rest) ->
end;
dropwhile(Pred, []) when is_function(Pred, 1) -> [].
--spec splitwith(fun((T) -> boolean()), [T]) -> {[T], [T]}.
+-spec splitwith(Pred, List) -> {List1, List2} when
+ Pred :: fun((T) -> boolean()),
+ List :: [T],
+ List1 :: [T],
+ List2 :: [T],
+ T :: term().
splitwith(Pred, List) when is_function(Pred, 1) ->
splitwith(Pred, List, []).
@@ -1054,7 +1336,12 @@ splitwith(Pred, [Hd|Tail], Taken) ->
splitwith(Pred, [], Taken) when is_function(Pred, 1) ->
{reverse(Taken),[]}.
--spec split(non_neg_integer(), [T]) -> {[T], [T]}.
+-spec split(N, List1) -> {List2, List3} when
+ N :: non_neg_integer(),
+ List1 :: [T],
+ List2 :: [T],
+ List3 :: [T],
+ T :: term().
split(N, List) when is_integer(N), N >= 0, is_list(List) ->
case split(N, List, []) of
diff --git a/lib/stdlib/src/log_mf_h.erl b/lib/stdlib/src/log_mf_h.erl
index 5fa5360fa1..f7f128dac7 100644
--- a/lib/stdlib/src/log_mf_h.erl
+++ b/lib/stdlib/src/log_mf_h.erl
@@ -27,14 +27,13 @@
%%-----------------------------------------------------------------
--type dir() :: file:filename().
-type b() :: non_neg_integer().
-type f() :: 1..255.
-type pred() :: fun((term()) -> boolean()).
%%-----------------------------------------------------------------
--record(state, {dir :: dir(),
+-record(state, {dir :: file:filename(),
maxB :: b(),
maxF :: f(),
curB :: b(),
@@ -67,11 +66,23 @@
%% EventMgr = pid() | atom().
%%-----------------------------------------------------------------
--spec init(dir(), b(), f()) -> {dir(), b(), f(), pred()}.
+-opaque args() :: {file:filename(), b(), f(), pred()}.
+
+
+-spec init(Dir, MaxBytes, MaxFiles) -> Args when
+ Dir :: file:filename(),
+ MaxBytes :: non_neg_integer(), % b()
+ MaxFiles :: 1..255, % f()
+ Args :: args().
init(Dir, MaxB, MaxF) -> init(Dir, MaxB, MaxF, fun(_) -> true end).
--spec init(dir(), b(), f(), pred()) -> {dir(), b(), f(), pred()}.
+-spec init(Dir, MaxBytes, MaxFiles, Pred) -> Args when
+ Dir :: file:filename(),
+ MaxBytes :: non_neg_integer(), % b()
+ MaxFiles :: 1..255, % f()
+ Pred :: fun((Event :: term()) -> boolean()), % pred()
+ Args :: args().
init(Dir, MaxB, MaxF, Pred) -> {Dir, MaxB, MaxF, Pred}.
@@ -79,7 +90,7 @@ init(Dir, MaxB, MaxF, Pred) -> {Dir, MaxB, MaxF, Pred}.
%% Call-back functions from gen_event
%%-----------------------------------------------------------------
--spec init({dir(), b(), f(), pred()}) -> {'ok', #state{}} | {'error', term()}.
+-spec init({file:filename(), non_neg_integer(), f(), pred()}) -> {'ok', #state{}} | {'error', term()}.
init({Dir, MaxB, MaxF, Pred}) when is_integer(MaxF), MaxF > 0, MaxF < 256 ->
First =
diff --git a/lib/stdlib/src/ms_transform.erl b/lib/stdlib/src/ms_transform.erl
index b565eb20f4..48e22e53fa 100644
--- a/lib/stdlib/src/ms_transform.erl
+++ b/lib/stdlib/src/ms_transform.erl
@@ -66,6 +66,11 @@
%%
%% Called by compiler or ets/dbg:fun2ms when errors/warnings occur
%%
+
+-spec(format_error(Error) -> Chars when
+ Error :: {error, module(), term()},
+ Chars :: io_lib:chars()).
+
format_error({?WARN_SHADOW_VAR,Name}) ->
lists:flatten(
io_lib:format("variable ~p shadowed in ms_transform fun head",
@@ -186,6 +191,12 @@ format_error(Else) ->
%%
%% Called when translating in shell
%%
+
+-spec transform_from_shell(Dialect, Clauses, BoundEnvironment) -> term() when
+ Dialect :: ets | dbg,
+ Clauses :: [erl_parse:abstract_clause()],
+ BoundEnvironment :: erl_eval:binding_struct().
+
transform_from_shell(Dialect, Clauses, BoundEnvironment) ->
SaveFilename = setup_filename(),
case catch ms_clause_list(1,Clauses,Dialect,gb_sets:new()) of
@@ -211,6 +222,11 @@ transform_from_shell(Dialect, Clauses, BoundEnvironment) ->
%%
%% Called when translating during compiling
%%
+
+-spec parse_transform(Forms, Options) -> Forms when
+ Forms :: [erl_parse:abstract_form()],
+ Options :: term().
+
parse_transform(Forms, _Options) ->
SaveFilename = setup_filename(),
%io:format("Forms: ~p~n",[Forms]),
diff --git a/lib/stdlib/src/orddict.erl b/lib/stdlib/src/orddict.erl
index 4e30c9eefd..45d3c84b3e 100644
--- a/lib/stdlib/src/orddict.erl
+++ b/lib/stdlib/src/orddict.erl
@@ -25,9 +25,11 @@
-export([store/3,append/3,append_list/3,update/3,update/4,update_counter/3]).
-export([fold/3,map/2,filter/2,merge/3]).
+-export_type([orddict/0]).
+
%%---------------------------------------------------------------------------
--type orddict() :: [{term(), term()}].
+-type orddict() :: [{Key :: term(), Value :: term()}].
%%---------------------------------------------------------------------------
@@ -35,45 +37,63 @@
new() -> [].
--spec is_key(Key::term(), Dictionary::orddict()) -> boolean().
+-spec is_key(Key, Orddict) -> boolean() when
+ Key :: term(),
+ Orddict :: orddict().
is_key(Key, [{K,_}|_]) when Key < K -> false;
is_key(Key, [{K,_}|Dict]) when Key > K -> is_key(Key, Dict);
is_key(_Key, [{_K,_Val}|_]) -> true; %Key == K
is_key(_, []) -> false.
--spec to_list(orddict()) -> [{term(), term()}].
+-spec to_list(Orddict) -> List when
+ Orddict :: orddict(),
+ List :: [{Key :: term(), Value :: term()}].
to_list(Dict) -> Dict.
--spec from_list([{term(), term()}]) -> orddict().
+-spec from_list(List) -> Orddict when
+ List :: [{Key :: term(), Value :: term()}],
+ Orddict :: orddict().
from_list(Pairs) ->
lists:foldl(fun ({K,V}, D) -> store(K, V, D) end, [], Pairs).
--spec size(orddict()) -> non_neg_integer().
+-spec size(Orddict) -> non_neg_integer() when
+ Orddict :: orddict().
size(D) -> length(D).
--spec fetch(Key::term(), Dictionary::orddict()) -> term().
+-spec fetch(Key, Orddict) -> Value when
+ Key :: term(),
+ Value :: term(),
+ Orddict :: orddict().
fetch(Key, [{K,_}|D]) when Key > K -> fetch(Key, D);
fetch(Key, [{K,Value}|_]) when Key == K -> Value.
--spec find(Key::term(), Dictionary::orddict()) -> {'ok', term()} | 'error'.
+-spec find(Key, Orddict) -> {'ok', Value} | 'error' when
+ Key :: term(),
+ Orddict :: orddict(),
+ Value :: term().
find(Key, [{K,_}|_]) when Key < K -> error;
find(Key, [{K,_}|D]) when Key > K -> find(Key, D);
find(_Key, [{_K,Value}|_]) -> {ok,Value}; %Key == K
find(_, []) -> error.
--spec fetch_keys(Dictionary::orddict()) -> [term()].
+-spec fetch_keys(Orddict) -> Keys when
+ Orddict :: orddict(),
+ Keys :: [term()].
fetch_keys([{Key,_}|Dict]) ->
[Key|fetch_keys(Dict)];
fetch_keys([]) -> [].
--spec erase(Key::term(), Dictionary::orddict()) -> orddict().
+-spec erase(Key, Orddict1) -> Orddict2 when
+ Key :: term(),
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict().
erase(Key, [{K,_}=E|Dict]) when Key < K -> [E|Dict];
erase(Key, [{K,_}=E|Dict]) when Key > K ->
@@ -81,7 +101,11 @@ erase(Key, [{K,_}=E|Dict]) when Key > K ->
erase(_Key, [{_K,_Val}|Dict]) -> Dict; %Key == K
erase(_, []) -> [].
--spec store(Key::term(), Value::term(), Dictionary::orddict()) -> orddict().
+-spec store(Key, Value, Orddict1) -> Orddict2 when
+ Key :: term(),
+ Value :: term(),
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict().
store(Key, New, [{K,_}=E|Dict]) when Key < K ->
[{Key,New},E|Dict];
@@ -91,7 +115,11 @@ store(Key, New, [{_K,_Old}|Dict]) -> %Key == K
[{Key,New}|Dict];
store(Key, New, []) -> [{Key,New}].
--spec append(Key::term(), Value::term(), Dictionary::orddict()) -> orddict().
+-spec append(Key, Value, Orddict1) -> Orddict2 when
+ Key :: term(),
+ Value :: term(),
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict().
append(Key, New, [{K,_}=E|Dict]) when Key < K ->
[{Key,[New]},E|Dict];
@@ -101,7 +129,11 @@ append(Key, New, [{_K,Old}|Dict]) -> %Key == K
[{Key,Old ++ [New]}|Dict];
append(Key, New, []) -> [{Key,[New]}].
--spec append_list(Key::term(), ValueList::[term()], orddict()) -> orddict().
+-spec append_list(Key, ValList, Orddict1) -> Orddict2 when
+ Key :: term(),
+ ValList :: [Value :: term()],
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict().
append_list(Key, NewList, [{K,_}=E|Dict]) when Key < K ->
[{Key,NewList},E|Dict];
@@ -112,14 +144,23 @@ append_list(Key, NewList, [{_K,Old}|Dict]) -> %Key == K
append_list(Key, NewList, []) ->
[{Key,NewList}].
--spec update(Key::term(), Fun::fun((term()) -> term()), orddict()) -> orddict().
+-spec update(Key, Fun, Orddict1) -> Orddict2 when
+ Key :: term(),
+ Fun :: fun((Value1 :: term()) -> Value2 :: term()),
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict().
update(Key, Fun, [{K,_}=E|Dict]) when Key > K ->
[E|update(Key, Fun, Dict)];
update(Key, Fun, [{K,Val}|Dict]) when Key == K ->
[{Key,Fun(Val)}|Dict].
--spec update(term(), fun((term()) -> term()), term(), orddict()) -> orddict().
+-spec update(Key, Fun, Initial, Orddict1) -> Orddict2 when
+ Key :: term(),
+ Initial :: term(),
+ Fun :: fun((Value1 :: term()) -> Value2 :: term()),
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict().
update(Key, _, Init, [{K,_}=E|Dict]) when Key < K ->
[{Key,Init},E|Dict];
@@ -129,7 +170,11 @@ update(Key, Fun, _Init, [{_K,Val}|Dict]) -> %Key == K
[{Key,Fun(Val)}|Dict];
update(Key, _, Init, []) -> [{Key,Init}].
--spec update_counter(Key::term(), Incr::number(), orddict()) -> orddict().
+-spec update_counter(Key, Increment, Orddict1) -> Orddict2 when
+ Key :: term(),
+ Increment :: number(),
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict().
update_counter(Key, Incr, [{K,_}=E|Dict]) when Key < K ->
[{Key,Incr},E|Dict];
@@ -139,19 +184,29 @@ update_counter(Key, Incr, [{_K,Val}|Dict]) -> %Key == K
[{Key,Val+Incr}|Dict];
update_counter(Key, Incr, []) -> [{Key,Incr}].
--spec fold(fun((term(),term(),term()) -> term()), term(), orddict()) -> term().
+-spec fold(Fun, Acc0, Orddict) -> Acc1 when
+ Fun :: fun((Key :: term(), Value :: term(), AccIn :: term()) -> AccOut :: term()),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ Orddict :: orddict().
fold(F, Acc, [{Key,Val}|D]) ->
fold(F, F(Key, Val, Acc), D);
fold(F, Acc, []) when is_function(F, 3) -> Acc.
--spec map(fun((term(), term()) -> term()), orddict()) -> orddict().
+-spec map(Fun, Orddict1) -> Orddict2 when
+ Fun :: fun((Key :: term(), Value1 :: term()) -> Value2 :: term()),
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict().
map(F, [{Key,Val}|D]) ->
[{Key,F(Key, Val)}|map(F, D)];
map(F, []) when is_function(F, 2) -> [].
--spec filter(fun((term(), term()) -> boolean()), orddict()) -> orddict().
+-spec filter(Pred, Orddict1) -> Orddict2 when
+ Pred :: fun((Key :: term(), Value :: term()) -> boolean()),
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict().
filter(F, [{Key,Val}=E|D]) ->
case F(Key, Val) of
@@ -160,8 +215,11 @@ filter(F, [{Key,Val}=E|D]) ->
end;
filter(F, []) when is_function(F, 2) -> [].
--spec merge(fun((term(), term(), term()) -> term()), orddict(), orddict()) ->
- orddict().
+-spec merge(Fun, Orddict1, Orddict2) -> Orddict3 when
+ Fun :: fun((Key :: term(), Value1 :: term(), Value2 :: term()) -> Value :: term()),
+ Orddict1 :: orddict(),
+ Orddict2 :: orddict(),
+ Orddict3 :: orddict().
merge(F, [{K1,_}=E1|D1], [{K2,_}=E2|D2]) when K1 < K2 ->
[E1|merge(F, D1, [E2|D2])];
diff --git a/lib/stdlib/src/ordsets.erl b/lib/stdlib/src/ordsets.erl
index 5a1c260703..4a8b1275b2 100644
--- a/lib/stdlib/src/ordsets.erl
+++ b/lib/stdlib/src/ordsets.erl
@@ -40,7 +40,8 @@ new() -> [].
%% is_set(Term) -> boolean().
%% Return 'true' if Set is an ordered set of elements, else 'false'.
--spec is_set(term()) -> boolean().
+-spec is_set(Ordset) -> boolean() when
+ Ordset :: term().
is_set([E|Es]) -> is_set(Es, E);
is_set([]) -> true;
@@ -54,21 +55,26 @@ is_set([], _) -> true.
%% size(OrdSet) -> int().
%% Return the number of elements in OrdSet.
--spec size(ordset(_)) -> non_neg_integer().
+-spec size(Ordset) -> non_neg_integer() when
+ Ordset :: ordset(_).
size(S) -> length(S).
%% to_list(OrdSet) -> [Elem].
%% Return the elements in OrdSet as a list.
--spec to_list(ordset(T)) -> [T].
+-spec to_list(Ordset) -> List when
+ Ordset :: ordset(T),
+ List :: [T].
to_list(S) -> S.
%% from_list([Elem]) -> Set.
%% Build an ordered set from the elements in List.
--spec from_list([T]) -> ordset(T).
+-spec from_list(List) -> Ordset when
+ List :: [T],
+ Ordset :: ordset(T).
from_list(L) ->
lists:usort(L).
@@ -76,7 +82,9 @@ from_list(L) ->
%% is_element(Element, OrdSet) -> boolean().
%% Return 'true' if Element is an element of OrdSet, else 'false'.
--spec is_element(term(), ordset(_)) -> boolean().
+-spec is_element(Element, Ordset) -> boolean() when
+ Element :: term(),
+ Ordset :: ordset(_).
is_element(E, [H|Es]) when E > H -> is_element(E, Es);
is_element(E, [H|_]) when E < H -> false;
@@ -86,7 +94,12 @@ is_element(_, []) -> false.
%% add_element(Element, OrdSet) -> OrdSet.
%% Return OrdSet with Element inserted in it.
--spec add_element(E, ordset(T)) -> [T | E,...].
+-spec add_element(Element, Ordset1) -> Ordset2 when
+ Element :: E,
+ Ordset1 :: ordset(T),
+ Ordset2 :: ordset(T | E).
+
+%-spec add_element(E, ordset(T)) -> [T | E,...].
add_element(E, [H|Es]) when E > H -> [H|add_element(E, Es)];
add_element(E, [H|_]=Set) when E < H -> [E|Set];
@@ -96,7 +109,10 @@ add_element(E, []) -> [E].
%% del_element(Element, OrdSet) -> OrdSet.
%% Return OrdSet but with Element removed.
--spec del_element(term(), ordset(T)) -> ordset(T).
+-spec del_element(Element, Ordset1) -> Ordset2 when
+ Element :: term(),
+ Ordset1 :: ordset(T),
+ Ordset2 :: ordset(T).
del_element(E, [H|Es]) when E > H -> [H|del_element(E, Es)];
del_element(E, [H|_]=Set) when E < H -> Set;
@@ -106,7 +122,10 @@ del_element(_, []) -> [].
%% union(OrdSet1, OrdSet2) -> OrdSet
%% Return the union of OrdSet1 and OrdSet2.
--spec union(ordset(T1), ordset(T2)) -> ordset(T1 | T2).
+-spec union(Ordset1, Ordset2) -> Ordset3 when
+ Ordset1 :: ordset(T1),
+ Ordset2 :: ordset(T2),
+ Ordset3 :: ordset(T1 | T2).
union([E1|Es1], [E2|_]=Set2) when E1 < E2 ->
[E1|union(Es1, Set2)];
@@ -120,7 +139,9 @@ union(Es1, []) -> Es1.
%% union([OrdSet]) -> OrdSet
%% Return the union of the list of ordered sets.
--spec union([ordset(T)]) -> ordset(T).
+-spec union(OrdsetList) -> Ordset when
+ OrdsetList :: [ordset(T)],
+ Ordset :: ordset(T).
union([S1,S2|Ss]) ->
union1(union(S1, S2), Ss);
@@ -133,7 +154,10 @@ union1(S1, []) -> S1.
%% intersection(OrdSet1, OrdSet2) -> OrdSet.
%% Return the intersection of OrdSet1 and OrdSet2.
--spec intersection(ordset(_), ordset(_)) -> ordset(_).
+-spec intersection(Ordset1, Ordset2) -> Ordset3 when
+ Ordset1 :: ordset(_),
+ Ordset2 :: ordset(_),
+ Ordset3 :: ordset(_).
intersection([E1|Es1], [E2|_]=Set2) when E1 < E2 ->
intersection(Es1, Set2);
@@ -149,7 +173,9 @@ intersection(_, []) ->
%% intersection([OrdSet]) -> OrdSet.
%% Return the intersection of the list of ordered sets.
--spec intersection([ordset(_),...]) -> ordset(_).
+-spec intersection(OrdsetList) -> Ordset when
+ OrdsetList :: [ordset(_),...],
+ Ordset :: ordset(_).
intersection([S1,S2|Ss]) ->
intersection1(intersection(S1, S2), Ss);
@@ -162,7 +188,9 @@ intersection1(S1, []) -> S1.
%% is_disjoint(OrdSet1, OrdSet2) -> boolean().
%% Check whether OrdSet1 and OrdSet2 are disjoint.
--spec is_disjoint(ordset(_), ordset(_)) -> boolean().
+-spec is_disjoint(Ordset1, Ordset2) -> boolean() when
+ Ordset1 :: ordset(_),
+ Ordset2 :: ordset(_).
is_disjoint([E1|Es1], [E2|_]=Set2) when E1 < E2 ->
is_disjoint(Es1, Set2);
@@ -179,7 +207,10 @@ is_disjoint(_, []) ->
%% Return all and only the elements of OrdSet1 which are not also in
%% OrdSet2.
--spec subtract(ordset(_), ordset(_)) -> ordset(_).
+-spec subtract(Ordset1, Ordset2) -> Ordset3 when
+ Ordset1 :: ordset(_),
+ Ordset2 :: ordset(_),
+ Ordset3 :: ordset(_).
subtract([E1|Es1], [E2|_]=Set2) when E1 < E2 ->
[E1|subtract(Es1, Set2)];
@@ -194,7 +225,9 @@ subtract(Es1, []) -> Es1.
%% Return 'true' when every element of OrdSet1 is also a member of
%% OrdSet2, else 'false'.
--spec is_subset(ordset(_), ordset(_)) -> boolean().
+-spec is_subset(Ordset1, Ordset2) -> boolean() when
+ Ordset1 :: ordset(_),
+ Ordset2 :: ordset(_).
is_subset([E1|_], [E2|_]) when E1 < E2 -> %E1 not in Set2
false;
@@ -208,7 +241,11 @@ is_subset(_, []) -> false.
%% fold(Fun, Accumulator, OrdSet) -> Accumulator.
%% Fold function Fun over all elements in OrdSet and return Accumulator.
--spec fold(fun((T, term()) -> term()), term(), ordset(T)) -> term().
+-spec fold(Function, Acc0, Ordset) -> Acc1 when
+ Function :: fun((Element :: T, AccIn :: term()) -> AccOut :: term()),
+ Ordset :: ordset(T),
+ Acc0 :: term(),
+ Acc1 :: term().
fold(F, Acc, Set) ->
lists:foldl(F, Acc, Set).
@@ -216,7 +253,10 @@ fold(F, Acc, Set) ->
%% filter(Fun, OrdSet) -> OrdSet.
%% Filter OrdSet with Fun.
--spec filter(fun((T) -> boolean()), ordset(T)) -> ordset(T).
+-spec filter(Pred, Ordset1) -> Ordset2 when
+ Pred :: fun((Element :: T) -> boolean()),
+ Ordset1 :: ordset(T),
+ Ordset2 :: ordset(T).
filter(F, Set) ->
lists:filter(F, Set).
diff --git a/lib/stdlib/src/otp_internal.erl b/lib/stdlib/src/otp_internal.erl
index 5c52dfcbf0..39d017d430 100644
--- a/lib/stdlib/src/otp_internal.erl
+++ b/lib/stdlib/src/otp_internal.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1999-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1999-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -180,6 +180,9 @@ obsolete_1(calendar, local_time_to_universal_time, 1) ->
obsolete_1(rpc, safe_multi_server_call, A) when A =:= 2; A =:= 3 ->
{deprecated, {rpc, multi_server_call, A}};
+
+%% *** SNMP ***
+
obsolete_1(snmp, N, A) ->
case is_snmp_agent_function(N, A) of
false ->
@@ -189,9 +192,100 @@ obsolete_1(snmp, N, A) ->
integer_to_list(A)++" instead"}
end;
+obsolete_1(snmpm, agent_info, 3) ->
+ {deprecated, {snmpm, agent_info, 2}, "R16B"};
+obsolete_1(snmpm, update_agent_info, 5) ->
+ {deprecated, {snmpm, update_agent_info, 4}, "R16B"};
+obsolete_1(snmpm, g, 3) ->
+ {deprecated, {snmpm, sync_get, 3}, "R16B"};
+obsolete_1(snmpm, g, 4) ->
+ {deprecated, {snmpm, sync_get, [3,4]}, "R16B"};
+obsolete_1(snmpm, g, 5) ->
+ {deprecated, {snmpm, sync_get, [4,5]}, "R16B"};
+obsolete_1(snmpm, g, 6) ->
+ {deprecated, {snmpm, sync_get, [5,6]}, "R16B"};
+obsolete_1(snmpm, g, 7) ->
+ {deprecated, {snmpm, sync_get, 6}, "R16B"};
+obsolete_1(snmpm, ag, 3) ->
+ {deprecated, {snmpm, async_get, 3}, "R16B"};
+obsolete_1(snmpm, ag, 4) ->
+ {deprecated, {snmpm, async_get, [3,4]}, "R16B"};
+obsolete_1(snmpm, ag, 5) ->
+ {deprecated, {snmpm, async_get, [4,5]}, "R16B"};
+obsolete_1(snmpm, ag, 6) ->
+ {deprecated, {snmpm, async_get, [5,6]}, "R16B"};
+obsolete_1(snmpm, ag, 7) ->
+ {deprecated, {snmpm, async_get, 6}, "R16B"};
+obsolete_1(snmpm, gn, 3) ->
+ {deprecated, {snmpm, sync_get_next, 3}, "R16B"};
+obsolete_1(snmpm, gn, 4) ->
+ {deprecated, {snmpm, sync_get_next, [3,4]}, "R16B"};
+obsolete_1(snmpm, gn, 5) ->
+ {deprecated, {snmpm, sync_get_next, [4,5]}, "R16B"};
+obsolete_1(snmpm, gn, 6) ->
+ {deprecated, {snmpm, sync_get_next, [5,6]}, "R16B"};
+obsolete_1(snmpm, gn, 7) ->
+ {deprecated, {snmpm, sync_get_next, 6}, "R16B"};
+obsolete_1(snmpm, agn, 3) ->
+ {deprecated, {snmpm, async_get_next, 3}, "R16B"};
+obsolete_1(snmpm, agn, 4) ->
+ {deprecated, {snmpm, async_get_next, [3,4]}, "R16B"};
+obsolete_1(snmpm, agn, 5) ->
+ {deprecated, {snmpm, async_get_next, [4,5]}, "R16B"};
+obsolete_1(snmpm, agn, 6) ->
+ {deprecated, {snmpm, async_get_next, [5,6]}, "R16B"};
+obsolete_1(snmpm, agn, 7) ->
+ {deprecated, {snmpm, async_get_next, 6}, "R16B"};
+obsolete_1(snmpm, s, 3) ->
+ {deprecated, {snmpm, sync_set, 3}, "R16B"};
+obsolete_1(snmpm, s, 4) ->
+ {deprecated, {snmpm, sync_set, [3,4]}, "R16B"};
+obsolete_1(snmpm, s, 5) ->
+ {deprecated, {snmpm, sync_set, [4,5]}, "R16B"};
+obsolete_1(snmpm, s, 6) ->
+ {deprecated, {snmpm, sync_set, [5,6]}, "R16B"};
+obsolete_1(snmpm, s, 7) ->
+ {deprecated, {snmpm, sync_set, 6}, "R16B"};
+obsolete_1(snmpm, as, 3) ->
+ {deprecated, {snmpm, async_set, 3}, "R16B"};
+obsolete_1(snmpm, as, 4) ->
+ {deprecated, {snmpm, async_set, [3,4]}, "R16B"};
+obsolete_1(snmpm, as, 5) ->
+ {deprecated, {snmpm, async_set, [4,5]}, "R16B"};
+obsolete_1(snmpm, as, 6) ->
+ {deprecated, {snmpm, async_set, [5,6]}, "R16B"};
+obsolete_1(snmpm, as, 7) ->
+ {deprecated, {snmpm, async_set, 6}, "R16B"};
+obsolete_1(snmpm, gb, 5) ->
+ {deprecated, {snmpm, sync_get_bulk, 5}, "R16B"};
+obsolete_1(snmpm, gb, 6) ->
+ {deprecated, {snmpm, sync_get_bulk, [5,6]}, "R16B"};
+obsolete_1(snmpm, gb, 7) ->
+ {deprecated, {snmpm, sync_get_bulk, [6,7]}, "R16B"};
+obsolete_1(snmpm, gb, 8) ->
+ {deprecated, {snmpm, sync_get_bulk, [7,8]}, "R16B"};
+obsolete_1(snmpm, gb, 9) ->
+ {deprecated, {snmpm, sync_get_bulk, 8}, "R16B"};
+obsolete_1(snmpm, agb, 5) ->
+ {deprecated, {snmpm, async_get_bulk, 5}, "R16B"};
+obsolete_1(snmpm, agb, 6) ->
+ {deprecated, {snmpm, async_get_bulk, [5,6]}, "R16B"};
+obsolete_1(snmpm, agb, 7) ->
+ {deprecated, {snmpm, async_get_bulk, [6,7]}, "R16B"};
+obsolete_1(snmpm, agb, 8) ->
+ {deprecated, {snmpm, async_get_bulk, [7,8]}, "R16B"};
+obsolete_1(snmpm, agb, 9) ->
+ {deprecated, {snmpm, async_get_bulk, 8}, "R16B"};
+
+
+%% *** MEGACO ***
+
obsolete_1(megaco, format_versions, 1) ->
{deprecated, "Deprecated; use megaco:print_version_info/0,1 instead"};
+
+%% *** OS-MON-MIB ***
+
obsolete_1(os_mon_mib, init, 1) ->
{deprecated, {os_mon_mib, load, 1}};
obsolete_1(os_mon_mib, stop, 1) ->
diff --git a/lib/stdlib/src/pg.erl b/lib/stdlib/src/pg.erl
index 503654e706..ee177e4e0b 100644
--- a/lib/stdlib/src/pg.erl
+++ b/lib/stdlib/src/pg.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -35,7 +35,9 @@
%% Create a brand new empty process group with the master residing
%% at the local node
--spec create(term()) -> 'ok' | {'error', term()}.
+-spec create(PgName) -> 'ok' | {'error', Reason} when
+ PgName :: term(),
+ Reason :: 'already_created' | term().
create(PgName) ->
catch begin check(PgName),
@@ -46,7 +48,10 @@ create(PgName) ->
%% Create a brand new empty process group with the master
%% residing at Node
--spec create(term(), node()) -> 'ok' | {'error', term()}.
+-spec create(PgName, Node) -> 'ok' | {'error', Reason} when
+ PgName :: term(),
+ Node :: node(),
+ Reason :: 'already_created' | term().
create(PgName, Node) ->
catch begin check(PgName),
@@ -66,7 +71,10 @@ standby(_PgName, _Node) ->
%% Tell process group PgName that Pid is a new member of the group
%% synchronously return a list of all old members in the group
--spec join(atom(), pid()) -> [pid()].
+-spec join(PgName, Pid) -> Members when
+ PgName :: term(),
+ Pid :: pid(),
+ Members :: [pid()].
join(PgName, Pid) when is_atom(PgName) ->
global:send(PgName, {join,self(),Pid}),
@@ -77,7 +85,9 @@ join(PgName, Pid) when is_atom(PgName) ->
%% Multi cast Mess to all members in the group
--spec send(atom() | pid(), term()) -> 'ok'.
+-spec send(PgName, Msg) -> 'ok' when
+ PgName :: term(),
+ Msg :: term().
send(PgName, Mess) when is_atom(PgName) ->
global:send(PgName, {send, self(), Mess}),
@@ -89,7 +99,9 @@ send(Pg, Mess) when is_pid(Pg) ->
%% multi cast a message to all members in the group but ourselves
%% If we are a member
--spec esend(atom() | pid(), term()) -> 'ok'.
+-spec esend(PgName, Msg) -> 'ok' when
+ PgName :: term(),
+ Msg :: term().
esend(PgName, Mess) when is_atom(PgName) ->
global:send(PgName, {esend,self(),Mess}),
@@ -100,7 +112,9 @@ esend(Pg, Mess) when is_pid(Pg) ->
%% Return the members of the group
--spec members(atom() | pid()) -> [pid()].
+-spec members(PgName) -> Members when
+ PgName :: term(),
+ Members :: [pid()].
members(PgName) when is_atom(PgName) ->
global:send(PgName, {self() ,members}),
diff --git a/lib/stdlib/src/pool.erl b/lib/stdlib/src/pool.erl
index a3c9927ee9..a5eb191ab2 100644
--- a/lib/stdlib/src/pool.erl
+++ b/lib/stdlib/src/pool.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -52,11 +52,16 @@
%% Start up using the .hosts.erlang file
--spec start(atom()) -> [node()].
+-spec start(Name) -> Nodes when
+ Name :: atom(),
+ Nodes :: [node()].
start(Name) ->
start(Name,[]).
--spec start(atom(), string()) -> [node()].
+-spec start(Name, Args) -> Nodes when
+ Name :: atom(),
+ Args :: string(),
+ Nodes :: [node()].
start(Name, Args) when is_atom(Name) ->
gen_server:start({global, pool_master}, pool, [], []),
Hosts = net_adm:host_file(),
@@ -71,7 +76,8 @@ start(Name, Args) when is_atom(Name) ->
get_nodes() ->
get_elements(2, get_nodes_and_load()).
--spec attach(node()) -> 'already_attached' | 'attached'.
+-spec attach(Node) -> 'already_attached' | 'attached' when
+ Node :: node().
attach(Node) ->
gen_server:call({global, pool_master}, {attach, Node}).
@@ -82,11 +88,17 @@ get_nodes_and_load() ->
get_node() ->
gen_server:call({global, pool_master}, get_node).
--spec pspawn(module(), atom(), [term()]) -> pid().
+-spec pspawn(Mod, Fun, Args) -> pid() when
+ Mod :: module(),
+ Fun :: atom(),
+ Args :: [term()].
pspawn(M, F, A) ->
gen_server:call({global, pool_master}, {spawn, group_leader(), M, F, A}).
--spec pspawn_link(module(), atom(), [term()]) -> pid().
+-spec pspawn_link(Mod, Fun, Args) -> pid() when
+ Mod :: module(),
+ Fun :: atom(),
+ Args :: [term()].
pspawn_link(M, F, A) ->
P = pspawn(M, F, A),
link(P),
diff --git a/lib/stdlib/src/proc_lib.erl b/lib/stdlib/src/proc_lib.erl
index 4fb64a3353..02bcbb5a60 100644
--- a/lib/stdlib/src/proc_lib.erl
+++ b/lib/stdlib/src/proc_lib.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -40,77 +40,108 @@
-type priority_level() :: 'high' | 'low' | 'max' | 'normal'.
-type spawn_option() :: 'link'
+ | 'monitor'
| {'priority', priority_level()}
| {'min_heap_size', non_neg_integer()}
+ | {'min_bin_vheap_size', non_neg_integer()}
| {'fullsweep_after', non_neg_integer()}.
--type dict_or_pid() :: pid() | [_] | {integer(), integer(), integer()}.
+-type dict_or_pid() :: pid()
+ | (ProcInfo :: [_])
+ | {X :: integer(), Y :: integer(), Z :: integer()}.
%%-----------------------------------------------------------------------------
--spec spawn(function()) -> pid().
+-spec spawn(Fun) -> pid() when
+ Fun :: function().
spawn(F) when is_function(F) ->
Parent = get_my_name(),
Ancestors = get_ancestors(),
erlang:spawn(?MODULE, init_p, [Parent,Ancestors,F]).
--spec spawn(atom(), atom(), [term()]) -> pid().
+-spec spawn(Module, Function, Args) -> pid() when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()].
spawn(M,F,A) when is_atom(M), is_atom(F), is_list(A) ->
Parent = get_my_name(),
Ancestors = get_ancestors(),
erlang:spawn(?MODULE, init_p, [Parent,Ancestors,M,F,A]).
--spec spawn_link(function()) -> pid().
+-spec spawn_link(Fun) -> pid() when
+ Fun :: function().
spawn_link(F) when is_function(F) ->
Parent = get_my_name(),
Ancestors = get_ancestors(),
erlang:spawn_link(?MODULE, init_p, [Parent,Ancestors,F]).
--spec spawn_link(atom(), atom(), [term()]) -> pid().
+-spec spawn_link(Module, Function, Args) -> pid() when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()].
spawn_link(M,F,A) when is_atom(M), is_atom(F), is_list(A) ->
Parent = get_my_name(),
Ancestors = get_ancestors(),
erlang:spawn_link(?MODULE, init_p, [Parent,Ancestors,M,F,A]).
--spec spawn(node(), function()) -> pid().
+-spec spawn(Node, Fun) -> pid() when
+ Node :: node(),
+ Fun :: function().
spawn(Node, F) when is_function(F) ->
Parent = get_my_name(),
Ancestors = get_ancestors(),
erlang:spawn(Node, ?MODULE, init_p, [Parent,Ancestors,F]).
--spec spawn(node(), atom(), atom(), [term()]) -> pid().
+-spec spawn(Node, Module, Function, Args) -> pid() when
+ Node :: node(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()].
+
spawn(Node, M, F, A) when is_atom(M), is_atom(F), is_list(A) ->
Parent = get_my_name(),
Ancestors = get_ancestors(),
erlang:spawn(Node, ?MODULE, init_p, [Parent,Ancestors,M,F,A]).
--spec spawn_link(node(), function()) -> pid().
+-spec spawn_link(Node, Fun) -> pid() when
+ Node :: node(),
+ Fun :: function().
spawn_link(Node, F) when is_function(F) ->
Parent = get_my_name(),
Ancestors = get_ancestors(),
erlang:spawn_link(Node, ?MODULE, init_p, [Parent,Ancestors,F]).
--spec spawn_link(node(), atom(), atom(), [term()]) -> pid().
+-spec spawn_link(Node, Module, Function, Args) -> pid() when
+ Node :: node(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()].
spawn_link(Node, M, F, A) when is_atom(M), is_atom(F), is_list(A) ->
Parent = get_my_name(),
Ancestors = get_ancestors(),
erlang:spawn_link(Node, ?MODULE, init_p, [Parent,Ancestors,M,F,A]).
--spec spawn_opt(function(), [spawn_option()]) -> pid().
+-spec spawn_opt(Fun, SpawnOpts) -> pid() when
+ Fun :: function(),
+ SpawnOpts :: [spawn_option()].
+
spawn_opt(F, Opts) when is_function(F) ->
Parent = get_my_name(),
Ancestors = get_ancestors(),
check_for_monitor(Opts),
erlang:spawn_opt(?MODULE, init_p, [Parent,Ancestors,F],Opts).
--spec spawn_opt(node(), function(), [spawn_option()]) -> pid().
+-spec spawn_opt(Node, Function, SpawnOpts) -> pid() when
+ Node :: node(),
+ Function :: function(),
+ SpawnOpts :: [spawn_option()].
spawn_opt(Node, F, Opts) when is_function(F) ->
Parent = get_my_name(),
@@ -118,7 +149,11 @@ spawn_opt(Node, F, Opts) when is_function(F) ->
check_for_monitor(Opts),
erlang:spawn_opt(Node, ?MODULE, init_p, [Parent,Ancestors,F], Opts).
--spec spawn_opt(atom(), atom(), [term()], [spawn_option()]) -> pid().
+-spec spawn_opt(Module, Function, Args, SpawnOpts) -> pid() when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ SpawnOpts :: [spawn_option()].
spawn_opt(M, F, A, Opts) when is_atom(M), is_atom(F), is_list(A) ->
Parent = get_my_name(),
@@ -126,7 +161,12 @@ spawn_opt(M, F, A, Opts) when is_atom(M), is_atom(F), is_list(A) ->
check_for_monitor(Opts),
erlang:spawn_opt(?MODULE, init_p, [Parent,Ancestors,M,F,A], Opts).
--spec spawn_opt(node(), atom(), atom(), [term()], [spawn_option()]) -> pid().
+-spec spawn_opt(Node, Module, Function, Args, SpawnOpts) -> pid() when
+ Node :: node(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ SpawnOpts :: [spawn_option()].
spawn_opt(Node, M, F, A, Opts) when is_atom(M), is_atom(F), is_list(A) ->
Parent = get_my_name(),
@@ -144,7 +184,10 @@ check_for_monitor(SpawnOpts) ->
false
end.
--spec hibernate(module(), atom(), [term()]) -> no_return().
+-spec hibernate(Module, Function, Args) -> no_return() when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()].
hibernate(M, F, A) when is_atom(M), is_atom(F), is_list(A) ->
erlang:hibernate(?MODULE, wake_up, [M, F, A]).
@@ -210,35 +253,65 @@ exit_p(Class, Reason) ->
exit(Reason)
end.
--spec start(atom(), atom(), [term()]) -> term().
+-spec start(Module, Function, Args) -> Ret when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Ret :: term() | {error, Reason :: term()}.
start(M, F, A) when is_atom(M), is_atom(F), is_list(A) ->
start(M, F, A, infinity).
--spec start(atom(), atom(), [term()], timeout()) -> term().
+-spec start(Module, Function, Args, Time) -> Ret when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Time :: timeout(),
+ Ret :: term() | {error, Reason :: term()}.
start(M, F, A, Timeout) when is_atom(M), is_atom(F), is_list(A) ->
Pid = ?MODULE:spawn(M, F, A),
sync_wait(Pid, Timeout).
--spec start(atom(), atom(), [term()], timeout(), [spawn_option()]) -> term().
+-spec start(Module, Function, Args, Time, SpawnOpts) -> Ret when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Time :: timeout(),
+ SpawnOpts :: [spawn_option()],
+ Ret :: term() | {error, Reason :: term()}.
start(M, F, A, Timeout, SpawnOpts) when is_atom(M), is_atom(F), is_list(A) ->
Pid = ?MODULE:spawn_opt(M, F, A, SpawnOpts),
sync_wait(Pid, Timeout).
--spec start_link(atom(), atom(), [term()]) -> term().
+-spec start_link(Module, Function, Args) -> Ret when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Ret :: term() | {error, Reason :: term()}.
start_link(M, F, A) when is_atom(M), is_atom(F), is_list(A) ->
start_link(M, F, A, infinity).
--spec start_link(atom(), atom(), [term()], timeout()) -> term().
+-spec start_link(Module, Function, Args, Time) -> Ret when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Time :: timeout(),
+ Ret :: term() | {error, Reason :: term()}.
start_link(M, F, A, Timeout) when is_atom(M), is_atom(F), is_list(A) ->
Pid = ?MODULE:spawn_link(M, F, A),
sync_wait(Pid, Timeout).
--spec start_link(atom(),atom(),[term()],timeout(),[spawn_option()]) -> term().
+-spec start_link(Module, Function, Args, Time, SpawnOpts) -> Ret when
+ Module :: module(),
+ Function :: atom(),
+ Args :: [term()],
+ Time :: timeout(),
+ SpawnOpts :: [spawn_option()],
+ Ret :: term() | {error, Reason :: term()}.
start_link(M,F,A,Timeout,SpawnOpts) when is_atom(M), is_atom(F), is_list(A) ->
Pid = ?MODULE:spawn_opt(M, F, A, ensure_link(SpawnOpts)),
@@ -267,13 +340,17 @@ flush(Pid) ->
true
end.
--spec init_ack(pid(), term()) -> 'ok'.
+-spec init_ack(Parent, Ret) -> 'ok' when
+ Parent :: pid(),
+ Ret :: term().
init_ack(Parent, Return) ->
Parent ! {ack, self(), Return},
ok.
--spec init_ack(term()) -> 'ok'.
+-spec init_ack(Ret) -> 'ok' when
+ Ret :: term().
+
init_ack(Return) ->
[Parent|_] = get('$ancestors'),
init_ack(Parent, Return).
@@ -282,7 +359,11 @@ init_ack(Return) ->
%% Fetch the initial call of a proc_lib spawned process.
%% -----------------------------------------------------
--spec initial_call(dict_or_pid()) -> {atom(), atom(), [atom()]} | 'false'.
+-spec initial_call(Process) -> {Module, Function, Args} | 'false' when
+ Process :: dict_or_pid(),
+ Module :: module(),
+ Function :: atom(),
+ Args :: [atom()].
initial_call(DictOrPid) ->
case raw_initial_call(DictOrPid) of
@@ -305,7 +386,11 @@ make_dummy_args(N, Acc) ->
%% This function is typically called from c:i() and c:regs().
%% -----------------------------------------------------
--spec translate_initial_call(dict_or_pid()) -> mfa().
+-spec translate_initial_call(Process) -> {Module, Function, Arity} when
+ Process :: dict_or_pid(),
+ Module :: module(),
+ Function :: atom(),
+ Arity :: byte().
translate_initial_call(DictOrPid) ->
case raw_initial_call(DictOrPid) of
@@ -577,7 +662,8 @@ check(Res) -> Res.
%%% Format (and write) a generated crash info structure.
%%% -----------------------------------------------------------
--spec format([term()]) -> string().
+-spec format(CrashReport) -> string() when
+ CrashReport :: [term()].
format([OwnReport,LinkReport]) ->
OwnFormat = format_report(OwnReport),
diff --git a/lib/stdlib/src/proplists.erl b/lib/stdlib/src/proplists.erl
index 6a45e0f868..68697d0da2 100644
--- a/lib/stdlib/src/proplists.erl
+++ b/lib/stdlib/src/proplists.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2001-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2001-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -37,7 +37,7 @@
%% overriding the default settings, object properties, annotations,
%% etc.</p>
%%
-%% @type property() = atom() | tuple()
+%% % @type property() = atom() | tuple()
-module(proplists).
@@ -53,14 +53,8 @@
-type property() :: atom() | tuple().
--type aliases() :: [{any(), any()}].
--type negations() :: [{any(), any()}].
--type expansions() :: [{property(), [any()]}].
-
%% ---------------------------------------------------------------------
-%% @spec property(P::property()) -> property()
-%%
%% @doc Creates a normal form (minimal) representation of a property. If
%% <code>P</code> is <code>{Key, true}</code> where <code>Key</code> is
%% an atom, this returns <code>Key</code>, otherwise the whole term
@@ -68,7 +62,8 @@
%%
%% @see property/2
--spec property(property()) -> property().
+-spec property(Property) -> Property when
+ Property :: property().
property({Key, true}) when is_atom(Key) ->
Key;
@@ -76,8 +71,6 @@ property(Property) ->
Property.
-%% @spec property(Key::term(), Value::term()) -> property()
-%%
%% @doc Creates a normal form (minimal) representation of a simple
%% key/value property. Returns <code>Key</code> if <code>Value</code> is
%% <code>true</code> and <code>Key</code> is an atom, otherwise a tuple
@@ -85,7 +78,10 @@ property(Property) ->
%%
%% @see property/1
--spec property(Key::term(), Value::term()) -> atom() | {term(), term()}.
+-spec property(Key, Value) -> Property when
+ Key :: term(),
+ Value :: term(),
+ Property :: atom() | {term(), term()}.
property(Key, true) when is_atom(Key) ->
Key;
@@ -95,14 +91,13 @@ property(Key, Value) ->
%% ---------------------------------------------------------------------
-%% @spec unfold(List::[term()]) -> [term()]
-%%
%% @doc Unfolds all occurences of atoms in <code>List</code> to tuples
%% <code>{Atom, true}</code>.
%%
%% @see compact/1
--spec unfold(List::[term()]) -> [term()].
+-spec unfold(List) -> List when
+ List :: [term()].
unfold([P | Ps]) ->
if is_atom(P) ->
@@ -113,15 +108,14 @@ unfold([P | Ps]) ->
unfold([]) ->
[].
-%% @spec compact(List::[term()]) -> [term()]
-%%
%% @doc Minimizes the representation of all entries in the list. This is
%% equivalent to <code>[property(P) || P &lt;- List]</code>.
%%
%% @see unfold/1
%% @see property/1
--spec compact(List::[property()]) -> [property()].
+-spec compact(List) -> List when
+ List :: [property()].
compact(List) ->
[property(P) || P <- List].
@@ -129,8 +123,6 @@ compact(List) ->
%% ---------------------------------------------------------------------
-%% @spec lookup(Key::term(), List::[term()]) -> none | tuple()
-%%
%% @doc Returns the first entry associated with <code>Key</code> in
%% <code>List</code>, if one exists, otherwise returns
%% <code>none</code>. For an atom <code>A</code> in the list, the tuple
@@ -140,7 +132,9 @@ compact(List) ->
%% @see get_value/2
%% @see get_bool/2
--spec lookup(Key::term(), List::[term()]) -> 'none' | tuple().
+-spec lookup(Key, List) -> 'none' | tuple() when
+ Key :: term(),
+ List :: [term()].
lookup(Key, [P | Ps]) ->
if is_atom(P), P =:= Key ->
@@ -154,15 +148,15 @@ lookup(Key, [P | Ps]) ->
lookup(_Key, []) ->
none.
-%% @spec lookup_all(Key::term(), List::[term()]) -> [tuple()]
-%%
%% @doc Returns the list of all entries associated with <code>Key</code>
%% in <code>List</code>. If no such entry exists, the result is the
%% empty list.
%%
%% @see lookup/2
--spec lookup_all(Key::term(), List::[term()]) -> [tuple()].
+-spec lookup_all(Key, List) -> [tuple()] when
+ Key :: term(),
+ List :: [term()].
lookup_all(Key, [P | Ps]) ->
if is_atom(P), P =:= Key ->
@@ -178,13 +172,13 @@ lookup_all(_Key, []) ->
%% ---------------------------------------------------------------------
-%% @spec is_defined(Key::term(), List::[term()]) -> boolean()
-%%
%% @doc Returns <code>true</code> if <code>List</code> contains at least
%% one entry associated with <code>Key</code>, otherwise
%% <code>false</code> is returned.
--spec is_defined(Key::term(), List::[term()]) -> boolean().
+-spec is_defined(Key, List) -> boolean() when
+ Key :: term(),
+ List :: [term()].
is_defined(Key, [P | Ps]) ->
if is_atom(P), P =:= Key ->
@@ -200,17 +194,15 @@ is_defined(_Key, []) ->
%% ---------------------------------------------------------------------
-%% @spec get_value(Key::term(), List::[term()]) -> term()
%% @equiv get_value(Key, List, undefined)
--spec get_value(Key::term(), List::[term()]) -> term().
+-spec get_value(Key, List) -> term() when
+ Key :: term(),
+ List :: List::[term()].
get_value(Key, List) ->
get_value(Key, List, undefined).
-%% @spec get_value(Key::term(), List::[term()], Default::term()) ->
-%% term()
-%%
%% @doc Returns the value of a simple key/value property in
%% <code>List</code>. If <code>lookup(Key, List)</code> would yield
%% <code>{Key, Value}</code>, this function returns the corresponding
@@ -221,7 +213,10 @@ get_value(Key, List) ->
%% @see get_all_values/2
%% @see get_bool/2
--spec get_value(Key::term(), List::[term()], Default::term()) -> term().
+-spec get_value(Key, List, Default) -> term() when
+ Key :: term(),
+ List :: [term()],
+ Default :: term().
get_value(Key, [P | Ps], Default) ->
if is_atom(P), P =:= Key ->
@@ -240,8 +235,6 @@ get_value(Key, [P | Ps], Default) ->
get_value(_Key, [], Default) ->
Default.
-%% @spec get_all_values(Key, List) -> [term()]
-%%
%% @doc Similar to <code>get_value/2</code>, but returns the list of
%% values for <em>all</em> entries <code>{Key, Value}</code> in
%% <code>List</code>. If no such entry exists, the result is the empty
@@ -249,7 +242,9 @@ get_value(_Key, [], Default) ->
%%
%% @see get_value/2
--spec get_all_values(Key::term(), List::[term()]) -> [term()].
+-spec get_all_values(Key, List) -> [term()] when
+ Key :: term(),
+ List :: [term()].
get_all_values(Key, [P | Ps]) ->
if is_atom(P), P =:= Key ->
@@ -267,8 +262,6 @@ get_all_values(Key, [P | Ps]) ->
get_all_values(_Key, []) ->
[].
-%% @spec append_values(Key::term(), List::[term()]) -> [term()]
-%%
%% @doc Similar to <code>get_all_values/2</code>, but each value is
%% wrapped in a list unless it is already itself a list, and the
%% resulting list of lists is concatenated. This is often useful for
@@ -278,7 +271,9 @@ get_all_values(_Key, []) ->
%%
%% @see get_all_values/2
--spec append_values(Key::term(), List::[term()]) -> [term()].
+-spec append_values(Key, List) -> List when
+ Key :: term(),
+ List :: [term()].
append_values(Key, [P | Ps]) ->
if is_atom(P), P =:= Key ->
@@ -301,8 +296,6 @@ append_values(_Key, []) ->
%% ---------------------------------------------------------------------
-%% @spec get_bool(Key::term(), List::[term()]) -> boolean()
-%%
%% @doc Returns the value of a boolean key/value option. If
%% <code>lookup(Key, List)</code> would yield <code>{Key, true}</code>,
%% this function returns <code>true</code>; otherwise <code>false</code>
@@ -311,7 +304,9 @@ append_values(_Key, []) ->
%% @see lookup/2
%% @see get_value/2
--spec get_bool(Key::term(), List::[term()]) -> boolean().
+-spec get_bool(Key, List) -> boolean() when
+ Key :: term(),
+ List :: [term()].
get_bool(Key, [P | Ps]) ->
if is_atom(P), P =:= Key ->
@@ -333,12 +328,11 @@ get_bool(_Key, []) ->
%% ---------------------------------------------------------------------
-%% @spec get_keys(List::[term()]) -> [term()]
-%%
%% @doc Returns an unordered list of the keys used in <code>List</code>,
%% not containing duplicates.
--spec get_keys(List::[term()]) -> [term()].
+-spec get_keys(List) -> [term()] when
+ List :: [term()].
get_keys(Ps) ->
sets:to_list(get_keys(Ps, sets:new())).
@@ -357,12 +351,12 @@ get_keys([], Keys) ->
%% ---------------------------------------------------------------------
-%% @spec delete(Key::term(), List::[term()]) -> [term()]
-%%
%% @doc Deletes all entries associated with <code>Key</code> from
%% <code>List</code>.
--spec delete(Key::term(), List::[term()]) -> [term()].
+-spec delete(Key, List) -> List when
+ Key :: term(),
+ List::[term()].
delete(Key, [P | Ps]) ->
if is_atom(P), P =:= Key ->
@@ -378,11 +372,6 @@ delete(_, []) ->
%% ---------------------------------------------------------------------
-%% @spec substitute_aliases(Aliases, List::[term()]) -> [term()]
-%%
-%% Aliases = [{Key, Key}]
-%% Key = term()
-%%
%% @doc Substitutes keys of properties. For each entry in
%% <code>List</code>, if it is associated with some key <code>K1</code>
%% such that <code>{K1, K2}</code> occurs in <code>Aliases</code>, the
@@ -398,7 +387,10 @@ delete(_, []) ->
%% @see substitute_negations/2
%% @see normalize/2
--spec substitute_aliases(aliases(), List::[term()]) -> [term()].
+-spec substitute_aliases(Aliases, List) -> List when
+ Aliases :: [{Key, Key}],
+ Key :: term(),
+ List::[term()].
substitute_aliases(As, Props) ->
[substitute_aliases_1(As, P) || P <- Props].
@@ -417,11 +409,6 @@ substitute_aliases_1([], P) ->
%% ---------------------------------------------------------------------
-%% @spec substitute_negations(Negations, List::[term()]) -> [term()]
-%%
-%% Negations = [{Key, Key}]
-%% Key = term()
-%%
%% @doc Substitutes keys of boolean-valued properties and simultaneously
%% negates their values. For each entry in <code>List</code>, if it is
%% associated with some key <code>K1</code> such that <code>{K1,
@@ -443,7 +430,10 @@ substitute_aliases_1([], P) ->
%% @see substitute_aliases/2
%% @see normalize/2
--spec substitute_negations(negations(), List::[term()]) -> [term()].
+-spec substitute_negations(Negations, List) -> List when
+ Negations :: [{Key, Key}],
+ Key :: term(),
+ List :: [term()].
substitute_negations(As, Props) ->
[substitute_negations_1(As, P) || P <- Props].
@@ -472,10 +462,6 @@ substitute_negations_1([], P) ->
%% ---------------------------------------------------------------------
-%% @spec expand(Expansions, List::[term()]) -> [term()]
-%%
-%% Expansions = [{property(), [term()]}]
-%%
%% @doc Expands particular properties to corresponding sets of
%% properties (or other terms). For each pair <code>{Property,
%% Expansion}</code> in <code>Expansions</code>, if <code>E</code> is
@@ -510,7 +496,9 @@ substitute_negations_1([], P) ->
%%
%% @see normalize/2
--spec expand(Expansions::expansions(), [term()]) -> [term()].
+-spec expand(Expansions, List) -> List when
+ Expansions :: [{Property :: property(), Expansion :: [term()]}],
+ List :: [term()].
expand(Es, Ps) when is_list(Ps) ->
Es1 = [{property(P), V} || {P, V} <- Es],
@@ -589,15 +577,6 @@ flatten([]) ->
%% ---------------------------------------------------------------------
-%% @spec normalize(List::[term()], Stages::[Operation]) -> [term()]
-%%
-%% Operation = {aliases, Aliases} | {negations, Negations}
-%% | {expand, Expansions}
-%% Aliases = [{Key, Key}]
-%% Negations = [{Key, Key}]
-%% Key = term()
-%% Expansions = [{property(), [term()]}]
-%%
%% @doc Passes <code>List</code> through a sequence of
%% substitution/expansion stages. For an <code>aliases</code> operation,
%% the function <code>substitute_aliases/2</code> is applied using the
@@ -619,11 +598,15 @@ flatten([]) ->
%% @see expand/2
%% @see compact/1
--type operation() :: {'aliases', aliases()}
- | {'negations', negations()}
- | {'expand', expansions()}.
-
--spec normalize(List::[term()], Stages::[operation()]) -> [term()].
+-spec normalize(List, Stages) -> List when
+ List :: [term()],
+ Stages :: [Operation],
+ Operation :: {'aliases', Aliases}
+ | {'negations', Negations}
+ | {'expand', Expansions},
+ Aliases :: [{Key, Key}],
+ Negations :: [{Key, Key}],
+ Expansions :: [{Property :: property(), Expansion :: [term()]}].
normalize(L, [{aliases, As} | Xs]) ->
normalize(substitute_aliases(As, L), Xs);
@@ -636,10 +619,6 @@ normalize(L, []) ->
%% ---------------------------------------------------------------------
-%% @spec split(List::[term()], Keys::[term()]) -> {Lists, Rest}
-%% Lists = [[term()]]
-%% Rest = [term()]
-%%
%% @doc Partitions <code>List</code> into a list of sublists and a
%% remainder. <code>Lists</code> contains one sublist for each key in
%% <code>Keys</code>, in the corresponding order. The relative order of
@@ -654,7 +633,11 @@ normalize(L, []) ->
%% {[[a], [{b, 5}, b],[{c, 2}, {c, 3, 4}]], [{e, 1}, d]}</pre>
%% </p>
--spec split(List::[term()], Keys::[term()]) -> {[[term()]], [term()]}.
+-spec split(List, Keys) -> {Lists, Rest} when
+ List :: [term()],
+ Keys :: [term()],
+ Lists :: [[term()]],
+ Rest :: [term()].
split(List, Keys) ->
{Store, Rest} = split(List, dict:from_list([{K, []} || K <- Keys]), []),
diff --git a/lib/stdlib/src/qlc.erl b/lib/stdlib/src/qlc.erl
index bc6944e520..5ca04ff023 100644
--- a/lib/stdlib/src/qlc.erl
+++ b/lib/stdlib/src/qlc.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2004-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -60,7 +60,7 @@
-record(qlc_table, % qlc:table/2
{trav_fun, % traverse fun
- trav_MS, % bool(); true iff traverse fun takes a match spec
+ trav_MS, % boolean(); true iff traverse fun takes a match spec
pre_fun,
post_fun,
info_fun,
@@ -110,12 +110,12 @@
-record(qlc_cursor, {c}).
-record(qlc_opt,
- {unique = false, % bool()
- cache = false, % bool() | list (true~ets, false~no)
+ {unique = false, % boolean()
+ cache = false, % boolean() | list (true~ets, false~no)
max_lookup = -1, % int() >= 0 | -1 (represents infinity)
join = any, % any | nested_loop | merge | lookup
tmpdir = "", % global tmpdir
- lookup = any, % any | bool()
+ lookup = any, % any | boolean()
max_list = ?MAX_LIST_SIZE, % int() >= 0
tmpdir_usage = allowed % allowed | not_allowed
% | warning_msg | error_msg | info_msg
@@ -125,6 +125,8 @@
-define(THROWN_ERROR, {?MODULE, throw_error, _}).
+-export_type([query_handle/0]).
+
%%% A query handle is a tuple {qlc_handle, Handle} where Handle is one
%%% of #qlc_append, #qlc_table, #qlc_sort, and #qlc_lc.
@@ -144,6 +146,35 @@ get_handle(_) ->
%%% Exported functions
%%%
+-type(query_list_comprehension() :: term()).
+-opaque(query_cursor() :: {qlc_cursor, term()}).
+-opaque(query_handle() :: {qlc_handle, term()}).
+-type(query_handle_or_list() :: query_handle() | list()).
+-type(answers() :: [answer()]).
+-type(answer() :: term()).
+-type(abstract_expr() :: erl_parse:abstract_expr()).
+-type(match_expression() :: ets:match_spec()).
+-type(spawn_options() :: default | [proc_lib:spawn_option()]).
+-type(sort_options() :: [sort_option()] | sort_option()).
+-type(sort_option() :: {compressed, boolean()}
+ | {no_files, no_files()}
+ | {order, order()}
+ | {size, pos_integer()}
+ | {tmpdir, tmp_directory()}
+ | {unique, boolean()}).
+-type(order() :: ascending | descending | order_fun()).
+-type(order_fun() :: fun((term(), term()) -> boolean())).
+-type(tmp_directory() :: [] | file:name()).
+-type(no_files() :: pos_integer()). % > 1
+-type(key_pos() :: pos_integer() | [pos_integer()]).
+-type(max_list_size() :: non_neg_integer()).
+-type(cache() :: ets | list | no).
+-type(tmp_file_usage() :: allowed | not_allowed | info_msg
+ | warning_msg | error_msg).
+
+-spec(append(QHL) -> QH when
+ QHL :: [query_handle_or_list()],
+ QH :: query_handle()).
append(QHs) ->
Hs = [case get_handle(QH) of
badarg -> erlang:error(badarg, [QHs]);
@@ -151,6 +182,10 @@ append(QHs) ->
end || QH <- QHs],
#qlc_handle{h = #qlc_append{hl = Hs}}.
+-spec(append(QH1, QH2) -> QH3 when
+ QH1 :: query_handle_or_list(),
+ QH2 :: query_handle_or_list(),
+ QH3 :: query_handle()).
append(QH1, QH2) ->
Hs = [case get_handle(QH) of
badarg -> erlang:error(badarg, [QH1, QH2]);
@@ -158,9 +193,22 @@ append(QH1, QH2) ->
end || QH <- [QH1, QH2]],
#qlc_handle{h = #qlc_append{hl = Hs}}.
+-spec(cursor(QH) -> Cursor when
+ QH :: query_handle_or_list(),
+ Cursor :: query_cursor()).
cursor(QH) ->
cursor(QH, []).
+-spec(cursor(QH, Options) -> Cursor when
+ QH :: query_handle_or_list(),
+ Options :: [Option] | Option,
+ Option :: {cache_all, cache()} | cache_all
+ | {max_list_size, max_list_size()}
+ | {spawn_options, spawn_options()}
+ | {tmpdir_usage, tmp_file_usage()}
+ | {tmpdir, tmp_directory()}
+ | {unique_all, boolean()} | unique_all,
+ Cursor :: query_cursor()).
cursor(QH, Options) ->
case {options(Options, [unique_all, cache_all, tmpdir,
spawn_options, max_list_size,
@@ -179,6 +227,8 @@ cursor(QH, Options) ->
end
end.
+-spec(delete_cursor(QueryCursor) -> ok when
+ QueryCursor :: query_cursor()).
delete_cursor(#qlc_cursor{c = {_, Owner}}=C) when Owner =/= self() ->
erlang:error(not_cursor_owner, [C]);
delete_cursor(#qlc_cursor{c = {Pid, _}}) ->
@@ -186,15 +236,47 @@ delete_cursor(#qlc_cursor{c = {Pid, _}}) ->
delete_cursor(T) ->
erlang:error(badarg, [T]).
+-spec(e(QH) -> Answers | Error when
+ QH :: query_handle_or_list(),
+ Answers :: answers(),
+ Error :: {error, module(), Reason},
+ Reason :: file_sorter:reason()).
e(QH) ->
eval(QH, []).
+-spec(e(QH, Options) -> Answers | Error when
+ QH :: query_handle_or_list(),
+ Options :: [Option] | Option,
+ Option :: {cache_all, cache()} | cache_all
+ | {max_list_size, max_list_size()}
+ | {tmpdir_usage, tmp_file_usage()}
+ | {tmpdir, tmp_directory()}
+ | {unique_all, boolean()} | unique_all,
+ Answers :: answers(),
+ Error :: {error, module(), Reason},
+ Reason :: file_sorter:reason()).
e(QH, Options) ->
eval(QH, Options).
+-spec(eval(QH) -> Answers | Error when
+ QH :: query_handle_or_list(),
+ Answers :: answers(),
+ Error :: {error, module(), Reason},
+ Reason :: file_sorter:reason()).
eval(QH) ->
eval(QH, []).
+-spec(eval(QH, Options) -> Answers | Error when
+ QH :: query_handle_or_list(),
+ Answers :: answers(),
+ Options :: [Option] | Option,
+ Option :: {cache_all, cache()} | cache_all
+ | {max_list_size, max_list_size()}
+ | {tmpdir_usage, tmp_file_usage()}
+ | {tmpdir, tmp_directory()}
+ | {unique_all, boolean()} | unique_all,
+ Error :: {error, module(), Reason},
+ Reason :: file_sorter:reason()).
eval(QH, Options) ->
case {options(Options, [unique_all, cache_all, tmpdir, max_list_size,
tmpdir_usage]),
@@ -226,9 +308,35 @@ eval(QH, Options) ->
end
end.
+-spec(fold(Function, Acc0, QH) ->
+ Acc1 | Error when
+ QH :: query_handle_or_list(),
+ Function :: fun((answer(), AccIn) -> AccOut),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ Error :: {error, module(), Reason},
+ Reason :: file_sorter:reason()).
fold(Fun, Acc0, QH) ->
fold(Fun, Acc0, QH, []).
+-spec(fold(Function, Acc0, QH, Options) ->
+ Acc1 | Error when
+ QH :: query_handle_or_list(),
+ Function :: fun((answer(), AccIn) -> AccOut),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ Options :: [Option] | Option,
+ Option :: {cache_all, cache()} | cache_all
+ | {max_list_size, max_list_size()}
+ | {tmpdir_usage, tmp_file_usage()}
+ | {tmpdir, tmp_directory()}
+ | {unique_all, boolean()} | unique_all,
+ Error :: {error, module(), Reason},
+ Reason :: file_sorter:reason()).
fold(Fun, Acc0, QH, Options) ->
case {options(Options, [unique_all, cache_all, tmpdir, max_list_size,
tmpdir_usage]),
@@ -258,6 +366,9 @@ fold(Fun, Acc0, QH, Options) ->
end
end.
+-spec(format_error(Error) -> Chars when
+ Error :: {error, module(), term()},
+ Chars :: io_lib:chars()).
format_error(not_a_query_list_comprehension) ->
io_lib:format("argument is not a query list comprehension", []);
format_error({used_generator_variable, V}) ->
@@ -295,9 +406,29 @@ format_error({error, Module, Reason}) ->
format_error(E) ->
io_lib:format("~p~n", [E]).
+-spec(info(QH) -> Info when
+ QH :: query_handle_or_list(),
+ Info :: abstract_expr() | string()).
info(QH) ->
info(QH, []).
+-spec(info(QH, Options) -> Info when
+ QH :: query_handle_or_list(),
+ Options :: [Option] | Option,
+ Option :: EvalOption | ReturnOption,
+ EvalOption :: {cache_all, cache()} | cache_all
+ | {max_list_size, max_list_size()}
+ | {tmpdir_usage, tmp_file_usage()}
+ | {tmpdir, tmp_directory()}
+ | {unique_all, boolean()} | unique_all,
+ ReturnOption :: {depth, Depth}
+ | {flat, boolean()}
+ | {format, Format}
+ | {n_elements, NElements},
+ Depth :: infinity | non_neg_integer(),
+ Format :: abstract_code | string,
+ NElements :: infinity | pos_integer(),
+ Info :: abstract_expr() | string()).
info(QH, Options) ->
case {options(Options, [unique_all, cache_all, flat, format, n_elements,
depth, tmpdir, max_list_size, tmpdir_usage]),
@@ -333,9 +464,18 @@ info(QH, Options) ->
end
end.
+-spec(keysort(KeyPos, QH1) -> QH2 when
+ KeyPos :: key_pos(),
+ QH1 :: query_handle_or_list(),
+ QH2 :: query_handle()).
keysort(KeyPos, QH) ->
keysort(KeyPos, QH, []).
+-spec(keysort(KeyPos, QH1, SortOptions) -> QH2 when
+ KeyPos :: key_pos(),
+ SortOptions :: sort_options(),
+ QH1 :: query_handle_or_list(),
+ QH2 :: query_handle()).
keysort(KeyPos, QH, Options) ->
case {is_keypos(KeyPos),
options(Options, [tmpdir, order, unique, compressed,
@@ -354,9 +494,22 @@ keysort(KeyPos, QH, Options) ->
-define(DEFAULT_NUM_OF_ANSWERS, 10).
+-spec(next_answers(QueryCursor) ->
+ Answers | Error when
+ QueryCursor :: query_cursor(),
+ Answers :: answers(),
+ Error :: {error, module(), Reason},
+ Reason :: file_sorter:reason()).
next_answers(C) ->
next_answers(C, ?DEFAULT_NUM_OF_ANSWERS).
+-spec(next_answers(QueryCursor, NumberOfAnswers) ->
+ Answers | Error when
+ QueryCursor :: query_cursor(),
+ Answers :: answers(),
+ NumberOfAnswers :: all_remaining | pos_integer(),
+ Error :: {error, module(), Reason},
+ Reason :: file_sorter:reason()).
next_answers(#qlc_cursor{c = {_, Owner}}=C,
NumOfAnswers) when Owner =/= self() ->
erlang:error(not_cursor_owner, [C, NumOfAnswers]);
@@ -370,14 +523,35 @@ next_answers(#qlc_cursor{c = {Pid, _}}=C, NumOfAnswers) ->
next_answers(T1, T2) ->
erlang:error(badarg, [T1, T2]).
+-spec(parse_transform(Forms, Options) -> Forms2 when
+ Forms :: [erl_parse:abstract_form()],
+ Forms2 :: [erl_parse:abstract_form()],
+ Options :: [Option],
+ Option :: type_checker | compile:option()).
+
parse_transform(Forms, Options) ->
qlc_pt:parse_transform(Forms, Options).
%% The funcspecs qlc:q/1 and qlc:q/2 are known by erl_eval.erl and
%% erl_lint.erl.
+-spec(q(QLC) -> QH when
+ QLC :: query_list_comprehension(),
+ QH :: query_handle()).
q(QLC_lc) ->
q(QLC_lc, []).
+-spec(q(QLC, Options) -> QH when
+ QH :: query_handle(),
+ Options :: [Option] | Option,
+ Option :: {max_lookup, MaxLookup}
+ | {cache, cache()} | cache
+ | {join, Join}
+ | {lookup, Lookup}
+ | {unique, boolean()} | unique,
+ MaxLookup :: non_neg_integer() | infinity,
+ Join :: any | lookup | merge | nested_loop,
+ Lookup :: boolean() | any,
+ QLC :: query_list_comprehension()).
q(#qlc_lc{}=QLC_lc, Options) ->
case options(Options, [unique, cache, max_lookup, join, lookup]) of
[Unique, Cache, Max, Join, Lookup] ->
@@ -390,9 +564,16 @@ q(#qlc_lc{}=QLC_lc, Options) ->
q(T1, T2) ->
erlang:error(badarg, [T1, T2]).
+-spec(sort(QH1) -> QH2 when
+ QH1 :: query_handle_or_list(),
+ QH2 :: query_handle()).
sort(QH) ->
sort(QH, []).
+-spec(sort(QH1, SortOptions) -> QH2 when
+ SortOptions :: sort_options(),
+ QH1 :: query_handle_or_list(),
+ QH2 :: query_handle()).
sort(QH, Options) ->
case {options(Options, [tmpdir, order, unique, compressed,
size, no_files]), get_handle(QH)} of
@@ -406,14 +587,47 @@ sort(QH, Options) ->
end.
%% Note that the generated code is evaluated by (the slow) erl_eval.
+-spec(string_to_handle(QueryString) -> QH | Error when
+ QueryString :: string(),
+ QH :: query_handle(),
+ Error :: {error, module(), Reason},
+ Reason :: erl_parse:error_info() | erl_scan:error_info()).
string_to_handle(Str) ->
string_to_handle(Str, []).
+-spec(string_to_handle(QueryString, Options) -> QH | Error when
+ QueryString :: string(),
+ Options :: [Option] | Option,
+ Option :: {max_lookup, MaxLookup}
+ | {cache, cache()} | cache
+ | {join, Join}
+ | {lookup, Lookup}
+ | {unique, boolean()} | unique,
+ MaxLookup :: non_neg_integer() | infinity,
+ Join :: any | lookup | merge | nested_loop,
+ Lookup :: boolean() | any,
+ QH :: query_handle(),
+ Error :: {error, module(), Reason},
+ Reason :: erl_parse:error_info() | erl_scan:error_info()).
string_to_handle(Str, Options) ->
- string_to_handle(Str, Options, []).
-
-string_to_handle(Str, Options, Bindings) when is_list(Str),
- is_list(Bindings) ->
+ string_to_handle(Str, Options, erl_eval:new_bindings()).
+
+-spec(string_to_handle(QueryString, Options, Bindings) -> QH | Error when
+ QueryString :: string(),
+ Options :: [Option] | Option,
+ Option :: {max_lookup, MaxLookup}
+ | {cache, cache()} | cache
+ | {join, Join}
+ | {lookup, Lookup}
+ | {unique, boolean()} | unique,
+ MaxLookup :: non_neg_integer() | infinity,
+ Join :: any | lookup | merge | nested_loop,
+ Lookup :: boolean() | any,
+ Bindings :: erl_eval:binding_struct(),
+ QH :: query_handle(),
+ Error :: {error, module(), Reason},
+ Reason :: erl_parse:error_info() | erl_scan:error_info()).
+string_to_handle(Str, Options, Bindings) when is_list(Str) ->
case options(Options, [unique, cache, max_lookup, join, lookup]) of
badarg ->
erlang:error(badarg, [Str, Options, Bindings]);
@@ -447,6 +661,51 @@ string_to_handle(Str, Options, Bindings) when is_list(Str),
string_to_handle(T1, T2, T3) ->
erlang:error(badarg, [T1, T2, T3]).
+-spec(table(TraverseFun, Options) -> QH when
+ TraverseFun :: TraverseFun0 | TraverseFun1,
+ TraverseFun0 :: fun(() -> TraverseResult),
+ TraverseFun1 :: fun((match_expression()) -> TraverseResult),
+ TraverseResult :: Objects | term(),
+ Objects :: [] | [term() | ObjectList],
+ ObjectList :: TraverseFun0 | Objects,
+ Options :: [Option] | Option,
+ Option :: {format_fun, FormatFun}
+ | {info_fun, InfoFun}
+ | {lookup_fun, LookupFun}
+ | {parent_fun, ParentFun}
+ | {post_fun, PostFun}
+ | {pre_fun, PreFun}
+ | {key_equality, KeyComparison},
+ FormatFun :: undefined | fun((SelectedObjects) -> FormatedTable),
+ SelectedObjects :: all
+ | {all, NElements, DepthFun}
+ | {match_spec, match_expression()}
+ | {lookup, Position, Keys}
+ | {lookup, Position, Keys, NElements, DepthFun},
+ NElements :: infinity | pos_integer(),
+ DepthFun :: fun((term()) -> term()),
+ FormatedTable :: {Mod, Fun, Args}
+ | abstract_expr()
+ | string(),
+ InfoFun :: undefined | fun((InfoTag) -> InfoValue),
+ InfoTag :: indices | is_unique_objects | keypos | num_of_objects,
+ InfoValue :: undefined | term(),
+ LookupFun :: undefined | fun((Position, Keys) -> LookupResult),
+ LookupResult :: [term()] | term(),
+ ParentFun :: undefined | fun(() -> ParentFunValue),
+ PostFun :: undefined | fun(() -> term()),
+ PreFun :: undefined | fun((PreArgs) -> term()),
+ PreArgs :: [PreArg],
+ PreArg :: {parent_value, ParentFunValue} | {stop_fun, StopFun},
+ ParentFunValue :: undefined | term(),
+ StopFun :: undefined | fun(() -> term()),
+ KeyComparison :: '=:=' | '==',
+ Position :: pos_integer(),
+ Keys :: [term()],
+ Mod :: atom(),
+ Fun :: atom(),
+ Args :: [term()],
+ QH :: query_handle()).
table(TraverseFun, Options) when is_function(TraverseFun) ->
case {is_function(TraverseFun, 0),
IsFun1 = is_function(TraverseFun, 1)} of
@@ -472,6 +731,11 @@ table(TraverseFun, Options) when is_function(TraverseFun) ->
table(T1, T2) ->
erlang:error(badarg, [T1, T2]).
+-spec(transform_from_evaluator(LC, Bs) -> Expr when
+ LC :: abstract_expr(),
+ Expr :: abstract_expr(),
+ Bs :: erl_eval:binding_struct()).
+
transform_from_evaluator(LC, Bs0) ->
qlc_pt:transform_from_evaluator(LC, Bs0).
@@ -722,8 +986,8 @@ listify(T) ->
%% Optimizations to be carried out.
-record(optz,
- {unique = false, % bool()
- cache = false, % bool() | list
+ {unique = false, % boolean()
+ cache = false, % boolean() | list
join_option = any, % constraint set by the 'join' option
fast_join = no, % no | #qlc_join. 'no' means nested loop.
opt % #qlc_opt
@@ -756,8 +1020,8 @@ listify(T) ->
lu_skip_quals = [], % qualifiers to skip due to lookup
join = {[],[]}, % {Lookup, Merge}
n_objs = undefined, % for join (not used yet)
- is_unique_objects = false, % bool()
- is_cached = false % bool() (true means 'ets' or 'list')
+ is_unique_objects = false, % boolean()
+ is_cached = false % boolean() (true means 'ets' or 'list')
}).
%%% Cursor process functions.
@@ -1143,20 +1407,20 @@ monitor_request(Pid, Req) ->
%% QueryDesc = {qlc, TemplateDesc, [QualDesc], [QueryOpt]}
%% | {table, TableDesc}
%% | {append, [QueryDesc]}
-%% | {sort, QueryDesc, [SortOption]}
-%% | {keysort, KeyPos, QueryDesc, [SortOption]}
+%% | {sort, QueryDesc, [sort_option()]}
+%% | {keysort, key_pos(), QueryDesc, [sort_option()]}
%% | {list, list()}
-%% | {list, QueryDesc, MatchExpression}
+%% | {list, QueryDesc, match_expression()}
%% TableDesc = {Mod, Fun, Args}
-%% | AbstractExpression
-%% | character_list()
+%% | erl_parse:abstract_expr()
+%% | string()
%% Mod = module()
%% Fun = atom()
%% Args = [term()]
%% QualDesc = FilterDesc
%% | {generate, PatternDesc, QueryDesc}
-%% QueryOpt = {cache, bool()} | cache
-%% | {unique, bool()} | unique
+%% QueryOpt = {cache, boolean()} | cache
+%% | {unique, boolean()} | unique
%% FilterDesc = PatternDesc = TemplateDesc = binary()
le_info(#prepared{qh = #simple_qlc{le = LE, p = P, line = L, optz = Optz}},
diff --git a/lib/stdlib/src/qlc_pt.erl b/lib/stdlib/src/qlc_pt.erl
index 24378a0698..21504d707b 100644
--- a/lib/stdlib/src/qlc_pt.erl
+++ b/lib/stdlib/src/qlc_pt.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2004-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -63,6 +63,12 @@
%%% Exported functions
%%%
+-spec(parse_transform(Forms, Options) -> Forms2 when
+ Forms :: [erl_parse:abstract_form()],
+ Forms2 :: [erl_parse:abstract_form()],
+ Options :: [Option],
+ Option :: type_checker | compile:option()).
+
parse_transform(Forms, Options) ->
?DEBUG("qlc Parse Transform~n", []),
State = #state{imp = is_qlc_q_imported(Forms),
@@ -96,10 +102,20 @@ parse_transform(Forms, Options) ->
end
end.
+-spec(transform_from_evaluator(LC, Bs) -> Expr when
+ LC :: erl_parse:abstract_expr(),
+ Expr :: erl_parse:abstract_expr(),
+ Bs :: erl_eval:binding_struct()).
+
transform_from_evaluator(LC, Bindings) ->
?DEBUG("qlc Parse Transform (Evaluator Version)~n", []),
transform_expression(LC, Bindings, false).
+-spec(transform_expression(LC, Bs) -> Expr when
+ LC :: erl_parse:abstract_expr(),
+ Expr :: erl_parse:abstract_expr(),
+ Bs :: erl_eval:binding_struct()).
+
transform_expression(LC, Bindings) ->
transform_expression(LC, Bindings, true).
diff --git a/lib/stdlib/src/queue.erl b/lib/stdlib/src/queue.erl
index c09079e8d2..4c6b4d710b 100644
--- a/lib/stdlib/src/queue.erl
+++ b/lib/stdlib/src/queue.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -56,14 +56,16 @@
new() -> {[],[]}. %{RearList,FrontList}
%% O(1)
--spec is_queue(term()) -> boolean().
+-spec is_queue(Term) -> boolean() when
+ Term :: term().
is_queue({R,F}) when is_list(R), is_list(F) ->
true;
is_queue(_) ->
false.
%% O(1)
--spec is_empty(queue()) -> boolean().
+-spec is_empty(Q) -> boolean() when
+ Q :: queue().
is_empty({[],[]}) ->
true;
is_empty({In,Out}) when is_list(In), is_list(Out) ->
@@ -72,14 +74,16 @@ is_empty(Q) ->
erlang:error(badarg, [Q]).
%% O(len(Q))
--spec len(queue()) -> non_neg_integer().
+-spec len(Q) -> non_neg_integer() when
+ Q :: queue().
len({R,F}) when is_list(R), is_list(F) ->
length(R)+length(F);
len(Q) ->
erlang:error(badarg, [Q]).
%% O(len(Q))
--spec to_list(queue()) -> list().
+-spec to_list(Q) -> list() when
+ Q :: queue().
to_list({In,Out}) when is_list(In), is_list(Out) ->
Out++lists:reverse(In, []);
to_list(Q) ->
@@ -88,7 +92,8 @@ to_list(Q) ->
%% Create queue from list
%%
%% O(length(L))
--spec from_list(list()) -> queue().
+-spec from_list(L) -> queue() when
+ L :: list().
from_list(L) when is_list(L) ->
f2r(L);
from_list(L) ->
@@ -97,7 +102,9 @@ from_list(L) ->
%% Return true or false depending on if element is in queue
%%
%% O(length(Q)) worst case
--spec member(term(), queue()) -> boolean().
+-spec member(Item, Q) -> boolean() when
+ Item :: term(),
+ Q :: queue().
member(X, {R,F}) when is_list(R), is_list(F) ->
lists:member(X, R) orelse lists:member(X, F);
member(X, Q) ->
@@ -110,7 +117,10 @@ member(X, Q) ->
%% Put at least one element in each list, if it is cheap
%%
%% O(1)
--spec in(term(), queue()) -> queue().
+-spec in(Item, Q1) -> Q2 when
+ Item :: term(),
+ Q1 :: queue(),
+ Q2 :: queue().
in(X, {[_]=In,[]}) ->
{[X], In};
in(X, {In,Out}) when is_list(In), is_list(Out) ->
@@ -122,7 +132,10 @@ in(X, Q) ->
%% Put at least one element in each list, if it is cheap
%%
%% O(1)
--spec in_r(term(), queue()) -> queue().
+-spec in_r(Item, Q1) -> Q2 when
+ Item :: term(),
+ Q1 :: queue(),
+ Q2 :: queue().
in_r(X, {[],[_]=F}) ->
{F,[X]};
in_r(X, {R,F}) when is_list(R), is_list(F) ->
@@ -133,7 +146,10 @@ in_r(X, Q) ->
%% Take from head/front
%%
%% O(1) amortized, O(len(Q)) worst case
--spec out(queue()) -> {'empty' | {'value',term()}, queue()}.
+-spec out(Q1) -> Result when
+ Q1 :: queue(),
+ Q2 :: queue(),
+ Result :: {{value, Item :: term()}, Q2} | {empty, Q1}.
out({[],[]}=Q) ->
{empty,Q};
out({[V],[]}) ->
@@ -151,7 +167,10 @@ out(Q) ->
%% Take from tail/rear
%%
%% O(1) amortized, O(len(Q)) worst case
--spec out_r(queue()) -> {'empty' | {'value',term()}, queue()}.
+-spec out_r(Q1) -> Result when
+ Q1 :: queue(),
+ Q2 :: queue(),
+ Result :: {{value, Item :: term()}, Q2} | {empty, Q1}.
out_r({[],[]}=Q) ->
{empty,Q};
out_r({[],[V]}) ->
@@ -172,7 +191,9 @@ out_r(Q) ->
%% Return the first element in the queue
%%
%% O(1) since the queue is supposed to be well formed
--spec get(queue()) -> term().
+-spec get(Q) -> Item when
+ Q :: queue(),
+ Item :: term().
get({[],[]}=Q) ->
erlang:error(empty, [Q]);
get({R,F}) when is_list(R), is_list(F) ->
@@ -191,7 +212,9 @@ get([_|R], []) -> % malformed queue -> O(len(Q))
%% Return the last element in the queue
%%
%% O(1) since the queue is supposed to be well formed
--spec get_r(queue()) -> term().
+-spec get_r(Q) -> Item when
+ Q :: queue(),
+ Item :: term().
get_r({[],[]}=Q) ->
erlang:error(empty, [Q]);
get_r({[H|_],F}) when is_list(F) ->
@@ -206,7 +229,9 @@ get_r(Q) ->
%% Return the first element in the queue
%%
%% O(1) since the queue is supposed to be well formed
--spec peek(queue()) -> 'empty' | {'value',term()}.
+-spec peek(Q) -> 'empty' | {'value',Item} when
+ Q :: queue(),
+ Item :: term().
peek({[],[]}) ->
empty;
peek({R,[H|_]}) when is_list(R) ->
@@ -221,7 +246,9 @@ peek(Q) ->
%% Return the last element in the queue
%%
%% O(1) since the queue is supposed to be well formed
--spec peek_r(queue()) -> 'empty' | {'value',term()}.
+-spec peek_r(Q) -> 'empty' | {'value',Item} when
+ Q :: queue(),
+ Item :: term().
peek_r({[],[]}) ->
empty;
peek_r({[H|_],F}) when is_list(F) ->
@@ -236,7 +263,9 @@ peek_r(Q) ->
%% Remove the first element and return resulting queue
%%
%% O(1) amortized
--spec drop(queue()) -> queue().
+-spec drop(Q1) -> Q2 when
+ Q1 :: queue(),
+ Q2 :: queue().
drop({[],[]}=Q) ->
erlang:error(empty, [Q]);
drop({[_],[]}) ->
@@ -254,7 +283,9 @@ drop(Q) ->
%% Remove the last element and return resulting queue
%%
%% O(1) amortized
--spec drop_r(queue()) -> queue().
+-spec drop_r(Q1) -> Q2 when
+ Q1 :: queue(),
+ Q2 :: queue().
drop_r({[],[]}=Q) ->
erlang:error(empty, [Q]);
drop_r({[],[_]}) ->
@@ -275,7 +306,9 @@ drop_r(Q) ->
%% Return reversed queue
%%
%% O(1)
--spec reverse(queue()) -> queue().
+-spec reverse(Q1) -> Q2 when
+ Q1 :: queue(),
+ Q2 :: queue().
reverse({R,F}) when is_list(R), is_list(F) ->
{F,R};
reverse(Q) ->
@@ -285,7 +318,10 @@ reverse(Q) ->
%%
%% Q2 empty: O(1)
%% else: O(len(Q1))
--spec join(queue(), queue()) -> queue().
+-spec join(Q1, Q2) -> Q3 when
+ Q1 :: queue(),
+ Q2 :: queue(),
+ Q3 :: queue().
join({R,F}=Q, {[],[]}) when is_list(R), is_list(F) ->
Q;
join({[],[]}, {R,F}=Q) when is_list(R), is_list(F) ->
@@ -299,7 +335,11 @@ join(Q1, Q2) ->
%%
%% N = 0..len(Q)
%% O(max(N, len(Q)))
--spec split(non_neg_integer(), queue()) -> {queue(),queue()}.
+-spec split(N, Q1) -> {Q2,Q3} when
+ N :: non_neg_integer(),
+ Q1 :: queue(),
+ Q2 :: queue(),
+ Q3 :: queue().
split(0, {R,F}=Q) when is_list(R), is_list(F) ->
{{[],[]},Q};
split(N, {R,F}=Q) when is_integer(N), N >= 1, is_list(R), is_list(F) ->
@@ -340,7 +380,10 @@ split_r1_to_f2(N, [X|R1], F1, R2, F2) ->
%%
%% Fun(_) -> List: O(length(List) * len(Q))
%% else: O(len(Q)
--spec filter(fun((term()) -> boolean() | list()), queue()) -> queue().
+-spec filter(Fun, Q1) -> Q2 when
+ Fun :: fun((Item :: term()) -> boolean() | list()),
+ Q1 :: queue(),
+ Q2 :: queue().
filter(Fun, {R0,F0}) when is_function(Fun, 1), is_list(R0), is_list(F0) ->
F = filter_f(Fun, F0),
R = filter_r(Fun, R0),
@@ -416,7 +459,10 @@ filter_r(Fun, [X|R0]) ->
%% Cons to head
%%
--spec cons(term(), queue()) -> queue().
+-spec cons(Item, Q1) -> Q2 when
+ Item :: term(),
+ Q1 :: queue(),
+ Q2 :: queue().
cons(X, Q) ->
in_r(X, Q).
@@ -425,7 +471,9 @@ cons(X, Q) ->
%% Return the first element in the queue
%%
%% O(1) since the queue is supposed to be well formed
--spec head(queue()) -> term().
+-spec head(Q) -> Item when
+ Q :: queue(),
+ Item :: term().
head({[],[]}=Q) ->
erlang:error(empty, [Q]);
head({R,F}) when is_list(R), is_list(F) ->
@@ -435,7 +483,9 @@ head(Q) ->
%% Remove head element and return resulting queue
%%
--spec tail(queue()) -> queue().
+-spec tail(Q1) -> Q2 when
+ Q1 :: queue(),
+ Q2 :: queue().
tail(Q) ->
drop(Q).
@@ -443,22 +493,35 @@ tail(Q) ->
%% Cons to tail
%%
--spec snoc(queue(), term()) -> queue().
+-spec snoc(Q1, Item) -> Q2 when
+ Q1 :: queue(),
+ Q2 :: queue(),
+ Item :: term().
snoc(Q, X) ->
in(X, Q).
%% Return last element
--spec daeh(queue()) -> term().
+-spec daeh(Q) -> Item when
+ Q :: queue(),
+ Item :: term().
daeh(Q) -> get_r(Q).
--spec last(queue()) -> term().
+-spec last(Q) -> Item when
+ Q :: queue(),
+ Item :: term().
last(Q) -> get_r(Q).
%% Remove last element and return resulting queue
--spec liat(queue()) -> queue().
+-spec liat(Q1) -> Q2 when
+ Q1 :: queue(),
+ Q2 :: queue().
liat(Q) -> drop_r(Q).
--spec lait(queue()) -> queue().
+-spec lait(Q1) -> Q2 when
+ Q1 :: queue(),
+ Q2 :: queue().
lait(Q) -> drop_r(Q). %% Oops, mis-spelled 'tail' reversed. Forget this one.
--spec init(queue()) -> queue().
+-spec init(Q1) -> Q2 when
+ Q1 :: queue(),
+ Q2 :: queue().
init(Q) -> drop_r(Q).
%%--------------------------------------------------------------------------
diff --git a/lib/stdlib/src/random.erl b/lib/stdlib/src/random.erl
index 01227c29b4..dbb524cc74 100644
--- a/lib/stdlib/src/random.erl
+++ b/lib/stdlib/src/random.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -49,7 +49,10 @@ seed() ->
%% seed({A1, A2, A3})
%% Seed random number generation
--spec seed({integer(), integer(), integer()}) -> 'undefined' | ran().
+-spec seed({A1, A2, A3}) -> 'undefined' | ran() when
+ A1 :: integer(),
+ A2 :: integer(),
+ A3 :: integer().
seed({A1, A2, A3}) ->
seed(A1, A2, A3).
@@ -57,7 +60,10 @@ seed({A1, A2, A3}) ->
%% seed(A1, A2, A3)
%% Seed random number generation
--spec seed(integer(), integer(), integer()) -> 'undefined' | ran().
+-spec seed(A1, A2, A3) -> 'undefined' | ran() when
+ A1 :: integer(),
+ A2 :: integer(),
+ A3 :: integer().
seed(A1, A2, A3) ->
put(random_seed,
@@ -93,7 +99,8 @@ uniform() ->
%% Given an integer N >= 1, uniform(N) returns a random integer
%% between 1 and N.
--spec uniform(pos_integer()) -> pos_integer().
+-spec uniform(N) -> pos_integer() when
+ N :: pos_integer().
uniform(N) when is_integer(N), N >= 1 ->
trunc(uniform() * N) + 1.
@@ -104,7 +111,9 @@ uniform(N) when is_integer(N), N >= 1 ->
%% uniform_s(State) -> {F, NewState}
%% Returns a random float between 0 and 1.
--spec uniform_s(ran()) -> {float(), ran()}.
+-spec uniform_s(State0) -> {float(), State1} when
+ State0 :: ran(),
+ State1 :: ran().
uniform_s({A1, A2, A3}) ->
B1 = (A1*171) rem 30269,
@@ -117,7 +126,10 @@ uniform_s({A1, A2, A3}) ->
%% Given an integer N >= 1, uniform(N) returns a random integer
%% between 1 and N.
--spec uniform_s(pos_integer(), ran()) -> {integer(), ran()}.
+-spec uniform_s(N, State0) -> {integer(), State1} when
+ N :: pos_integer(),
+ State0 :: ran(),
+ State1 :: ran().
uniform_s(N, State0) when is_integer(N), N >= 1 ->
{F, State1} = uniform_s(State0),
diff --git a/lib/stdlib/src/re.erl b/lib/stdlib/src/re.erl
index e2cc9f57ce..02dbe60741 100644
--- a/lib/stdlib/src/re.erl
+++ b/lib/stdlib/src/re.erl
@@ -19,15 +19,46 @@
-module(re).
-export([grun/3,urun/3,ucompile/2,replace/3,replace/4,split/2,split/3]).
+%-opaque mp() :: {re_pattern, _, _, _}.
+-type mp() :: {re_pattern, _, _, _}.
+
+-type nl_spec() :: cr | crlf | lf | anycrlf | any.
+
+-type compile_option() :: unicode | anchored | caseless | dollar_endonly
+ | dotall | extended | firstline | multiline
+ | no_auto_capture | dupnames | ungreedy
+ | {newline, nl_spec()}| bsr_anycrlf
+ | bsr_unicode.
+
%% Emulator builtins in this module:
%% re:compile/1
%% re:compile/2
%% re:run/2
%% re:run/3
+-spec split(Subject, RE) -> SplitList when
+ Subject :: iodata() | unicode:charlist(),
+ RE :: mp() | iodata(),
+ SplitList :: [iodata() | unicode:charlist()].
+
split(Subject,RE) ->
split(Subject,RE,[]).
+-spec split(Subject, RE, Options) -> SplitList when
+ Subject :: iodata() | unicode:charlist(),
+ RE :: mp() | iodata(),
+ Options :: [ Option ],
+ Option :: anchored | global | notbol | noteol | notempty
+ | {offset, non_neg_integer()} | {newline, nl_spec()}
+ | bsr_anycrlf | bsr_unicode | {return, ReturnType}
+ | {parts, NumParts} | group | trim | CompileOpt,
+ NumParts :: non_neg_integer() | infinity,
+ ReturnType :: iodata | list | binary,
+ CompileOpt :: compile_option(),
+ SplitList :: [RetData] | [GroupedRetData],
+ GroupedRetData :: [RetData],
+ RetData :: iodata() | unicode:charlist() | binary() | list().
+
split(Subject,RE,Options) ->
try
{NewOpt,Convert,Unicode,Limit,Strip,Group} =
@@ -197,10 +228,26 @@ compile_split(Pat,Options0) when not is_tuple(Pat) ->
compile_split(_,_) ->
throw(badre).
+-spec replace(Subject, RE, Replacement) -> iodata() | unicode:charlist() when
+ Subject :: iodata() | unicode:charlist(),
+ RE :: mp() | iodata(),
+ Replacement :: iodata() | unicode:charlist().
replace(Subject,RE,Replacement) ->
replace(Subject,RE,Replacement,[]).
+-spec replace(Subject, RE, Replacement, Options) -> iodata() | unicode:charlist() when
+ Subject :: iodata() | unicode:charlist(),
+ RE :: mp() | iodata(),
+ Replacement :: iodata() | unicode:charlist(),
+ Options :: [Option],
+ Option :: anchored | global | notbol | noteol | notempty
+ | {offset, non_neg_integer()} | {newline, NLSpec} | bsr_anycrlf
+ | bsr_unicode | {return, ReturnType} | CompileOpt,
+ ReturnType :: iodata | list | binary,
+ CompileOpt :: compile_option(),
+ NLSpec :: cr | crlf | lf | anycrlf | any.
+
replace(Subject,RE,Replacement,Options) ->
try
{NewOpt,Convert,Unicode} =
diff --git a/lib/stdlib/src/regexp.erl b/lib/stdlib/src/regexp.erl
index 8f5994bbee..65f9ca247d 100644
--- a/lib/stdlib/src/regexp.erl
+++ b/lib/stdlib/src/regexp.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -37,6 +37,9 @@
-import(string, [substr/2,substr/3]).
-import(lists, [reverse/1]).
+-type errordesc() :: term().
+-opaque regexp() :: term().
+
%% -type matchres() = {match,Start,Length} | nomatch | {error,E}.
%% -type subres() = {ok,RepString,RepCount} | {error,E}.
%% -type splitres() = {ok,[SubString]} | {error,E}.
@@ -287,6 +290,10 @@ re_apply_or(R1, nomatch) -> R1.
%% Convert a sh style regexp into a full AWK one. The main difficulty is
%% getting character sets right as the conventions are different.
+-spec sh_to_awk(ShRegExp) -> AwkRegExp when
+ ShRegExp :: string(),
+ AwkRegExp :: string().
+
sh_to_awk(Sh) -> "^(" ++ sh_to_awk_1(Sh). %Fix the beginning
sh_to_awk_1([$*|Sh]) -> %This matches any string
@@ -336,6 +343,12 @@ special_char(_C) -> false.
%% parse(RegExp) -> {ok,RE} | {error,E}.
%% Parse the regexp described in the string RegExp.
+-spec parse(RegExp) -> ParseRes when
+ RegExp :: string(),
+ ParseRes :: {ok, RE} | {error, Error},
+ RE :: regexp(),
+ Error :: errordesc().
+
parse(S) ->
case catch reg(S) of
{R,[]} -> {ok,R};
@@ -345,6 +358,10 @@ parse(S) ->
%% format_error(Error) -> String.
+-spec format_error(ErrorDescriptor) -> Chars when
+ ErrorDescriptor :: errordesc(),
+ Chars :: io_lib:chars().
+
format_error({illegal,What}) -> ["illegal character `",What,"'"];
format_error({unterminated,What}) -> ["unterminated `",What,"'"];
format_error({char_class,What}) ->
@@ -353,6 +370,14 @@ format_error({char_class,What}) ->
%% -type match(String, RegExp) -> matchres().
%% Find the longest match of RegExp in String.
+-spec match(String, RegExp) -> MatchRes when
+ String :: string(),
+ RegExp :: string() | regexp(),
+ MatchRes :: {match, Start, Length} | nomatch | {error, Error},
+ Start :: pos_integer(),
+ Length :: pos_integer(),
+ Error :: errordesc().
+
match(S, RegExp) when is_list(RegExp) ->
case parse(RegExp) of
{ok,RE} -> match(S, RE);
@@ -378,6 +403,14 @@ match(RE, S, St, Pos, L) ->
%% -type first_match(String, RegExp) -> matchres().
%% Find the first match of RegExp in String.
+-spec first_match(String, RegExp) -> MatchRes when
+ String :: string(),
+ RegExp :: string() | regexp(),
+ MatchRes :: {match, Start, Length} | nomatch | {error, Error},
+ Start :: pos_integer(),
+ Length :: pos_integer(),
+ Error :: errordesc().
+
first_match(S, RegExp) when is_list(RegExp) ->
case parse(RegExp) of
{ok,RE} -> first_match(S, RE);
@@ -400,6 +433,15 @@ first_match(_RE, [], _St) -> nomatch.
%% -type matches(String, RegExp) -> {match,[{Start,Length}]} | {error,E}.
%% Return the all the non-overlapping matches of RegExp in String.
+-spec matches(String, RegExp) -> MatchRes when
+ String :: string(),
+ RegExp :: string() | regexp(),
+ MatchRes :: {match, Matches} | {error, Error},
+ Matches :: [{Start, Length}],
+ Start :: pos_integer(),
+ Length :: pos_integer(),
+ Error :: errordesc().
+
matches(S, RegExp) when is_list(RegExp) ->
case parse(RegExp) of
{ok,RE} -> matches(S, RE);
@@ -420,6 +462,15 @@ matches(S, RE, St) ->
%% the string Replace in String. Accept pre-parsed regular
%% expressions.
+-spec sub(String, RegExp, New) -> SubRes when
+ String :: string(),
+ RegExp :: string() | regexp(),
+ New :: string(),
+ NewString :: string(),
+ SubRes :: {ok, NewString, RepCount} | {error, Error},
+ RepCount :: 0 | 1,
+ Error :: errordesc().
+
sub(String, RegExp, Rep) when is_list(RegExp) ->
case parse(RegExp) of
{ok,RE} -> sub(String, RE, Rep);
@@ -449,6 +500,15 @@ sub_repl([], _M, Rest) -> Rest.
%% Substitute every match of the regular expression RegExp with the
%% string New in String. Accept pre-parsed regular expressions.
+-spec gsub(String, RegExp, New) -> SubRes when
+ String :: string(),
+ RegExp :: string() | regexp(),
+ New :: string(),
+ NewString :: string(),
+ SubRes :: {ok, NewString, RepCount} | {error, Error},
+ RepCount :: non_neg_integer(),
+ Error :: errordesc().
+
gsub(String, RegExp, Rep) when is_list(RegExp) ->
case parse(RegExp) of
{ok,RE} -> gsub(String, RE, Rep);
@@ -462,6 +522,13 @@ gsub(String, RE, Rep) ->
%% Split a string into substrings where the RegExp describes the
%% field seperator. The RegExp " " is specially treated.
+-spec split(String, RegExp) -> SplitRes when
+ String :: string(),
+ RegExp :: string() | regexp(),
+ SplitRes :: {ok, FieldList} | {error, Error},
+ FieldList :: [string()],
+ Error :: errordesc().
+
split(String, " ") -> %This is really special
{ok,RE} = parse("[ \t]+"),
case split_apply(String, RE, true) of
diff --git a/lib/stdlib/src/sets.erl b/lib/stdlib/src/sets.erl
index bcddca2567..3fd6c81e5f 100644
--- a/lib/stdlib/src/sets.erl
+++ b/lib/stdlib/src/sets.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
+%% Copyright Ericsson AB 2000-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -84,30 +84,38 @@ new() ->
%% is_set(Set) -> boolean().
%% Return 'true' if Set is a set of elements, else 'false'.
--spec is_set(term()) -> boolean().
+-spec is_set(Set) -> boolean() when
+ Set :: term().
is_set(#set{}) -> true;
is_set(_) -> false.
%% size(Set) -> int().
%% Return the number of elements in Set.
--spec size(set()) -> non_neg_integer().
+-spec size(Set) -> non_neg_integer() when
+ Set :: set().
size(S) -> S#set.size.
%% to_list(Set) -> [Elem].
%% Return the elements in Set as a list.
--spec to_list(set()) -> [term()].
+-spec to_list(Set) -> List when
+ Set :: set(),
+ List :: [term()].
to_list(S) ->
fold(fun (Elem, List) -> [Elem|List] end, [], S).
%% from_list([Elem]) -> Set.
%% Build a set from the elements in List.
--spec from_list([term()]) -> set().
+-spec from_list(List) -> Set when
+ List :: [term()],
+ Set :: set().
from_list(L) ->
lists:foldl(fun (E, S) -> add_element(E, S) end, new(), L).
%% is_element(Element, Set) -> boolean().
%% Return 'true' if Element is an element of Set, else 'false'.
--spec is_element(term(), set()) -> boolean().
+-spec is_element(Element, Set) -> boolean() when
+ Element :: term(),
+ Set :: set().
is_element(E, S) ->
Slot = get_slot(S, E),
Bkt = get_bucket(S, Slot),
@@ -115,7 +123,10 @@ is_element(E, S) ->
%% add_element(Element, Set) -> Set.
%% Return Set with Element inserted in it.
--spec add_element(term(), set()) -> set().
+-spec add_element(Element, Set1) -> Set2 when
+ Element :: term(),
+ Set1 :: set(),
+ Set2 :: set().
add_element(E, S0) ->
Slot = get_slot(S0, E),
{S1,Ic} = on_bucket(fun (B0) -> add_bkt_el(E, B0, B0) end, S0, Slot),
@@ -129,7 +140,10 @@ add_bkt_el(E, [], Bkt) -> {[E|Bkt],1}.
%% del_element(Element, Set) -> Set.
%% Return Set but with Element removed.
--spec del_element(term(), set()) -> set().
+-spec del_element(Element, Set1) -> Set2 when
+ Element :: term(),
+ Set1 :: set(),
+ Set2 :: set().
del_element(E, S0) ->
Slot = get_slot(S0, E),
{S1,Dc} = on_bucket(fun (B0) -> del_bkt_el(E, B0) end, S0, Slot),
@@ -144,7 +158,10 @@ del_bkt_el(_, []) -> {[],0}.
%% union(Set1, Set2) -> Set
%% Return the union of Set1 and Set2.
--spec union(set(), set()) -> set().
+-spec union(Set1, Set2) -> Set3 when
+ Set1 :: set(),
+ Set2 :: set(),
+ Set3 :: set().
union(S1, S2) when S1#set.size < S2#set.size ->
fold(fun (E, S) -> add_element(E, S) end, S2, S1);
union(S1, S2) ->
@@ -152,7 +169,9 @@ union(S1, S2) ->
%% union([Set]) -> Set
%% Return the union of the list of sets.
--spec union([set()]) -> set().
+-spec union(SetList) -> Set when
+ SetList :: [set()],
+ Set :: set().
union([S1,S2|Ss]) ->
union1(union(S1, S2), Ss);
union([S]) -> S;
@@ -165,7 +184,10 @@ union1(S1, []) -> S1.
%% intersection(Set1, Set2) -> Set.
%% Return the intersection of Set1 and Set2.
--spec intersection(set(), set()) -> set().
+-spec intersection(Set1, Set2) -> Set3 when
+ Set1 :: set(),
+ Set2 :: set(),
+ Set3 :: set().
intersection(S1, S2) when S1#set.size < S2#set.size ->
filter(fun (E) -> is_element(E, S2) end, S1);
intersection(S1, S2) ->
@@ -173,7 +195,9 @@ intersection(S1, S2) ->
%% intersection([Set]) -> Set.
%% Return the intersection of the list of sets.
--spec intersection([set(),...]) -> set().
+-spec intersection(SetList) -> Set when
+ SetList :: [set(),...],
+ Set :: set().
intersection([S1,S2|Ss]) ->
intersection1(intersection(S1, S2), Ss);
intersection([S]) -> S.
@@ -185,7 +209,9 @@ intersection1(S1, []) -> S1.
%% is_disjoint(Set1, Set2) -> boolean().
%% Check whether Set1 and Set2 are disjoint.
--spec is_disjoint(set(), set()) -> boolean().
+-spec is_disjoint(Set1, Set2) -> boolean() when
+ Set1 :: set(),
+ Set2 :: set().
is_disjoint(S1, S2) when S1#set.size < S2#set.size ->
fold(fun (_, false) -> false;
(E, true) -> not is_element(E, S2)
@@ -198,25 +224,39 @@ is_disjoint(S1, S2) ->
%% subtract(Set1, Set2) -> Set.
%% Return all and only the elements of Set1 which are not also in
%% Set2.
--spec subtract(set(), set()) -> set().
+-spec subtract(Set1, Set2) -> Set3 when
+ Set1 :: set(),
+ Set2 :: set(),
+ Set3 :: set().
subtract(S1, S2) ->
filter(fun (E) -> not is_element(E, S2) end, S1).
%% is_subset(Set1, Set2) -> boolean().
%% Return 'true' when every element of Set1 is also a member of
%% Set2, else 'false'.
--spec is_subset(set(), set()) -> boolean().
+-spec is_subset(Set1, Set2) -> boolean() when
+ Set1 :: set(),
+ Set2 :: set().
is_subset(S1, S2) ->
fold(fun (E, Sub) -> Sub andalso is_element(E, S2) end, true, S1).
%% fold(Fun, Accumulator, Set) -> Accumulator.
%% Fold function Fun over all elements in Set and return Accumulator.
--spec fold(fun((_,_) -> _), T, set()) -> T.
+-spec fold(Function, Acc0, Set) -> Acc1 when
+ Function :: fun((E :: term(),AccIn) -> AccOut),
+ Set :: set(),
+ Acc0 :: T,
+ Acc1 :: T,
+ AccIn :: T,
+ AccOut :: T.
fold(F, Acc, D) -> fold_set(F, Acc, D).
%% filter(Fun, Set) -> Set.
%% Filter Set with Fun.
--spec filter(fun((_) -> boolean()), set()) -> set().
+-spec filter(Pred, Set1) -> Set2 when
+ Pred :: fun((E :: term()) -> boolean()),
+ Set1 :: set(),
+ Set2 :: set().
filter(F, D) -> filter_set(F, D).
%% get_slot(Hashdb, Key) -> Slot.
diff --git a/lib/stdlib/src/shell.erl b/lib/stdlib/src/shell.erl
index ebb221c151..e3e23e09bc 100644
--- a/lib/stdlib/src/shell.erl
+++ b/lib/stdlib/src/shell.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -115,7 +115,9 @@ whereis_evaluator(Shell) ->
%% Call this function to start a user restricted shell
%% from a normal shell session.
--spec start_restricted(module()) -> {'error', code:load_error_rsn()}.
+-spec start_restricted(Module) -> {'error', Reason} when
+ Module :: module(),
+ Reason :: code:load_error_rsn().
start_restricted(RShMod) when is_atom(RShMod) ->
case code:ensure_loaded(RShMod) of
@@ -465,7 +467,7 @@ getc(N) ->
{get({command,N}), get({result,N}), N}.
get_cmd(Num, C) ->
- case catch erl_eval:expr(Num, []) of
+ case catch erl_eval:expr(Num, erl_eval:new_bindings()) of
{value,N,_} when N < 0 -> getc(C+N);
{value,N,_} -> getc(N);
_Other -> {undefined,undefined,undefined}
@@ -1184,6 +1186,8 @@ expr(E, Bs, Lf, Ef) ->
expr_list(Es, Bs, Lf, Ef) ->
erl_eval:expr_list(Es, strip_bindings(Bs), Lf, Ef).
+-spec strip_bindings(erl_eval:binding_struct()) -> erl_eval:binding_struct().
+
strip_bindings(Bs) ->
Bs -- [B || {{module,_},_}=B <- Bs].
@@ -1468,23 +1472,26 @@ set_env(App, Name, Val, Default) ->
application_controller:set_env(App, Name, Val),
Prev.
--spec history(non_neg_integer()) -> non_neg_integer().
+-spec history(N) -> non_neg_integer() when
+ N :: non_neg_integer().
history(L) when is_integer(L), L >= 0 ->
set_env(stdlib, shell_history_length, L, ?DEF_HISTORY).
--spec results(non_neg_integer()) -> non_neg_integer().
+-spec results(N) -> non_neg_integer() when
+ N :: non_neg_integer().
results(L) when is_integer(L), L >= 0 ->
set_env(stdlib, shell_saved_results, L, ?DEF_RESULTS).
--spec catch_exception(boolean()) -> boolean().
+-spec catch_exception(Bool) -> Bool when
+ Bool :: boolean().
catch_exception(Bool) ->
set_env(stdlib, shell_catch_exception, Bool, ?DEF_CATCH_EXCEPTION).
--type prompt_func() :: 'default' | {module(),atom()}.
--spec prompt_func(prompt_func()) -> prompt_func().
+-spec prompt_func(PromptFunc) -> PromptFunc when
+ PromptFunc :: 'default' | {module(),atom()}.
prompt_func(String) ->
set_env(stdlib, shell_prompt_func, String, ?DEF_PROMPT_FUNC).
diff --git a/lib/stdlib/src/slave.erl b/lib/stdlib/src/slave.erl
index 196b659938..d79ee676d9 100644
--- a/lib/stdlib/src/slave.erl
+++ b/lib/stdlib/src/slave.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -54,6 +54,10 @@ pseudo([Master | ServerList]) ->
pseudo(_) ->
error_msg("No master node given to slave:pseudo/1~n",[]).
+-spec pseudo(Master, ServerList) -> ok when
+ Master :: node(),
+ ServerList :: [atom()].
+
pseudo(_, []) -> ok;
pseudo(Master, [S|Tail]) ->
start_pseudo(S, whereis(S), Master),
@@ -68,6 +72,9 @@ start_pseudo(_,_,_) -> ok. %% It's already there
%% This relay can be used to relay all messages directed to a process.
+-spec relay(Pid) -> none() when
+ Pid :: pid().
+
relay({badrpc,Reason}) ->
error_msg(" ** exiting relay server ~w :~w **~n", [self(),Reason]),
exit(Reason);
@@ -120,25 +127,61 @@ relay1(Pid) ->
%% {error, no_rsh} |
%% {error, {already_running, Name@Host}}
+-spec start(Host) -> {ok, Node} | {error, Reason} when
+ Host :: atom(),
+ Node :: node(),
+ Reason :: timeout | no_rsh | {already_running, Node}.
+
start(Host) ->
L = atom_to_list(node()),
Name = upto($@, L),
- start(Host, Name).
+ start(Host, Name, [], no_link).
+
+-spec start(Host, Name) -> {ok, Node} | {error, Reason} when
+ Host :: atom(),
+ Name :: atom(),
+ Node :: node(),
+ Reason :: timeout | no_rsh | {already_running, Node}.
start(Host, Name) ->
start(Host, Name, []).
+-spec start(Host, Name, Args) -> {ok, Node} | {error, Reason} when
+ Host :: atom(),
+ Name :: atom(),
+ Args :: string(),
+ Node :: node(),
+ Reason :: timeout | no_rsh | {already_running, Node}.
+
start(Host, Name, Args) ->
start(Host, Name, Args, no_link).
+-spec start_link(Host) -> {ok, Node} | {error, Reason} when
+ Host :: atom(),
+ Node :: node(),
+ Reason :: timeout | no_rsh | {already_running, Node}.
+
start_link(Host) ->
L = atom_to_list(node()),
Name = upto($@, L),
- start_link(Host, Name).
+ start(Host, Name, [], self()).
+
+-spec start_link(Host, Name) -> {ok, Node} | {error, Reason} when
+ Host :: atom(),
+ Name :: atom(),
+ Node :: node(),
+ Reason :: timeout | no_rsh | {already_running, Node}.
start_link(Host, Name) ->
start_link(Host, Name, []).
+-spec start_link(Host, Name, Args) -> {ok, Node} | {error, Reason} when
+ Host :: atom(),
+ Name :: atom(),
+ Args :: string(),
+ Node :: node(),
+ Reason :: timeout | no_rsh | {already_running, Node}.
+
start_link(Host, Name, Args) ->
start(Host, Name, Args, self()).
@@ -163,6 +206,9 @@ start(Host0, Name, Args, LinkTo, Prog) ->
%% Stops a running node.
+-spec stop(Node) -> ok when
+ Node :: node().
+
stop(Node) ->
% io:format("stop(~p)~n", [Node]),
rpc:call(Node, erlang, halt, []),
diff --git a/lib/stdlib/src/sofs.erl b/lib/stdlib/src/sofs.erl
index a83f803330..d38b8ab37a 100644
--- a/lib/stdlib/src/sofs.erl
+++ b/lib/stdlib/src/sofs.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2001-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2001-2011. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% 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.
-%%
+%%
%% %CopyrightEnd%
%%
-module(sofs).
@@ -40,11 +40,11 @@
substitution/2, projection/2, partition/1, partition/2,
partition/3, multiple_relative_product/2, join/4]).
--export([family_to_relation/1, family_specification/2,
+-export([family_to_relation/1, family_specification/2,
union_of_family/1, intersection_of_family/1,
family_union/1, family_intersection/1,
family_domain/1, family_range/1, family_field/1,
- family_union/2, family_intersection/2, family_difference/2,
+ family_union/2, family_intersection/2, family_difference/2,
partition_family/2, family_projection/2]).
-export([family_to_digraph/1, family_to_digraph/2,
@@ -64,9 +64,9 @@
-compile({inline, [{external_fun,1},{element_type,1}]}).
--compile({inline,
+-compile({inline,
[{unify_types,2}, {match_types,2},
- {test_rel,3}, {symdiff,3},
+ {test_rel,3}, {symdiff,3},
{subst,3}]}).
-compile({inline, [{fam_binop,3}]}).
@@ -80,13 +80,13 @@
-define(TAG, 'Set').
-define(ORDTAG, 'OrdSet').
--record(?TAG, {data = [], type = type}).
--record(?ORDTAG, {orddata = {}, ordtype = type}).
+-record(?TAG, {data = [] :: list(), type = type :: term()}).
+-record(?ORDTAG, {orddata = {} :: tuple(), ordtype = type :: term()}).
-define(LIST(S), (S)#?TAG.data).
-define(TYPE(S), (S)#?TAG.type).
-%%-define(SET(L, T),
-%% case is_type(T) of
+%%-define(SET(L, T),
+%% case is_type(T) of
%% true -> #?TAG{data = L, type = T};
%% false -> erlang:error(badtype, [T])
%% end
@@ -113,14 +113,40 @@
-define(IS_SET_OF(X), is_list(X)).
-define(FAMILY(X, Y), ?BINREL(X, ?SET_OF(Y))).
+-export_type([anyset/0, binary_relation/0, external_set/0, a_function/0,
+ family/0, relation/0, set_of_sets/0, set_fun/0, spec_fun/0,
+ type/0]).
+-export_type([ordset/0, a_set/0]).
+
+-type(anyset() :: ordset() | a_set()).
+-type(binary_relation() :: relation()).
+-type(external_set() :: term()).
+-type(a_function() :: relation()).
+-type(family() :: a_function()).
+-opaque(ordset() :: #?ORDTAG{}).
+-type(relation() :: a_set()).
+-opaque(a_set() :: #?TAG{}).
+-type(set_of_sets() :: a_set()).
+-type(set_fun() :: pos_integer()
+ | {external, fun((external_set()) -> external_set())}
+ | fun((anyset()) -> anyset())).
+-type(spec_fun() :: {external, fun((external_set()) -> boolean())}
+ | fun((anyset()) -> boolean())).
+-type(type() :: term()).
+
+-type(tuple_of(_T) :: tuple()).
+
%%
%% Exported functions
%%
-%%%
+%%%
%%% Create sets
-%%%
+%%%
+-spec(from_term(Term) -> AnySet when
+ AnySet :: anyset(),
+ Term :: term()).
from_term(T) ->
Type = case T of
_ when is_list(T) -> [?ANYTYPE];
@@ -133,6 +159,10 @@ from_term(T) ->
Set
end.
+-spec(from_term(Term, Type) -> AnySet when
+ AnySet :: anyset(),
+ Term :: term(),
+ Type :: type()).
from_term(L, T) ->
case is_type(T) of
true ->
@@ -146,14 +176,23 @@ from_term(L, T) ->
erlang:error(badarg, [L, T])
end.
+-spec(from_external(ExternalSet, Type) -> AnySet when
+ ExternalSet :: external_set(),
+ AnySet :: anyset(),
+ Type :: type()).
from_external(L, ?SET_OF(Type)) ->
?SET(L, Type);
from_external(T, Type) ->
?ORDSET(T, Type).
+-spec(empty_set() -> Set when
+ Set :: a_set()).
empty_set() ->
?SET([], ?ANYTYPE).
+-spec(is_type(Term) -> Bool when
+ Bool :: boolean(),
+ Term :: term()).
is_type(Atom) when ?IS_ATOM_TYPE(Atom), Atom =/= ?ANYTYPE ->
true;
is_type(?SET_OF(T)) ->
@@ -163,19 +202,26 @@ is_type(T) when tuple_size(T) > 0 ->
is_type(_T) ->
false.
+-spec(set(Terms) -> Set when
+ Set :: a_set(),
+ Terms :: [term()]).
set(L) ->
case catch usort(L) of
{'EXIT', _} ->
erlang:error(badarg, [L]);
- SL ->
+ SL ->
?SET(SL, ?ATOM_TYPE)
end.
+-spec(set(Terms, Type) -> Set when
+ Set :: a_set(),
+ Terms :: [term()],
+ Type :: type()).
set(L, ?SET_OF(Type) = T) when ?IS_ATOM_TYPE(Type), Type =/= ?ANYTYPE ->
case catch usort(L) of
{'EXIT', _} ->
erlang:error(badarg, [L, T]);
- SL ->
+ SL ->
?SET(SL, Type)
end;
set(L, ?SET_OF(_) = T) ->
@@ -188,6 +234,12 @@ set(L, ?SET_OF(_) = T) ->
set(L, T) ->
erlang:error(badarg, [L, T]).
+-spec(from_sets(ListOfSets) -> Set when
+ Set :: a_set(),
+ ListOfSets :: [anyset()];
+ (TupleOfSets) -> Ordset when
+ Ordset :: ordset(),
+ TupleOfSets :: tuple_of(anyset())).
from_sets(Ss) when is_list(Ss) ->
case set_of_sets(Ss, [], ?ANYTYPE) of
{error, Error} ->
@@ -205,6 +257,9 @@ from_sets(Tuple) when is_tuple(Tuple) ->
from_sets(T) ->
erlang:error(badarg, [T]).
+-spec(relation(Tuples) -> Relation when
+ Relation :: relation(),
+ Tuples :: [tuple()]).
relation([]) ->
?SET([], ?BINREL(?ATOM_TYPE, ?ATOM_TYPE));
relation(Ts = [T | _]) when is_tuple(T) ->
@@ -217,6 +272,11 @@ relation(Ts = [T | _]) when is_tuple(T) ->
relation(E) ->
erlang:error(badarg, [E]).
+-spec(relation(Tuples, Type) -> Relation when
+ N :: integer(),
+ Type :: N | type(),
+ Relation :: relation(),
+ Tuples :: [tuple()]).
relation(Ts, TS) ->
case catch rel(Ts, TS) of
{'EXIT', _} ->
@@ -225,6 +285,9 @@ relation(Ts, TS) ->
Set
end.
+-spec(a_function(Tuples) -> Function when
+ Function :: a_function(),
+ Tuples :: [tuple()]).
a_function(Ts) ->
case catch func(Ts, ?BINREL(?ATOM_TYPE, ?ATOM_TYPE)) of
{'EXIT', _} ->
@@ -235,6 +298,10 @@ a_function(Ts) ->
Set
end.
+-spec(a_function(Tuples, Type) -> Function when
+ Function :: a_function(),
+ Tuples :: [tuple()],
+ Type :: type()).
a_function(Ts, T) ->
case catch a_func(Ts, T) of
{'EXIT', _} ->
@@ -245,6 +312,9 @@ a_function(Ts, T) ->
Set
end.
+-spec(family(Tuples) -> Family when
+ Family :: family(),
+ Tuples :: [tuple()]).
family(Ts) ->
case catch fam2(Ts, ?FAMILY(?ATOM_TYPE, ?ATOM_TYPE)) of
{'EXIT', _} ->
@@ -255,6 +325,10 @@ family(Ts) ->
Set
end.
+-spec(family(Tuples, Type) -> Family when
+ Family :: family(),
+ Tuples :: [tuple()],
+ Type :: type()).
family(Ts, T) ->
case catch fam(Ts, T) of
{'EXIT', _} ->
@@ -265,20 +339,30 @@ family(Ts, T) ->
Set
end.
-%%%
+%%%
%%% Functions on sets.
-%%%
+%%%
+-spec(to_external(AnySet) -> ExternalSet when
+ ExternalSet :: external_set(),
+ AnySet :: anyset()).
to_external(S) when ?IS_SET(S) ->
?LIST(S);
to_external(S) when ?IS_ORDSET(S) ->
?ORDDATA(S).
+-spec(type(AnySet) -> Type when
+ AnySet :: anyset(),
+ Type :: type()).
type(S) when ?IS_SET(S) ->
?SET_OF(?TYPE(S));
type(S) when ?IS_ORDSET(S) ->
?ORDTYPE(S).
+-spec(to_sets(ASet) -> Sets when
+ ASet :: a_set() | ordset(),
+ Sets :: tuple_of(AnySet) | [AnySet],
+ AnySet :: anyset()).
to_sets(S) when ?IS_SET(S) ->
case ?TYPE(S) of
?SET_OF(Type) -> list_of_sets(?LIST(S), Type, []);
@@ -289,6 +373,9 @@ to_sets(S) when ?IS_ORDSET(S), is_tuple(?ORDTYPE(S)) ->
to_sets(S) when ?IS_ORDSET(S) ->
erlang:error(badarg, [S]).
+-spec(no_elements(ASet) -> NoElements when
+ ASet :: a_set() | ordset(),
+ NoElements :: pos_integer()).
no_elements(S) when ?IS_SET(S) ->
length(?LIST(S));
no_elements(S) when ?IS_ORDSET(S), is_tuple(?ORDTYPE(S)) ->
@@ -296,6 +383,10 @@ no_elements(S) when ?IS_ORDSET(S), is_tuple(?ORDTYPE(S)) ->
no_elements(S) when ?IS_ORDSET(S) ->
erlang:error(badarg, [S]).
+-spec(specification(Fun, Set1) -> Set2 when
+ Fun :: spec_fun(),
+ Set1 :: a_set(),
+ Set2 :: a_set()).
specification(Fun, S) when ?IS_SET(S) ->
Type = ?TYPE(S),
R = case external_fun(Fun) of
@@ -311,36 +402,62 @@ specification(Fun, S) when ?IS_SET(S) ->
erlang:error(Bad, [Fun, S])
end.
+-spec(union(Set1, Set2) -> Set3 when
+ Set1 :: a_set(),
+ Set2 :: a_set(),
+ Set3 :: a_set()).
union(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
case unify_types(?TYPE(S1), ?TYPE(S2)) of
[] -> erlang:error(type_mismatch, [S1, S2]);
Type -> ?SET(umerge(?LIST(S1), ?LIST(S2)), Type)
end.
+-spec(intersection(Set1, Set2) -> Set3 when
+ Set1 :: a_set(),
+ Set2 :: a_set(),
+ Set3 :: a_set()).
intersection(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
case unify_types(?TYPE(S1), ?TYPE(S2)) of
[] -> erlang:error(type_mismatch, [S1, S2]);
Type -> ?SET(intersection(?LIST(S1), ?LIST(S2), []), Type)
end.
+-spec(difference(Set1, Set2) -> Set3 when
+ Set1 :: a_set(),
+ Set2 :: a_set(),
+ Set3 :: a_set()).
difference(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
case unify_types(?TYPE(S1), ?TYPE(S2)) of
[] -> erlang:error(type_mismatch, [S1, S2]);
Type -> ?SET(difference(?LIST(S1), ?LIST(S2), []), Type)
end.
+-spec(symdiff(Set1, Set2) -> Set3 when
+ Set1 :: a_set(),
+ Set2 :: a_set(),
+ Set3 :: a_set()).
symdiff(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
case unify_types(?TYPE(S1), ?TYPE(S2)) of
[] -> erlang:error(type_mismatch, [S1, S2]);
Type -> ?SET(symdiff(?LIST(S1), ?LIST(S2), []), Type)
end.
+-spec(symmetric_partition(Set1, Set2) -> {Set3, Set4, Set5} when
+ Set1 :: a_set(),
+ Set2 :: a_set(),
+ Set3 :: a_set(),
+ Set4 :: a_set(),
+ Set5 :: a_set()).
symmetric_partition(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
case unify_types(?TYPE(S1), ?TYPE(S2)) of
[] -> erlang:error(type_mismatch, [S1, S2]);
Type -> sympart(?LIST(S1), ?LIST(S2), [], [], [], Type)
end.
+-spec(product(Set1, Set2) -> BinRel when
+ BinRel :: binary_relation(),
+ Set1 :: a_set(),
+ Set2 :: a_set()).
product(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
if
?TYPE(S1) =:= ?ANYTYPE -> S1;
@@ -351,6 +468,9 @@ product(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
?SET(relprod(map(F, ?LIST(S1)), map(F, ?LIST(S2))), T)
end.
+-spec(product(TupleOfSets) -> Relation when
+ Relation :: relation(),
+ TupleOfSets :: tuple_of(a_set())).
product({S1, S2}) ->
product(S1, S2);
product(T) when is_tuple(T) ->
@@ -365,11 +485,15 @@ product(T) when is_tuple(T) ->
case member([], L) of
true ->
empty_set();
- false ->
+ false ->
?SET(reverse(prod(L, [], [])), Type)
end
end.
+-spec(constant_function(Set, AnySet) -> Function when
+ AnySet :: anyset(),
+ Function :: a_function(),
+ Set :: a_set()).
constant_function(S, E) when ?IS_SET(S) ->
case {?TYPE(S), is_sofs_set(E)} of
{?ANYTYPE, true} -> S;
@@ -381,6 +505,10 @@ constant_function(S, E) when ?IS_SET(S) ->
constant_function(S, E) when ?IS_ORDSET(S) ->
erlang:error(badarg, [S, E]).
+-spec(is_equal(AnySet1, AnySet2) -> Bool when
+ AnySet1 :: anyset(),
+ AnySet2 :: anyset(),
+ Bool :: boolean()).
is_equal(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
case match_types(?TYPE(S1), ?TYPE(S2)) of
true -> ?LIST(S1) == ?LIST(S2);
@@ -396,12 +524,19 @@ is_equal(S1, S2) when ?IS_SET(S1), ?IS_ORDSET(S2) ->
is_equal(S1, S2) when ?IS_ORDSET(S1), ?IS_SET(S2) ->
erlang:error(type_mismatch, [S1, S2]).
+-spec(is_subset(Set1, Set2) -> Bool when
+ Bool :: boolean(),
+ Set1 :: a_set(),
+ Set2 :: a_set()).
is_subset(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
case match_types(?TYPE(S1), ?TYPE(S2)) of
true -> subset(?LIST(S1), ?LIST(S2));
false -> erlang:error(type_mismatch, [S1, S2])
end.
+-spec(is_sofs_set(Term) -> Bool when
+ Bool :: boolean(),
+ Term :: term()).
is_sofs_set(S) when ?IS_SET(S) ->
true;
is_sofs_set(S) when ?IS_ORDSET(S) ->
@@ -409,16 +544,26 @@ is_sofs_set(S) when ?IS_ORDSET(S) ->
is_sofs_set(_S) ->
false.
+-spec(is_set(AnySet) -> Bool when
+ AnySet :: anyset(),
+ Bool :: boolean()).
is_set(S) when ?IS_SET(S) ->
true;
is_set(S) when ?IS_ORDSET(S) ->
false.
-is_empty_set(S) when ?IS_SET(S) ->
+-spec(is_empty_set(AnySet) -> Bool when
+ AnySet :: anyset(),
+ Bool :: boolean()).
+is_empty_set(S) when ?IS_SET(S) ->
?LIST(S) =:= [];
is_empty_set(S) when ?IS_ORDSET(S) ->
false.
+-spec(is_disjoint(Set1, Set2) -> Bool when
+ Bool :: boolean(),
+ Set1 :: a_set(),
+ Set2 :: a_set()).
is_disjoint(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
case match_types(?TYPE(S1), ?TYPE(S2)) of
true ->
@@ -433,6 +578,9 @@ is_disjoint(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
%%% Functions on set-of-sets.
%%%
+-spec(union(SetOfSets) -> Set when
+ Set :: a_set(),
+ SetOfSets :: set_of_sets()).
union(Sets) when ?IS_SET(Sets) ->
case ?TYPE(Sets) of
?SET_OF(Type) -> ?SET(lunion(?LIST(Sets)), Type);
@@ -440,6 +588,9 @@ union(Sets) when ?IS_SET(Sets) ->
_ -> erlang:error(badarg, [Sets])
end.
+-spec(intersection(SetOfSets) -> Set when
+ Set :: a_set(),
+ SetOfSets :: set_of_sets()).
intersection(Sets) when ?IS_SET(Sets) ->
case ?LIST(Sets) of
[] -> erlang:error(badarg, [Sets]);
@@ -451,32 +602,41 @@ intersection(Sets) when ?IS_SET(Sets) ->
end
end.
+-spec(canonical_relation(SetOfSets) -> BinRel when
+ BinRel :: binary_relation(),
+ SetOfSets :: set_of_sets()).
canonical_relation(Sets) when ?IS_SET(Sets) ->
ST = ?TYPE(Sets),
case ST of
?SET_OF(?ANYTYPE) -> empty_set();
- ?SET_OF(Type) ->
+ ?SET_OF(Type) ->
?SET(can_rel(?LIST(Sets), []), ?BINREL(Type, ST));
?ANYTYPE -> Sets;
_ -> erlang:error(badarg, [Sets])
end.
-%%%
+%%%
%%% Functions on binary relations only.
-%%%
+%%%
rel2fam(R) ->
relation_to_family(R).
+-spec(relation_to_family(BinRel) -> Family when
+ Family :: family(),
+ BinRel :: binary_relation()).
%% Inlined.
relation_to_family(R) when ?IS_SET(R) ->
case ?TYPE(R) of
- ?BINREL(DT, RT) ->
+ ?BINREL(DT, RT) ->
?SET(rel2family(?LIST(R)), ?FAMILY(DT, RT));
?ANYTYPE -> R;
_Else -> erlang:error(badarg, [R])
end.
+-spec(domain(BinRel) -> Set when
+ BinRel :: binary_relation(),
+ Set :: a_set()).
domain(R) when ?IS_SET(R) ->
case ?TYPE(R) of
?BINREL(DT, _) -> ?SET(dom(?LIST(R)), DT);
@@ -484,6 +644,9 @@ domain(R) when ?IS_SET(R) ->
_Else -> erlang:error(badarg, [R])
end.
+-spec(range(BinRel) -> Set when
+ BinRel :: binary_relation(),
+ Set :: a_set()).
range(R) when ?IS_SET(R) ->
case ?TYPE(R) of
?BINREL(_, RT) -> ?SET(ran(?LIST(R), []), RT);
@@ -491,35 +654,63 @@ range(R) when ?IS_SET(R) ->
_ -> erlang:error(badarg, [R])
end.
+-spec(field(BinRel) -> Set when
+ BinRel :: binary_relation(),
+ Set :: a_set()).
%% In "Introduction to LOGIC", Suppes defines the field of a binary
%% relation to be the union of the domain and the range (or
%% counterdomain).
field(R) ->
union(domain(R), range(R)).
+-spec(relative_product(ListOfBinRels) -> BinRel2 when
+ ListOfBinRels :: [BinRel, ...],
+ BinRel :: binary_relation(),
+ BinRel2 :: binary_relation()).
+%% The following clause is kept for backward compatibility.
+%% The list is due to Dialyzer's specs.
relative_product(RT) when is_tuple(RT) ->
- case relprod_n(RT, foo, false, false) of
- {error, Reason} ->
- erlang:error(Reason, [RT]);
+ relative_product(tuple_to_list(RT));
+relative_product(RL) when is_list(RL) ->
+ case relprod_n(RL, foo, false, false) of
+ {error, Reason} ->
+ erlang:error(Reason, [RL]);
Reply ->
Reply
end.
+-spec(relative_product(ListOfBinRels, BinRel1) -> BinRel2 when
+ ListOfBinRels :: [BinRel, ...],
+ BinRel :: binary_relation(),
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation();
+ (BinRel1, BinRel2) -> BinRel3 when
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation(),
+ BinRel3 :: binary_relation()).
relative_product(R1, R2) when ?IS_SET(R1), ?IS_SET(R2) ->
relative_product1(converse(R1), R2);
+%% The following clause is kept for backward compatibility.
+%% The list is due to Dialyzer's specs.
relative_product(RT, R) when is_tuple(RT), ?IS_SET(R) ->
+ relative_product(tuple_to_list(RT), R);
+relative_product(RL, R) when is_list(RL), ?IS_SET(R) ->
EmptyR = case ?TYPE(R) of
?BINREL(_, _) -> ?LIST(R) =:= [];
?ANYTYPE -> true;
- _ -> erlang:error(badarg, [RT, R])
+ _ -> erlang:error(badarg, [RL, R])
end,
- case relprod_n(RT, R, EmptyR, true) of
- {error, Reason} ->
- erlang:error(Reason, [RT, R]);
+ case relprod_n(RL, R, EmptyR, true) of
+ {error, Reason} ->
+ erlang:error(Reason, [RL, R]);
Reply ->
Reply
end.
+-spec(relative_product1(BinRel1, BinRel2) -> BinRel3 when
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation(),
+ BinRel3 :: binary_relation()).
relative_product1(R1, R2) when ?IS_SET(R1), ?IS_SET(R2) ->
{DTR1, RTR1} = case ?TYPE(R1) of
?BINREL(_, _) = R1T -> R1T;
@@ -538,16 +729,23 @@ relative_product1(R1, R2) when ?IS_SET(R1), ?IS_SET(R2) ->
false -> erlang:error(type_mismatch, [R1, R2])
end.
+-spec(converse(BinRel1) -> BinRel2 when
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation()).
converse(R) when ?IS_SET(R) ->
case ?TYPE(R) of
?BINREL(DT, RT) -> ?SET(converse(?LIST(R), []), ?BINREL(RT, DT));
?ANYTYPE -> R;
_ -> erlang:error(badarg, [R])
end.
-
+
+-spec(image(BinRel, Set1) -> Set2 when
+ BinRel :: binary_relation(),
+ Set1 :: a_set(),
+ Set2 :: a_set()).
image(R, S) when ?IS_SET(R), ?IS_SET(S) ->
case ?TYPE(R) of
- ?BINREL(DT, RT) ->
+ ?BINREL(DT, RT) ->
case match_types(DT, ?TYPE(S)) of
true ->
?SET(usort(restrict(?LIST(S), ?LIST(R))), RT);
@@ -558,9 +756,13 @@ image(R, S) when ?IS_SET(R), ?IS_SET(S) ->
_ -> erlang:error(badarg, [R, S])
end.
+-spec(inverse_image(BinRel, Set1) -> Set2 when
+ BinRel :: binary_relation(),
+ Set1 :: a_set(),
+ Set2 :: a_set()).
inverse_image(R, S) when ?IS_SET(R), ?IS_SET(S) ->
case ?TYPE(R) of
- ?BINREL(DT, RT) ->
+ ?BINREL(DT, RT) ->
case match_types(RT, ?TYPE(S)) of
true ->
NL = restrict(?LIST(S), converse(?LIST(R), [])),
@@ -572,17 +774,23 @@ inverse_image(R, S) when ?IS_SET(R), ?IS_SET(S) ->
_ -> erlang:error(badarg, [R, S])
end.
+-spec(strict_relation(BinRel1) -> BinRel2 when
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation()).
strict_relation(R) when ?IS_SET(R) ->
case ?TYPE(R) of
- Type = ?BINREL(_, _) ->
+ Type = ?BINREL(_, _) ->
?SET(strict(?LIST(R), []), Type);
?ANYTYPE -> R;
_ -> erlang:error(badarg, [R])
end.
-
+
+-spec(weak_relation(BinRel1) -> BinRel2 when
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation()).
weak_relation(R) when ?IS_SET(R) ->
case ?TYPE(R) of
- ?BINREL(DT, RT) ->
+ ?BINREL(DT, RT) ->
case unify_types(DT, RT) of
[] ->
erlang:error(badarg, [R]);
@@ -592,7 +800,12 @@ weak_relation(R) when ?IS_SET(R) ->
?ANYTYPE -> R;
_ -> erlang:error(badarg, [R])
end.
-
+
+-spec(extension(BinRel1, Set, AnySet) -> BinRel2 when
+ AnySet :: anyset(),
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation(),
+ Set :: a_set()).
extension(R, S, E) when ?IS_SET(R), ?IS_SET(S) ->
case {?TYPE(R), ?TYPE(S), is_sofs_set(E)} of
{T=?BINREL(DT, RT), ST, true} ->
@@ -621,9 +834,12 @@ extension(R, S, E) when ?IS_SET(R), ?IS_SET(S) ->
erlang:error(badarg, [R, S, E])
end.
+-spec(is_a_function(BinRel) -> Bool when
+ Bool :: boolean(),
+ BinRel :: binary_relation()).
is_a_function(R) when ?IS_SET(R) ->
case ?TYPE(R) of
- ?BINREL(_, _) ->
+ ?BINREL(_, _) ->
case ?LIST(R) of
[] -> true;
[{V,_} | Es] -> is_a_func(Es, V)
@@ -632,16 +848,28 @@ is_a_function(R) when ?IS_SET(R) ->
_ -> erlang:error(badarg, [R])
end.
+-spec(restriction(BinRel1, Set) -> BinRel2 when
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation(),
+ Set :: a_set()).
restriction(Relation, Set) ->
restriction(1, Relation, Set).
+-spec(drestriction(BinRel1, Set) -> BinRel2 when
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation(),
+ Set :: a_set()).
drestriction(Relation, Set) ->
drestriction(1, Relation, Set).
-%%%
+%%%
%%% Functions on functions only.
-%%%
+%%%
+-spec(composite(Function1, Function2) -> Function3 when
+ Function1 :: a_function(),
+ Function2 :: a_function(),
+ Function3 :: a_function()).
composite(Fn1, Fn2) when ?IS_SET(Fn1), ?IS_SET(Fn2) ->
?BINREL(DTF1, RTF1) = case ?TYPE(Fn1)of
?BINREL(_, _) = F1T -> F1T;
@@ -656,7 +884,7 @@ composite(Fn1, Fn2) when ?IS_SET(Fn1), ?IS_SET(Fn2) ->
case match_types(RTF1, DTF2) of
true when DTF1 =:= ?ANYTYPE -> Fn1;
true when DTF2 =:= ?ANYTYPE -> Fn2;
- true ->
+ true ->
case comp(?LIST(Fn1), ?LIST(Fn2)) of
SL when is_list(SL) ->
?SET(sort(SL), ?BINREL(DTF1, RTF2));
@@ -666,9 +894,12 @@ composite(Fn1, Fn2) when ?IS_SET(Fn1), ?IS_SET(Fn2) ->
false -> erlang:error(type_mismatch, [Fn1, Fn2])
end.
+-spec(inverse(Function1) -> Function2 when
+ Function1 :: a_function(),
+ Function2 :: a_function()).
inverse(Fn) when ?IS_SET(Fn) ->
case ?TYPE(Fn) of
- ?BINREL(DT, RT) ->
+ ?BINREL(DT, RT) ->
case inverse1(?LIST(Fn)) of
SL when is_list(SL) ->
?SET(SL, ?BINREL(RT, DT));
@@ -678,11 +909,16 @@ inverse(Fn) when ?IS_SET(Fn) ->
?ANYTYPE -> Fn;
_ -> erlang:error(badarg, [Fn])
end.
-
-%%%
+
+%%%
%%% Functions on relations (binary or other).
-%%%
+%%%
+-spec(restriction(SetFun, Set1, Set2) -> Set3 when
+ SetFun :: set_fun(),
+ Set1 :: a_set(),
+ Set2 :: a_set(),
+ Set3 :: a_set()).
%% Equivalent to range(restriction(inverse(substitution(Fun, S1)), S2)).
restriction(I, R, S) when is_integer(I), ?IS_SET(R), ?IS_SET(S) ->
RT = ?TYPE(R),
@@ -747,6 +983,11 @@ restriction(SetFun, S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
end
end.
+-spec(drestriction(SetFun, Set1, Set2) -> Set3 when
+ SetFun :: set_fun(),
+ Set1 :: a_set(),
+ Set2 :: a_set(),
+ Set3 :: a_set()).
drestriction(I, R, S) when is_integer(I), ?IS_SET(R), ?IS_SET(S) ->
RT = ?TYPE(R),
ST = ?TYPE(S),
@@ -812,6 +1053,10 @@ drestriction(SetFun, S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
end
end.
+-spec(projection(SetFun, Set1) -> Set2 when
+ SetFun :: set_fun(),
+ Set1 :: a_set(),
+ Set2 :: a_set()).
projection(I, Set) when is_integer(I), ?IS_SET(Set) ->
Type = ?TYPE(Set),
case check_for_sort(Type, I) of
@@ -827,6 +1072,10 @@ projection(I, Set) when is_integer(I), ?IS_SET(Set) ->
projection(Fun, Set) ->
range(substitution(Fun, Set)).
+-spec(substitution(SetFun, Set1) -> Set2 when
+ SetFun :: set_fun(),
+ Set1 :: a_set(),
+ Set2 :: a_set()).
substitution(I, Set) when is_integer(I), ?IS_SET(Set) ->
Type = ?TYPE(Set),
case check_for_sort(Type, I) of
@@ -867,11 +1116,18 @@ substitution(SetFun, Set) when ?IS_SET(Set) ->
end
end.
+-spec(partition(SetOfSets) -> Partition when
+ SetOfSets :: set_of_sets(),
+ Partition :: a_set()).
partition(Sets) ->
F1 = relation_to_family(canonical_relation(Sets)),
F2 = relation_to_family(converse(F1)),
range(F2).
+-spec(partition(SetFun, Set) -> Partition when
+ SetFun :: set_fun(),
+ Partition :: a_set(),
+ Set :: a_set()).
partition(I, Set) when is_integer(I), ?IS_SET(Set) ->
Type = ?TYPE(Set),
case check_for_sort(Type, I) of
@@ -887,6 +1143,12 @@ partition(I, Set) when is_integer(I), ?IS_SET(Set) ->
partition(Fun, Set) ->
range(partition_family(Fun, Set)).
+-spec(partition(SetFun, Set1, Set2) -> {Set3, Set4} when
+ SetFun :: set_fun(),
+ Set1 :: a_set(),
+ Set2 :: a_set(),
+ Set3 :: a_set(),
+ Set4 :: a_set()).
partition(I, R, S) when is_integer(I), ?IS_SET(R), ?IS_SET(S) ->
RT = ?TYPE(R),
ST = ?TYPE(S),
@@ -954,21 +1216,32 @@ partition(SetFun, S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
end
end.
+-spec(multiple_relative_product(TupleOfBinRels, BinRel1) -> BinRel2 when
+ TupleOfBinRels :: tuple_of(BinRel),
+ BinRel :: binary_relation(),
+ BinRel1 :: binary_relation(),
+ BinRel2 :: binary_relation()).
multiple_relative_product(T, R) when is_tuple(T), ?IS_SET(R) ->
case test_rel(R, tuple_size(T), eq) of
true when ?TYPE(R) =:= ?ANYTYPE ->
empty_set();
- true ->
+ true ->
MProd = mul_relprod(tuple_to_list(T), 1, R),
- relative_product(list_to_tuple(MProd));
- false ->
+ relative_product(MProd);
+ false ->
erlang:error(badarg, [T, R])
end.
-join(R1, I1, R2, I2)
+-spec(join(Relation1, I, Relation2, J) -> Relation3 when
+ Relation1 :: relation(),
+ Relation2 :: relation(),
+ Relation3 :: relation(),
+ I :: pos_integer(),
+ J :: pos_integer()).
+join(R1, I1, R2, I2)
when ?IS_SET(R1), ?IS_SET(R2), is_integer(I1), is_integer(I2) ->
case test_rel(R1, I1, lte) and test_rel(R2, I2, lte) of
- false ->
+ false ->
erlang:error(badarg, [R1, I1, R2, I2]);
true when ?TYPE(R1) =:= ?ANYTYPE -> R1;
true when ?TYPE(R2) =:= ?ANYTYPE -> R2;
@@ -980,8 +1253,8 @@ join(R1, I1, R2, I2)
true ->
fun({X,Y}) -> join_element(X, Y) end;
false ->
- fun({X,Y}) ->
- list_to_tuple(join_element(X, Y, I2))
+ fun({X,Y}) ->
+ list_to_tuple(join_element(X, Y, I2))
end
end,
?SET(replace(T, F, []), F({?TYPE(R1), ?TYPE(R2)}))
@@ -1001,9 +1274,15 @@ test_rel(R, I, C) ->
%%% Family functions
%%%
+-spec(fam2rel(Family) -> BinRel when
+ Family :: family(),
+ BinRel :: binary_relation()).
fam2rel(F) ->
family_to_relation(F).
+-spec(family_to_relation(Family) -> BinRel when
+ Family :: family(),
+ BinRel :: binary_relation()).
%% Inlined.
family_to_relation(F) when ?IS_SET(F) ->
case ?TYPE(F) of
@@ -1013,6 +1292,10 @@ family_to_relation(F) when ?IS_SET(F) ->
_ -> erlang:error(badarg, [F])
end.
+-spec(family_specification(Fun, Family1) -> Family2 when
+ Fun :: spec_fun(),
+ Family1 :: family(),
+ Family2 :: family()).
family_specification(Fun, F) when ?IS_SET(F) ->
case ?TYPE(F) of
?FAMILY(_DT, Type) = FType ->
@@ -1032,6 +1315,9 @@ family_specification(Fun, F) when ?IS_SET(F) ->
_ -> erlang:error(badarg, [Fun, F])
end.
+-spec(union_of_family(Family) -> Set when
+ Family :: family(),
+ Set :: a_set()).
union_of_family(F) when ?IS_SET(F) ->
case ?TYPE(F) of
?FAMILY(_DT, Type) ->
@@ -1040,6 +1326,9 @@ union_of_family(F) when ?IS_SET(F) ->
_ -> erlang:error(badarg, [F])
end.
+-spec(intersection_of_family(Family) -> Set when
+ Family :: family(),
+ Set :: a_set()).
intersection_of_family(F) when ?IS_SET(F) ->
case ?TYPE(F) of
?FAMILY(_DT, Type) ->
@@ -1052,6 +1341,9 @@ intersection_of_family(F) when ?IS_SET(F) ->
_ -> erlang:error(badarg, [F])
end.
+-spec(family_union(Family1) -> Family2 when
+ Family1 :: family(),
+ Family2 :: family()).
family_union(F) when ?IS_SET(F) ->
case ?TYPE(F) of
?FAMILY(DT, ?SET_OF(Type)) ->
@@ -1060,6 +1352,9 @@ family_union(F) when ?IS_SET(F) ->
_ -> erlang:error(badarg, [F])
end.
+-spec(family_intersection(Family1) -> Family2 when
+ Family1 :: family(),
+ Family2 :: family()).
family_intersection(F) when ?IS_SET(F) ->
case ?TYPE(F) of
?FAMILY(DT, ?SET_OF(Type)) ->
@@ -1073,6 +1368,9 @@ family_intersection(F) when ?IS_SET(F) ->
_ -> erlang:error(badarg, [F])
end.
+-spec(family_domain(Family1) -> Family2 when
+ Family1 :: family(),
+ Family2 :: family()).
family_domain(F) when ?IS_SET(F) ->
case ?TYPE(F) of
?FAMILY(FDT, ?BINREL(DT, _)) ->
@@ -1082,6 +1380,9 @@ family_domain(F) when ?IS_SET(F) ->
_ -> erlang:error(badarg, [F])
end.
+-spec(family_range(Family1) -> Family2 when
+ Family1 :: family(),
+ Family2 :: family()).
family_range(F) when ?IS_SET(F) ->
case ?TYPE(F) of
?FAMILY(DT, ?BINREL(_, RT)) ->
@@ -1091,15 +1392,30 @@ family_range(F) when ?IS_SET(F) ->
_ -> erlang:error(badarg, [F])
end.
+-spec(family_field(Family1) -> Family2 when
+ Family1 :: family(),
+ Family2 :: family()).
family_field(F) ->
family_union(family_domain(F), family_range(F)).
+-spec(family_union(Family1, Family2) -> Family3 when
+ Family1 :: family(),
+ Family2 :: family(),
+ Family3 :: family()).
family_union(F1, F2) ->
fam_binop(F1, F2, fun fam_union/3).
+-spec(family_intersection(Family1, Family2) -> Family3 when
+ Family1 :: family(),
+ Family2 :: family(),
+ Family3 :: family()).
family_intersection(F1, F2) ->
fam_binop(F1, F2, fun fam_intersect/3).
+-spec(family_difference(Family1, Family2) -> Family3 when
+ Family1 :: family(),
+ Family2 :: family(),
+ Family3 :: family()).
family_difference(F1, F2) ->
fam_binop(F1, F2, fun fam_difference/3).
@@ -1108,13 +1424,17 @@ fam_binop(F1, F2, FF) when ?IS_SET(F1), ?IS_SET(F2) ->
case unify_types(?TYPE(F1), ?TYPE(F2)) of
[] ->
erlang:error(type_mismatch, [F1, F2]);
- ?ANYTYPE ->
+ ?ANYTYPE ->
F1;
- Type = ?FAMILY(_, _) ->
+ Type = ?FAMILY(_, _) ->
?SET(FF(?LIST(F1), ?LIST(F2), []), Type);
_ -> erlang:error(badarg, [F1, F2])
end.
+-spec(partition_family(SetFun, Set) -> Family when
+ Family :: family(),
+ SetFun :: set_fun(),
+ Set :: a_set()).
partition_family(I, Set) when is_integer(I), ?IS_SET(Set) ->
Type = ?TYPE(Set),
case check_for_sort(Type, I) of
@@ -1159,8 +1479,12 @@ partition_family(SetFun, Set) when ?IS_SET(Set) ->
end
end.
+-spec(family_projection(SetFun, Family1) -> Family2 when
+ SetFun :: set_fun(),
+ Family1 :: family(),
+ Family2 :: family()).
family_projection(SetFun, F) when ?IS_SET(F) ->
- case ?TYPE(F) of
+ case ?TYPE(F) of
?FAMILY(_, _) when [] =:= ?LIST(F) ->
empty_set();
?FAMILY(DT, Type) ->
@@ -1172,7 +1496,7 @@ family_projection(SetFun, F) when ?IS_SET(F) ->
Bad ->
erlang:error(Bad, [SetFun, F])
end;
- _ ->
+ _ ->
erlang:error(badarg, [SetFun, F])
end;
?ANYTYPE -> F;
@@ -1183,6 +1507,9 @@ family_projection(SetFun, F) when ?IS_SET(F) ->
%%% Digraph functions
%%%
+-spec(family_to_digraph(Family) -> Graph when
+ Graph :: digraph(),
+ Family :: family()).
family_to_digraph(F) when ?IS_SET(F) ->
case ?TYPE(F) of
?FAMILY(_, _) -> fam2digraph(F, digraph:new());
@@ -1190,6 +1517,10 @@ family_to_digraph(F) when ?IS_SET(F) ->
_Else -> erlang:error(badarg, [F])
end.
+-spec(family_to_digraph(Family, GraphType) -> Graph when
+ Graph :: digraph(),
+ Family :: family(),
+ GraphType :: [digraph:d_type()]).
family_to_digraph(F, Type) when ?IS_SET(F) ->
case ?TYPE(F) of
?FAMILY(_, _) -> ok;
@@ -1208,12 +1539,19 @@ family_to_digraph(F, Type) when ?IS_SET(F) ->
error:badarg -> erlang:error(badarg, [F, Type])
end.
+-spec(digraph_to_family(Graph) -> Family when
+ Graph :: digraph(),
+ Family :: family()).
digraph_to_family(G) ->
case catch digraph_family(G) of
{'EXIT', _} -> erlang:error(badarg, [G]);
L -> ?SET(L, ?FAMILY(?ATOM_TYPE, ?ATOM_TYPE))
end.
+-spec(digraph_to_family(Graph, Type) -> Family when
+ Graph :: digraph(),
+ Family :: family(),
+ Type :: type()).
digraph_to_family(G, T) ->
case {is_type(T), T} of
{true, ?SET_OF(?FAMILY(_,_) = Type)} ->
@@ -1284,7 +1622,7 @@ rel(Ts, [Type]) ->
end;
rel(Ts, Sz) ->
rel(Ts, Sz, erlang:make_tuple(Sz, ?ATOM_TYPE)).
-
+
atoms_only(Type, I) when ?IS_ATOM_TYPE(?REL_TYPE(I, Type)) ->
atoms_only(Type, I+1);
atoms_only(Type, I) when I > tuple_size(Type), ?IS_RELATION(Type) ->
@@ -1312,7 +1650,7 @@ rel_type([], SL, Type) when ?IS_RELATION(Type) ->
%% Inlined.
a_func(Ts, T) ->
case {T, is_type(T)} of
- {[?BINREL(DT, RT) = Type], true} when ?IS_ATOM_TYPE(DT),
+ {[?BINREL(DT, RT) = Type], true} when ?IS_ATOM_TYPE(DT),
?IS_ATOM_TYPE(RT) ->
func(Ts, Type);
{[Type], true} ->
@@ -1333,16 +1671,16 @@ func([], _X0, L, Type) ->
%% Inlined.
fam(Ts, T) ->
case {T, is_type(T)} of
- {[?FAMILY(DT, RT) = Type], true} when ?IS_ATOM_TYPE(DT),
+ {[?FAMILY(DT, RT) = Type], true} when ?IS_ATOM_TYPE(DT),
?IS_ATOM_TYPE(RT) ->
fam2(Ts, Type);
{[Type], true} ->
func_type(Ts, [], Type, fun(?FAMILY(_,_)) -> true end)
end.
-fam2([], Type) ->
+fam2([], Type) ->
?SET([], Type);
-fam2(Ts, Type) ->
+fam2(Ts, Type) ->
fam2(sort(Ts), Ts, [], Type).
fam2([{I,L} | T], I0, SL, Type) when I /= I0 ->
@@ -1383,7 +1721,7 @@ setify(E, Type0) ->
{Type, OrdSet} = make_element(E, Type0, Type0),
?ORDSET(OrdSet, Type).
-is_no_lists(T) when is_tuple(T) ->
+is_no_lists(T) when is_tuple(T) ->
Sz = tuple_size(T),
is_no_lists(T, Sz, Sz, []).
@@ -1404,7 +1742,7 @@ create([], T, _T0, L) ->
make_element(C, ?ANYTYPE, _T0) ->
make_element(C);
-make_element(C, Atom, ?ANYTYPE) when ?IS_ATOM_TYPE(Atom),
+make_element(C, Atom, ?ANYTYPE) when ?IS_ATOM_TYPE(Atom),
not is_list(C), not is_tuple(C) ->
{Atom, C};
make_element(C, Atom, Atom) when ?IS_ATOM_TYPE(Atom) ->
@@ -1585,12 +1923,12 @@ sympart([H1 | T1], [H2 | T2], L1, L12, L2, T) when H1 == H2 ->
sympart([H1 | T1], [H2 | T2], L1, L12, L2, T) ->
sympart2(T1, T2, L1, L12, [H2 | L2], T, H1);
sympart(S1, [], L1, L12, L2, T) ->
- {?SET(reverse(L1, S1), T),
- ?SET(reverse(L12), T),
+ {?SET(reverse(L1, S1), T),
+ ?SET(reverse(L12), T),
?SET(reverse(L2), T)};
sympart(_, S2, L1, L12, L2, T) ->
- {?SET(reverse(L1), T),
- ?SET(reverse(L12), T),
+ {?SET(reverse(L1), T),
+ ?SET(reverse(L12), T),
?SET(reverse(L2, S2), T)}.
sympart1([H1 | T1], T2, L1, L12, L2, T, H2) when H1 < H2 ->
@@ -1600,8 +1938,8 @@ sympart1([H1 | T1], T2, L1, L12, L2, T, H2) when H1 == H2 ->
sympart1([H1 | T1], T2, L1, L12, L2, T, H2) ->
sympart2(T1, T2, L1, L12, [H2 | L2], T, H1);
sympart1(_, T2, L1, L12, L2, T, H2) ->
- {?SET(reverse(L1), T),
- ?SET(reverse(L12), T),
+ {?SET(reverse(L1), T),
+ ?SET(reverse(L12), T),
?SET(reverse(L2, [H2 | T2]), T)}.
sympart2(T1, [H2 | T2], L1, L12, L2, T, H1) when H1 > H2 ->
@@ -1611,8 +1949,8 @@ sympart2(T1, [H2 | T2], L1, L12, L2, T, H1) when H1 == H2 ->
sympart2(T1, [H2 | T2], L1, L12, L2, T, H1) ->
sympart1(T1, T2, [H1 | L1], L12, L2, T, H2);
sympart2(T1, _, L1, L12, L2, T, H1) ->
- {?SET(reverse(L1, [H1 | T1]), T),
- ?SET(reverse(L12), T),
+ {?SET(reverse(L1, [H1 | T1]), T),
+ ?SET(reverse(L12), T),
?SET(reverse(L2), T)}.
prod([[E | Es] | Xs], T, L) ->
@@ -1660,7 +1998,7 @@ lunion([[] | Ls]) ->
lunion(Ls);
lunion([S | Ss]) ->
umerge(lunion(Ss, last(S), [S], []));
-lunion([]) ->
+lunion([]) ->
[].
lunion([[E] = S | Ss], Last, SL, Ls) when E > Last -> % optimization
@@ -1669,7 +2007,7 @@ lunion([S | Ss], Last, SL, Ls) when hd(S) > Last ->
lunion(Ss, last(S), [S | SL], Ls);
lunion([S | Ss], _Last, SL, Ls) ->
lunion(Ss, last(S), [S], [append(reverse(SL)) | Ls]);
-lunion([], _Last, SL, Ls) ->
+lunion([], _Last, SL, Ls) ->
[append(reverse(SL)) | Ls].
%% The empty list is always the first list, if present.
@@ -1752,18 +2090,17 @@ relprod(B0, Bx0, By0, A0, L, Ax, [{Bx,By} | B], Ay) when Ay == Bx ->
relprod(B0, Bx0, By0, A0, L, _Ax, _B, _Ay) ->
relprod2(B0, Bx0, By0, A0, L).
-relprod_n({}, _R, _EmptyG, _IsR) ->
+relprod_n([], _R, _EmptyG, _IsR) ->
{error, badarg};
-relprod_n(RT, R, EmptyR, IsR) ->
- RL = tuple_to_list(RT),
+relprod_n(RL, R, EmptyR, IsR) ->
case domain_type(RL, ?ANYTYPE) of
- Error = {error, _Reason} ->
+ Error = {error, _Reason} ->
Error;
DType ->
Empty = any(fun is_empty_set/1, RL) or EmptyR,
RType = range_type(RL, []),
Type = ?BINREL(DType, RType),
- Prod =
+ Prod =
case Empty of
true when DType =:= ?ANYTYPE; RType =:= ?ANYTYPE ->
empty_set();
@@ -1771,7 +2108,7 @@ relprod_n(RT, R, EmptyR, IsR) ->
?SET([], Type);
false ->
TL = ?LIST((relprod_n(RL))),
- Sz = tuple_size(RT),
+ Sz = length(RL),
Fun = fun({X,A}) -> {X, flat(Sz, A, [])} end,
?SET(map(Fun, TL), Type)
end,
@@ -1799,12 +2136,12 @@ flat(N, {T,A}, L) ->
domain_type([T | Ts], T0) when ?IS_SET(T) ->
case ?TYPE(T) of
- ?BINREL(DT, _RT) ->
+ ?BINREL(DT, _RT) ->
case unify_types(DT, T0) of
[] -> {error, type_mismatch};
T1 -> domain_type(Ts, T1)
end;
- ?ANYTYPE ->
+ ?ANYTYPE ->
domain_type(Ts, T0);
_ -> {error, badarg}
end;
@@ -1813,12 +2150,12 @@ domain_type([], T0) ->
range_type([T | Ts], L) ->
case ?TYPE(T) of
- ?BINREL(_DT, RT) ->
+ ?BINREL(_DT, RT) ->
range_type(Ts, [RT | L]);
- ?ANYTYPE ->
+ ?ANYTYPE ->
?ANYTYPE
end;
-range_type([], L) ->
+range_type([], L) ->
list_to_tuple(reverse(L)).
converse([{A,B} | X], L) ->
@@ -1861,7 +2198,7 @@ weak1([E={X,_Y} | Es], Ys, L, X0) when X == X0 -> % when X < Y
weak1(Es, Ys, L, X) ->
weak(Es, Ys, [{X,X} | L]).
-weak2([E={X,_Y} | Es], Ys, L, X0) when X == X0 -> % when X < _Y
+weak2([E={X,_Y} | Es], Ys, L, X0) when X == X0 -> % when X < _Y
weak2(Es, Ys, [E | L], X);
weak2(Es, Ys, L, _X) ->
weak(Es, Ys, L).
@@ -1910,7 +2247,7 @@ restrict_n(I, [T | Ts], Key, Keys, L) ->
end;
restrict_n(_I, _Ts, _Key, _Keys, L) ->
L.
-
+
restrict_n(I, K, Ts, [Key | Keys], L, E) when K > Key ->
restrict_n(I, K, Ts, Keys, L, E);
restrict_n(I, K, Ts, [Key | Keys], L, E) when K == Key ->
@@ -1933,7 +2270,7 @@ restrict([{K,E} | Ts], _Key, Keys, L) ->
restrict(Ts, K, Keys, L, E);
restrict(_Ts, _Key, _Keys, L) ->
L.
-
+
restrict(Ts, K, [Key | Keys], L, E) when K > Key ->
restrict(Ts, K, Keys, L, E);
restrict(Ts, K, [Key | Keys], L, E) when K == Key ->
@@ -1956,7 +2293,7 @@ diff_restrict_n(I, _Ts, _Key, _Keys, L) when I =:= 1 ->
reverse(L);
diff_restrict_n(_I, _Ts, _Key, _Keys, L) ->
sort(L).
-
+
diff_restrict_n(I, K, Ts, [Key | Keys], L, T) when K > Key ->
diff_restrict_n(I, K, Ts, Keys, L, T);
diff_restrict_n(I, K, Ts, [Key | Keys], L, _T) when K == Key ->
@@ -1981,7 +2318,7 @@ diff_restrict([{K,E} | Ts], _Key, Keys, L) ->
diff_restrict(Ts, K, Keys, L, E);
diff_restrict(_Ts, _Key, _Keys, L) ->
L.
-
+
diff_restrict(Ts, K, [Key | Keys], L, E) when K > Key ->
diff_restrict(Ts, K, Keys, L, E);
diff_restrict(Ts, K, [Key | Keys], L, _E) when K == Key ->
@@ -2041,7 +2378,7 @@ external_fun({external, Function}) when is_atom(Function) ->
false;
external_fun({external, Fun}) ->
Fun;
-external_fun(_) ->
+external_fun(_) ->
false.
%% Inlined.
@@ -2121,7 +2458,7 @@ partition3_n(I, _Ts, _Key, _Keys, L1, L2) when I =:= 1 ->
[reverse(L1) | reverse(L2)];
partition3_n(_I, _Ts, _Key, _Keys, L1, L2) ->
[sort(L1) | sort(L2)].
-
+
partition3_n(I, K, Ts, [Key | Keys], L1, L2, T) when K > Key ->
partition3_n(I, K, Ts, Keys, L1, L2, T);
partition3_n(I, K, Ts, [Key | Keys], L1, L2, T) when K == Key ->
@@ -2146,7 +2483,7 @@ partition3([{K,E} | Ts], _Key, Keys, L1, L2) ->
partition3(Ts, K, Keys, L1, L2, E);
partition3(_Ts, _Key, _Keys, L1, L2) ->
[L1 | L2].
-
+
partition3(Ts, K, [Key | Keys], L1, L2, E) when K > Key ->
partition3(Ts, K, Keys, L1, L2, E);
partition3(Ts, K, [Key | Keys], L1, L2, E) when K == Key ->
@@ -2192,7 +2529,7 @@ join_element(E1, E2, I2) ->
join_element2([B | Bs], C, I2) when C =/= I2 ->
[B | join_element2(Bs, C+1, I2)];
-join_element2([_ | Bs], _C, _I2) ->
+join_element2([_ | Bs], _C, _I2) ->
Bs.
family2rel([{X,S} | F], L) ->
@@ -2297,7 +2634,7 @@ check_function([{X,_} | XL], R) ->
check_function(X, XL, R);
check_function([], R) ->
R.
-
+
check_function(X0, [{X,_} | XL], R) when X0 /= X ->
check_function(X, XL, R);
check_function(X0, [{X,_} | _XL], _R) when X0 == X ->
@@ -2371,14 +2708,14 @@ term2set(T, Type) ->
?ORDSET(T, Type).
fam2digraph(F, G) ->
- Fun = fun({From, ToL}) ->
+ Fun = fun({From, ToL}) ->
digraph:add_vertex(G, From),
Fun2 = fun(To) ->
digraph:add_vertex(G, To),
case digraph:add_edge(G, From, To) of
- {error, {bad_edge, _}} ->
+ {error, {bad_edge, _}} ->
throw({error, cyclic});
- _ ->
+ _ ->
true
end
end,
@@ -2397,7 +2734,7 @@ digraph_fam([V | Vs], V0, G, L) when V /= V0 ->
digraph_fam([], _V0, _G, L) ->
reverse(L).
-%% -> bool()
+%% -> boolean()
check_fun(T, F, FunT) ->
true = is_type(FunT),
{NT, _MaxI} = number_tuples(T, 1),
@@ -2424,7 +2761,7 @@ check_for_sort(T, _I) when T =:= ?ANYTYPE ->
check_for_sort(T, I) when ?IS_RELATION(T), I =< ?REL_ARITY(T), I >= 1 ->
I > 1;
check_for_sort(_T, _I) ->
- error.
+ error.
inverse_substitution(L, Fun, Sort) ->
%% One easily sees that the inverse of the tuples created by
@@ -2477,11 +2814,11 @@ match_types(Type1, Type2) -> match_types1(Type1, Type2).
match_types1(Atom, Atom) when ?IS_ATOM_TYPE(Atom) ->
true;
-match_types1(?ANYTYPE, _) ->
+match_types1(?ANYTYPE, _) ->
true;
-match_types1(_, ?ANYTYPE) ->
+match_types1(_, ?ANYTYPE) ->
true;
-match_types1(?SET_OF(Type1), ?SET_OF(Type2)) ->
+match_types1(?SET_OF(Type1), ?SET_OF(Type2)) ->
match_types1(Type1, Type2);
match_types1(T1, T2) when tuple_size(T1) =:= tuple_size(T2) ->
match_typesl(tuple_size(T1), T1, T2);
diff --git a/lib/stdlib/src/string.erl b/lib/stdlib/src/string.erl
index 264348180f..30eac4f07d 100644
--- a/lib/stdlib/src/string.erl
+++ b/lib/stdlib/src/string.erl
@@ -29,23 +29,23 @@
%%---------------------------------------------------------------------------
--type direction() :: 'left' | 'right' | 'both'.
-
-%%---------------------------------------------------------------------------
-
%% Robert's bit
%% len(String)
%% Return the length of a string.
--spec len(string()) -> non_neg_integer().
+-spec len(String) -> Length when
+ String :: string(),
+ Length :: non_neg_integer().
len(S) -> length(S).
%% equal(String1, String2)
%% Test if 2 strings are equal.
--spec equal(string(), string()) -> boolean().
+-spec equal(String1, String2) -> boolean() when
+ String1 :: string(),
+ String2 :: string().
equal(S, S) -> true;
equal(_, _) -> false.
@@ -53,7 +53,10 @@ equal(_, _) -> false.
%% concat(String1, String2)
%% Concatenate 2 strings.
--spec concat(string(), string()) -> string().
+-spec concat(String1, String2) -> String3 when
+ String1 :: string(),
+ String2 :: string(),
+ String3 :: string().
concat(S1, S2) -> S1 ++ S2.
@@ -61,7 +64,10 @@ concat(S1, S2) -> S1 ++ S2.
%% rchr(String, Char)
%% Return the first/last index of the character in a string.
--spec chr(string(), char()) -> non_neg_integer().
+-spec chr(String, Character) -> Index when
+ String :: string(),
+ Character :: char(),
+ Index :: non_neg_integer().
chr(S, C) when is_integer(C) -> chr(S, C, 1).
@@ -69,7 +75,10 @@ chr([C|_Cs], C, I) -> I;
chr([_|Cs], C, I) -> chr(Cs, C, I+1);
chr([], _C, _I) -> 0.
--spec rchr(string(), char()) -> non_neg_integer().
+-spec rchr(String, Character) -> Index when
+ String :: string(),
+ Character :: char(),
+ Index :: non_neg_integer().
rchr(S, C) when is_integer(C) -> rchr(S, C, 1, 0).
@@ -85,7 +94,10 @@ rchr([], _C, _I, L) -> L.
%% Return the first/last index of the sub-string in a string.
%% index/2 is kept for backwards compatibility.
--spec str(string(), string()) -> non_neg_integer().
+-spec str(String, SubString) -> Index when
+ String :: string(),
+ SubString :: string(),
+ Index :: non_neg_integer().
str(S, Sub) when is_list(Sub) -> str(S, Sub, 1).
@@ -97,7 +109,10 @@ str([C|S], [C|Sub], I) ->
str([_|S], Sub, I) -> str(S, Sub, I+1);
str([], _Sub, _I) -> 0.
--spec rstr(string(), string()) -> non_neg_integer().
+-spec rstr(String, SubString) -> Index when
+ String :: string(),
+ SubString :: string(),
+ Index :: non_neg_integer().
rstr(S, Sub) when is_list(Sub) -> rstr(S, Sub, 1, 0).
@@ -116,7 +131,10 @@ prefix(Pre, String) when is_list(Pre), is_list(String) -> false.
%% span(String, Chars) -> Length.
%% cspan(String, Chars) -> Length.
--spec span(string(), string()) -> non_neg_integer().
+-spec span(String, Chars) -> Length when
+ String :: string(),
+ Chars :: string(),
+ Length :: non_neg_integer().
span(S, Cs) when is_list(Cs) -> span(S, Cs, 0).
@@ -127,7 +145,10 @@ span([C|S], Cs, I) ->
end;
span([], _Cs, I) -> I.
--spec cspan(string(), string()) -> non_neg_integer().
+-spec cspan(String, Chars) -> Length when
+ String :: string(),
+ Chars :: string(),
+ Length :: non_neg_integer().
cspan(S, Cs) when is_list(Cs) -> cspan(S, Cs, 0).
@@ -142,14 +163,21 @@ cspan([], _Cs, I) -> I.
%% substr(String, Start, Length)
%% Extract a sub-string from String.
--spec substr(string(), pos_integer()) -> string().
+-spec substr(String, Start) -> SubString when
+ String :: string(),
+ SubString :: string(),
+ Start :: pos_integer().
substr(String, 1) when is_list(String) ->
String;
substr(String, S) when is_integer(S), S > 1 ->
substr2(String, S).
--spec substr(string(), pos_integer(), non_neg_integer()) -> string().
+-spec substr(String, Start, Length) -> SubString when
+ String :: string(),
+ SubString :: string(),
+ Start :: pos_integer(),
+ Length :: non_neg_integer().
substr(String, S, L) when is_integer(S), S >= 1, is_integer(L), L >= 0 ->
substr1(substr2(String, S), L).
@@ -163,7 +191,10 @@ substr2([_|String], S) -> substr2(String, S-1).
%% tokens(String, Seperators).
%% Return a list of tokens seperated by characters in Seperators.
--spec tokens(string(), string()) -> [[char(),...]].
+-spec tokens(String, SeparatorList) -> Tokens when
+ String :: string(),
+ SeparatorList :: string(),
+ Tokens :: [Token :: nonempty_string()].
tokens(S, Seps) ->
tokens1(S, Seps, []).
@@ -184,11 +215,18 @@ tokens2([C|S], Seps, Toks, Cs) ->
tokens2([], _Seps, Toks, Cs) ->
reverse([reverse(Cs)|Toks]).
--spec chars(char(), non_neg_integer()) -> string().
+-spec chars(Character, Number) -> String when
+ Character :: char(),
+ Number :: non_neg_integer(),
+ String :: string().
chars(C, N) -> chars(C, N, []).
--spec chars(char(), non_neg_integer(), string()) -> string().
+-spec chars(Character, Number, Tail) -> String when
+ Character :: char(),
+ Number :: non_neg_integer(),
+ Tail :: string(),
+ String :: string().
chars(C, N, Tail) when N > 0 ->
chars(C, N-1, [C|Tail]);
@@ -199,7 +237,10 @@ chars(C, 0, Tail) when is_integer(C) ->
%%% COPIES %%%
--spec copies(string(), non_neg_integer()) -> string().
+-spec copies(String, Number) -> Copies when
+ String :: string(),
+ Copies :: string(),
+ Number :: non_neg_integer().
copies(CharList, Num) when is_list(CharList), is_integer(Num), Num >= 0 ->
copies(CharList, Num, []).
@@ -211,11 +252,16 @@ copies(CharList, Num, R) ->
%%% WORDS %%%
--spec words(string()) -> pos_integer().
+-spec words(String) -> Count when
+ String :: string(),
+ Count :: pos_integer().
words(String) -> words(String, $\s).
--spec words(string(), char()) -> pos_integer().
+-spec words(String, Character) -> Count when
+ String :: string(),
+ Character :: char(),
+ Count :: pos_integer().
words(String, Char) when is_integer(Char) ->
w_count(strip(String, both, Char), Char, 0).
@@ -226,11 +272,18 @@ w_count([_H|T], Char, Num) -> w_count(T, Char, Num).
%%% SUB_WORDS %%%
--spec sub_word(string(), integer()) -> string().
+-spec sub_word(String, Number) -> Word when
+ String :: string(),
+ Word :: string(),
+ Number :: integer().
sub_word(String, Index) -> sub_word(String, Index, $\s).
--spec sub_word(string(), integer(), char()) -> string().
+-spec sub_word(String, Number, Character) -> Word when
+ String :: string(),
+ Word :: string(),
+ Number :: integer(),
+ Character :: char().
sub_word(String, Index, Char) when is_integer(Index), is_integer(Char) ->
case words(String, Char) of
@@ -254,14 +307,21 @@ s_word([_|T],Stop,Char,Index,Res) when Index < Stop ->
strip(String) -> strip(String, both).
--spec strip(string(), direction()) -> string().
+-spec strip(String, Direction) -> Stripped when
+ String :: string(),
+ Stripped :: string(),
+ Direction :: left | right | both.
strip(String, left) -> strip_left(String, $\s);
strip(String, right) -> strip_right(String, $\s);
strip(String, both) ->
strip_right(strip_left(String, $\s), $\s).
--spec strip(string(), direction(), char()) -> string().
+-spec strip(String, Direction, Character) -> Stripped when
+ String :: string(),
+ Stripped :: string(),
+ Direction :: left | right | both,
+ Character :: char().
strip(String, right, Char) -> strip_right(String, Char);
strip(String, left, Char) -> strip_left(String, Char);
@@ -285,11 +345,18 @@ strip_right([], Sc) when is_integer(Sc) ->
%%% LEFT %%%
--spec left(string(), non_neg_integer()) -> string().
+-spec left(String, Number) -> Left when
+ String :: string(),
+ Left :: string(),
+ Number :: non_neg_integer().
left(String, Len) when is_integer(Len) -> left(String, Len, $\s).
--spec left(string(), non_neg_integer(), char()) -> string().
+-spec left(String, Number, Character) -> Left when
+ String :: string(),
+ Left :: string(),
+ Number :: non_neg_integer(),
+ Character :: char().
left(String, Len, Char) when is_integer(Char) ->
Slen = length(String),
@@ -303,11 +370,18 @@ l_pad(String, Num, Char) -> String ++ chars(Char, Num).
%%% RIGHT %%%
--spec right(string(), non_neg_integer()) -> string().
+-spec right(String, Number) -> Right when
+ String :: string(),
+ Right :: string(),
+ Number :: non_neg_integer().
right(String, Len) when is_integer(Len) -> right(String, Len, $\s).
--spec right(string(), non_neg_integer(), char()) -> string().
+-spec right(String, Number, Character) -> Right when
+ String :: string(),
+ Right :: string(),
+ Number :: non_neg_integer(),
+ Character :: char().
right(String, Len, Char) when is_integer(Char) ->
Slen = length(String),
@@ -321,11 +395,18 @@ r_pad(String, Num, Char) -> chars(Char, Num, String).
%%% CENTRE %%%
--spec centre(string(), non_neg_integer()) -> string().
+-spec centre(String, Number) -> Centered when
+ String :: string(),
+ Centered :: string(),
+ Number :: non_neg_integer().
centre(String, Len) when is_integer(Len) -> centre(String, Len, $\s).
--spec centre(string(), non_neg_integer(), char()) -> string().
+-spec centre(String, Number, Character) -> Centered when
+ String :: string(),
+ Centered :: string(),
+ Number :: non_neg_integer(),
+ Character :: char().
centre(String, 0, Char) when is_list(String), is_integer(Char) ->
[]; % Strange cases to centre string
@@ -341,11 +422,18 @@ centre(String, Len, Char) when is_integer(Char) ->
%%% SUB_STRING %%%
--spec sub_string(string(), pos_integer()) -> string().
+-spec sub_string(String, Start) -> SubString when
+ String :: string(),
+ SubString :: string(),
+ Start :: pos_integer().
sub_string(String, Start) -> substr(String, Start).
--spec sub_string(string(), pos_integer(), pos_integer()) -> string().
+-spec sub_string(String, Start, Stop) -> SubString when
+ String :: string(),
+ SubString :: string(),
+ Start :: pos_integer(),
+ Stop :: pos_integer().
sub_string(String, Start, Stop) -> substr(String, Start, Stop - Start + 1).
@@ -370,23 +458,34 @@ to_upper_char(C) when is_integer(C), 16#F8 =< C, C =< 16#FE ->
to_upper_char(C) ->
C.
--spec to_lower(string()) -> string()
- ; (char()) -> char().
+-spec to_lower(String) -> Result when
+ String :: string(),
+ Result :: string()
+ ; (Char) -> CharResult when
+ Char :: char(),
+ CharResult :: char().
to_lower(S) when is_list(S) ->
[to_lower_char(C) || C <- S];
to_lower(C) when is_integer(C) ->
to_lower_char(C).
--spec to_upper(string()) -> string()
- ; (char()) -> char().
+-spec to_upper(String) -> Result when
+ String :: string(),
+ Result :: string()
+ ; (Char) -> CharResult when
+ Char :: char(),
+ CharResult :: char().
to_upper(S) when is_list(S) ->
[to_upper_char(C) || C <- S];
to_upper(C) when is_integer(C) ->
to_upper_char(C).
--spec join([string()], string()) -> string().
+-spec join(StringList, Separator) -> String when
+ StringList :: [string()],
+ Separator :: string(),
+ String :: string().
join([], Sep) when is_list(Sep) ->
[];
diff --git a/lib/stdlib/src/supervisor.erl b/lib/stdlib/src/supervisor.erl
index 4fd7f1d47c..e60706ed05 100644
--- a/lib/stdlib/src/supervisor.erl
+++ b/lib/stdlib/src/supervisor.erl
@@ -35,19 +35,28 @@
%%--------------------------------------------------------------------------
--export_type([child_spec/0, del_err/0, startchild_ret/0, strategy/0]).
+-export_type([child_spec/0, startchild_ret/0, strategy/0]).
%%--------------------------------------------------------------------------
--type child_id() :: pid() | 'undefined'.
--type mfargs() :: {module(), atom(), [term()] | undefined}.
+-type child() :: pid() | 'undefined'.
+-type child_id() :: term().
+-type mfargs() :: {M :: module(), F :: atom(), A :: [term()] | undefined}.
-type modules() :: [module()] | 'dynamic'.
-type restart() :: 'permanent' | 'transient' | 'temporary'.
-type shutdown() :: 'brutal_kill' | timeout().
-type worker() :: 'worker' | 'supervisor'.
--type sup_name() :: {'local', atom()} | {'global', atom()}.
--type sup_ref() :: atom() | {atom(), atom()} | {'global', atom()} | pid().
--type child_spec() :: {term(),mfargs(),restart(),shutdown(),worker(),modules()}.
+-type sup_name() :: {'local', Name :: atom()} | {'global', Name :: atom()}.
+-type sup_ref() :: (Name :: atom())
+ | {Name :: atom(), Node :: node()}
+ | {'global', Name :: atom()}
+ | pid().
+-type child_spec() :: {Id :: child_id(),
+ StartFunc :: mfargs(),
+ Restart :: restart(),
+ Shutdown :: shutdown(),
+ Type :: worker(),
+ Modules :: modules()}.
-type strategy() :: 'one_for_all' | 'one_for_one'
| 'rest_for_one' | 'simple_one_for_one'.
@@ -55,21 +64,23 @@
%%--------------------------------------------------------------------------
-record(child, {% pid is undefined when child is not running
- pid = undefined :: child_id(),
+ pid = undefined :: child(),
name,
mfargs :: mfargs(),
restart_type :: restart(),
shutdown :: shutdown(),
child_type :: worker(),
modules = [] :: modules()}).
--type child() :: #child{}.
+-type child_rec() :: #child{}.
-define(DICT, dict).
+-define(SETS, sets).
+-define(SET, set).
-record(state, {name,
strategy :: strategy(),
- children = [] :: [child()],
- dynamics :: ?DICT() | list(),
+ children = [] :: [child_rec()],
+ dynamics :: ?DICT() | ?SET(),
intensity :: non_neg_integer(),
period :: pos_integer(),
restarts = [],
@@ -97,11 +108,16 @@ behaviour_info(_Other) ->
-type startlink_err() :: {'already_started', pid()} | 'shutdown' | term().
-type startlink_ret() :: {'ok', pid()} | 'ignore' | {'error', startlink_err()}.
--spec start_link(module(), term()) -> startlink_ret().
+-spec start_link(Module, Args) -> startlink_ret() when
+ Module :: module(),
+ Args :: term().
start_link(Mod, Args) ->
gen_server:start_link(supervisor, {self, Mod, Args}, []).
--spec start_link(sup_name(), module(), term()) -> startlink_ret().
+-spec start_link(SupName, Module, Args) -> startlink_ret() when
+ SupName :: sup_name(),
+ Module :: module(),
+ Args :: term().
start_link(SupName, Mod, Args) ->
gen_server:start_link(SupName, supervisor, {SupName, Mod, Args}, []).
@@ -109,24 +125,33 @@ start_link(SupName, Mod, Args) ->
%%% Interface functions.
%%% ---------------------------------------------------
--type info() :: term().
-type startchild_err() :: 'already_present'
- | {'already_started', child_id()} | term().
--type startchild_ret() :: {'ok', child_id()} | {'ok', child_id(), info()}
+ | {'already_started', Child :: child()} | term().
+-type startchild_ret() :: {'ok', Child :: child()}
+ | {'ok', Child :: child(), Info :: term()}
| {'error', startchild_err()}.
--spec start_child(sup_ref(), child_spec() | [term()]) -> startchild_ret().
+-spec start_child(SupRef, ChildSpec) -> startchild_ret() when
+ SupRef :: sup_ref(),
+ ChildSpec :: child_spec() | (List :: [term()]).
start_child(Supervisor, ChildSpec) ->
call(Supervisor, {start_child, ChildSpec}).
--type restart_err() :: 'running' | 'not_found' | 'simple_one_for_one' | term().
--spec restart_child(sup_ref(), term()) ->
- {'ok', child_id()} | {'ok', child_id(), info()} | {'error', restart_err()}.
+-spec restart_child(SupRef, Id) -> Result when
+ SupRef :: sup_ref(),
+ Id :: child_id(),
+ Result :: {'ok', Child :: child()}
+ | {'ok', Child :: child(), Info :: term()}
+ | {'error', Error},
+ Error :: 'running' | 'not_found' | 'simple_one_for_one' | term().
restart_child(Supervisor, Name) ->
call(Supervisor, {restart_child, Name}).
--type del_err() :: 'running' | 'not_found' | 'simple_one_for_one'.
--spec delete_child(sup_ref(), term()) -> 'ok' | {'error', del_err()}.
+-spec delete_child(SupRef, Id) -> Result when
+ SupRef :: sup_ref(),
+ Id :: child_id(),
+ Result :: 'ok' | {'error', Error},
+ Error :: 'running' | 'not_found' | 'simple_one_for_one'.
delete_child(Supervisor, Name) ->
call(Supervisor, {delete_child, Name}).
@@ -137,22 +162,39 @@ delete_child(Supervisor, Name) ->
%% way (maybe killed).
%%-----------------------------------------------------------------
--type term_err() :: 'not_found' | 'simple_one_for_one'.
--spec terminate_child(sup_ref(), pid() | term()) -> 'ok' | {'error', term_err()}.
+-spec terminate_child(SupRef, Id) -> Result when
+ SupRef :: sup_ref(),
+ Id :: pid() | child_id(),
+ Result :: 'ok' | {'error', Error},
+ Error :: 'not_found' | 'simple_one_for_one'.
terminate_child(Supervisor, Name) ->
call(Supervisor, {terminate_child, Name}).
--spec which_children(sup_ref()) -> [{term(), child_id(), worker(), modules()}].
+-spec which_children(SupRef) -> [{Id,Child,Type,Modules}] when
+ SupRef :: sup_ref(),
+ Id :: child_id() | undefined,
+ Child :: child(),
+ Type :: worker(),
+ Modules :: modules().
which_children(Supervisor) ->
call(Supervisor, which_children).
+-spec count_children(SupRef) -> PropListOfCounts when
+ SupRef :: sup_ref(),
+ PropListOfCounts :: [Count],
+ Count :: {specs, ChildSpecCount :: non_neg_integer()}
+ | {active, ActiveProcessCount :: non_neg_integer()}
+ | {supervisors, ChildSupervisorCount :: non_neg_integer()}
+ |{workers, ChildWorkerCount :: non_neg_integer()}.
count_children(Supervisor) ->
call(Supervisor, count_children).
call(Supervisor, Req) ->
gen_server:call(Supervisor, Req, infinity).
--spec check_childspecs([child_spec()]) -> 'ok' | {'error', term()}.
+-spec check_childspecs(ChildSpecs) -> Result when
+ ChildSpecs :: [child_spec()],
+ Result :: 'ok' | {'error', Error :: term()}.
check_childspecs(ChildSpecs) when is_list(ChildSpecs) ->
case check_startspec(ChildSpecs) of
{ok, _} -> ok;
@@ -220,12 +262,12 @@ init_dynamic(_State, StartSpec) ->
%%-----------------------------------------------------------------
%% Func: start_children/2
-%% Args: Children = [child()] in start order
+%% Args: Children = [child_rec()] in start order
%% SupName = {local, atom()} | {global, atom()} | {pid(), Mod}
%% Purpose: Start all children. The new list contains #child's
%% with pids.
%% Returns: {ok, NChildren} | {error, NChildren}
-%% NChildren = [child()] in termination order (reversed
+%% NChildren = [child_rec()] in termination order (reversed
%% start order)
%%-----------------------------------------------------------------
start_children(Children, SupName) -> start_children(Children, [], SupName).
@@ -363,8 +405,8 @@ handle_call(which_children, _From, #state{children = [#child{restart_type = temp
child_type = CT,
modules = Mods}]} =
State) when ?is_simple(State) ->
- Reply = lists:map(fun(Pid) -> {undefined, Pid, CT, Mods} end, dynamics_db(temporary,
- State#state.dynamics)),
+ Reply = lists:map(fun(Pid) -> {undefined, Pid, CT, Mods} end,
+ ?SETS:to_list(dynamics_db(temporary, State#state.dynamics))),
{reply, Reply, State};
handle_call(which_children, _From, #state{children = [#child{restart_type = RType,
@@ -389,7 +431,7 @@ handle_call(count_children, _From, #state{children = [#child{restart_type = temp
child_type = CT}]} = State)
when ?is_simple(State) ->
{Active, Count} =
- lists:foldl(fun(Pid, {Alive, Tot}) ->
+ ?SETS:fold(fun(Pid, {Alive, Tot}) ->
if is_pid(Pid) -> {Alive+1, Tot +1};
true -> {Alive, Tot + 1} end
end, {0, 0}, dynamics_db(temporary, State#state.dynamics)),
@@ -685,9 +727,9 @@ restart(one_for_all, Child, State) ->
%%-----------------------------------------------------------------
%% Func: terminate_children/2
-%% Args: Children = [child()] in termination order
+%% Args: Children = [child_rec()] in termination order
%% SupName = {local, atom()} | {global, atom()} | {pid(),Mod}
-%% Returns: NChildren = [child()] in
+%% Returns: NChildren = [child_rec()] in
%% startup order (reversed termination order)
%%-----------------------------------------------------------------
terminate_children(Children, SupName) ->
@@ -800,24 +842,27 @@ save_child(Child, #state{children = Children} = State) ->
State#state{children = [Child |Children]}.
save_dynamic_child(temporary, Pid, _, #state{dynamics = Dynamics} = State) ->
- State#state{dynamics = [Pid | dynamics_db(temporary, Dynamics)]};
+ State#state{dynamics = ?SETS:add_element(Pid, dynamics_db(temporary, Dynamics))};
save_dynamic_child(RestartType, Pid, Args, #state{dynamics = Dynamics} = State) ->
State#state{dynamics = ?DICT:store(Pid, Args, dynamics_db(RestartType, Dynamics))}.
dynamics_db(temporary, undefined) ->
- [];
+ ?SETS:new();
dynamics_db(_, undefined) ->
?DICT:new();
dynamics_db(_,Dynamics) ->
Dynamics.
-dynamic_child_args(_, Dynamics) when is_list(Dynamics)->
- {ok, undefined};
dynamic_child_args(Pid, Dynamics) ->
- ?DICT:find(Pid, Dynamics).
+ case ?SETS:is_set(Dynamics) of
+ true ->
+ {ok, undefined};
+ false ->
+ ?DICT:find(Pid, Dynamics)
+ end.
state_del_child(#child{pid = Pid, restart_type = temporary}, State) when ?is_simple(State) ->
- NDynamics = lists:delete(Pid, dynamics_db(temporary, State#state.dynamics)),
+ NDynamics = ?SETS:del_element(Pid, dynamics_db(temporary, State#state.dynamics)),
State#state{dynamics = NDynamics};
state_del_child(#child{pid = Pid, restart_type = RType}, State) when ?is_simple(State) ->
NDynamics = ?DICT:erase(Pid, dynamics_db(RType, State#state.dynamics)),
@@ -871,10 +916,13 @@ get_dynamic_child(Pid, #state{children=[Child], dynamics=Dynamics}) ->
end
end.
-is_dynamic_pid(Pid, Dynamics) when is_list(Dynamics) ->
- lists:member(Pid, Dynamics);
is_dynamic_pid(Pid, Dynamics) ->
- dict:is_key(Pid, Dynamics).
+ case ?SETS:is_set(Dynamics) of
+ true ->
+ ?SETS:is_element(Pid, Dynamics);
+ false ->
+ ?DICT:is_key(Pid, Dynamics)
+ end.
replace_child(Child, State) ->
Chs = do_replace_child(Child, State#state.children),
@@ -950,7 +998,7 @@ supname(N, _) -> N.
%%% Shutdown = integer() | infinity | brutal_kill
%%% ChildType = supervisor | worker
%%% Modules = [atom()] | dynamic
-%%% Returns: {ok, [child()]} | Error
+%%% Returns: {ok, [child_rec()]} | Error
%%% ------------------------------------------------------
check_startspec(Children) -> check_startspec(Children, []).
diff --git a/lib/stdlib/src/supervisor_bridge.erl b/lib/stdlib/src/supervisor_bridge.erl
index 3d2bd2c9a5..555cb5a66f 100644
--- a/lib/stdlib/src/supervisor_bridge.erl
+++ b/lib/stdlib/src/supervisor_bridge.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -49,9 +49,25 @@ behaviour_info(_Other) ->
%%%-----------------------------------------------------------------
-record(state, {mod, pid, child_state, name}).
+-spec start_link(Module, Args) -> Result when
+ Module :: module(),
+ Args :: term(),
+ Result :: {ok, Pid} | ignore | {error, Error},
+ Error :: {already_started, Pid} | term(),
+ Pid :: pid().
+
start_link(Mod, StartArgs) ->
gen_server:start_link(supervisor_bridge, [Mod, StartArgs, self], []).
+-spec start_link(SupBridgeName, Module, Args) -> Result when
+ SupBridgeName :: {local, Name} | {global, Name},
+ Name :: atom(),
+ Module :: module(),
+ Args :: term(),
+ Result :: {ok, Pid} | ignore | {error, Error},
+ Error :: {already_started, Pid} | term(),
+ Pid :: pid().
+
start_link(Name, Mod, StartArgs) ->
gen_server:start_link(Name, supervisor_bridge, [Mod, StartArgs, Name], []).
diff --git a/lib/stdlib/src/sys.erl b/lib/stdlib/src/sys.erl
index 12209c16d7..8ab72c9b50 100644
--- a/lib/stdlib/src/sys.erl
+++ b/lib/stdlib/src/sys.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -33,22 +33,74 @@
%%-----------------------------------------------------------------
-type name() :: pid() | atom() | {'global', atom()}.
--type system_event() :: {'in', _Msg} | {'in', _Msg, _From} | {'out', _Msg, _To}.
+-type system_event() :: {'in', Msg :: _}
+ | {'in', Msg :: _, From :: _}
+ | {'out', Msg :: _, To :: _}
+ | term().
+-opaque dbg_opt() :: list().
+-type dbg_fun() :: fun((FuncState :: _,
+ Event :: system_event(),
+ ProcState :: _) -> 'done' | (NewFuncState :: _)).
%%-----------------------------------------------------------------
%% System messages
%%-----------------------------------------------------------------
+-spec suspend(Name) -> Void when
+ Name :: name(),
+ Void :: term().
suspend(Name) -> send_system_msg(Name, suspend).
+-spec suspend(Name, Timeout) -> Void when
+ Name :: name(),
+ Timeout :: timeout(),
+ Void :: term().
suspend(Name, Timeout) -> send_system_msg(Name, suspend, Timeout).
+-spec resume(Name) -> Void when
+ Name :: name(),
+ Void :: term().
resume(Name) -> send_system_msg(Name, resume).
+-spec resume(Name, Timeout) -> Void when
+ Name :: name(),
+ Timeout :: timeout(),
+ Void :: term().
resume(Name, Timeout) -> send_system_msg(Name, resume, Timeout).
+-spec get_status(Name) -> Status when
+ Name :: name(),
+ Status :: {status, Pid :: pid(), {module, Module :: module()}, [SItem]},
+ SItem :: (PDict :: [{Key :: term(), Value :: term()}])
+ | (SysState :: 'running' | 'suspended')
+ | (Parent :: pid())
+ | (Dbg :: dbg_opt())
+ | (Misc :: term()).
get_status(Name) -> send_system_msg(Name, get_status).
+-spec get_status(Name, Timeout) -> Status when
+ Name :: name(),
+ Timeout :: timeout(),
+ Status :: {status, Pid :: pid(), {module, Module :: module()}, [SItem]},
+ SItem :: (PDict :: [{Key :: term(), Value :: term()}])
+ | (SysState :: 'running' | 'suspended')
+ | (Parent :: pid())
+ | (Dbg :: dbg_opt())
+ | (Misc :: term()).
get_status(Name, Timeout) -> send_system_msg(Name, get_status, Timeout).
+-spec change_code(Name, Module, OldVsn, Extra) -> 'ok' | {error, Reason} when
+ Name :: name(),
+ Module :: module(),
+ OldVsn :: 'undefined' | term(),
+ Extra :: term(),
+ Reason :: term().
change_code(Name, Mod, Vsn, Extra) ->
send_system_msg(Name, {change_code, Mod, Vsn, Extra}).
+-spec change_code(Name, Module, OldVsn, Extra, Timeout) ->
+ 'ok' | {error, Reason} when
+ Name :: name(),
+ Module :: module(),
+ OldVsn :: 'undefined' | term(),
+ Extra :: term(),
+ Timeout :: timeout(),
+ Reason :: term().
change_code(Name, Mod, Vsn, Extra, Timeout) ->
send_system_msg(Name, {change_code, Mod, Vsn, Extra}, Timeout).
@@ -56,52 +108,116 @@ change_code(Name, Mod, Vsn, Extra, Timeout) ->
%% Debug commands
%%-----------------------------------------------------------------
--type log_flag() :: 'true' | {'true',pos_integer()} | 'false' | 'get' | 'print'.
-
--spec log(name(), log_flag()) -> 'ok' | {'ok', [system_event()]}.
+-spec log(Name, Flag) -> 'ok' | {'ok', [system_event()]} when
+ Name :: name(),
+ Flag :: 'true' |
+ {'true', N :: pos_integer()}
+ | 'false' | 'get' | 'print'.
log(Name, Flag) ->
send_system_msg(Name, {debug, {log, Flag}}).
--spec log(name(), log_flag(), timeout()) -> 'ok' | {'ok', [system_event()]}.
+-spec log(Name, Flag, Timeout) -> 'ok' | {'ok', [system_event()]} when
+ Name :: name(),
+ Flag :: 'true' |
+ {'true', N :: pos_integer()}
+ | 'false' | 'get' | 'print',
+ Timeout :: timeout().
log(Name, Flag, Timeout) ->
send_system_msg(Name, {debug, {log, Flag}}, Timeout).
--spec trace(name(), boolean()) -> 'ok'.
+-spec trace(Name, Flag) -> 'ok' when
+ Name :: name(),
+ Flag :: boolean().
trace(Name, Flag) ->
send_system_msg(Name, {debug, {trace, Flag}}).
--spec trace(name(), boolean(), timeout()) -> 'ok'.
+-spec trace(Name, Flag, Timeout) -> 'ok' when
+ Name :: name(),
+ Flag :: boolean(),
+ Timeout :: timeout().
trace(Name, Flag, Timeout) ->
send_system_msg(Name, {debug, {trace, Flag}}, Timeout).
--type l2f_fname() :: string() | 'false'.
-
--spec log_to_file(name(), l2f_fname()) -> 'ok' | {'error','open_file'}.
+-spec log_to_file(Name, Flag) -> 'ok' | {'error','open_file'} when
+ Name :: name(),
+ Flag :: (FileName :: string()) | 'false'.
log_to_file(Name, FileName) ->
send_system_msg(Name, {debug, {log_to_file, FileName}}).
--spec log_to_file(name(), l2f_fname(), timeout()) -> 'ok' | {'error','open_file'}.
+-spec log_to_file(Name, Flag, Timeout) -> 'ok' | {'error','open_file'} when
+ Name :: name(),
+ Flag :: (FileName :: string()) | 'false',
+ Timeout :: timeout().
log_to_file(Name, FileName, Timeout) ->
send_system_msg(Name, {debug, {log_to_file, FileName}}, Timeout).
+-spec statistics(Name, Flag) -> 'ok' | {'ok', Statistics} when
+ Name :: name(),
+ Flag :: 'true' | 'false' | 'get',
+ Statistics :: [StatisticsTuple],
+ StatisticsTuple :: {'start_time', DateTime1}
+ | {'current_time', DateTime2}
+ | {'reductions', non_neg_integer()}
+ | {'messages_in', non_neg_integer()}
+ | {'messages_out', non_neg_integer()},
+ DateTime1 :: file:date_time(),
+ DateTime2 :: file:date_time().
statistics(Name, Flag) ->
send_system_msg(Name, {debug, {statistics, Flag}}).
+
+-spec statistics(Name, Flag, Timeout) -> 'ok' | {'ok', Statistics} when
+ Name :: name(),
+ Flag :: 'true' | 'false' | 'get',
+ Statistics :: [StatisticsTuple],
+ StatisticsTuple :: {'start_time', DateTime1}
+ | {'current_time', DateTime2}
+ | {'reductions', non_neg_integer()}
+ | {'messages_in', non_neg_integer()}
+ | {'messages_out', non_neg_integer()},
+ DateTime1 :: file:date_time(),
+ DateTime2 :: file:date_time(),
+ Timeout :: timeout().
statistics(Name, Flag, Timeout) ->
send_system_msg(Name, {debug, {statistics, Flag}}, Timeout).
--spec no_debug(name()) -> 'ok'.
+-spec no_debug(Name) -> 'ok' when
+ Name :: name().
no_debug(Name) -> send_system_msg(Name, {debug, no_debug}).
--spec no_debug(name(), timeout()) -> 'ok'.
+-spec no_debug(Name, Timeout) -> 'ok' when
+ Name :: name(),
+ Timeout :: timeout().
no_debug(Name, Timeout) -> send_system_msg(Name, {debug, no_debug}, Timeout).
+-spec install(Name, FuncSpec) -> Void when
+ Name :: name(),
+ FuncSpec :: {Func, FuncState},
+ Func :: dbg_fun(),
+ FuncState :: term(),
+ Void :: term().
install(Name, {Func, FuncState}) ->
send_system_msg(Name, {debug, {install, {Func, FuncState}}}).
+-spec install(Name, FuncSpec, Timeout) -> Void when
+ Name :: name(),
+ FuncSpec :: {Func, FuncState},
+ Func :: dbg_fun(),
+ FuncState :: term(),
+ Timeout :: timeout(),
+ Void :: term().
install(Name, {Func, FuncState}, Timeout) ->
send_system_msg(Name, {debug, {install, {Func, FuncState}}}, Timeout).
+-spec remove(Name, Func) -> Void when
+ Name :: name(),
+ Func :: dbg_fun(),
+ Void :: term().
remove(Name, Func) ->
send_system_msg(Name, {debug, {remove, Func}}).
+-spec remove(Name, Func, Timeout) -> Void when
+ Name :: name(),
+ Func :: dbg_fun(),
+ Timeout :: timeout(),
+ Void :: term().
remove(Name, Func, Timeout) ->
send_system_msg(Name, {debug, {remove, Func}}, Timeout).
@@ -150,6 +266,14 @@ mfa(Name, Req, Timeout) ->
%% The Module must export system_continue/3, system_terminate/4
%% and format_status/2 for status information.
%%-----------------------------------------------------------------
+-spec handle_system_msg(Msg, From, Parent, Module, Debug, Misc) -> Void when
+ Msg :: term(),
+ From :: {pid(), Tag :: _},
+ Parent :: pid(),
+ Module :: module(),
+ Debug :: [dbg_opt()],
+ Misc :: term(),
+ Void :: term().
handle_system_msg(Msg, From, Parent, Module, Debug, Misc) ->
handle_system_msg(running, Msg, From, Parent, Module, Debug, Misc, false).
@@ -176,6 +300,11 @@ handle_system_msg(SysState, Msg, From, Parent, Mod, Debug, Misc, Hib) ->
%% Func is a formatting function, called as Func(Device, Event).
%% Returns: [debug_opts()]
%%-----------------------------------------------------------------
+-spec handle_debug(Debug, FormFunc, Extra, Event) -> [dbg_opt()] when
+ Debug :: [dbg_opt()],
+ FormFunc :: dbg_fun(),
+ Extra :: term(),
+ Event :: system_event().
handle_debug([{trace, true} | T], FormFunc, State, Event) ->
print_event({Event, State, FormFunc}),
[{trace, true} | handle_debug(T, FormFunc, State, Event)];
@@ -341,24 +470,36 @@ trim(N, LogData) ->
%% Debug structure manipulating functions
%%-----------------------------------------------------------------
install_debug(Item, Data, Debug) ->
- case get_debug(Item, Debug, undefined) of
+ case get_debug2(Item, Debug, undefined) of
undefined -> [{Item, Data} | Debug];
_ -> Debug
end.
remove_debug(Item, Debug) -> lists:keydelete(Item, 1, Debug).
+
+-spec get_debug(Item, Debug, Default) -> term() when
+ Item :: 'log' | 'statistics',
+ Debug :: [dbg_opt()],
+ Default :: term().
get_debug(Item, Debug, Default) ->
+ get_debug2(Item, Debug, Default).
+
+%% Workaround: accepts more Item types than get_debug/3.
+get_debug2(Item, Debug, Default) ->
case lists:keysearch(Item, 1, Debug) of
{value, {Item, Data}} -> Data;
_ -> Default
end.
+-spec print_log(Debug) -> Void when
+ Debug :: [dbg_opt()],
+ Void :: term().
print_log(Debug) ->
{_N, Logs} = get_debug(log, Debug, {0, []}),
lists:foreach(fun print_event/1,
lists:reverse(Logs)).
close_log_file(Debug) ->
- case get_debug(log_to_file, Debug, []) of
+ case get_debug2(log_to_file, Debug, []) of
[] ->
Debug;
Fd ->
@@ -375,6 +516,15 @@ close_log_file(Debug) ->
%% system messages.
%% Returns: [debug_opts()]
%%-----------------------------------------------------------------
+
+-spec debug_options(Options) -> [dbg_opt()] when
+ Options :: [Opt],
+ Opt :: 'trace' | 'log' | 'statistics' | {'log_to_file', FileName}
+ | {'install', FuncSpec},
+ FileName :: file:name(),
+ FuncSpec :: {Func, FuncState},
+ Func :: dbg_fun(),
+ FuncState :: term().
debug_options(Options) ->
debug_options(Options, []).
debug_options([trace | T], Debug) ->
diff --git a/lib/stdlib/src/timer.erl b/lib/stdlib/src/timer.erl
index b456c5d6c1..89fae05e4f 100644
--- a/lib/stdlib/src/timer.erl
+++ b/lib/stdlib/src/timer.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -22,7 +22,7 @@
send_after/3, send_after/2,
exit_after/3, exit_after/2, kill_after/2, kill_after/1,
apply_interval/4, send_interval/3, send_interval/2,
- cancel/1, sleep/1, tc/2, tc/3, now_diff/2,
+ cancel/1, sleep/1, tc/1, tc/2, tc/3, now_diff/2,
seconds/1, minutes/1, hours/1, hms/3]).
-export([start_link/0, start/0,
@@ -46,103 +46,189 @@
%%
-opaque tref() :: {integer(), reference()}.
-type time() :: non_neg_integer().
--type timestamp() :: {non_neg_integer(), non_neg_integer(), non_neg_integer()}.
%%
%% Interface functions
%%
--spec apply_after(time(), atom(), atom(), [term()]) -> {'ok', tref()} | {'error', term()}.
+-spec apply_after(Time, Module, Function, Arguments) ->
+ {'ok', TRef} | {'error', Reason} when
+ Time :: time(),
+ Module :: module(),
+ Function :: atom(),
+ Arguments :: [term()],
+ TRef :: tref(),
+ Reason :: term().
+
apply_after(Time, M, F, A) ->
req(apply_after, {Time, {M, F, A}}).
--spec send_after(time(), pid() | atom(), term()) -> {'ok', tref()} | {'error', term()}.
+-spec send_after(Time, Pid, Message) -> {'ok', TRef} | {'error', Reason} when
+ Time :: time(),
+ Pid :: pid() | (RegName :: atom()),
+ Message :: term(),
+ TRef :: tref(),
+ Reason :: term().
send_after(Time, Pid, Message) ->
req(apply_after, {Time, {?MODULE, send, [Pid, Message]}}).
--spec send_after(time(), term()) -> {'ok', tref()} | {'error', term()}.
+-spec send_after(Time, Message) -> {'ok', TRef} | {'error', Reason} when
+ Time :: time(),
+ Message :: term(),
+ TRef :: tref(),
+ Reason :: term().
send_after(Time, Message) ->
send_after(Time, self(), Message).
--spec exit_after(time(), pid() | atom(), term()) -> {'ok', tref()} | {'error', term()}.
+-spec exit_after(Time, Pid, Reason1) -> {'ok', TRef} | {'error', Reason2} when
+ Time :: time(),
+ Pid :: pid() | (RegName :: atom()),
+ TRef :: tref(),
+ Reason1 :: term(),
+ Reason2 :: term().
exit_after(Time, Pid, Reason) ->
req(apply_after, {Time, {erlang, exit, [Pid, Reason]}}).
--spec exit_after(time(), term()) -> {'ok', tref()} | {'error', term()}.
+-spec exit_after(Time, Reason1) -> {'ok', TRef} | {'error', Reason2} when
+ Time :: time(),
+ TRef :: tref(),
+ Reason1 :: term(),
+ Reason2 :: term().
exit_after(Time, Reason) ->
exit_after(Time, self(), Reason).
--spec kill_after(time(), pid() | atom()) -> {'ok', tref()} | {'error', term()}.
+-spec kill_after(Time, Pid) -> {'ok', TRef} | {'error', Reason2} when
+ Time :: time(),
+ Pid :: pid() | (RegName :: atom()),
+ TRef :: tref(),
+ Reason2 :: term().
kill_after(Time, Pid) ->
exit_after(Time, Pid, kill).
--spec kill_after(time()) -> {'ok', tref()} | {'error', term()}.
+-spec kill_after(Time) -> {'ok', TRef} | {'error', Reason2} when
+ Time :: time(),
+ TRef :: tref(),
+ Reason2 :: term().
kill_after(Time) ->
exit_after(Time, self(), kill).
--spec apply_interval(time(), atom(), atom(), [term()]) -> {'ok', tref()} | {'error', term()}.
+-spec apply_interval(Time, Module, Function, Arguments) ->
+ {'ok', TRef} | {'error', Reason} when
+ Time :: time(),
+ Module :: module(),
+ Function :: atom(),
+ Arguments :: [term()],
+ TRef :: tref(),
+ Reason :: term().
apply_interval(Time, M, F, A) ->
req(apply_interval, {Time, self(), {M, F, A}}).
--spec send_interval(time(), pid() | atom(), term()) -> {'ok', tref()} | {'error', term()}.
+-spec send_interval(Time, Pid, Message) ->
+ {'ok', TRef} | {'error', Reason} when
+ Time :: time(),
+ Pid :: pid() | (RegName :: atom()),
+ Message :: term(),
+ TRef :: tref(),
+ Reason :: term().
send_interval(Time, Pid, Message) ->
req(apply_interval, {Time, Pid, {?MODULE, send, [Pid, Message]}}).
--spec send_interval(time(), term()) -> {'ok', tref()} | {'error', term()}.
+-spec send_interval(Time, Message) -> {'ok', TRef} | {'error', Reason} when
+ Time :: time(),
+ Message :: term(),
+ TRef :: tref(),
+ Reason :: term().
send_interval(Time, Message) ->
send_interval(Time, self(), Message).
--spec cancel(tref()) -> {'ok', 'cancel'} | {'error', term()}.
+-spec cancel(TRef) -> {'ok', 'cancel'} | {'error', Reason} when
+ TRef :: tref(),
+ Reason :: term().
cancel(BRef) ->
req(cancel, BRef).
--spec sleep(timeout()) -> 'ok'.
+-spec sleep(Time) -> 'ok' when
+ Time :: timeout().
sleep(T) ->
receive
after T -> ok
end.
+%%
+%% Measure the execution time (in microseconds) for Fun().
+%%
+-spec tc(Fun) -> {Time, Value} when
+ Fun :: function(),
+ Time :: integer(),
+ Value :: term().
+tc(F) ->
+ Before = os:timestamp(),
+ Val = F(),
+ After = os:timestamp(),
+ {now_diff(After, Before), Val}.
%%
%% Measure the execution time (in microseconds) for Fun(Args).
%%
--spec tc(function(), [_]) -> {time(), term()}.
+-spec tc(Fun, Arguments) -> {Time, Value} when
+ Fun :: function(),
+ Arguments :: [term()],
+ Time :: integer(),
+ Value :: term().
tc(F, A) ->
- Before = erlang:now(),
- Val = (catch apply(F, A)),
- After = erlang:now(),
+ Before = os:timestamp(),
+ Val = apply(F, A),
+ After = os:timestamp(),
{now_diff(After, Before), Val}.
%%
%% Measure the execution time (in microseconds) for an MFA.
%%
--spec tc(atom(), atom(), [term()]) -> {time(), term()}.
+-spec tc(Module, Function, Arguments) -> {Time, Value} when
+ Module :: module(),
+ Function :: atom(),
+ Arguments :: [term()],
+ Time :: integer(),
+ Value :: term().
tc(M, F, A) ->
- Before = erlang:now(),
- Val = (catch apply(M, F, A)),
- After = erlang:now(),
+ Before = os:timestamp(),
+ Val = apply(M, F, A),
+ After = os:timestamp(),
{now_diff(After, Before), Val}.
%%
%% Calculate the time difference (in microseconds) of two
%% erlang:now() timestamps, T2-T1.
%%
--spec now_diff(timestamp(), timestamp()) -> integer().
+-spec now_diff(T1, T2) -> Tdiff when
+ T1 :: calendar:t_now(),
+ T2 :: calendar:t_now(),
+ Tdiff :: integer().
now_diff({A2, B2, C2}, {A1, B1, C1}) ->
((A2-A1)*1000000 + B2-B1)*1000000 + C2-C1.
%%
%% Convert seconds, minutes etc. to milliseconds.
%%
--spec seconds(non_neg_integer()) -> non_neg_integer().
+-spec seconds(Seconds) -> MilliSeconds when
+ Seconds :: non_neg_integer(),
+ MilliSeconds :: non_neg_integer().
seconds(Seconds) ->
1000*Seconds.
--spec minutes(non_neg_integer()) -> non_neg_integer().
+-spec minutes(Minutes) -> MilliSeconds when
+ Minutes :: non_neg_integer(),
+ MilliSeconds :: non_neg_integer().
minutes(Minutes) ->
1000*60*Minutes.
--spec hours(non_neg_integer()) -> non_neg_integer().
+-spec hours(Hours) -> MilliSeconds when
+ Hours :: non_neg_integer(),
+ MilliSeconds :: non_neg_integer().
hours(Hours) ->
1000*60*60*Hours.
--spec hms(non_neg_integer(), non_neg_integer(), non_neg_integer()) -> non_neg_integer().
+-spec hms(Hours, Minutes, Seconds) -> MilliSeconds when
+ Hours :: non_neg_integer(),
+ Minutes :: non_neg_integer(),
+ Seconds :: non_neg_integer(),
+ MilliSeconds :: non_neg_integer().
hms(H, M, S) ->
hours(H) + minutes(M) + seconds(S).
diff --git a/lib/stdlib/src/unicode.erl b/lib/stdlib/src/unicode.erl
index 12bc60623d..a5d9965ca2 100644
--- a/lib/stdlib/src/unicode.erl
+++ b/lib/stdlib/src/unicode.erl
@@ -30,12 +30,34 @@
characters_to_binary/3,
bom_to_encoding/1, encoding_to_bom/1]).
--export_type([encoding/0]).
+-export_type([chardata/0, charlist/0, encoding/0, external_chardata/0,
+ external_charlist/0, latin1_chardata/0,
+ latin1_charlist/0, unicode_binary/0, unicode_char/0]).
-type encoding() :: 'latin1' | 'unicode' | 'utf8'
| 'utf16' | {'utf16', endian()}
| 'utf32' | {'utf32', endian()}.
-type endian() :: 'big' | 'little'.
+-type unicode_binary() :: binary().
+-type unicode_char() :: non_neg_integer().
+-type charlist() :: [unicode_char() | unicode_binary() | charlist()].
+-type chardata() :: charlist() | unicode_binary().
+-type external_unicode_binary() :: binary().
+-type external_chardata() :: external_charlist() | external_unicode_binary().
+-type external_charlist() :: [unicode_char() | external_unicode_binary()
+ | external_charlist()].
+-type latin1_binary() :: binary().
+-type latin1_char() :: byte().
+-type latin1_chardata() :: latin1_charlist() | latin1_binary().
+-type latin1_charlist() :: [latin1_char() | latin1_binary()
+ | latin1_charlist()].
+
+-spec characters_to_list(Data) -> Result when
+ Data :: latin1_chardata() | chardata() | external_chardata(),
+ Result :: list()
+ | {error, list(), RestData}
+ | {incomplete, list(), binary()},
+ RestData :: latin1_chardata() | chardata() | external_chardata().
characters_to_list(ML) ->
unicode:characters_to_list(ML,unicode).
@@ -69,6 +91,13 @@ do_characters_to_list(ML, Encoding) ->
end.
+-spec characters_to_binary(Data) -> Result when
+ Data :: latin1_chardata() | chardata() | external_chardata(),
+ Result :: binary()
+ | {error, binary(), RestData}
+ | {incomplete, binary(), binary()},
+ RestData :: latin1_chardata() | chardata() | external_chardata().
+
characters_to_binary(ML) ->
try
unicode:characters_to_binary(ML,unicode)
@@ -104,6 +133,15 @@ characters_to_binary_int(ML,InEncoding) ->
erlang:raise(error,TheError,[{Mod,characters_to_binary,L}|Rest])
end.
+-spec characters_to_binary(Data, InEncoding, OutEncoding) -> Result when
+ Data :: latin1_chardata() | chardata() | external_chardata(),
+ InEncoding :: encoding(),
+ OutEncoding :: encoding(),
+ Result :: binary()
+ | {error, binary(), RestData}
+ | {incomplete, binary(), binary()},
+ RestData :: latin1_chardata() | chardata() | external_chardata().
+
characters_to_binary(ML, latin1, latin1) when is_binary(ML) ->
ML;
characters_to_binary(ML, latin1, Uni) when is_binary(ML) and ((Uni =:= utf8) or (Uni =:= unicode)) ->
@@ -215,6 +253,13 @@ characters_to_binary_int(ML, InEncoding, OutEncoding) ->
Res
end.
+-spec bom_to_encoding(Bin) -> {Encoding, Length} when
+ Bin :: binary(),
+ Encoding :: 'latin1' | 'utf8'
+ | {'utf16', endian()}
+ | {'utf32', endian()},
+ Length :: non_neg_integer().
+
bom_to_encoding(<<239,187,191,_/binary>>) ->
{utf8,3};
bom_to_encoding(<<0,0,254,255,_/binary>>) ->
@@ -228,6 +273,10 @@ bom_to_encoding(<<255,254,_/binary>>) ->
bom_to_encoding(Bin) when is_binary(Bin) ->
{latin1,0}.
+-spec encoding_to_bom(InEncoding) -> Bin when
+ Bin :: binary(),
+ InEncoding :: encoding().
+
encoding_to_bom(unicode) ->
<<239,187,191>>;
encoding_to_bom(utf8) ->
diff --git a/lib/stdlib/src/win32reg.erl b/lib/stdlib/src/win32reg.erl
index ee0d17bc94..598e77ffdc 100644
--- a/lib/stdlib/src/win32reg.erl
+++ b/lib/stdlib/src/win32reg.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -52,14 +52,17 @@
-define(reg_dword, 4).
%% Basic types internal to this file.
--type open_mode() :: 'read' | 'write'.
--type reg_handle() :: {'win32reg',port()}.
+-opaque reg_handle() :: {'win32reg',port()}.
-type name() :: string() | 'default'.
-type value() :: string() | integer() | binary().
%%% Exported functions.
--spec open([open_mode()]) -> {'ok', reg_handle()} | {'error', 'enotsup'}.
+-spec open(OpenModeList) -> ReturnValue when
+ OpenModeList :: [OpenMode],
+ OpenMode :: 'read' | 'write',
+ ReturnValue :: {'ok', RegHandle} | {'error', ErrorId :: 'enotsup'},
+ RegHandle :: reg_handle().
open(Modes) ->
case os:type() of
@@ -75,14 +78,17 @@ open(Modes) ->
{error, enotsup}
end.
--spec close(reg_handle()) -> 'ok'.
+-spec close(RegHandle) -> 'ok' when
+ RegHandle :: reg_handle().
close({win32reg, Reg}) when is_port(Reg) ->
unlink(Reg),
exit(Reg, die),
ok.
--spec current_key(reg_handle()) -> {'ok', string()}.
+-spec current_key(RegHandle) -> ReturnValue when
+ RegHandle :: reg_handle(),
+ ReturnValue :: {'ok', string()}.
current_key({win32reg, Reg}) when is_port(Reg) ->
Cmd = [?cmd_get_current],
@@ -94,12 +100,18 @@ current_key({win32reg, Reg}) when is_port(Reg) ->
_ -> Root ++ [$\\|Name]
end}.
--spec change_key(reg_handle(), string()) -> 'ok' | {'error', atom()}.
+-spec change_key(RegHandle, Key) -> ReturnValue when
+ RegHandle :: reg_handle(),
+ Key :: string(),
+ ReturnValue :: 'ok' | {'error', ErrorId :: atom()}.
change_key({win32reg, Reg}, Key) when is_port(Reg) ->
change_key(Reg, ?cmd_open_key, Key).
--spec change_key_create(reg_handle(), string()) -> 'ok' | {'error', atom()}.
+-spec change_key_create(RegHandle, Key) -> ReturnValue when
+ RegHandle :: reg_handle(),
+ Key :: string(),
+ ReturnValue :: 'ok' | {'error', ErrorId :: atom()}.
change_key_create({win32reg, Reg}, Key) when is_port(Reg) ->
change_key(Reg, ?cmd_create_key, Key).
@@ -113,21 +125,30 @@ change_key(Reg, Cmd, Key) ->
{error, Reason}
end.
--spec sub_keys(reg_handle()) -> {'ok', [string()]} | {'error', atom()}.
+-spec sub_keys(RegHandle) -> ReturnValue when
+ RegHandle :: reg_handle(),
+ ReturnValue :: {'ok', [SubKey]} | {'error', ErrorId :: atom()},
+ SubKey :: string().
sub_keys({win32reg, Reg}) when is_port(Reg) ->
Cmd = [?cmd_get_all_subkeys],
Reg ! {self(), {command, Cmd}},
collect_keys(Reg, []).
--spec delete_key(reg_handle()) -> 'ok' | {'error', atom()}.
+-spec delete_key(RegHandle) -> ReturnValue when
+ RegHandle :: reg_handle(),
+ ReturnValue :: 'ok' | {'error', ErrorId :: atom()}.
delete_key({win32reg, Reg}) when is_port(Reg) ->
Cmd = [?cmd_delete_key],
Reg ! {self(), {command, Cmd}},
get_result(Reg).
--spec set_value(reg_handle(), name(), value()) -> 'ok' | {'error', atom()}.
+-spec set_value(RegHandle, Name, Value) -> ReturnValue when
+ RegHandle :: reg_handle(),
+ Name :: name(),
+ Value :: value(),
+ ReturnValue :: 'ok' | {'error', ErrorId :: atom()}.
set_value({win32reg, Reg}, Name0, Value) when is_port(Reg) ->
Name =
@@ -140,7 +161,10 @@ set_value({win32reg, Reg}, Name0, Value) when is_port(Reg) ->
Reg ! {self(), {command, Cmd}},
get_result(Reg).
--spec value(reg_handle(), name()) -> {'ok', value()} | {'error', atom()}.
+-spec value(RegHandle, Name) -> ReturnValue when
+ RegHandle :: reg_handle(),
+ Name :: name(),
+ ReturnValue :: {'ok', Value :: value()} | {'error', ErrorId :: atom()}.
value({win32reg, Reg}, Name) when is_port(Reg) ->
Cmd = [?cmd_get_value, Name, 0],
@@ -152,14 +176,20 @@ value({win32reg, Reg}, Name) when is_port(Reg) ->
{error, Reason}
end.
--spec values(reg_handle()) -> {'ok', [{name(), value()}]} | {'error', atom()}.
+-spec values(RegHandle) -> ReturnValue when
+ RegHandle :: reg_handle(),
+ ReturnValue :: {'ok', [ValuePair]} | {'error', ErrorId :: atom()},
+ ValuePair :: {Name :: name(), Value :: value()}.
values({win32reg, Reg}) when is_port(Reg) ->
Cmd = [?cmd_get_all_values],
Reg ! {self(), {command, Cmd}},
collect_values(Reg, []).
--spec delete_value(reg_handle(), name()) -> 'ok' | {'error', atom()}.
+-spec delete_value(RegHandle, Name) -> ReturnValue when
+ RegHandle :: reg_handle(),
+ Name :: name(),
+ ReturnValue :: 'ok' | {'error', ErrorId :: atom()}.
delete_value({win32reg, Reg}, Name0) when is_port(Reg) ->
Name =
@@ -171,7 +201,9 @@ delete_value({win32reg, Reg}, Name0) when is_port(Reg) ->
Reg ! {self(), {command, Cmd}},
get_result(Reg).
--spec expand(string()) -> string().
+-spec expand(String) -> ExpandedString when
+ String :: string(),
+ ExpandedString :: string().
expand(Value) ->
expand(Value, [], []).
@@ -195,7 +227,9 @@ expand([C|Rest], Env, Result) ->
expand([], [], Result) ->
lists:reverse(Result).
--spec format_error(atom()) -> string().
+-spec format_error(ErrorId) -> ErrorString when
+ ErrorId :: atom(),
+ ErrorString :: string().
format_error(ErrorId) ->
erl_posix_msg:message(ErrorId).
@@ -203,7 +237,7 @@ format_error(ErrorId) ->
%%% Implementation.
-spec collect_values(port(), [{name(), value()}]) ->
- {'ok', [{name(), value()}]} | {'error', atom()}.
+ {'ok', [{name(), value()}]} | {'error', ErrorId :: atom()}.
collect_values(P, Result) ->
case get_result(P) of
@@ -215,7 +249,7 @@ collect_values(P, Result) ->
{error, Reason}
end.
--spec collect_keys(port(), string()) -> {'ok', [string()]} | {'error', atom()}.
+-spec collect_keys(port(), string()) -> {'ok', [string()]} | {'error', ErrorId :: atom()}.
collect_keys(P, Result) ->
case get_result(P) of
diff --git a/lib/stdlib/src/zip.erl b/lib/stdlib/src/zip.erl
index d41aeefa59..524d709431 100644
--- a/lib/stdlib/src/zip.erl
+++ b/lib/stdlib/src/zip.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2006-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2006-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -203,6 +203,9 @@
zip_comment_length}).
+-type zip_file() :: #zip_file{}.
+-type zip_comment() :: #zip_comment{}.
+
%% Open a zip archive with options
%%
@@ -323,8 +326,33 @@ openzip_close(_) ->
%% Accepted options:
%% verbose, cooked, file_list, keep_old_files, file_filter, memory
+-spec(unzip(Archive) -> RetValue when
+ Archive :: file:name() | binary(),
+ RetValue :: {ok, FileList}
+ | {ok, FileBinList}
+ | {error, Reason :: term()}
+ | {error, {Name :: file:name(), Reason :: term()}},
+ FileList :: [file:name()],
+ FileBinList :: [{file:name(),binary()}]).
+
unzip(F) -> unzip(F, []).
+-spec(unzip(Archive, Options) -> RetValue when
+ Archive :: file:name() | binary(),
+ Options :: [Option],
+ Option :: {file_list, FileList}
+ | keep_old_files | verbose | memory |
+ {file_filter, FileFilter} | {cwd, CWD},
+ FileList :: [file:name()],
+ FileBinList :: [{file:name(),binary()}],
+ FileFilter :: fun((ZipFile) -> boolean()),
+ CWD :: string(),
+ ZipFile :: zip_file(),
+ RetValue :: {ok, FileList}
+ | {ok, FileBinList}
+ | {error, Reason :: term()}
+ | {error, {Name :: file:name(), Reason :: term()}}).
+
unzip(F, Options) ->
case ?CATCH do_unzip(F, Options) of
{ok, R} -> {ok, R};
@@ -345,6 +373,18 @@ do_unzip(F, Options) ->
{ok, Files}.
%% Iterate over all files in a zip archive
+-spec(foldl(Fun, Acc0, Archive) -> {ok, Acc1} | {error, Reason} when
+ Fun :: fun((FileInArchive, GetInfo, GetBin, AccIn) -> AccOut),
+ FileInArchive :: file:name(),
+ GetInfo :: fun(() -> file:file_info()),
+ GetBin :: fun(() -> binary()),
+ Acc0 :: term(),
+ Acc1 :: term(),
+ AccIn :: term(),
+ AccOut :: term(),
+ Archive :: file:name() | {file:name(), binary()},
+ Reason :: term()).
+
foldl(Fun, Acc0, Archive) when is_function(Fun, 4) ->
ZipFun =
fun({Name, GetInfo, GetBin}, A) ->
@@ -368,8 +408,33 @@ foldl(_,_, _) ->
%% Accepted options:
%% verbose, cooked, memory, comment
+-spec(zip(Name, FileList) -> RetValue when
+ Name :: file:name(),
+ FileList :: [FileSpec],
+ FileSpec :: file:name() | {file:name(), binary()}
+ | {file:name(), binary(), file:file_info()},
+ RetValue :: {ok, FileName :: file:name()}
+ | {ok, {FileName :: file:name(), binary()}}
+ | {error, Reason :: term()}).
+
zip(F, Files) -> zip(F, Files, []).
+-spec(zip(Name, FileList, Options) -> RetValue when
+ Name :: file:name(),
+ FileList :: [FileSpec],
+ FileSpec :: file:name() | {file:name(), binary()}
+ | {file:name(), binary(), file:file_info()},
+ Options :: [Option],
+ Option :: memory | cooked | verbose | {comment, Comment}
+ | {cwd, CWD} | {compress, What} | {uncompress, What},
+ What :: all | [Extension] | {add, [Extension]} | {del, [Extension]},
+ Extension :: string(),
+ Comment :: string(),
+ CWD :: string(),
+ RetValue :: {ok, FileName :: file:name()}
+ | {ok, {FileName :: file:name(), binary()}}
+ | {error, Reason :: term()}).
+
zip(F, Files, Options) ->
case ?CATCH do_zip(F, Files, Options) of
{ok, R} -> {ok, R};
@@ -392,8 +457,20 @@ do_zip(F, Files, Options) ->
%% Accepted options:
%% cooked, file_filter, file_output (latter 2 undocumented)
+-spec(list_dir(Archive) -> RetValue when
+ Archive :: file:name() | binary(),
+ RetValue :: {ok, CommentAndFiles} | {error, Reason :: term()},
+ CommentAndFiles :: [zip_comment() | zip_file()]).
+
list_dir(F) -> list_dir(F, []).
+-spec(list_dir(Archive, Options) -> RetValue when
+ Archive :: file:name() | binary(),
+ RetValue :: {ok, CommentAndFiles} | {error, Reason :: term()},
+ CommentAndFiles :: [zip_comment() | zip_file()],
+ Options :: [Option],
+ Option :: cooked).
+
list_dir(F, Options) ->
case ?CATCH do_list_dir(F, Options) of
{ok, R} -> {ok, R};
@@ -411,6 +488,10 @@ do_list_dir(F, Options) ->
%% Print zip directory in short form
+-spec(t(Archive) -> ok when
+ Archive :: file:name() | binary | ZipHandle,
+ ZipHandle :: pid()).
+
t(F) when is_pid(F) -> zip_t(F);
t(F) when is_record(F, openzip) -> openzip_t(F);
t(F) -> t(F, fun raw_short_print_info_etc/5).
@@ -431,6 +512,10 @@ do_t(F, RawPrint) ->
%% Print zip directory in long form (like ls -l)
+-spec(tt(Archive) -> ok when
+ Archive :: file:name() | binary | ZipHandle,
+ ZipHandle :: pid()).
+
tt(F) when is_pid(F) -> zip_tt(F);
tt(F) when is_record(F, openzip) -> openzip_tt(F);
tt(F) -> t(F, fun raw_long_print_info_etc/5).
@@ -605,11 +690,78 @@ get_list_dir_options(F, Options) ->
get_list_dir_opt(Options, Opts).
%% aliases for erl_tar compatibility
+-spec(table(Archive) -> RetValue when
+ Archive :: file:name() | binary(),
+ RetValue :: {ok, CommentAndFiles} | {error, Reason :: term()},
+ CommentAndFiles :: [zip_comment() | zip_file()]).
+
table(F) -> list_dir(F).
+
+-spec(table(Archive, Options) -> RetValue when
+ Archive :: file:name() | binary(),
+ RetValue :: {ok, CommentAndFiles} | {error, Reason :: term()},
+ CommentAndFiles :: [zip_comment() | zip_file()],
+
+ Options :: [Option],
+ Option :: cooked).
+
table(F, O) -> list_dir(F, O).
+
+-spec(create(Name, FileList) -> RetValue when
+ Name :: file:name(),
+ FileList :: [FileSpec],
+ FileSpec :: file:name() | {file:name(), binary()}
+ | {file:name(), binary(), file:file_info()},
+ RetValue :: {ok, FileName :: file:name()}
+ | {ok, {FileName :: file:name(), binary()}}
+ | {error, Reason :: term()}).
+
create(F, Fs) -> zip(F, Fs).
+
+-spec(create(Name, FileList, Options) -> RetValue when
+ Name :: file:name(),
+ FileList :: [FileSpec],
+ FileSpec :: file:name() | {file:name(), binary()}
+ | {file:name(), binary(), file:file_info()},
+ Options :: [Option],
+ Option :: memory | cooked | verbose | {comment, Comment}
+ | {cwd, CWD} | {compress, What} | {uncompress, What},
+ What :: all | [Extension] | {add, [Extension]} | {del, [Extension]},
+ Extension :: string(),
+ Comment :: string(),
+ CWD :: string(),
+ RetValue :: {ok, FileName :: file:name()}
+ | {ok, {FileName :: file:name(), binary()}}
+ | {error, Reason :: term()}).
create(F, Fs, O) -> zip(F, Fs, O).
+
+-spec(extract(Archive) -> RetValue when
+ Archive :: file:name() | binary(),
+ RetValue :: {ok, FileList}
+ | {ok, FileBinList}
+ | {error, Reason :: term()}
+ | {error, {Name :: file:name(), Reason :: term()}},
+ FileList :: [file:name()],
+ FileBinList :: [{file:name(),binary()}]).
+
extract(F) -> unzip(F).
+
+-spec(extract(Archive, Options) -> RetValue when
+ Archive :: file:name() | binary(),
+ Options :: [Option],
+ Option :: {file_list, FileList}
+ | keep_old_files | verbose | memory |
+ {file_filter, FileFilter} | {cwd, CWD},
+ FileList :: [file:name()],
+ FileBinList :: [{file:name(),binary()}],
+ FileFilter :: fun((ZipFile) -> boolean()),
+ CWD :: string(),
+ ZipFile :: zip_file(),
+ RetValue :: {ok, FileList}
+ | {ok, FileBinList}
+ | {error, Reason :: term()}
+ | {error, {Name :: file:name(), Reason :: term()}}).
+
extract(F, O) -> unzip(F, O).
@@ -990,21 +1142,52 @@ server_loop(OpenZip) ->
{error, bad_msg}
end.
+-spec(zip_open(Archive) -> {ok, ZipHandle} | {error, Reason} when
+ Archive :: file:name() | binary(),
+ ZipHandle :: pid(),
+ Reason :: term()).
+
zip_open(Archive) -> zip_open(Archive, []).
+-spec(zip_open(Archive, Options) -> {ok, ZipHandle} | {error, Reason} when
+ Archive :: file:name() | binary(),
+ ZipHandle :: pid(),
+ Options :: [Option],
+ Option :: cooked | memory | {cwd, CWD :: string()},
+ Reason :: term()).
+
zip_open(Archive, Options) ->
Pid = spawn(fun() -> server_loop(not_open) end),
request(self(), Pid, {open, Archive, Options}).
+-spec(zip_get(ZipHandle) -> {ok, [Result]} | {error, Reason} when
+ ZipHandle :: pid(),
+ Result :: file:name() | {file:name(), binary()},
+ Reason :: term()).
+
zip_get(Pid) when is_pid(Pid) ->
request(self(), Pid, get).
+-spec(zip_close(ZipHandle) -> ok | {error, einval} when
+ ZipHandle :: pid()).
+
zip_close(Pid) when is_pid(Pid) ->
request(self(), Pid, close).
+-spec(zip_get(FileName, ZipHandle) -> {ok, [Result]} | {error, Reason} when
+ FileName :: file:name(),
+ ZipHandle :: pid(),
+ Result :: file:name() | {file:name(), binary()},
+ Reason :: term()).
+
zip_get(FileName, Pid) when is_pid(Pid) ->
request(self(), Pid, {get, FileName}).
+-spec(zip_list_dir(ZipHandle) -> Result | {error, Reason} when
+ Result :: [zip_comment() | zip_file()],
+ ZipHandle :: pid(),
+ Reason :: term()).
+
zip_list_dir(Pid) when is_pid(Pid) ->
request(self(), Pid, list_dir).
diff --git a/lib/stdlib/test/dets_SUITE.erl b/lib/stdlib/test/dets_SUITE.erl
index 9fcc9e6aaf..698070368f 100644
--- a/lib/stdlib/test/dets_SUITE.erl
+++ b/lib/stdlib/test/dets_SUITE.erl
@@ -53,7 +53,7 @@
simultaneous_open/1, insert_new/1, repair_continuation/1,
otp_5487/1, otp_6206/1, otp_6359/1, otp_4738/1, otp_7146/1,
otp_8070/1, otp_8856/1, otp_8898/1, otp_8899/1, otp_8903/1,
- otp_8923/1]).
+ otp_8923/1, otp_9282/1]).
-export([dets_dirty_loop/0]).
@@ -112,7 +112,7 @@ all() ->
many_clients, otp_4906, otp_5402, simultaneous_open,
insert_new, repair_continuation, otp_5487, otp_6206,
otp_6359, otp_4738, otp_7146, otp_8070, otp_8856, otp_8898,
- otp_8899, otp_8903, otp_8923]
+ otp_8899, otp_8903, otp_8923, otp_9282]
end.
groups() ->
@@ -3857,6 +3857,28 @@ otp_8923(Config) when is_list(Config) ->
file:delete(File),
ok.
+otp_9282(doc) ->
+ ["OTP-9282. The name of a table can be an arbitrary term"];
+otp_9282(suite) ->
+ [];
+otp_9282(Config) when is_list(Config) ->
+ some_calls(make_ref(), Config),
+ some_calls({a,typical,name}, Config),
+ some_calls(fun() -> a_funny_name end, Config),
+ ok.
+
+some_calls(Tab, Config) ->
+ File = filename(ref, Config),
+ ?line {ok,T} = dets:open_file(Tab, [{file,File}]),
+ ?line T = Tab,
+ ?line false = dets:info(T, safe_fixed),
+ ?line File = dets:info(T, filename),
+ ?line ok = dets:insert(Tab, [{3,0}]),
+ ?line [{3,0}] = dets:lookup(Tab, 3),
+ ?line [{3,0}] = dets:traverse(Tab, fun(X) -> {continue, X} end),
+ ?line ok = dets:close(T),
+ file:delete(File).
+
%%
%% Parts common to several test cases
%%
diff --git a/lib/stdlib/test/erl_eval_SUITE.erl b/lib/stdlib/test/erl_eval_SUITE.erl
index 4b59cee99e..0bcf3c5b71 100644
--- a/lib/stdlib/test/erl_eval_SUITE.erl
+++ b/lib/stdlib/test/erl_eval_SUITE.erl
@@ -1199,7 +1199,7 @@ local_func(F, As0, Bs0) when is_atom(F) ->
lfh_value_extra() ->
%% Not documented.
- {value, fun(F, As) -> local_func_value(F, As) end, []}.
+ {value, fun(F, As, a1, a2) -> local_func_value(F, As) end, [a1, a2]}.
lfh_value() ->
{value, fun(F, As) -> local_func_value(F, As) end}.
diff --git a/lib/stdlib/test/erl_pp_SUITE.erl b/lib/stdlib/test/erl_pp_SUITE.erl
index bc811355ab..280c95b1aa 100644
--- a/lib/stdlib/test/erl_pp_SUITE.erl
+++ b/lib/stdlib/test/erl_pp_SUITE.erl
@@ -1161,7 +1161,7 @@ parse_forms2(String, Cont0, Line, Forms) ->
{done, {ok, Tokens, EndLine}, Chars} ->
{ok, Form} = erl_parse:parse_form(Tokens),
parse_forms2(Chars, [], EndLine, [Form | Forms]);
- {more, Cont} when element(3, Cont) =:= [] ->
+ {more, Cont} when element(4, Cont) =:= [] ->
%% extra spaces after forms...
parse_forms2([], Cont, Line, Forms);
{more, Cont} ->
diff --git a/lib/stdlib/test/sofs_SUITE.erl b/lib/stdlib/test/sofs_SUITE.erl
index 01de1f0600..d6f88a655e 100644
--- a/lib/stdlib/test/sofs_SUITE.erl
+++ b/lib/stdlib/test/sofs_SUITE.erl
@@ -1602,19 +1602,15 @@ relative_product_2(Conf) when is_list(Conf) ->
from_term([{{a},b}])}, ER)),
?line {'EXIT', {badarg, _}} = (catch relative_product({}, ER)),
- ?line eval(relative_product({relation([{a,b}])},
- from_term([],[{{atom},atom}])),
- ER),
- ?line eval(relative_product({relation([{a,b}]),relation([{a,1}])},
- from_term([{{b,1},{tjo,hej,sa}}])),
- from_term([{a,{tjo,hej,sa}}])),
- ?line eval(relative_product({relation([{a,b}]), ER},
- from_term([{{a,b},b}])),
- ER),
- ?line eval(relative_product({relation([{a,b},{c,a}]),
- relation([{a,1},{a,2}])},
- from_term([{{b,1},b1},{{b,2},b2}])),
- relation([{a,b1},{a,b2}])),
+ ?line relprod2({relation([{a,b}])}, from_term([],[{{atom},atom}]), ER),
+ ?line relprod2({relation([{a,b}]),relation([{a,1}])},
+ from_term([{{b,1},{tjo,hej,sa}}]),
+ from_term([{a,{tjo,hej,sa}}])),
+ ?line relprod2({relation([{a,b}]), ER}, from_term([{{a,b},b}]), ER),
+ ?line relprod2({relation([{a,b},{c,a}]),
+ relation([{a,1},{a,2}])},
+ from_term([{{b,1},b1},{{b,2},b2}]),
+ relation([{a,b1},{a,b2}])),
?line eval(relative_product({relation([{a,b}]), ER}),
from_term([],[{atom,{atom,atom}}])),
?line eval(relative_product({from_term([{{a,[a,b]},[a]}]),
@@ -1622,6 +1618,11 @@ relative_product_2(Conf) when is_list(Conf) ->
from_term([{{a,[a,b]},{[a],[[a,b]]}}])),
ok.
+relprod2(A1T, A2, R) ->
+ %% A tuple as first argument is the old interface:
+ eval(relative_product(A1T, A2), R),
+ eval(relative_product(tuple_to_list(A1T), A2), R).
+
product_1(suite) -> [];
product_1(doc) -> [""];
product_1(Conf) when is_list(Conf) ->
diff --git a/lib/stdlib/test/supervisor_SUITE.erl b/lib/stdlib/test/supervisor_SUITE.erl
index cc271bd047..c79a5002fb 100644
--- a/lib/stdlib/test/supervisor_SUITE.erl
+++ b/lib/stdlib/test/supervisor_SUITE.erl
@@ -28,8 +28,8 @@
init_per_group/2,end_per_group/2, init_per_testcase/2,
end_per_testcase/2]).
-%% Indirect spawn export
--export([init/1]).
+%% Internal export
+-export([init/1, terminate_all_children/1]).
%% API tests
-export([ sup_start_normal/1, sup_start_ignore_init/1,
@@ -55,7 +55,8 @@
%% Misc tests
-export([child_unlink/1, tree/1, count_children_memory/1,
do_not_save_start_parameters_for_temporary_children/1,
- do_not_save_child_specs_for_temporary_children/1]).
+ do_not_save_child_specs_for_temporary_children/1,
+ simple_one_for_one_scale_many_temporary_children/1]).
%%-------------------------------------------------------------------------
@@ -72,7 +73,8 @@ all() ->
{group, normal_termination},
{group, abnormal_termination}, child_unlink, tree,
count_children_memory, do_not_save_start_parameters_for_temporary_children,
- do_not_save_child_specs_for_temporary_children].
+ do_not_save_child_specs_for_temporary_children,
+ simple_one_for_one_scale_many_temporary_children].
groups() ->
[{sup_start, [],
@@ -1201,6 +1203,47 @@ restarted(Sup, {Id,_,_,_,_,_} = ChildSpec, TerminateHow) ->
{error, {already_started, _}} = supervisor:start_child(Sup, ChildSpec).
+%%-------------------------------------------------------------------------
+%% OTP-9242: Pids for dynamic temporary children were saved as a list,
+%% which caused bad scaling when adding/deleting many processes.
+simple_one_for_one_scale_many_temporary_children(_Config) ->
+ process_flag(trap_exit, true),
+ Child = {child, {supervisor_1, start_child, []}, temporary, 1000,
+ worker, []},
+ {ok, _SupPid} = start_link({ok, {{simple_one_for_one, 2, 3600}, [Child]}}),
+
+ C1 = [begin
+ {ok,P} = supervisor:start_child(sup_test,[]),
+ P
+ end || _<- lists:seq(1,1000)],
+ {T1,done} = timer:tc(?MODULE,terminate_all_children,[C1]),
+
+ C2 = [begin
+ {ok,P} = supervisor:start_child(sup_test,[]),
+ P
+ end || _<- lists:seq(1,10000)],
+ {T2,done} = timer:tc(?MODULE,terminate_all_children,[C2]),
+
+ Scaling = T2 div T1,
+ if Scaling > 20 ->
+ %% The scaling shoul be linear (i.e.10, really), but we
+ %% give some extra here to avoid failing the test
+ %% unecessarily.
+ ?t:fail({bad_scaling,Scaling});
+ true ->
+ ok
+ end.
+
+
+terminate_all_children([C|Cs]) ->
+ ok = supervisor:terminate_child(sup_test,C),
+ terminate_all_children(Cs);
+terminate_all_children([]) ->
+ done.
+
+
+
+%%-------------------------------------------------------------------------
terminate(Pid, Reason) when Reason =/= supervisor ->
terminate(dummy, Pid, dummy, Reason).
diff --git a/lib/stdlib/test/timer_simple_SUITE.erl b/lib/stdlib/test/timer_simple_SUITE.erl
index 852afa1a4d..dc751aad16 100644
--- a/lib/stdlib/test/timer_simple_SUITE.erl
+++ b/lib/stdlib/test/timer_simple_SUITE.erl
@@ -229,7 +229,7 @@ cancel2(Config) when is_list(Config) ->
tc(doc) -> "Test sleep/1 and tc/3.";
tc(suite) -> [];
tc(Config) when is_list(Config) ->
- % This should both sleep and tc/3
+ %% This should test both sleep and tc/3
?line {Res1, ok} = timer:tc(timer, sleep, [500]),
?line ok = if
Res1 < 500*1000 -> {too_early, Res1}; % Too early
@@ -237,13 +237,40 @@ tc(Config) when is_list(Config) ->
true -> ok
end,
- % This should both sleep and tc/2
+ %% tc/2
?line {Res2, ok} = timer:tc(fun(T) -> timer:sleep(T) end, [500]),
?line ok = if
Res2 < 500*1000 -> {too_early, Res2}; % Too early
Res2 > 800*1000 -> {too_late, Res2}; % Too much time
true -> ok
end,
+
+ %% tc/1
+ ?line {Res3, ok} = timer:tc(fun() -> timer:sleep(500) end),
+ ?line ok = if
+ Res3 < 500*1000 -> {too_early, Res3}; % Too early
+ Res3 > 800*1000 -> {too_late, Res3}; % Too much time
+ true -> ok
+ end,
+
+ %% Check that timer:tc don't catch errors
+ ?line ok = try timer:tc(erlang, exit, [foo])
+ catch exit:foo -> ok
+ end,
+
+ ?line ok = try timer:tc(fun(Reason) -> 1 = Reason end, [foo])
+ catch error:{badmatch,_} -> ok
+ end,
+
+ ?line ok = try timer:tc(fun() -> throw(foo) end)
+ catch foo -> ok
+ end,
+
+ %% Check that return values are propageted
+ Self = self(),
+ ?line {_, Self} = timer:tc(erlang, self, []),
+ ?line {_, Self} = timer:tc(fun(P) -> P end, [self()]),
+ ?line {_, Self} = timer:tc(fun() -> self() end),
?line Sec = timer:seconds(4),
?line Min = timer:minutes(4),
diff --git a/lib/test_server/doc/src/notes.xml b/lib/test_server/doc/src/notes.xml
index 9c62b0fcf6..3a10bb209d 100644
--- a/lib/test_server/doc/src/notes.xml
+++ b/lib/test_server/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/tools/doc/src/notes.xml b/lib/tools/doc/src/notes.xml
index 118800e44a..93bb6b71c9 100644
--- a/lib/tools/doc/src/notes.xml
+++ b/lib/tools/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/tools/src/cover.erl b/lib/tools/src/cover.erl
index 73a736f0e8..905ad895c9 100644
--- a/lib/tools/src/cover.erl
+++ b/lib/tools/src/cover.erl
@@ -662,6 +662,7 @@ main_process_loop(State) ->
Imported = do_import_to_table(Fd,File,
State#main_state.imported),
reply(From, ok),
+ file:close(Fd),
main_process_loop(State#main_state{imported=Imported});
{error,Reason} ->
reply(From, {error, {cant_open_file,File,Reason}}),
diff --git a/lib/tools/test/cover_SUITE.erl b/lib/tools/test/cover_SUITE.erl
index b5c8e8a1b7..fe7f92de78 100644
--- a/lib/tools/test/cover_SUITE.erl
+++ b/lib/tools/test/cover_SUITE.erl
@@ -395,6 +395,7 @@ export_import(suite) -> [];
export_import(Config) when is_list(Config) ->
?line DataDir = ?config(data_dir, Config),
?line ok = file:set_cwd(DataDir),
+ ?line PortCount = length(erlang:ports()),
%% Export one module
?line {ok,f} = cover:compile(f),
@@ -484,6 +485,9 @@ export_import(Config) when is_list(Config) ->
?line ?t:capture_stop(),
?line check_f_calls(1,0),
+ %% Check no raw files are left open
+ ?line PortCount = length(erlang:ports()),
+
%% Cleanup
?line ok = cover:stop(),
?line Files = lsfiles(),
diff --git a/lib/wx/doc/src/notes.xml b/lib/wx/doc/src/notes.xml
index 3d27cf671b..4282e19769 100644
--- a/lib/wx/doc/src/notes.xml
+++ b/lib/wx/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2009</year><year>2010</year>
+ <year>2009</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/xmerl/doc/examples/Makefile b/lib/xmerl/doc/examples/Makefile
new file mode 100644
index 0000000000..2768ee1985
--- /dev/null
+++ b/lib/xmerl/doc/examples/Makefile
@@ -0,0 +1,61 @@
+ERLC = erlc
+EMULATOR = beam
+EBIN = .
+HTML = .
+XML = ./xml
+RM = rm -f
+
+# ----------------------------------------------------
+# Common Macros
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN = $(XMERL_VSN)
+
+
+MODULES = \
+ xmerl_test \
+ test_html \
+ xserl_test \
+ mkdocs \
+ sdocbook2xhtml
+
+
+
+DOC_FILES = $(DOCS:%=$(HTML)/%.html)
+
+ERL_COMPILE_FLAGS += $(DEBUG) -I ../../include +warn_unused_wars +debug_info
+
+SUB_DIRECTORIES =
+
+#all: $(MODULES:%=$(EBIN)/%.$(EMULATOR)) xsm $(DOC_FILES)
+all opt: $(MODULES:%=$(EBIN)/%.$(EMULATOR)) $(DOC_FILES)
+
+info:
+ @echo "DOC_FILES: $(DOC_FILES)"
+
+clean:
+# @for d in $(SUB_DIRECTORIES); do \
+# cd $$d; $(MAKE) clean; \
+# done
+ $(RM) $(HTML)/*.html
+ $(RM) $(EBIN)/*.beam
+ $(RM) core *~
+
+debug: xsmdebug $(DOC_FILES)
+
+xsm:
+ @for d in $(SUB_DIRECTORIES); do \
+ cd $$d; $(MAKE); \
+ done
+
+xsmdebug:
+ @for d in $(SUB_DIRECTORIES); do \
+ cd $$d; $(MAKE) DEBUG=-Ddebug=1; \
+ done
+
+$(HTML)/%.html: $(XML)/%.xml
+ erl -noshell -pa ../../ebin -run mkdocs run $< $@ -s erlang halt
+
+$(EBIN)/%.beam: %.erl
+ $(ERLC) $(ERL_COMPILE_FLAGS) -o $(EBIN) $<
+
diff --git a/lib/xmerl/doc/examples/mkdocs.erl b/lib/xmerl/doc/examples/mkdocs.erl
new file mode 100644
index 0000000000..9faa12685b
--- /dev/null
+++ b/lib/xmerl/doc/examples/mkdocs.erl
@@ -0,0 +1,9 @@
+-module(mkdocs).
+-author('[email protected]').
+
+-export([run/1]).
+
+run([InFile, OutFile])->
+ {A,_}=xmerl_scan:file(InFile,[{fetch_fun, fun(DTDSpec,S) -> {ok,S} end}]),
+ B = sdocbook2xhtml:process_xml(A),
+ file:write_file(OutFile,[B]).
diff --git a/lib/xmerl/doc/examples/sdocbook2xhtml.erl b/lib/xmerl/doc/examples/sdocbook2xhtml.erl
new file mode 100644
index 0000000000..f96bf51963
--- /dev/null
+++ b/lib/xmerl/doc/examples/sdocbook2xhtml.erl
@@ -0,0 +1,823 @@
+%%%----------------------------------------------------------------------
+%%% File : sdocbook2xhtml.erl
+%%% Description : Erlang XSLT like "stylesheet" for exporting
+%%% Simplified Docbook XML to XHTML.
+%%%
+%%% Modules used : lists, io_lib, xmerl, xmerl_lib, xmerl_xs
+%%%
+%%%----------------------------------------------------------------------
+
+-module(sdocbook2xhtml).
+-author('[email protected]').
+
+
+-include("xmerl.hrl").
+-import(xmerl_lib, [markup/3,mapxml/2, foldxml/3, mapfoldxml/3]).
+-import(xmerl_xs, [ xslapply/2, value_of/1, select/2, built_in_rules/2]).
+
+-export([ process_xml/1 ]).
+
+-export([abbrev/4,
+ abstract/4,
+ acronym/4,
+ address/4,
+ anchor/4,
+ appendix/4,
+ appendixinfo/4,
+ article/4,
+ articleinfo/4,
+ audiodata/4,
+ audioobject/4,
+ author/4,
+ authorgroup/4,
+ authorinitials/4,
+ bibliography/4,
+ bibliomixed/4,
+ bibliomisc/4,
+ bibliomset/4,
+ biblioset/4,
+ blockquote/4,
+ caption/4,
+ citetitle/4,
+ city/4,
+ colspec/4,
+ command/4,
+ computeroutput/4,
+ copyright/4,
+ corpauthor/4,
+ country/4,
+ date/4,
+ edition/4,
+ editor/4,
+ email/4,
+ emphasis/4,
+ entry/4,
+ example/4,
+ fax/4,
+ figure/4,
+ filename/4,
+ firstname/4,
+ footnote/4,
+ holder/4,
+ honorific/4,
+ imagedata/4,
+ imageobject/4,
+ informaltable/4,
+ inlinemediaobject/4,
+ isbn/4,
+ issn/4,
+ issuenum/4,
+ legalnotice/4,
+ lineage/4,
+ link/4,
+ literal/4,
+ itemizedlist/4,
+ listitem/4,
+ mediaobject/4,
+ member/4,
+ note/4,
+ orderedlist/4,
+ othercredit/4,
+ othername/4,
+ para/4,
+ phone/4,
+ phrase/4,
+ programlisting/4,
+ publishername/4,
+ quote/4,
+ replaceable/4,
+ revhistory/4,
+ revision/4,
+ revnumber/4,
+ revremark/4,
+ row/4,
+ section/4,
+ sectioninfo/4,
+ simplelist/4,
+ subtitle/4,
+ surname/4,
+ systemitem/4,
+ table/4,
+ tbody/4,
+ term/4,
+ tfoot/4,
+ tgroup/4,
+ thead/4,
+ title/4,
+ titleabbrev/4,
+ trademark/4,
+ ulink/4,
+ userinput/4,
+ variablelist/4,
+ varlistentry/4,
+ xref/4,
+ year/4
+ ]).
+
+
+xmlhead() -> "<\?xml version=\"1.0\" encoding=\"iso-8859-1\"\?>".
+doctype() ->"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\
+ \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd \">\n".
+
+style() ->
+ "<style type=\"text/css\"> body {margin-left:10%; margin-right:5%;} \
+.logo{float:right;}
+.toc UL {
+ list-style-type: none;
+ border: solid;
+ border-width: thin;
+ padding-left: 10px;
+ padding-right: 10px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ background: #f0f0f0;
+ letter-spacing: 2px;
+ line-height: 20px;
+}
+</style>".
+
+process_xml(E)->
+%% lists:flatten(template( E )).
+ template( E ).
+
+%% article is the root element
+template(E0 = #xmlElement{name=article})->
+
+ E = changetitle(E0), %% Add section numbering to titles
+
+ [ xmlhead(), doctype(),
+ "<html xmlns=\"http://www.w3.org/1999/xhtml\" >"
+ "<head>"
+ "<title>",
+ value_of(select("articleinfo/title",E)),
+ "</title>",
+ style(),
+ "</head>"
+ "<body>",
+%% "<img src=\"/logo.png\" alt=\"no logo\" class=\"logo\" </img>",
+ xslapply( fun template/1, select("articleinfo",E)),
+ process_toc(E), %% Insert toc between info and main part of article
+ xslapply( fun template/1, select("section",E)),
+ xslapply( fun template/1, select("appendix",E)),
+ "</body></html>"];
+
+template(E = #xmlElement{name=Name})->
+ A = xslapply( fun template/1, E),
+ case catch
+ sdocbook2xhtml:Name(A, E#xmlElement.attributes, E#xmlElement.parents,E)
+ of
+ {'EXIT', {undef, _}} ->
+ A;
+ {'EXIT', Reason} ->
+ exit(Reason);
+ Res ->
+ Res
+ end;
+
+template(E) ->
+ built_in_rules( fun template/1, E).
+
+%% -------------------------------------------------------------------
+%% simple serialize tags
+
+abbrev(Data, Attrs, [{bibliomset,_}|_], E)->
+ ["<dt><abbr>", Data, "</abbr></dt><dd>"];
+abbrev(Data, Attrs, Parents, E)->
+ markup("abbr",Attrs, Data).
+
+
+abstract(Data, Attrs, Parents, E)->
+ ["<h3>Abstract</h3><blockquote>", Data, "</blockquote>"].
+
+acronym(Data, Attrs, Parents, E)->
+ markup("acronym",Attrs, Data).
+
+address(Data, Attrs, Parents, E)->
+ markup("address", Attrs, Data).
+
+anchor(Data, Attrs, Parents, E)->
+ case find_attribute(id, Attrs) of
+ {value,ID} ->
+ ["<a name=\"" ++ ID ++ "\">", Data, "</a>"];
+ false ->
+ Data
+ end.
+
+appendix(Data, Attrs, Parents, E)->
+ ["<h1>Appendix</h1>", Data].
+
+appendixinfo(Data,_,_,_)->
+ Data.
+
+article(Data, Attrs, Parents, E)->
+ ["<body>"
+ "<img src=\"/logga2.jpg\" alt=\"no logo\" class=\"logo\"
+width=\"50\"</img>",
+ Data,
+ "</body>"].
+
+articleinfo(Data,_,_,_)->
+ Data.
+
+audiodata(Data, Attrs, Parents, E)->Data.
+
+audioobject(_,_,_,_)->
+ [].
+
+author(Data, Attrs, [{authorgroup,_} | _], E)->
+ markup("dd", Attrs, Data);
+author(Data, Attrs, Parents, E)->
+ Data.
+
+authorgroup(Data,_,_,_)->
+ ["<dl><dt>Author</dt>",Data,"</dl>"].
+
+authorinitials(Data,_,_,_)-> Data.
+
+bibliography(Data, Attrs, Parents, E)->
+ ["<h3>Bibliography</h3>" ,Data].
+
+bibliomisc(Data,_,_,_)-> Data.
+bibliomixed(Data,_,_,_)-> ["<dl>",Data, "</dl>"].
+bibliomset(Data,_,_,_)-> [Data, "</dd>"].
+
+biblioset(Data,_,_,_)-> Data.
+
+blockquote(Data, Attrs, Parents, E)->
+ markup("blockquote",Attrs, Data).
+
+caption(Data, Attrs, Parents, E)-> Data.
+
+citetitle(Data,_,_,_)-> ["<i>",Data,"</i>"].
+
+city(Data,_,_,_)->
+ Data.
+
+%% Fix Me is it "col" element in html?
+colspec(_, Attrs,_,_)->
+ [].
+
+command(Data,_,_,_)->
+ ["<b><tt>", Data, "</tt></b>"].
+
+computeroutput(Data,_,_,_)->
+ ["<tt>", Data, "</tt>"].
+
+copyright(Data,_,_,_)->
+ [ "&copy; ", Data].
+
+corpauthor(Data,_,_,_)->
+ Data.
+
+country(Data,_,_,_)->
+ Data.
+
+date(Data,_,[{revision,_}|_],_)->
+ ["<td>", Data, "</td>"];
+date(Data,_,_,_)->
+ Data.
+
+edition(Data,_,_,_)->
+ Data.
+
+editor(Data,_,_,_)->
+ Data.
+
+email(Data,_,_,_)->
+ ["<i><a href=\"mailto:", Data,"\">",Data,"</a></i>"].
+
+emphasis(Data, Attrs, Parents, E)->
+ ["<em>", Data, "</em>"].
+
+%% Cell in a table
+entry(Data, Attrs, [{row,_}, {thead,_} | _], E)->
+ ["<th>", Data, "</th>"];
+entry(Data, Attrs, Parents, E)->
+ ["<td>", Data, "</td>"].
+
+example(Data, Attrs, Parents, E)->
+ ["<hr />", Data, "<hr />"].
+
+fax(Data, Attrs, Parents, E)->
+ ["<address>", Data, "</address>"].
+
+%% May contain ulink to image, resolved by ulink type
+figure(Data, _, _, _)->
+ Data.
+
+filename(Data, _, _, _)->
+ ["<i>", Data, "</i>"].
+
+firstname(Data, _, _, _)->
+ [Data , " " ].
+
+footnote(Data, _, _, _)->
+ Data.
+
+holder(Data, _, _, _)->
+ [" ",Data].
+
+honorific(Data, _, _, _)->
+ Data.
+
+imagedata(Data, Attrs, Parents, E)->
+ SRC =
+ case find_attribute(fileref, Attrs) of
+ {value,AS} ->
+ " src=" ++ AS ++ " ";
+ false ->
+ []
+ end,
+ ALT =
+ case SRC of
+ [] ->
+ " alt=\"No image!\" ";
+ _ ->" alt=\"" ++ SRC ++ "\" "
+ end,
+ WIDTH =
+ case find_attribute(width, Attrs) of
+ false ->
+ [];
+ {value,A} ->" width=" ++ A ++ " "
+ end,
+
+ ["<img " ++ SRC ++ ALT ++ WIDTH ++ "></img>"].
+
+
+imageobject(Data, Attrs, Parents, E)->
+ Data.
+
+informaltable(Data, Attrs, Parents, E)->
+ ["<table border=\"1\" >", Data, "</table>"].
+
+
+inlinemediaobject(Data, Attrs, Parents, E)->
+ Data.
+
+isbn(Data, Attrs, Parents, E)->
+ Data.
+
+issn(Data, Attrs, Parents, E)->
+ Data.
+
+issuenum(Data, Attrs, Parents, E)->
+ Data.
+
+itemizedlist(Data, Attrs, Parents, _)->
+ markup("ul", Attrs, Data).
+
+%keyword
+%{
+% display: inline;
+%}
+
+%keywordset
+%{
+% display: inline;
+%}
+
+legalnotice(Data, Attrs, Parents, _)->
+ markup("small", Attrs, Data).
+
+lineage(Data, Attrs, Parents, _)->
+ Data.
+
+%lineannotation
+%{
+% display: inline;
+%}
+
+% Hypertext link
+link(Data, Attrs, Parents, _)->
+ case find_attribute(linkend, Attrs) of
+ {value,LINK} ->
+ ["<a href=\"#" ++ LINK ++ "\">", Data, "</a>"];
+ false ->
+ Data
+ end.
+
+listitem(Data, Attrs, [{varlistentry,_} | _], E) ->
+ markup("dd", Attrs, Data);
+listitem(Data, Attrs, Parents, _)->
+ markup("li", Attrs, Data).
+
+literal(Data, Attrs, Parents, _)->
+ markup("tt", Attrs, Data).
+
+%literallayout
+%{
+% display: inline;
+%}
+
+mediaobject(Data, Attrs, Parents, _)->
+ Data.
+
+%% simplelist member
+member(Data, Attrs, Parents, _)->
+ [Data,"<br></br>"].
+
+note(Data, Attrs, Parents, _)->
+["<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\" width=\"80%\"
+bgcolor=\"#CCCCCC\"><tr><td>NOTE</td><td><i>", Data, "</i></td></tr></table>"].
+
+%objectinfo
+%{
+% display: inline;
+%}
+
+%option
+%{
+% display: inline;
+%}
+
+orderedlist(Data, Attrs, Parents, _)->
+ markup("ol",Attrs,Data).
+
+%% Hmm otheraddr not in DTD
+%otheraddr
+%{
+% display: inline;
+%}
+
+othercredit(Data, Attrs, Parents, _)->Data.
+
+othername(Data, Attrs, Parents, E)->Data.
+
+%% IGNORE
+%pagenums
+%{
+% display: inline;
+%}
+
+para(Data, Attrs, [{listitem,_}|_], E)->
+ Data;
+para(Data, Attrs, [{note,_}|_], E)->
+ Data;
+para(Data, Attrs, Parents, E)->
+ markup("p", Attrs, Data).
+
+phone(Data, Attrs, Parents, E)->Data.
+
+phrase(Data, Attrs, Parents, E)->Data.
+
+%pob
+%{
+% display: inline;
+%}
+
+%postcode
+%{
+% display: inline;
+%}
+
+%printhistory
+%{
+% display: inline;
+%}
+
+%procedure
+%{
+% display: inline;
+%}
+
+programlisting(Data, Attrs, Parents, E)->
+["<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\" width=\"100%\"
+bgcolor=\"#CCCCCC\"><tr><td><pre><code>", Data,
+"</code></pre></td></tr></table>"].
+
+%pubdate
+%{
+% display: inline;
+%}
+
+%publisher
+%{
+% display: inline;
+%}
+
+publishername(Data, Attrs, Parents, E)->
+ Data.
+
+quote(Data, Attrs, Parents, _)->
+ markup("q", Attrs, Data).
+
+replaceable(Data, Attrs, Parents,_)->
+ markup("i", Attrs, Data).
+
+revhistory(Data, Attrs, Parents,E)->
+ {A,B,C} = case E#xmlElement.language of
+ "en" -> {"Revision history","Date","Comment"};
+ "sv" -> {"Revisionshistoria","Datum","Kommentar"};
+ _ ->{"lang is undefined","lang is undefined","lang is undefined"}
+ end,
+
+ ["<h4>",A,"</h4>","<table><thead>"
+ "<tr><th>Rev.</th><th>",B,"</th><th>",C,"</th></tr></thead>", Data,
+ "</table>"].
+
+revision(Data, Attrs, Parents,_)->
+ markup("tr", Attrs, Data).
+
+revnumber(Data, Attrs, Parents,_)->
+ markup("td", Attrs, Data).
+
+revremark(Data, Attrs, Parents,_)->
+ markup("td", Attrs, Data).
+
+row(Data, Attrs, Parents, E)->
+ markup("tr", Attrs, Data).
+
+section(Data, Attrs, Parents, E)->
+ Data.
+
+sectioninfo(Data, Attrs, Parents, E)->Data.
+
+%sidebar
+%{
+% display: block;
+%}
+
+simplelist(Data, Attrs, Parents, E)->
+ ["<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\"
+width=\"100%\"><tr><td>", Data, "</td></tr></table>"].
+
+
+%state
+%{
+% display: inline;
+%}
+
+%step
+%{
+% display: inline;
+%}
+
+%street
+%{
+% display: inline;
+%}
+
+%substeps
+%{
+% display: inline;
+%}
+
+subtitle(Data, Attrs, Parents, E)->
+ ["<h3>", Data, "</h3>"].
+
+surname(Data, Attrs, Parents, E)->Data.
+
+systemitem(Data, Attrs, Parents, E)->
+ markup("b", Attrs, Data).
+
+table(Data, Attrs, Parents, E)->
+ ["<table border=\"1\" cellspacing=\"0\" cellpadding=\"4\" >",
+ Data, "</table>"].
+
+%% Fix me alot
+tbody(Data, Attrs, Parents, E)->
+ markup("tbody", Attrs, Data).
+%{
+% display: table-row-group;
+%}
+
+term(Data, Attrs, [{varlistentry,_} | _], E) ->
+ markup("dt", Attrs, Data).
+
+
+%textobject
+%{
+% display: inline;
+%}
+
+tfoot(Data, Attrs, Parents, E)->
+ markup("tfoot",Attrs, Data).
+
+%% Fixme alot
+tgroup(Data, Attrs, Parents, E)->
+ markup("colgroup", Attrs, Data).
+%{
+% display: table;
+%}
+
+thead(Data, Attrs, Parents, E)->
+ markup("thead",Attrs, Data).
+%{
+% display: table-row-group;
+%}
+
+title(Data, Attrs, Parents, E)->
+%% io:fwrite("Parents ~p~n", [Parents]),
+ title1(Data, Attrs, Parents, E).
+
+title1(Data, Attrs, [{section,_}, {section,_}, {section,_},
+ {section,_}, {section,_}, {appendix,_} | _], E) ->
+ ["<h6>", Data, "</h6>"];
+title1(Data, Attrs, [{section,_}, {section,_}, {section,_},
+ {section,_}, {appendix,_} | _], E) ->
+ ["<h5>", Data, "</h5>"];
+title1(Data, Attrs, [{section,_}, {section,_}, {section,_},
+ {apendix,_} | _], E) ->
+ ["<h4>", Data, "</h4>"];
+title1(Data, Attrs, [{section,_}, {section,_}, {appendix,_} | _], E) ->
+ ["<h3>", Data, "</h3>"];
+title1(Data, Attrs, [{section,_}, {appendix,_} | _], E) ->
+ ["<h2>", Data, "</h2>"];
+title1(Data, Attrs, [{appendix,_} | _], E) ->
+ ["<h1>", Data, "</h1>"];
+
+title1(Data, Attrs, [{section,_}, {section,_}, {section,_},
+ {section,_}, {section,_}, {section,_} | _], E) ->
+ ["<h6>", Data, "</h6>"];
+title1(Data, Attrs, [{section,_}, {section,_}, {section,_},
+ {section,_}, {section,_} | _], E) ->
+ ["<h6>", Data, "</h6>"];
+title1(Data, Attrs, [{section,_}, {section,_}, {section,_},
+ {section,_} | _], E) ->
+ ["<h5>", Data, "</h5>"];
+title1(Data, Attrs, [{section,C}, {section,B}, {section,A} | _], E) ->
+ {value, Id} = find_attribute(id,Attrs),
+ ["<h4 id=\"", Id, "\">", Data, "</h4>"];
+title1(Data, Attrs, [{section,B}, {section,A} | _], E) ->
+ {value, Id} = find_attribute(id,Attrs),
+ ["<h3 id=\"", Id, "\">", Data, "</h3>"];
+title1(Data, Attrs, [{section,A} | _], E) ->
+ {value, Id} = find_attribute(id,Attrs),
+ ["<h2 id=\"", Id, "\">", Data, "</h2>"];
+title1(Data, Attrs, [{articleinfo,_} | _], E) ->
+ ["<h1>", Data, "</h1>"];
+title1(Data, Attrs, [{table,_} | _], E) ->
+ ["<caption>", Data, "</caption>"];
+title1(Data, Attrs, [{bibliomset,_} | _], E) ->
+ ["<i><b>", Data, "</b></i>"];
+title1(Data, Attrs, Parents, E)->
+ ["<h4>", Data, "</h4>"].
+
+titleabbrev(Data, Attrs, Parents, E)->[].
+
+trademark(Data, Attrs, Parents, E)->
+ [ Data, " &reg; "].
+
+ulink(Data, Attrs, Parents, E)->
+ case find_attribute(url, Attrs) of
+ {value,LINK} ->
+ ["<a href="++ LINK ++ ">", Data, "</a>"];
+ false ->
+ Data
+ end.
+
+
+%% User input is Constant Bold
+userinput(Data, Attrs, Parents, E)->
+ ["<tt><b>", Data, "</b></tt>"].
+
+variablelist(Data, Attrs, Parents, E)->
+ markup("dl", Attrs, Data).
+
+varlistentry(Data, Attrs, Parents, E)->Data.
+
+%videodata
+%{
+% display: inline;
+%}
+
+%videoobject
+%{
+% display: inline;
+%}
+
+%volumenum
+%{
+% display: inline;
+%}
+
+xref(Data, Attrs, Parents, E)->
+ case find_attribute(linkend, Attrs) of
+ {value,LINK} ->
+ ["<a href=\"#" ++ LINK ++ "\" />"];
+ false ->
+ Data
+ end.
+
+year(Data, Attrs, Parents, E)->Data.
+
+%% ----------------------------------------------------------
+%% Utils find_attribute copied from Ulf Wigers xmerl distribution
+
+find_attribute(Name, Attrs) ->
+ case lists:keysearch(Name, #xmlAttribute.name, Attrs) of
+ {value, #xmlAttribute{value = V}} ->
+ {value, V};
+ false ->
+ false
+ end.
+%% ------------
+
+changetitle(A) ->
+ Afun = fun changecount/2,
+ {E, Acc} = mapfoldxml(Afun, {0,0,0,0,0,0}, A),
+ E.
+
+changecount(#xmlElement{name=title}=E, {A,B,C,Ex,Fig,Tab})->
+ case E#xmlElement.parents of
+ [{example,_} |_] ->
+ {addexhead(E,{A,Ex+1}), {A,B,C,Ex+1,Fig,Tab} };
+ [{figure,_} |_] ->
+ {addfighead(E,{A,Fig+1}), {A,B,C,Ex,Fig+1,Tab} };
+ [{table,_} |_] ->
+ {addtablehead(E,{A,Tab+1}), {A,B,C,Ex,Fig,Tab+1} };
+ [{section,_},{section,_},{section,_},{article,_} |_] ->
+ {addheader(E,{A,B,C+1}), {A,B,C+1,Ex,Fig,Tab} };
+ [{section,_},{section,_},{article,_} |_] ->
+ { addheader(E,{A,B+1,0}), {A,B+1,0,Ex,Fig,Tab} };
+ [{section,_},{article,_} |_] ->
+ {addheader(E,{A+1,0,0}),{A+1,0,0,0,0,0}};
+ _ ->
+ {E,{A,B,C,Ex,Fig,Tab}}
+ end;
+changecount(E, Acc)->{E,Acc}.
+
+addexhead(#xmlElement{name=title,content=[#xmlText{}=T1|_]}= E, {Ch,No})->
+ NewHeader = "Example " ++
+ integer_to_list(Ch)++" - "++ integer_to_list(No) ++
+ " " ++ T1#xmlText.value,
+ E#xmlElement{content=[T1#xmlText{value=NewHeader}]}.
+addfighead(#xmlElement{name=title,content=[#xmlText{}=T1|_]}= E, {Ch,No})->
+ NewHeader = "Figure " ++
+ integer_to_list(Ch)++" - "++ integer_to_list(No) ++
+ " " ++ T1#xmlText.value,
+ E#xmlElement{content=[T1#xmlText{value=NewHeader}]}.
+addtablehead(#xmlElement{name=title,content=[#xmlText{}=T1|_]}= E, {Ch,No})->
+ NewHeader = "Table " ++
+ integer_to_list(Ch)++" - "++ integer_to_list(No) ++
+ " " ++ T1#xmlText.value,
+ E#xmlElement{content=[T1#xmlText{value=NewHeader}]}.
+
+addheader(#xmlElement{name=title,content=[#xmlText{}=T1|_]}= E, Chapters)->
+ NewHeader = chapterstring(Chapters)++ " " ++ T1#xmlText.value,
+ NewAtts = addid(E#xmlElement.attributes, Chapters),
+ E#xmlElement{content=[T1#xmlText{value=NewHeader}],
+ attributes = NewAtts}.
+
+chapterstring({A,0,0})->integer_to_list(A);
+chapterstring({A,B,0})->integer_to_list(A)++"."++ integer_to_list(B);
+chapterstring({A,B,C})->integer_to_list(A) ++ "." ++
+ integer_to_list(B) ++ "." ++
+ integer_to_list(C).
+
+%% addid add id attribute if it not already exists
+addid(OldAtts, Chapters)->
+ case find_attribute(id, OldAtts) of
+ {value,_} ->
+ OldAtts;
+ false ->
+ add_attribute(id,"sect_"++ chapterstring(Chapters),
+ OldAtts)
+ end.
+
+add_attribute(Name, Value, OldAtts)->
+ [#xmlAttribute{ name=Name, value = Value}| OldAtts ].
+
+
+process_toc(E)->
+ AFun = fun chapindex/2,
+ TOCR = foldxml(AFun, [], E),
+% Str = case find_attribute(lang, E#xmlElement.attributes) of
+% {value,"en"} -> "Table of Contents";
+% {value,"sv"} -> "Inneh�llsf�rtecking";
+% _ ->"lang is undefined"
+% end,
+ Str = case E#xmlElement.language of
+ "en" -> "Table of Contents";
+ "sv" -> "Inneh�llsf�rtecking";
+ _ ->"lang is undefined"
+ end,
+ TOC = ["<div class=\"toc\"><h3>",Str,"</h3><ul>",
+lists:reverse(TOCR), "</ul></div>"].
+
+chapindex(#xmlElement{name=title}=E, Accu)->
+ case E#xmlElement.parents of
+ [{section,_},{section,_},{section,_},{article,_} |_] ->
+ ["<li>"++spind(3)++ addlink(E,"toc_level_3") ++"</li>"| Accu];
+ [{section,_},{section,_},{article,_} |_] ->
+ ["<li>"++spind(2)++ addlink(E,"toc_level_2") ++ "</li>"| Accu];
+ [{section,_},{article,_} |_] ->
+ ["<li>"++spind(1)++ addlink(E,"toc_level_1") ++"</li>"| Accu];
+ _ ->
+ Accu
+ end;
+chapindex(E, Accu) ->
+ Accu.
+
+spind(0) ->"";
+spind(X)->
+ "&#160;&#160;" ++ spind(X-1).
+
+addlink(E, TocLevel)->
+ {value,LINK} = find_attribute(id,E#xmlElement.attributes),
+ [#xmlText{value=Title}|_] = E#xmlElement.content, %% Pfuii
+ "<a href=\"#" ++ LINK ++
+ "\" class=\"" ++ TocLevel ++ "\">" ++
+ Title ++ "</a>".
+
+
diff --git a/lib/xmerl/doc/examples/test_html.erl b/lib/xmerl/doc/examples/test_html.erl
new file mode 100755
index 0000000000..3ca15f30f8
--- /dev/null
+++ b/lib/xmerl/doc/examples/test_html.erl
@@ -0,0 +1,225 @@
+%%% 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 Original Code is xmerl-0.7
+%%%
+%%% 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.
+%%%
+%%% Contributor(s): ______________________________________.
+%%%
+%%%----------------------------------------------------------------------
+%%% #0. BASIC INFORMATION
+%%%----------------------------------------------------------------------
+%%% File: test_html.erl
+%%% Author : Ulf Wiger <[email protected]>
+
+%%% Description : Callback module for exporting XML to HTML with support
+%%% for special Erlang-related tags. (Experimental)
+%%%
+%%% Modules used : lists, io_lib
+%%%
+%%%----------------------------------------------------------------------
+
+-module(test_html).
+-author('[email protected]').
+
+
+-export(['#xml-inheritance#'/0]).
+
+%%% special Erlang forms
+-export(['EXIT'/4,
+ 'tuple_list'/4]).
+
+-export(['#root#'/4,
+ title/4,
+ heading/4,
+ section/4,
+ table/4,
+ row/4,
+ col/4,
+ data/4,
+ p/4, para/4, 'P'/4,
+ emphasis/4]).
+
+-include("xmerl.hrl").
+
+
+'#xml-inheritance#'() -> [xmerl_xml].
+
+
+
+%% The '#root#' tag is called when the entire structure has been exported.
+%% It does not appear in the structure itself.
+'#root#'(Data, Attrs, [], E) ->
+ Title =
+ case find_attribute(title, Attrs) of
+ {value, T} ->
+ ["<title>", T, "</title>"];
+ false ->
+ []
+ end,
+ ["<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n"
+ "<html>\n",
+ "<head>\n", Title, "</head>\n"
+ "<body>\n", Data, "</body>\n"].
+
+
+
+
+%%% Special token: EXIT
+'EXIT'(Reason, Attrs = [], Parents = [], E) ->
+ %% This happens e.g. if a request function crashes completely.
+ ["<pre>\n", mk_string({'EXIT', Reason}), "</pre>"].
+
+
+title(Str, Attrs, Parents, E) ->
+ ["<h1>", Str, "</h1>\n"].
+
+
+%%% section/3 is to be used instead of headings.
+section(Data, Attrs, [{section,_}, {section,_}, {section,_} | _], E) ->
+ opt_heading(Attrs, "<h4>", "</h4>", Data);
+section(Data, Attrs, [{section,_}, {section,_} | _], E) ->
+ opt_heading(Attrs, "<h3>", "</h3>", Data);
+section(Data, Attrs, [{section,_} | _], E) ->
+ opt_heading(Attrs, "<h2>", "</h2>", Data);
+section(Data, Attrs, Parents, E) ->
+ opt_heading(Attrs, "<h1>", "</h1>", Data).
+
+opt_heading(Attrs, StartTag, EndTag, Data) ->
+ case find_attribute(heading, Attrs) of
+ {value, Text} ->
+ [StartTag, Text, EndTag, "\n" | Data];
+ false ->
+ Data
+ end.
+
+
+%% tables
+%% e.g. {table, [{heading, [{col, H1}, {col, H2}]},
+%% {row, [{col, C11}, {col, C12}]},
+%% {row, [{col, C21}, {col, C22}]}]}.
+
+table(Data, Attrs, Parents, E) ->
+ Border = case find_attribute(border, Attrs) of
+ false ->
+ " border=1";
+ {value, N} ->
+ [" border=", mk_string(N)]
+ end,
+ ["<table", Border, ">\n", Data, "\n</table>\n"].
+
+row(Data, Attrs, [{table,_}|_], E) ->
+ ["<tr>", Data, "</tr>\n"].
+
+heading(Data, Attrs, [{table,_}|_], E) ->
+ ["<tr>", Data, "</tr>\n"].
+
+
+%% Context-sensitive columns (heading- or row columns)
+col(Data, Attrs, [{heading,_}, {table,_} | _], E) ->
+ ["<th>", nbsp_if_empty(Data), "</th>\n"];
+col(Data, Attrs, [{row,_}, {table,_} | _], E) ->
+ ["<td>", nbsp_if_empty(Data), "</td>\n"].
+
+
+tuple_list(List, Attrs, Parents, E) ->
+ Elems = case find_attribute(elements, Attrs) of
+ {value, Es} ->
+ Es;
+ false ->
+ case List of
+ [H|_] ->
+ lists:seq(1,size(H));
+ [] ->
+ []
+ end
+ end,
+ TableData = [{row, [{col, {element(P, Rec)}} || P <- Elems]} ||
+ Rec <- List],
+ Table = case find_attribute(heading, Attrs) of
+ {value, Cols} ->
+ Head = {heading, [{col, C} || C <- Cols]},
+ {table, [Head | TableData]};
+ false ->
+ {table, TableData}
+ end,
+ {'#xml-redefine#', Table}.
+
+
+data(Data, Pos, Attrs, Parents) ->
+ mk_string(Data).
+
+
+
+p(Data, Pos, Attrs, Parents) ->
+ {'#xml-alias#', 'P'}.
+
+para(Data, Pos, Attrs, Parents) ->
+ {'#xml-alias#', 'P'}.
+
+'P'(Data, Pos, Attrs, Parents) ->
+ ["<p>", mk_string(Data), "</p>\n"].
+
+
+emphasis(Str, Pos, Attrs, Parents) ->
+ ["<strong>", Str, "</strong>"].
+
+
+nbsp_if_empty(Data) when binary(Data), size(Data) == 0 ->
+ "&nbsp;";
+nbsp_if_empty(Data) when list(Data) ->
+ case catch list_to_binary(Data) of
+ {'EXIT', _} ->
+ nbsp_if_empty_term(Data);
+ B when size(B) == 0 ->
+ "&nbsp;";
+ _ ->
+ Data
+ end;
+nbsp_if_empty(Data) ->
+ nbsp_if_empty_term(Data).
+
+nbsp_if_empty_term(Data) ->
+ Str = io_lib:format("~p", [Data]),
+ case list_to_binary(Str) of
+ B when size(B) == 0 ->
+ "&nbsp;";
+ _ ->
+ Str
+ end.
+
+
+mk_string(I) when integer(I) ->
+ integer_to_list(I);
+mk_string(A) when atom(A) ->
+ atom_to_list(A);
+mk_string(L) when list(L) ->
+ %% again, we can't regognize a string without "parsing" it
+ case catch list_to_binary(L) of
+ {'EXIT',_} ->
+ io_lib:format("~p", [L]);
+ _ ->
+ L
+ end;
+mk_string(Term) ->
+ io_lib:format("~p", [Term]).
+
+
+
+find_attribute(Name, Attrs) ->
+ case lists:keysearch(Name, #xmlAttribute.name, Attrs) of
+ {value, #xmlAttribute{value = V}} ->
+ {value, V};
+ false ->
+ false
+ end.
diff --git a/lib/xmerl/doc/examples/xmerl_test.erl b/lib/xmerl/doc/examples/xmerl_test.erl
new file mode 100644
index 0000000000..b4288431f2
--- /dev/null
+++ b/lib/xmerl/doc/examples/xmerl_test.erl
@@ -0,0 +1,522 @@
+-module(xmerl_test).
+
+-compile(export_all).
+%%-export([Function/Arity, ...]).
+
+-define(XMERL_APP,).
+
+-include("xmerl.hrl").
+
+%% Export to HTML from "simple" format
+test1() ->
+ xmerl:export_simple(simple(), xmerl_html, [{title, "Doc Title"}]).
+
+
+%% Export to XML from "simple" format
+test2() ->
+ xmerl:export_simple(simple(), xmerl_xml, [{title, "Doc Title"}]).
+
+
+%% Parse XHTML, and export result to HTML and text
+test3() ->
+ FetchFun = fun(_DTDSpec, S) -> {ok, not_fetched,S} end,
+ {A, _} = xmerl_scan:string(html(),
+ [{fetch_fun,FetchFun}]),
+ io:format("From xmerl_scan:string/2~n ~p~n", [A]),
+ B = xmerl:export([A], xmerl_html),
+ io:format("From xmerl:export/2 xmerl_html filter~n ~p~n", [B]),
+ C = xmerl:export([A], xmerl_text),
+ io:format("From xmerl:export/2 xmerl_text filter~n ~p~n", [C]).
+
+
+test4() ->
+ FetchFun = fun(_DTDSpec, S) -> {ok, not_fetched, S} end,
+ {A,_} = xmerl_scan:string(xml_namespace(),
+ [{fetch_fun,FetchFun},
+ {namespace_conformant,true}]),
+ io:format("From xmerl_scan:string/2~n ~p~n", [A]).
+
+test5() ->
+ {ok, Cwd} = file:get_cwd(), % Assume we are in the examples dir...
+ File = Cwd ++ "/xml/xmerl.xml",
+ FetchFun = fun(_DTDSpec, S) -> {ok, not_fetched, S} end,
+% {Resp0,Rest0}=xmerl_eventp:stream(File,[]),
+% io:format("Tree: ~p~n",[Resp0]),
+ {Resp1, _Rest1}=xmerl_eventp:file_sax(File, ?MODULE, undefined,
+ [{fetch_fun, FetchFun}]),
+ io:format("Using file_sax: counted ~p paragraphs~n", [Resp1]),
+ {Resp2, _Rest2} = xmerl_eventp:stream_sax(File, ?MODULE, undefined, []),
+ io:format("Using stream_sax: counted ~p paragraphs~n", [Resp2]).
+
+test6() ->
+ FetchFun = fun(_DTDSpec, S) -> {ok, {string,""}, S} end,
+ {Doc, _} = xmerl_scan:string(xml_namespace(),
+ [{fetch_fun, FetchFun},
+ {namespace_conformant, true}]),
+ E = xmerl_xpath:string("child::title[position()=1]", Doc),
+ io:format("From xmerl_scan:string/2~n E=~p~n", [E]).
+
+
+simple() ->
+ [{document,
+ [{title, ["Doc Title"]},
+ {author, ["Ulf Wiger"]},
+ {section,[{heading, ["heading1"]},
+ {'P', ["This is a paragraph of text."]},
+ {section,[{heading, ["heading2"]},
+ {'P', ["This is another paragraph."]},
+ {table,[{border, ["1"]},
+ {heading,[{col, ["head1"]},
+ {col, ["head2"]}]},
+ {row, [{col, ["col11"]},
+ {col, ["col12"]}]},
+ {row, [{col, ["col21"]},
+ {col, ["col22"]}]}
+ ]}
+ ]}
+ ]}
+ ]}
+ ].
+
+
+html() ->
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"DTD/xhtml1-strict.dtd\"><html>"
+ "<head><title>Doc Title</title><author>Ulf Wiger</author></head>"
+ "<h1>heading1</h1>"
+ "<p>This is a paragraph of text.</p>"
+ "<h2>heading2</h2>"
+ "<p>This is another paragraph.</p>"
+ "<table>"
+ "<thead><tr><td>head1</td><td>head2</td></tr></thead>"
+ "<tr><td>col11</td><td>col122</td></tr>"
+ "<tr><td>col21</td><td>col122</td></tr>"
+ "</table>"
+ "</html>".
+
+xml_namespace() ->
+ "<?xml version=\"1.0\"?>"
+ "<!-- initially, the default namespace is \"books\" -->"
+ "<book xmlns='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'>"
+ "<title>Cheaper by the Dozen</title>"
+ "<isbn:number>1568491379</isbn:number>"
+ "<notes>"
+ "<!-- make HTML the default namespace for some comments -->"
+ "<p xmlns='urn:w3-org-ns:HTML'>"
+ "This is a <i>funny</i> book!"
+ "</p>"
+ "</notes>"
+ "</book>".
+
+
+%%% ============================================================================
+%%% Generic callbacks
+
+%'#text#'(Text) ->
+% [].
+
+'#root#'(Data, Attrs, [], _E) ->
+ io:format("root... Data=~p Attrs=~p E=~p~n",[Data,Attrs,_E]),
+ [].
+
+'#element#'(Tag, Data, Attrs, _Parents, _E) ->
+ io:format("Tag=~p~n Data=~p~n Attrs=~p~n Parents=~p~n E=~p~n",
+ [Tag, Data, Attrs, _Parents, _E]),
+ [].
+
+'#element#'(_Tag, _Data, _Attrs, CBstate) ->
+% io:format("Tag=~p~n Data=~p~n Attrs=~p~n CBstate=~p~n",
+% [Tag, Data, Attrs, CBstate]),
+ CBstate.
+
+'#text#'(Text, CBstate) ->
+ io:format("Text=~p~n CBstate=~p~n",
+ [Text, CBstate]),
+ CBstate.
+
+
+'#xml-inheritance#'() ->
+ [xmerl_html].
+
+
+
+
+%%% ============================================================================
+%%% To run these tests you must first download the testsuite from www.w3c.org
+%%% xmlconf.xml is the main test file that contains references to all the tests.
+%%% Thus parse this, export result and execute tests in the call-back functions.
+%%% Note:
+%%% - xmerl assumes all characters are represented with a single integer.
+w3cvalidate() ->
+ Tests = filename:join(filename:dirname(filename:absname(code:which(xmerl))),
+ "../w3c/xmlconf/xmlconf.xml"),
+ TestDir = filename:dirname(Tests),
+ io:format("Looking for W3C tests at ~p~n", [Tests]),
+ {ok, Bin} = file:read_file(Tests),
+
+% String = ucs:to_unicode(binary_to_list(Bin), 'utf-8'),
+% case xmerl_scan:string(String, [{xmlbase, TestDir}]) of
+ case xmerl_scan:string(binary_to_list(Bin), [{xmlbase, TestDir}]) of
+ {error, Reason} ->
+ io:format("ERROR xmerl:scan_file/2 Reason=~w~n", [Reason]);
+ {A, _Res} ->
+% io:format("From xmerl:scan_file/2 ~n A=~p~n Res=~w~n", [A,Res]),
+ C = xmerl:export([A], xmerl_test),
+ io:format("From xmerl:export/2 xmerl_text filter~n ~p~n", [C])
+ end.
+
+
+'TESTSUITE'(_Data, Attrs, _Parents, _E) ->
+ _Profile = find_attribute('PROFILE', Attrs),
+% io:format("testsuite Profile=~p~n", [Profile]),
+ [].
+
+'TESTCASES'(_Data, Attrs, _Parents, _E) ->
+ Profile = find_attribute('PROFILE', Attrs),
+ XMLbase = find_attribute('xml:base', Attrs),
+ io:format("testsuite Profile=~p~n xml:base=~p~n", [Profile, XMLbase]),
+ [].
+
+%% More info on Canonical Forms can be found at:
+%% http://dev.w3.org/cvsweb/~checkout~/2001/XML-Test-Suite/xmlconf/sun/cxml.html?content-type=text/html;%20charset=iso-8859-1
+'TEST'(Data, Attrs, _Parents, E) ->
+% io:format("test Attrs=~p~n Parents=~p~n E=~p~n",[Attrs, _Parents, E]),
+ Id = find_attribute('ID', Attrs),
+ io:format("Test: ~p ",[Id]),
+ Entities = find_attribute('ENTITIES', Attrs), % Always handle all entities
+ Output1 = find_attribute('OUTPUT', Attrs), %
+ Output3 = find_attribute('OUTPUT3', Attrs), % FIXME!
+ Sections = find_attribute('SECTIONS', Attrs),
+ Recommendation = find_attribute('RECOMMENDATION', Attrs), % FIXME!
+ Type = find_attribute('TYPE', Attrs), % Always handle all entities
+ Version = find_attribute('VERSION', Attrs), % FIXME!
+ URI = find_attribute('URI', Attrs),
+ Namespace = find_attribute('NAMESPACE', Attrs), % FIXME!
+
+ OutputForm=
+ if
+ Output1 =/= undefined -> Output1;
+ true -> Output3
+ end,
+ Test = filename:join(E#xmlElement.xmlbase, URI),
+% io:format("TEST URI=~p~n E=~p~n",[Test,E]),
+ case Type of
+ "valid" ->
+% io:format("Data=~p~n Attrs=~p~n Parents=~p~n Path=~p~n",
+% [Data, Attrs, _Parents, Test]),
+ test_valid(Test, Data, Sections, Entities, OutputForm, Recommendation,
+ Version, Namespace);
+ "invalid" ->
+ test_invalid(Test, Data, Sections, Entities, OutputForm, Recommendation,
+ Version, Namespace);
+ "not-wf" ->
+ test_notwf(Test, Data, Sections, Entities, OutputForm, Recommendation,
+ Version, Namespace);
+ "error" ->
+ test_error(Test, Data, Sections, Entities, OutputForm, Recommendation,
+ Version, Namespace)
+ end,
+ [].
+
+%% Really basic HTML font tweaks, to support highlighting
+%% some aspects of test descriptions ...
+'EM'(Data, _Attrs, _Parents, _E) ->
+ [$" |Data ++ [$"]].
+
+'B'(Data, _Attrs, _Parents, _E) ->
+ [$" |Data ++ [$"]].
+
+
+
+find_attribute(Tag,Attrs) ->
+ case xmerl_lib:find_attribute(Tag, Attrs) of
+ {value, Id} -> Id;
+ false -> undefined
+ end.
+
+
+-define(CONT, false).
+
+%%% All parsers must accept "valid" testcases.
+test_valid(URI, Data, Sections, Entities, OutputForm, Recommendation, Version,
+ Namespace) ->
+ io:format("nonvalidating ", []),
+ case nonvalidating_parser_q(URI) of
+ {Res, Tail} when is_record(Res, xmlElement) ->
+ case is_whitespace(Tail) of
+ true ->
+ io:format("OK ", []),
+ ok;
+ false ->
+ print_error({Res, Tail}, URI, Sections, Entities, OutputForm,
+ Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end;
+ Error ->
+ print_error(Error, URI, Sections, Entities, OutputForm, Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end,
+ io:format("validating ", []),
+ case validating_parser_q(URI) of
+ {Res2, Tail2} when is_record(Res2, xmlElement) ->
+ case is_whitespace(Tail2) of
+ true ->
+ io:format("OK~n", []),
+ ok;
+ false ->
+ print_error({Res2, Tail2}, URI, Sections, Entities, OutputForm,
+ Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end;
+ Error2 ->
+ print_error(Error2, URI, Sections, Entities, OutputForm, Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end.
+
+
+%%% Nonvalidating parsers must accept "invalid" testcases, but validating ones
+%%% must reject them.
+test_invalid(URI, Data, Sections, Entities, OutputForm, Recommendation, Version,
+ Namespace) ->
+ io:format("nonvalidating ", []),
+ case nonvalidating_parser_q(URI) of
+ {Res,Tail} when is_record(Res, xmlElement) ->
+ case is_whitespace(Tail) of
+ true ->
+ io:format("OK ", []),
+ ok;
+ false ->
+ print_error({Res, Tail}, URI, Sections, Entities, OutputForm,
+ Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end;
+ Error ->
+ print_error(Error, URI, Sections, Entities, OutputForm, Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end,
+ io:format("validating ", []),
+ case validating_parser_q(URI) of
+ {Res2, Tail2} when is_record(Res2, xmlElement) ->
+ case is_whitespace(Tail2) of
+ false ->
+ io:format("OK~n", []),
+ ok;
+ true ->
+ print_error({Res2, Tail2}, URI, Sections, Entities, OutputForm,
+ Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end;
+ {error, enoent} ->
+ print_error("Testfile not found", URI, Sections, Entities, OutputForm,
+ Recommendation, Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end;
+ _Error2 ->
+ io:format("OK~n", []),
+ ok
+ end.
+
+%%% No parser should accept a "not-wf" testcase unless it's a nonvalidating
+%%% parser and the test contains external entities that the parser doesn't read
+test_notwf(URI, Data, Sections, Entities, OutputForm, Recommendation, Version,
+ Namespace) ->
+ io:format("nonvalidating ", []),
+ case nonvalidating_parser_q(URI) of
+ {Res, Tail} when is_record(Res, xmlElement) ->
+ case is_whitespace(Tail) of
+ false ->
+ io:format("OK ", []),
+ ok;
+ true ->
+ print_error({Res, Tail}, URI, Sections, Entities, OutputForm,
+ Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end;
+ {error,enoent} ->
+ print_error("Testfile not found",URI,Sections,Entities,OutputForm,
+ Recommendation,Version,Namespace,Data),
+ if
+ ?CONT==false -> throw({'EXIT', failed_test});
+ true -> error
+ end;
+ _Error ->
+ io:format("OK ",[]),
+ ok
+ end,
+ io:format("validating ",[]),
+ case validating_parser_q(URI) of
+ {Res2, Tail2} when is_record(Res2, xmlElement) ->
+ case is_whitespace(Tail2) of
+ false ->
+ io:format("OK~n", []),
+ ok;
+ true ->
+ print_error({Res2, Tail2}, URI, Sections, Entities, OutputForm,
+ Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end;
+ {error,enoent} ->
+ print_error("Testfile not found", URI, Sections, Entities, OutputForm,
+ Recommendation, Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end;
+ _Error2 ->
+ io:format("OK~n", []),
+ ok
+ end.
+
+%%% Parsers are not required to report "errors", but xmerl will always...
+test_error(URI, Data, Sections, Entities, OutputForm, Recommendation, Version,
+ Namespace) ->
+ io:format("nonvalidating ", []),
+ case nonvalidating_parser_q(URI) of
+ {'EXIT', _Reason} ->
+ io:format("OK ", []),
+ ok;
+ {error, enoent} ->
+ print_error("Testfile not found", URI, Sections, Entities, OutputForm,
+ Recommendation, Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end;
+ Res ->
+ print_error(Res, URI, Sections, Entities, OutputForm, Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end,
+ io:format("validating ", []),
+ case validating_parser_q(URI) of
+ {'EXIT', _Reason2} ->
+ io:format("OK~n", []),
+ ok;
+ {error, enoent} ->
+ print_error("Testfile not found", URI, Sections, Entities, OutputForm,
+ Recommendation, Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end;
+ Res2 ->
+ print_error(Res2, URI, Sections, Entities, OutputForm, Recommendation,
+ Version, Namespace, Data),
+ if
+ ?CONT == false -> throw({'EXIT', failed_test});
+ true -> error
+ end
+ end.
+
+
+%%% Use xmerl as nonvalidating XML parser
+nonvalidating_parser(URI) ->
+ (catch xmerl_scan:file(URI, [])).
+
+
+%%% Use xmerl as nonvalidating XML parser
+nonvalidating_parser_q(URI) ->
+ (catch xmerl_scan:file(URI, [{quiet, true}])).
+
+
+%%% Use xmerl as validating XML parser
+validating_parser(URI) ->
+ (catch xmerl_scan:file(URI, [{validation, true}])).
+
+
+%%% Use xmerl as validating XML parser
+validating_parser_q(URI) ->
+ (catch xmerl_scan:file(URI, [{validation, true}, {quiet, true}])).
+
+
+is_whitespace([]) ->
+ true;
+is_whitespace([H |Rest]) when ?whitespace(H) ->
+ is_whitespace(Rest);
+is_whitespace(_) ->
+ false.
+
+
+print_error(Error, URI, Sections, Entities, OutputForm, Recommendation, Version,
+ Namespace, Data) ->
+ io:format("ERROR ~p~n URI=~p~n See Section ~s~n",[Error, URI, Sections]),
+ if
+ Entities == undefined -> ok;
+ true -> io:format(" Entities =~s~n",[Entities])
+ end,
+ if
+ OutputForm == undefined -> ok;
+ true -> io:format(" OutputForm=~s FIXME!~n",[OutputForm])
+ end,
+ if
+ Recommendation == undefined -> ok;
+ true -> io:format(" Recommendation=~s~n",[Recommendation])
+ end,
+ if
+ Version == undefined -> ok;
+ true -> io:format(" Version =~s~n",[Version])
+ end,
+ if
+ Namespace == undefined -> ok;
+ true -> io:format(" Namespace =~s~n",[Namespace])
+ end,
+ io:format(Data).
+
+
+
+
+
+
+
+
+
+%%% ============================================================================
+%%% Callbacks for parsing of Simplified DocBook XML
+
+para(_Data, _Attrs, US) ->
+ case US of
+ Int when is_integer(Int) -> Int+1;
+ undefined -> 1
+ end.
+
+
diff --git a/lib/xmerl/doc/examples/xml/test.xml b/lib/xmerl/doc/examples/xml/test.xml
new file mode 100755
index 0000000000..e803a83560
--- /dev/null
+++ b/lib/xmerl/doc/examples/xml/test.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" ?>
+<People>
+ <Person Type = "Personal">
+ </Person>
+</People>
+
diff --git a/lib/xmerl/doc/examples/xml/test2.xml b/lib/xmerl/doc/examples/xml/test2.xml
new file mode 100755
index 0000000000..0cb11194fc
--- /dev/null
+++ b/lib/xmerl/doc/examples/xml/test2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding = "ISO-8859-1" ?>
+<People>
+ <!-- This is a real comment -->
+ <comment>This is a comment</comment>
+ <Person Type = "Personal">
+ </Person>
+</People>
+
diff --git a/lib/xmerl/doc/examples/xml/test3.xml b/lib/xmerl/doc/examples/xml/test3.xml
new file mode 100755
index 0000000000..dbdc1e62c2
--- /dev/null
+++ b/lib/xmerl/doc/examples/xml/test3.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding = 'ISO-8859-1' ?>
+<People>
+ <!-- This is a real comment -->
+ <comment>This is a comment</comment>
+ <Person Type = "Personal">
+ </Person>
+</People>
+
diff --git a/lib/xmerl/doc/examples/xml/test4.xml b/lib/xmerl/doc/examples/xml/test4.xml
new file mode 100755
index 0000000000..e9d85b8d8f
--- /dev/null
+++ b/lib/xmerl/doc/examples/xml/test4.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding = 'ISO-8859-1' ?>
+<People>
+ <!-- This is a real comment -->
+ <comment>
+ This is a comment
+ </comment>
+ <Person Type = "Personal">
+ </Person>
+</People>
diff --git a/lib/xmerl/doc/examples/xml/test5.xml b/lib/xmerl/doc/examples/xml/test5.xml
new file mode 100755
index 0000000000..e9d85b8d8f
--- /dev/null
+++ b/lib/xmerl/doc/examples/xml/test5.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding = 'ISO-8859-1' ?>
+<People>
+ <!-- This is a real comment -->
+ <comment>
+ This is a comment
+ </comment>
+ <Person Type = "Personal">
+ </Person>
+</People>
diff --git a/lib/xmerl/doc/examples/xml/testdtd.dtd b/lib/xmerl/doc/examples/xml/testdtd.dtd
new file mode 100755
index 0000000000..2ce1c513a6
--- /dev/null
+++ b/lib/xmerl/doc/examples/xml/testdtd.dtd
@@ -0,0 +1,17 @@
+<!ELEMENT PARAMETER ( #PCDATA | PARAMETER )* >
+<!ATTLIST PARAMETER NR ( 1000024 | 1000025 | 1000101 | 1000102 | 1000103
+| 1000105 | 1000110 | 1000115 | 1000198 ) #REQUIRED >
+<!ATTLIST PARAMETER UNIT CDATA #REQUIRED >
+
+<!ELEMENT PRODUCT ( USER_DEF, PRODUCTELEMENT+ ) >
+<!ATTLIST PRODUCT CUSTOMER CDATA #REQUIRED >
+<!ATTLIST PRODUCT DESCRIPTION CDATA #REQUIRED >
+<!ATTLIST PRODUCT GENERATOR NMTOKEN #REQUIRED >
+<!ATTLIST PRODUCT PRODUCTID NMTOKEN #REQUIRED >
+
+<!ELEMENT PRODUCTELEMENT ( PARAMETER+ ) >
+<!ATTLIST PRODUCTELEMENT ELEMENTID CDATA #REQUIRED >
+<!ATTLIST PRODUCTELEMENT TYPE NMTOKEN #REQUIRED >
+
+<!ELEMENT USER_DEF ( #PCDATA ) >
+
diff --git a/lib/xmerl/doc/examples/xml/xmerl.xml b/lib/xmerl/doc/examples/xml/xmerl.xml
new file mode 100755
index 0000000000..f02282dbef
--- /dev/null
+++ b/lib/xmerl/doc/examples/xml/xmerl.xml
@@ -0,0 +1,523 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE article
+ PUBLIC "-//OASIS//DTD Simplified DocBook XML V1.0//EN"
+ "http://www.oasis-open.org/docbook/xml/simple/1.0/sdocbook.dtd">
+
+<article lang="en" xml:lang="en" >
+ <articleinfo>
+ <title>XMerL - XML processing tools for Erlang</title>
+ <subtitle>Reference Manual</subtitle>
+ <authorgroup>
+ <author>
+ <firstname>Ulf</firstname>
+ <surname>Wiger</surname>
+ </author>
+ </authorgroup>
+ <revhistory>
+ <revision>
+ <revnumber>1.0</revnumber><date>2003-02-04</date>
+ <revremark>Converted xml from html</revremark>
+ </revision>
+ </revhistory>
+ <abstract>
+ <para>XMerL tools contains xmerl_scan; a non-validating XML
+ processor, xmerl_xpath; a XPath implementation, xmerl for export
+ of XML trees to HTML, XML or text and xmerl_xs for XSLT like
+ transforms in erlang.
+ </para>
+ </abstract>
+ </articleinfo>
+
+ <section>
+ <title>xmerl_scan - the XML processor</title>
+ <para>The (non-validating) XML processor is activated through
+ <computeroutput>xmerl_scan:string/[1,2]</computeroutput> or
+ <computeroutput>xmerl_scan:file/[1,2]</computeroutput>.
+ It returns records of the type defined in xmerl.hrl.
+ </para>
+
+ <para>As far as I can tell, xmerl_scan implements the complete XML
+ 1.0 spec, including:</para>
+ <itemizedlist>
+ <listitem><para>entity expansion</para></listitem>
+ <listitem><para>fetching and parsing external DTDs</para></listitem>
+ <listitem><para>contitional processing</para></listitem>
+ <listitem><para>UniCode</para></listitem>
+ <listitem><para>XML Names</para></listitem>
+ </itemizedlist>
+ <programlisting>
+xmerl_scan:string(Text [ , Options ]) -> #xmlElement{}.
+xmerl_scan:file(Filename [ , Options ]) -> #xmlElement{}. </programlisting>
+
+ <para>The Options are basically to specify the behaviour of the
+ scanner. See the source code for details, but you can specify
+ funs to handle scanner events (event_fun), process the document
+ entities once identified (hook_fun), and decide what to do if the
+ scanner runs into eof before the document is complete
+ (continuation_fun).</para>
+
+ <para>You can also specify a path (fetch_path) as a list of
+ directories to search when fetching files. If the file in question
+ is not in the fetch_path, the URI will be used as a file
+ name.</para>
+
+
+ <section>
+ <title>Customization functions</title>
+ <para>The XML processor offers a number of hooks for
+ customization. These hooks are defined as function objects, and
+ can be provided by the caller.</para>
+
+ <para>The following customization functions are available. If
+ they also have access to their own state variable, the access
+ function for this state is identified within parentheses:</para>
+
+ <itemizedlist>
+
+ <listitem><para>event function (<computeroutput>
+ xmerl_scan:event_state/[1,2]
+ </computeroutput>)</para></listitem>
+
+ <listitem><para>hook function (<computeroutput>
+ xmerl_scan:hook_state/[1,2]
+ </computeroutput>)</para></listitem>
+
+ <listitem><para>fetch function (<computeroutput>
+ xmerl_scan:fetch_state/[1,2] </computeroutput>)
+ </para></listitem>
+
+ <listitem><para>continuation function (<computeroutput>
+ xmerl_scan:cont_state/[1,2] </computeroutput>)
+ </para></listitem>
+
+ <listitem><para>rules function (<computeroutput>
+ xmerl_scan:rules_state/[1,2] </computeroutput>)
+ </para></listitem>
+
+ <listitem><para>accumulator function</para></listitem>
+
+ <listitem><para>close function</para></listitem>
+
+ </itemizedlist>
+
+ <para>For all of the above state access functions, the function
+ with one argument
+ (e.g. <computeroutput>event_fun(GlobalState)</computeroutput>)
+ will read the state variable, while the function with two
+ arguments (e.g.: <computeroutput>event_fun(NewStateData,
+ GlobalState)</computeroutput>) will modify it.</para>
+
+ <para>For each function, the description starts with the syntax
+ for specifying the function in the
+ <computeroutput>Options</computeroutput> list. The general forms
+ are <computeroutput>{Tag, Fun}</computeroutput>, or
+ <computeroutput>{Tag, Fun, LocalState}</computeroutput>. The
+ second form can be used to initialize the state variable in
+ question.</para>
+
+ <section>
+ <title>User State</title>
+
+ <para>All customization functions are free to access a
+ &quot;User state&quot; variable. Care must of course be taken
+ to coordinate the use of this state. It is recommended that
+ functions, which do not really have anything to contribute to
+ the &quot;global&quot; user state, use their own state
+ variable instead. Another option (used in
+ e.g. <computeroutput>xmerl_eventp.erl</computeroutput>) is for
+ customization functions to share one of the local states (in
+ <computeroutput>xmerl_eventp.erl</computeroutput>, the
+ continuation function and the fetch function both acces the
+ <computeroutput>cont_state</computeroutput>.)</para>
+
+ <para>Functions to access user state:</para>
+
+ <itemizedlist>
+
+ <listitem><para><computeroutput>
+ xmerl_scan:user_state(GlobalState) </computeroutput>
+ </para></listitem>
+
+ <listitem><para><computeroutput>xmerl_scan:user_state(UserState',
+ GlobalState) </computeroutput></para></listitem>
+
+ </itemizedlist>
+
+ </section>
+ <section>
+ <title>Event Function</title>
+
+ <para><computeroutput>{event_fun, fun()} | {event_fun, fun(),
+ LocalState}</computeroutput></para>
+
+ <para>The event function is called at the beginning and at the
+ end of a parsed entity. It has the following format and
+ semantics:</para>
+
+<programlisting>
+<![CDATA[
+fun(Event, GlobalState) ->
+ EventState = xmerl_scan:event_state(GlobalState),
+ EventState' = foo(Event, EventState),
+ GlobalState' = xmerl_scan:event_state(EventState', GlobalState)
+end.
+]]></programlisting>
+
+ </section>
+ <section>
+ <title>Hook Function</title>
+ <para> <computeroutput>{hook_fun, fun()} | {hook_fun, fun(),
+ LocalState}</computeroutput></para>
+
+
+
+<para>The hook function is called when the processor has parsed a complete
+entity. Format and semantics:</para>
+
+<programlisting>
+<![CDATA[
+fun(Entity, GlobalState) ->
+ HookState = xmerl_scan:hook_state(GlobalState),
+ {TransformedEntity, HookState'} = foo(Entity, HookState),
+ GlobalState' = xmerl_scan:hook_state(HookState', GlobalState),
+ {TransformedEntity, GlobalState'}
+end.
+]]></programlisting>
+
+ <para>The relationship between the event function, the hook
+ function and the accumulator function is as follows:</para>
+
+ <orderedlist>
+ <listitem><para>The event function is first called with an
+ 'ended' event for the parsed entity.</para></listitem>
+
+ <listitem><para>The hook function is called, possibly
+ re-formatting the entity.</para></listitem>
+
+ <listitem><para>The acc function is called in order to
+ (optionally) add the re-formatted entity to the contents of
+ its parent element.</para></listitem>
+
+ </orderedlist>
+
+ </section>
+ <section>
+ <title>Fetch Function</title>
+<para>
+<computeroutput>{fetch_fun, fun()} | {fetch_fun, fun(), LocalState}</computeroutput>
+</para>
+<para>The fetch function is called in order to fetch an external resource
+(e.g. a DTD).</para>
+
+<para>The fetch function can respond with three different return values:</para>
+
+ <programlisting>
+<![CDATA[
+ Result ::=
+ {ok, GlobalState'} |
+ {ok, {file, Filename}, GlobalState'} |
+ {ok, {string, String}, GlobalState'}
+]]></programlisting>
+
+<para>Format and semantics:</para>
+
+ <programlisting>
+<![CDATA[
+fun(URI, GlobalState) ->
+ FetchState = xmerl_scan:fetch_state(GlobalState),
+ Result = foo(URI, FetchState). % Result being one of the above
+end.
+]]></programlisting>
+
+ </section>
+ <section>
+ <title>Continuation Function</title>
+<para>
+<computeroutput>{continuation_fun, fun()} | {continuation_fun, fun(), LocalState}</computeroutput>
+</para>
+<para>The continuation function is called when the parser encounters the end
+of the byte stream. Format and semantics:</para>
+
+ <programlisting>
+<![CDATA[
+fun(Continue, Exception, GlobalState) ->
+ ContState = xmerl_scan:cont_state(GlobalState),
+ {Result, ContState'} = get_more_bytes(ContState),
+ GlobalState' = xmerl_scan:cont_state(ContState', GlobalState),
+ case Result of
+ [] ->
+ GlobalState' = xmerl_scan:cont_state(ContState', GlobalState),
+ Exception(GlobalState');
+ MoreBytes ->
+ {MoreBytes', Rest} = end_on_whitespace_char(MoreBytes),
+ ContState'' = update_cont_state(Rest, ContState'),
+ GlobalState' = xmerl_scan:cont_state(ContState'', GlobalState),
+ Continue(MoreBytes', GlobalState')
+ end
+end.
+]]></programlisting>
+ </section>
+ <section>
+ <title>Rules Functions</title>
+ <para>
+<computeroutput>
+{rules, ReadFun : fun(), WriteFun : fun(), LocalState} |
+{rules, Table : ets()}</computeroutput>
+</para>
+ <para>The rules functions take care of storing scanner
+ information in a rules database. User-provided rules functions
+ may opt to store the information in mnesia, or perhaps in the
+ user_state(LocalState).</para>
+
+ <para>The following modes exist:</para>
+
+ <itemizedlist>
+
+ <listitem><para>If the user doesn't specify an option, the
+ scanner creates an ets table, and uses built-in functions to
+ read and write data to it. When the scanner is done, the ets
+ table is deleted.</para></listitem>
+
+ <listitem><para>If the user specifies an ets table via the
+ <computeroutput>{rules, Table}</computeroutput> option, the
+ scanner uses this table. When the scanner is done, it does
+ <emphasis>not</emphasis> delete the table.</para></listitem>
+
+ <listitem><para>If the user specifies read and write
+ functions, the scanner will use them instead.</para></listitem>
+
+ </itemizedlist>
+
+ <para>The format for the read and write functions are as
+ follows:</para>
+
+
+<programlisting>
+<![CDATA[
+WriteFun(Context, Name, Definition, ScannerState) -> NewScannerState.
+ReadFun(Context, Name, ScannerState) -> Definition | undefined.
+]]></programlisting>
+
+ <para>Here is a summary of the data objects currently being
+ written by the scanner:</para>
+
+ <table>
+ <title>Scanner data objects</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Context</entry>
+ <entry>Key Value</entry>
+ <entry>Definition</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>notation</entry>
+ <entry>NotationName</entry>
+ <entry><computeroutput>{system, SL} | {public, PIDL, SL}</computeroutput></entry>
+ </row>
+ <row>
+ <entry>elem_def</entry>
+ <entry>ElementName</entry>
+ <entry><computeroutput>#xmlElement{content = ContentSpec}</computeroutput></entry>
+ </row>
+ <row>
+ <entry>parameter_entity</entry>
+ <entry>PEName</entry>
+ <entry><computeroutput>PEDef</computeroutput></entry>
+ </row>
+ <row>
+ <entry>entity</entry>
+ <entry>EntityName</entry>
+ <entry><computeroutput>EntityDef</computeroutput></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+<programlisting>
+<![CDATA[
+ContentSpec ::= empty | any | ElemContent
+ElemContent ::= {Mode, Elems}
+Mode ::= seq | choice
+Elems ::= [Elem]
+Elem ::= '#PCDATA' | Name | ElemContent | {Occurrence, Elems}
+Occurrence ::= '*' | '?' | '+'
+]]></programlisting>
+ <note><para>When &lt;Elem&gt; is not wrapped with
+&lt;Occurrence&gt;, (Occurrence = once) is implied.</para></note>
+
+ </section>
+ <section>
+ <title>Accumulator Function</title>
+ <para><computeroutput>{acc_fun, fun()} | {acc_fun, fun(),
+ LocalState}</computeroutput></para>
+
+ <para>The accumulator function is called to accumulate the
+ contents of an entity.When parsing very large files, it may
+ not be desireable to do so.In this case, an acc function can
+ be provided that simply doesn't accumulate.</para>
+
+ <para>Note that it is possible to even modify the parsed
+ entity before accumulating it, but this must be done with
+ care. <computeroutput>xmerl_scan</computeroutput> performs
+ post-processing of the element for namespace management. Thus,
+ the element must keep its original structure for this to
+ work.</para>
+
+ <para>The acc function has the following format and
+ semantics:</para>
+
+ <programlisting>
+<![CDATA[
+%% default accumulating acc fun
+fun(ParsedEntity, Acc, GlobalState) ->
+ {[X|Acc], GlobalState}.
+
+%% non-accumulating acc fun
+fun(ParsedEntity, Acc, GlobalState) ->
+ {Acc, GlobalState}.
+]]></programlisting>
+ </section>
+ <section>
+ <title>Close Function</title>
+
+ <para>The close function is called when a document (either the
+ main document or an external DTD) has been completely
+ parsed. When xmerl_scan was started using
+ <computeroutput>xmerl_scan:file/[1,2]</computeroutput>, the
+ file will be read in full, and closed immediately, before the
+ parsing starts, so when the close function is called, it will
+ not need to actually close the file. In this case, the close
+ function will be a good place to modify the state
+ variables.</para>
+
+ <para>Format and semantics:</para>
+
+ <programlisting>
+<![CDATA[
+fun(GlobalState) ->
+ GlobalState' = .... % state variables may be altered
+]]></programlisting>
+ </section>
+
+ </section>
+
+ </section>
+
+ <section>
+ <title>XPATH</title>
+
+ <programlisting>
+<![CDATA[
+xmerl_xpath:string(QueryString, #xmlElement{}) ->
+ [DocEntity]
+
+DocEntity : #xmlElement{}
+ | #xmlAttribute{}
+ | #xmlText{}
+ | #xmlPI{}
+ | #xmlComment{}
+]]></programlisting>
+
+ <para>The xmerl_xpath module does seem to handle the entire XPATH
+ 1.0 spec, but I haven't tested that much yet. The grammar is
+ defined in
+ <computeroutput>xmerl_xpath_parse.yrl</computeroutput>. The core
+ functions are defined in
+ <computeroutput>xmerl_xpath_pred.erl</computeroutput>.</para>
+ </section>
+ <section>
+ <title>Some useful shell commands for debugging the XPath parser</title>
+<para>
+ <command>
+<![CDATA[
+c(xmerl_xpath_scan).
+yecc:yecc("xmerl_xpath_parse.yrl", "xmerl_xpath_parse", true, []).
+c(xmerl_xpath_parse).
+
+xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("position() > -1")).
+xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("5 * 6 div 2")).
+xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("5 + 6 mod 2")).
+xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("5 * 6")).
+xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("5 * 6")).
+xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("-----6")).
+xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("parent::node()")).
+xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("descendant-or-self::node()")).
+xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("parent::processing-instruction('foo')")).]]></command></para>
+ </section>
+ <section>
+ <title>Erlang Data Structure Export</title>
+
+ <para>The idea as follows:</para>
+
+ <para>The Erlang data structure should look like this:</para>
+ <programlisting>
+<![CDATA[
+Element: {Tag, Attributes, Content}
+Tag : atom()
+Attributes: [{Key, Value}]
+Content: [String | Element]
+String: [char() | binary() | String]
+]]></programlisting>
+
+ <para>Some short forms are allowed:</para>
+ <programlisting>
+<![CDATA[
+{Tag, Content} -> {Tag, [], Content}
+Tag -> {Tag, [], []}
+]]></programlisting>
+
+ <para>Note that content lists must be flat, but strings can be
+ deep.</para>
+
+ <para>It is also allowed to include normal
+ <computeroutput>#xml...</computeroutput> elements in the simple
+ format.</para>
+
+ <para><computeroutput>xmerl:export_simple(Data,
+ Callback)</computeroutput> takes the above data structure and
+ exports it, using the callback module
+ <computeroutput>Callback</computeroutput>.</para>
+
+ <para>The callback module should contain hook functions for all
+ tags present in the data structure. The hook function must have
+ the format:</para>
+ <para><computeroutput> Tag(Data, Attrs, Parents, E)
+ </computeroutput></para>
+
+ <para>where E is an <computeroutput>#xmlElement{}</computeroutput>
+ record (see <computeroutput>xmerl.hrl</computeroutput>).</para>
+
+ <para>Attrs is converted from the simple <computeroutput>[{Key,
+ Value}]</computeroutput> to
+ <computeroutput>[#xmlAttribute{}]</computeroutput></para>
+
+ <para>Parents is a list of <computeroutput>[{ParentTag,
+ ParentTagPosition}]</computeroutput>.</para>
+
+ <para>The hook function should return either the Data to be
+ exported, or the tuple <computeroutput>{'#xml-redefine#',
+ NewStructure}</computeroutput>, where
+ <computeroutput>NewStructure</computeroutput> is an element (which
+ can be simple), or a (simple-) content list wrapped in a 1-tuple
+ as <computeroutput>{NewContent}</computeroutput>.</para>
+
+ <para>The callback module can inherit definitions from other
+ callback modules, through the required function
+ <computeroutput>'#xml-interitance#() ->
+ [ModuleName]</computeroutput>. </para>
+
+ <para>As long as a tag is represented in one of the callback
+ modules, things will work. It is of course also possible to
+ redefine a tag.</para>
+ <section>
+ <title>XSLT like transforms</title>
+ <para>See separate document <ulink url="xmerl_xs.html" >xmerl_xs.html
+ </ulink></para>.
+ </section>
+ </section>
+
+</article>
diff --git a/lib/xmerl/doc/examples/xml/xmerl_xs.xml b/lib/xmerl/doc/examples/xml/xmerl_xs.xml
new file mode 100644
index 0000000000..9a798808b9
--- /dev/null
+++ b/lib/xmerl/doc/examples/xml/xmerl_xs.xml
@@ -0,0 +1,541 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE article
+ PUBLIC "-//OASIS//DTD Simplified DocBook XML V1.0//EN"
+ "http://www.oasis-open.org/docbook/xml/simple/1.0/sdocbook.dtd">
+
+<article lang="en" xml:lang="en" >
+ <articleinfo>
+ <title>XSLT like transformations in Erlang </title>
+ <subtitle>User Guide</subtitle>
+ <authorgroup>
+ <author>
+ <firstname>Mikael</firstname>
+ <surname>Karlsson</surname>
+ </author>
+ </authorgroup>
+ <revhistory>
+ <revision>
+ <revnumber>1.0</revnumber><date>2002-10-25</date>
+ <revremark>First Draft</revremark>
+ </revision>
+ <revision>
+ <revnumber>1.1</revnumber><date>2003-02-05</date>
+ <revremark>Moved module xserl to xmerl application, renamed to
+ xmerl_xs</revremark>
+ </revision>
+ </revhistory>
+ <abstract>
+ <para>Erlang has similarities to XSLT since both languages
+ have a functional programming approach. Using the xpath implementation
+ in the existing xmerl application it is possible to write XSLT
+ like transforms in Erlang. One can also combine the
+ transformations with the erlang scripting possibility
+ in the yaws webserver to implement "on the fly" html
+ conversions of xml documents.
+ </para>
+ </abstract>
+ </articleinfo>
+
+
+ <section>
+ <title>Terminology</title>
+ <variablelist>
+ <varlistentry>
+ <term>XML</term>
+ <listitem>
+ <para>Extensible Markup Language</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>XSLT</term>
+ <listitem>
+ <para>Extensible Stylesheet Language: Transformations</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section>
+ <title>Introduction</title>
+ <para>XSLT stylesheets are often used when transforming XML
+ documents, to other XML documents or (X)HTML for presentation.
+ There are a number of brick-sized books written on the
+ topic. XSLT contains quite many
+ functions and learning them all may take some effort, which
+ could be a reason why the author only has reached a basic level of
+ understanding. This document assumes a basic level of
+ understanding of XSLT.
+ </para>
+ <para>Since XSLT is based on a functional programming approach
+ with pattern matching and recursion it is possible to write
+ similar style sheets in Erlang. At least for basic
+ transforms. XPath which is used in XSLT is also already
+ implemented in the xmerl application written i Erlang. This
+ document describes how to use the XPath implementation together
+ with Erlangs pattern matching and a couple of functions to write
+ XSLT like transforms.</para>
+ <para>This approach is probably easier for an Erlanger but
+ if you need to use real XSLT stylesheets in order to "comply to
+ the standard" there is an adapter available to the Sablotron
+ XSLT package which is written i C++.
+ </para>
+ <para>
+ This document is written in the Simplified Docbook DTD which is
+ a subset of the complete one and converted to xhtml using a
+ stylesheet written in Erlang.
+ </para>
+ </section>
+
+ <section>
+ <title>Tools</title>
+ <section>
+ <title>xmerl</title>
+ <para><ulink url="http://sowap.sourceforge.net/" >xmerl</ulink>
+ is a xml parser written in Erlang</para>
+ <section>
+ <title>xmerl_xpath</title>
+ <para>XPath is in important part of XSLT and is implemented in
+ xmerl</para>
+ </section>
+ <section>
+ <title>xmerl_xs</title>
+ <para>
+ <ulink url="xmerl_xs.yaws" >xmerl_xs</ulink> is a very small
+ module acting as "syntactic sugar" for the XSLT lookalike
+ transforms. It uses xmerl_xpath.
+ </para>
+ </section>
+ </section>
+
+ <section>
+ <title>yaws</title>
+ <para>
+ <ulink url="http://yaws.hyber.org/" >Yaws</ulink>, Yet Another
+ Webserver, is a web server written in Erlang that support dynamic
+ content generation using embedded scripts, also written in Erlang.
+ </para>
+<!--
+ <figure>
+ <title>The Yaws logo</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="yaws_pb.gif" format="GIF" scale="50%"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+-->
+ <para>Yaws is not needed to make the XSLT like transformations, but
+ combining yaws and xmerl it is possible to do transformations
+ of XML documents to HTML in realtime, when clients requests a
+ web page. As an example I am able to edit this document using
+ emacs with psgml tools, save the document and just do a reload
+ in my browser to see the result. The parse/transform time is not
+ visually different compared to loading any other document in the
+ browser.
+ </para>
+ </section>
+
+ </section>
+
+ <section>
+ <title>Transformations</title>
+<para>
+ When xmerl_scan parses an xml string/file it returns a record of:
+</para>
+ <programlisting>
+<![CDATA[
+ -record(xmlElement, {
+ name,
+ parents = [],
+ pos,
+ attributes = [],
+ content = [],
+ language = [],
+ expanded_name = [],
+ nsinfo = [],% {Prefix, Local} | []
+ namespace = #xmlNamespace{}
+ }).
+ ]]>
+</programlisting>
+<para>
+ Were content is a mixed list of yet other xmlElement records and/or
+ xmlText (or other node types).
+</para>
+ <section>
+ <title>xmerl_xs functions</title>
+ <para>
+ Functions used:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>xslapply/2</term>
+ <listitem>
+ <para>function to make things look similar
+ to xsl:apply-templates.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>value_of/1</term>
+ <listitem>
+ <para>Conatenates all text nodes within a tree.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>select/2</term>
+ <listitem>
+ <para>select(Str, E) extracts nodes from the XML tree using
+ xmerl_xpath.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>built_in_rules/2</term>
+ <listitem>
+ <para>The default fallback behaviour, template funs should
+ end with:
+ <computeroutput>template(E)->built_in_rules(fun
+ template/1, E).
+</computeroutput>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+<note><para>Text is escaped using xmerl_lib:export_text/1 for
+ "&lt;", "&gt;" and other relevant xml
+ characters when exported. So the value_of/1 and built_in_rules/2
+ functions should be replaced when not exporting to xml or html.
+</para></note>
+ </section>
+
+
+<section><title>Examples</title>
+ <example>
+ <title>Using xslapply</title>
+ <para>original XSLT:</para>
+ <programlisting>
+<![CDATA[
+ <xsl:template match="doc/title">
+ <h1>
+ <xsl:apply-templates/>
+ </h1>
+ </xsl:template>
+ ]]>
+ </programlisting>
+ <para>
+ becomes in Erlang:</para>
+ <programlisting>
+<![CDATA[
+ template(E = #xmlElement{ parents=[{'doc',_}|_], name='title'}) ->
+ ["<h1>",
+ xslapply(fun template/1, E),
+ "</h1>"];
+ ]]>
+ </programlisting>
+
+ </example>
+ <example>
+ <title>Using value_of and select</title>
+ <programlisting>
+<![CDATA[
+ <xsl:template match="title">
+ <div align="center"><h1><xsl:value-of select="." /></h1></div>
+ </xsl:template>
+ ]]>
+ </programlisting>
+ <para>
+ becomes:
+ </para>
+ <programlisting>
+<![CDATA[
+template(E = #xmlElement{name='title'}) ->
+ ["<div align=\"center\"><h1>", value_of(select(".", E)), "</h1></div>"];
+ ]]>
+ </programlisting>
+ </example>
+ <example>
+ <title>Simple xsl stylesheet</title>
+<para>
+ A complete example with the XSLT sheet in the xmerl distribution.
+</para>
+ <programlisting>
+<![CDATA[
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/TR/xhtml1/strict">
+
+ <xsl:strip-space elements="doc chapter section"/>
+ <xsl:output
+ method="xml"
+ indent="yes"
+ encoding="iso-8859-1"
+ />
+
+ <xsl:template match="doc">
+ <html>
+ <head>
+ <title>
+ <xsl:value-of select="title"/>
+ </title>
+ </head>
+ <body>
+ <xsl:apply-templates/>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="doc/title">
+ <h1>
+ <xsl:apply-templates/>
+ </h1>
+ </xsl:template>
+
+ <xsl:template match="chapter/title">
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+ </xsl:template>
+
+ <xsl:template match="section/title">
+ <h3>
+ <xsl:apply-templates/>
+ </h3>
+ </xsl:template>
+
+ <xsl:template match="para">
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:template>
+
+ <xsl:template match="note">
+ <p class="note">
+ <b>NOTE: </b>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:template>
+
+ <xsl:template match="emph">
+ <em>
+ <xsl:apply-templates/>
+ </em>
+ </xsl:template>
+
+</xsl:stylesheet>
+ ]]>
+ </programlisting>
+ </example>
+ <example>
+ <title>Erlang version</title>
+ <para>
+ Erlang transformation of previous example:
+ </para>
+ <programlisting>
+<![CDATA[
+
+-include("xmerl.hrl").
+
+-import(xmerl_xs,
+ [ xslapply/2, value_of/1, select/2, built_in_rules/2 ]).
+
+doctype()->
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\
+ \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd \">".
+
+process_xml(Doc)->
+ template(Doc).
+
+template(E = #xmlElement{name='doc'})->
+ [ "<\?xml version=\"1.0\" encoding=\"iso-8859-1\"\?>",
+ doctype(),
+ "<html xmlns=\"http://www.w3.org/1999/xhtml\" >"
+ "<head>"
+ "<title>", value_of(select("title",E)), "</title>"
+ "</head>"
+ "<body>",
+ xslapply( fun template/1, E),
+ "</body>"
+ "</html>" ];
+
+
+template(E = #xmlElement{ parents=[{'doc',_}|_], name='title'}) ->
+ ["<h1>",
+ xslapply( fun template/1, E),
+ "</h1>"];
+
+template(E = #xmlElement{ parents=[{'chapter',_}|_], name='title'}) ->
+ ["<h2>",
+ xslapply( fun template/1, E),
+ "</h2>"];
+
+template(E = #xmlElement{ parents=[{'section',_}|_], name='title'}) ->
+ ["<h3>",
+ xslapply( fun template/1, E),
+ "</h3>"];
+
+template(E = #xmlElement{ name='para'}) ->
+ ["<p>", xslapply( fun template/1, E), "</p>"];
+
+template(E = #xmlElement{ name='note'}) ->
+ ["<p class=\"note\">"
+ "<b>NOTE: </b>",
+ xslapply( fun template/1, E),
+ "</p>"];
+
+template(E = #xmlElement{ name='emph'}) ->
+ ["<em>", xslapply( fun template/1, E), "</em>"];
+
+template(E)->
+ built_in_rules( fun template/1, E).
+ ]]>
+ </programlisting>
+ <para>
+ It is important to end with a call to
+ <computeroutput>xmerl_xs:built_in_rules/2</computeroutput>
+ if you want any text to be written in "push" transforms.
+ That are the ones using a lot <computeroutput>xslapply( fun
+ template/1, E )</computeroutput> instead of
+ <computeroutput>value_of(select("xpath",E))</computeroutput>,
+ which is pull...
+ </para>
+ </example>
+<para>The largest example is the stylesheet to transform this document
+ from the Simplified Docbook XML format to xhtml. The source
+ file is <computeroutput>sdocbook2xhtml.erl</computeroutput>.
+</para>
+</section>
+ <section>
+ <title>Tips and tricks</title>
+ <section>
+ <title>for-each</title>
+ <para>The function for-each is quite common in XSLT stylesheets.
+ It can often be rewritten and replaced by select/1. Since
+ select/1 returns a list of #xmlElements and xslapply/2
+ traverses them it is more or less the same as to loop over all
+ the elements.
+ </para>
+ </section>
+ <section>
+ <title>position()</title>
+ <para>The XSLT position() and #xmlElement.pos are not the
+ same. One has to make an own position in Erlang.</para>
+ <example>
+ <title>Counting positions</title>
+ <programlisting>
+<![CDATA[
+<xsl:template match="stanza">
+ <p><xsl:apply-templates select="line" /></p>
+</xsl:template>
+
+<xsl:template match="line">
+ <xsl:if test="position() mod 2 = 0">&#160;&#160;</xsl:if>
+ <xsl:value-of select="." /><br />
+</xsl:template>
+ ]]>
+ </programlisting>
+<para>Can be written as</para>
+ <programlisting>
+<![CDATA[
+template(E = #xmlElement{name='stanza'}) ->
+ {Lines,LineNo} = lists:mapfoldl(fun template_pos/2, 1, select("line", E)),
+ ["<p>", Lines, "</p>"].
+
+template_pos(E = #xmlElement{name='line'}, P) ->
+ {[indent_line(P rem 2), value_of(E#xmlElement.content), "<br />"], P + 1 }.
+
+indent_line(0)->"&#160;&#160;";
+indent_line(_)->"".
+ ]]>
+ </programlisting>
+ </example>
+ </section>
+ <section>
+ <title>Global tree awareness</title>
+ <para>In XSLT you have "root" access to the top of the tree
+ with XPath, even though you are somewhere deep in your
+ tree.</para>
+ <para>The xslapply/2 function only carries back the child part
+ of the tree to the template fun. But it is quite easy to write
+ template funs that handles both the child and top tree.</para>
+ <example>
+ <title>Passing the root tree</title>
+ <para>The following example piece will prepend the article
+ title to any section title</para>
+ <programlisting>
+<![CDATA[
+template(E = #xmlElement{name='title'}, ETop ) ->
+ ["<h3>", value_of(select("title", ETop))," - ",
+ xslapply( fun(A) -> template(A, ETop) end, E),
+ "</h3>"];
+ ]]>
+ </programlisting>
+ </example>
+ </section>
+ </section>
+
+ </section>
+
+
+ <section>
+ <title>Utility functions</title>
+ <para>
+ The module xmerl_xs contains the functions
+ <computeroutput>mapxml/2, foldxml/3</computeroutput> and
+ <computeroutput> mapfoldxml/3</computeroutput> to traverse
+ <literal>#xmlElement</literal> trees. They can be used in order
+ to build cross-references, see sdocbook2xhtml.erl for instance
+ where <computeroutput>foldxml/3</computeroutput> and
+ <computeroutput> mapfoldxml/3</computeroutput> are used to
+ number chapters, examples and figures and to build the Table of
+ contents for the document.
+ </para>
+ </section>
+
+
+ <section>
+ <title>Future enhancements</title>
+ <para>
+ More wish- than task-list at the moment.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>More stylesheets</para>
+ </listitem>
+ <listitem>
+ <para>On the fly exports to PDF for printing and also more
+ "polished" presentations.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>References</title>
+ <orderedlist>
+ <listitem>
+ <para><ulink url="../xml/xmerl_xs.xml" >XML source
+ file</ulink> for this document.
+ </para>
+ </listitem>
+ <listitem>
+ <para><ulink url="../xs/sdocbook2xhtml.erl" >Erlang style
+ sheet</ulink> used for this document. (Simplified Docbook DTD).</para>
+ </listitem>
+ <listitem>
+ <para><ulink url="http://www.erlang.org/" >Open Source Erlang</ulink>
+ </para>
+ </listitem>
+ </orderedlist>
+
+ </section>
+</article>
+
+<!--
+Local Variables:
+mode: xml
+sgml-indent-step: 2
+sgml-indent-data: t
+sgml-set-face: t
+sgml-insert-missing-element-comment: nil
+End:
+-->
diff --git a/lib/xmerl/doc/examples/xserl_test.erl b/lib/xmerl/doc/examples/xserl_test.erl
new file mode 100644
index 0000000000..69db75cfe8
--- /dev/null
+++ b/lib/xmerl/doc/examples/xserl_test.erl
@@ -0,0 +1,85 @@
+-module(xserl_test).
+-include("xmerl.hrl").
+-import(xserl,[ xslapply/2, value_of/1, select/2, built_in_rules/2 ]).
+-export([process_xml/1,test/0]).
+
+doctype()->
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\
+ \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd \">".
+
+test() ->
+ Str= "<?xml version=\"1.0\"?>"
+ "<doc xmlns='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'>"
+ "<title>Cheaper by the Dozen</title>"
+ "<isbn:number>1568491379</isbn:number>"
+ "<note>"
+ "<!-- make HTML the default namespace for some commentary -->"
+ "<p xmlns='urn:w3-org-ns:HTML'>"
+ "This is a <i>funny</i> book!"
+ "</p>"
+ "</note>"
+ "</doc>",
+ {Doc,_}=xmerl_scan:string(Str,[{fetch_fun, fun(DTDSpec,S) -> {ok,S} end}]),
+
+ process_xml(Doc).
+
+process_xml(Doc)->
+ template(Doc).
+
+template(E = #xmlElement{name='doc'})->
+ [ "<\?xml version=\"1.0\" encoding=\"iso-8859-1\"\?>",
+ doctype(),
+ "<html xmlns=\"http://www.w3.org/1999/xhtml\" >"
+ "<head>"
+ "<title>", xserl:value_of(select("title",E)), "</title>"
+ "</head>"
+ "<body>",
+ xslapply( fun template/1, E),
+ "</body>"
+ "</html>" ];
+
+
+template(E = #xmlElement{ parents=[{'doc',_}|_], name='title'}) ->
+ ["<h1>",
+%% xslapply( fun template/1, E),
+%% same as
+ lists:map( fun template/1, E#xmlElement.content ),
+ "</h1>"];
+
+template(E = #xmlElement{ parents=[{'chapter',_}|_], name='title'}) ->
+ ["<h2>",
+ xslapply( fun template/1, E),
+ "</h2>"];
+
+template(E = #xmlElement{ parents=[{'section',_}|_], name='title'}) ->
+ ["<h3>",
+ xslapply( fun template/1, E),
+ "</h3>"];
+
+template(E = #xmlElement{ name='para'}) ->
+ ["<p>",
+ xslapply( fun template/1, E),
+ "</p>"];
+
+template(E = #xmlElement{ name='note'}) ->
+ ["<p class=\"note\">"
+ "<b>NOTE: </b>",
+ xslapply( fun template/1, E),
+ "</p>"];
+
+template(E = #xmlElement{ name='emph'}) ->
+ ["<em>",
+ xslapply( fun template/1, E),
+ "</em>"];
+
+template(E)->
+ built_in_rules( fun template/1, E).
+
+%% It is important to end with a call to xserl:built_in_rules/2
+%% if you want any text to be written in "push" transforms.
+%% That are the ones using a lot xslapply( fun template/1, E )
+%% instead of value_of(select("xpath",E)), which is pull...
+%% Could maybe be caught as an exception in xslapply instead,
+%% but I think that could degrade performance - having an
+%% exception for every #xmlText element.
+
diff --git a/lib/xmerl/doc/src/notes.xml b/lib/xmerl/doc/src/notes.xml
index 8542435456..654bbbc05d 100644
--- a/lib/xmerl/doc/src/notes.xml
+++ b/lib/xmerl/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2010</year>
+ <year>2004</year><year>2011</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
diff --git a/lib/xmerl/src/xmerl_sax_parser.erl b/lib/xmerl/src/xmerl_sax_parser.erl
index eb9f8deec6..571feabee0 100644
--- a/lib/xmerl/src/xmerl_sax_parser.erl
+++ b/lib/xmerl/src/xmerl_sax_parser.erl
@@ -263,11 +263,11 @@ detect_charset_1(<<16#3C, 16#3F, 16#78, 16#6D, 16#6C, Xml2/binary>> = Xml, State
{Xml, State#xmerl_sax_parser_state{encoding=Enc}}
end;
_ ->
- {Xml, State#xmerl_sax_parser_state{encoding=utf8}}
+ {Xml, State}
end
end;
detect_charset_1(Xml, State) ->
- {Xml, State#xmerl_sax_parser_state{encoding=utf8}}.
+ {Xml, State}.
%%----------------------------------------------------------------------
%% Function: convert_encoding(Enc)
@@ -278,6 +278,7 @@ detect_charset_1(Xml, State) ->
convert_encoding(Enc) -> %% Just for 7,8 bit + utf8
case string:to_lower(Enc) of
"utf-8" -> utf8;
+ "us-ascii" -> utf8;
"iso-8859-1" -> latin1; % Handle all iso-8859 as latin1
"iso-8859-2" -> latin1;
"iso-8859-3" -> latin1;
diff --git a/lib/xmerl/src/xmerl_scan.erl b/lib/xmerl/src/xmerl_scan.erl
index 3a5164d154..22eb641a02 100644
--- a/lib/xmerl/src/xmerl_scan.erl
+++ b/lib/xmerl/src/xmerl_scan.erl
@@ -3918,7 +3918,7 @@ schemaLocations(#xmlElement{attributes=Atts,xmlbase=_Base}) ->
case lists:dropwhile(Pred,Atts) of
[#xmlAttribute{value=Paths}|_] ->
- case string:tokens(Paths," ") of
+ case string:tokens(Paths," \n\t\r") of
L when length(L) > 0 ->
case length(L) rem 2 of
0 ->
diff --git a/lib/xmerl/src/xmerl_xsd.erl b/lib/xmerl/src/xmerl_xsd.erl
index c0923520c2..1f0793bc58 100644
--- a/lib/xmerl/src/xmerl_xsd.erl
+++ b/lib/xmerl/src/xmerl_xsd.erl
@@ -2420,8 +2420,8 @@ validate_xml(XMLEl=#xmlElement{},SEl=#schema_element{},S) ->
%% 2 often
check_element_type(XML=[XMLTxt=#xmlText{}|Rest],CM=[CMEl|CMRest],Env,
Block,S,Checked) ->
- %% XMLTxt ��r det f��rsta av content i element,
- %% CMEl ��r den till��tna typen enligt schemat
+ %% XMLTxt is the first part of the elements content,
+ %% CMEl is the allowed type according to the schema
case is_whitespace(XMLTxt) of
true -> %% Ignore XMLEl
check_element_type(Rest,CM,Env,Block,S,[XMLTxt|Checked]);
@@ -2453,7 +2453,7 @@ check_element_type(XML=[#xmlElement{}|_],[{choice,{CM,Occ}}|_CMRest],
check_element_type(XML=[#xmlElement{}|_],[{all,{CM,Occ}}|_CMRest],
Env,_Block,S,Checked) ->
?debug("calling choice/6~n",[]),
- check_all(XML,CM,Occ,Env,S,Checked,XML);
+ check_all(XML,CM,Occ,Env,set_num_el(S,0),Checked,XML); %%LTH
%% 3 often. CMEL may be ((simpleType | complexType)?, (unique | key | keyref)*))
check_element_type(XML=[XMLEl=#xmlElement{}|_],[CMEl|CMRest],Env,
Block,S,Checked) ->
@@ -2921,7 +2921,7 @@ schemaLocations(El=#xmlElement{attributes=Atts},S) ->
[] ->
S;
[#xmlAttribute{value=Paths}|_] ->
- case string:tokens(Paths," ") of
+ case string:tokens(Paths," \n\t\r") of
L when length(L) > 0 ->
case length(L) rem 2 of
0 ->
@@ -3393,8 +3393,12 @@ qualified_node_set(Paths,[QN|QNs],El,S,Acc) ->
end
end,
{KeySequence,S2} = mapfoldl(Fun,S,Paths),
- qualified_node_set(Paths,QNs,El,S2,[flatten(KeySequence)|Acc]).
-
+ case flatten(KeySequence) of
+ [] ->
+ qualified_node_set(Paths,QNs,El,S2,Acc);
+ KS ->
+ qualified_node_set(Paths,QNs,El,S2,[KS|Acc])
+ end.
apply_field(F,El,S) ->
%% xmerl_xpath:string returns a list
diff --git a/lib/xmerl/src/xmerl_xsd_type.erl b/lib/xmerl/src/xmerl_xsd_type.erl
index 19951f030f..9352f4185d 100644
--- a/lib/xmerl/src/xmerl_xsd_type.erl
+++ b/lib/xmerl/src/xmerl_xsd_type.erl
@@ -612,7 +612,7 @@ check_NMTOKEN2([H|T]) ->
check_NMTOKEN2(T).
check_NMTOKENS(Value) ->
- TokList = string:tokens(Value," "),
+ TokList = string:tokens(Value," \n\t\r"),
lists:foreach(fun check_NMTOKEN/1,TokList),
{ok,Value}.
@@ -645,7 +645,7 @@ check_ENTITIES(Value) ->
check_list_type(Value,fun check_ENTITY/1).
check_list_type(Value,BaseTypeFun) ->
- Tokens = string:tokens(Value," "),
+ Tokens = string:tokens(Value," \n\t\r"),
lists:foreach(BaseTypeFun,Tokens),
{ok,Value}.
diff --git a/lib/xmerl/test/Makefile b/lib/xmerl/test/Makefile
new file mode 100644
index 0000000000..0f8cd88c13
--- /dev/null
+++ b/lib/xmerl/test/Makefile
@@ -0,0 +1,127 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2004-2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# 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.
+#
+# %CopyrightEnd%
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Common Macros
+# ----------------------------------------------------
+
+include ../vsn.mk
+VSN = $(XMERL_VSN)
+
+RM = rm -f
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+HRL_DIR= $(ERL_TOP)/lib/xmerl/include/
+HRL_MODULES= $(HRL_DIR)xmerl $(HRL_DIR)xmerl_xsd
+HRL_FILES= $(HRL_MODULES:%=%.hrl)
+
+
+MODULES= \
+ xmerl_test \
+ xmerl_app_test \
+ xmerl_appup_test \
+ xmerl_test_lib \
+ xmerl_xsd_lib
+
+ERL_FILES= $(MODULES:%=%.erl)
+
+SUITE_FILES= \
+ xmerl_SUITE.erl \
+ xmerl_std_SUITE.erl \
+ xmerl_sax_SUITE.erl \
+ xmerl_sax_std_SUITE.erl \
+ xmerl_xsd_SUITE.erl \
+ xmerl_xsd_MS2002-01-16_SUITE.erl \
+ xmerl_xsd_NIST2002-01-16_SUITE.erl \
+ xmerl_xsd_Sun2002-01-16_SUITE.erl
+
+XML_FILES= \
+ testcases.dtd \
+ xmlconformance.msxsl \
+ xmlconformance.xsl
+
+
+TARGET_FILES= $(MODULES:%=%.$(EMULATOR))
+
+
+INSTALL_PROGS= $(TARGET_FILES)
+
+ifndef XMERL_PRESERV
+XMERL_PRESERV_TEST_DIRS=
+else
+XMERL_PRESERV_TEST_DIRS= -Ddont_rm_test_dirs
+endif
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+
+RELSYSDIR = $(RELEASE_PATH)/xmerl_test
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+
+#ERL_COMPILE_FLAGS += -I$(ERL_TOP)/lib/test_server/include -I$(ERL_TOP)/lib/xmerl/include/ $(XMERL_PRESERV_TEST_DIRS)
+
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+
+tests debug opt: xmerl_test.erl
+
+info:
+ @echo "HRL_FILES: $(HRL_FILES)"
+
+clean:
+ $(RM) *.beam
+ $(RM) xmerl_test.erl
+ $(RM) core *~
+
+xmerl_test.erl: ../doc/examples/xmerl_test.erl
+ cp $< $@
+ chmod u+w $@
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+release_spec: opt
+
+release_tests_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)
+ $(INSTALL_DATA) $(ERL_FILES) $(HRL_FILES) $(RELSYSDIR)
+ $(INSTALL_DATA) $(SUITE_FILES) $(RELSYSDIR)
+ $(INSTALL_DATA) xmerl.spec xmerl.cover $(RELSYSDIR)
+ cp $(XML_FILES) $(RELSYSDIR)
+ @tar cfh - xmerl_SUITE_data | (cd $(RELSYSDIR); tar xf -)
+ @tar cfh - xmerl_std_SUITE_data | (cd $(RELSYSDIR); tar xf -)
+ @tar cfh - xmerl_xsd_SUITE_data | (cd $(RELSYSDIR); tar xf -)
+ @tar cfh - xmerl_xsd_MS2002-01-16_SUITE_data | (cd $(RELSYSDIR); tar xf -)
+ @tar cfh - xmerl_xsd_NIST2002-01-16_SUITE_data | (cd $(RELSYSDIR); tar xf -)
+ @tar cfh - xmerl_xsd_Sun2002-01-16_SUITE_data | (cd $(RELSYSDIR); tar xf -)
+ chmod -f -R u+w $(RELSYSDIR)
diff --git a/lib/xmerl/test/ReadMe b/lib/xmerl/test/ReadMe
new file mode 100644
index 0000000000..effcff6fc4
--- /dev/null
+++ b/lib/xmerl/test/ReadMe
@@ -0,0 +1,24 @@
+
+W3C conformance tests
+=====================
+
+The xmerl tests contains a large number of conformance tests from W3C, which are located in the following
+directories.
+
+xmerl_std_SUITE_data:
+ These tests are fetched from http://www.w3.org/XML/Test/ and repackaged as four tgz files.
+ The W3C Copyright notice is located in the file xmerl_std_SUITE_data/w3c-copyright-19980720.html.
+
+xmerl_xsd_MS2002-01-16_SUITE_data:
+ These tests are fetched from http://www.w3.org/XML/2004/xml-schema-test-suite/index.html
+ The W3C Copyright notice is located in the file xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html.
+
+xmerl_xsd_NIST2002-01-16_SUITE_data:
+ These tests are fetched from http://www.w3.org/XML/2004/xml-schema-test-suite/index.html
+ The W3C Copyright notice is located in the file xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html.
+
+xmerl_xsd_Sun2002-01-16_SUITE_data:
+ These tests are fetched from http://www.w3.org/XML/2004/xml-schema-test-suite/index.html
+ The W3C Copyright notice is located in the file xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html.
+
+
diff --git a/lib/xmerl/test/testcases.dtd b/lib/xmerl/test/testcases.dtd
new file mode 100644
index 0000000000..448d362991
--- /dev/null
+++ b/lib/xmerl/test/testcases.dtd
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)testcases.dtd 1.6 99/01/21
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+
+ 1999-06-09 00:20
+
+ DTD describing a database of XML tests.
+
+ NOTE: the OASIS/NIST test effort also has a DTD for its test
+ environment, but that DTD is not yet suited for automated test
+ processing. (Among other issues, it doesn't record information
+ putting any test case into the test matrix.) If that gets fixed,
+ it may be useful to switch over to that DTD.
+-->
+
+<!--
+ The root element of the whole collection is TESTSUITE. While not
+ very different from TESTCASES, it must be distinguished due to
+ improper processing by IE5.
+-->
+<!ELEMENT TESTSUITE ( TESTCASES+ )>
+<!ATTLIST TESTSUITE
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The root element of a collection should be "TESTCASES". It groups
+ a set of tests in a particular "PROFILE", which is descriptive. For
+ example, a "Japanese" profile might group tests with documents
+ in standard Japanese encodings, using Japanese characters used
+ inside names and name tokens as well as inside text. Or the
+ profile might be associated with the test supplier.
+-->
+
+<!ELEMENT TESTCASES (TEST|TESTCASES)*>
+<!ATTLIST TESTCASES
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The body of each TEST element is its description, used
+ to evaluate the diagnostic produced on negative tests.
+ People will generally read this to evaluate whether the
+ test failed for the correct reason.
+
+ The type of (external) ENTITIES required affect the results
+ permitted for certain types of nonvalidating parsers. In
+ some cases, errors (even well-formedness errors) can't be seen
+ without reading external parameter or general entities.
+
+ Each test has a unique ID used in diagnostics.
+
+ Tests with an OUTPUT attribute do dual duty: not only must parsers
+ accept the test, but the data they report must also have "Second
+ Canonical Form" as found in the specified output file. (This is
+ what James Clark titled "Canonical XML", with the addition of the
+ NOTATION declarations that all XML parsers are required to report.)
+
+ The OUTPUT3 attribute is like OUTPUT, but when sent through a
+ validating parser the data reported must have the "Third Canonical
+ Form" as found in the specified output file. (This is Second
+ Canonical form, with declarations of unparsed ENTITY values and
+ with all ignorable whitespace removed.)
+
+ Tests apply to one or more particular SECTIONS.
+
+ Each test has a TYPE:
+ * All parsers must accept "valid" testcases.
+ * Nonvalidating parsers must also accept "invalid" testcases,
+ but validating ones must reject them.
+ * No parser should accept a "not-wf" testcase unless it's a
+ nonvalidating parser and the test contains external entities
+ that the parser doesn't read.
+ * Parsers are not required to report "errors".
+
+ Each test is in a particular XML document, with a URI. If these
+ tests are accessed over a network, the path will be relative to
+ the base URI of the document holding the testcase.
+-->
+
+<!ELEMENT TEST (#PCDATA | EM | B)*>
+<!ATTLIST TEST
+ ENTITIES (both|none|parameter|general) "none"
+ ID ID #REQUIRED
+ OUTPUT CDATA #IMPLIED
+ OUTPUT3 CDATA #IMPLIED
+ SECTIONS CDATA #REQUIRED
+ TYPE (valid|invalid|not-wf|error) #REQUIRED
+ URI CDATA #REQUIRED
+ NAMESPACE (yes|no) "yes"
+ >
+
+<!--
+ Really basic HTML font tweaks, to support highlighting
+ some aspects of test descriptions ...
+ EM == emphasis (e.g. italics, fun colors)
+ B == bold
+-->
+<!ELEMENT EM (#PCDATA | B)*>
+<!ELEMENT B (#PCDATA | EM)*>
diff --git a/lib/xmerl/test/xmerl.cover b/lib/xmerl/test/xmerl.cover
new file mode 100644
index 0000000000..d0155946ea
--- /dev/null
+++ b/lib/xmerl/test/xmerl.cover
@@ -0,0 +1,2 @@
+{incl_app,xmerl,details}.
+
diff --git a/lib/xmerl/test/xmerl.spec b/lib/xmerl/test/xmerl.spec
new file mode 100644
index 0000000000..89ab31c755
--- /dev/null
+++ b/lib/xmerl/test/xmerl.spec
@@ -0,0 +1 @@
+{suites,"../xmerl_test",all}.
diff --git a/lib/xmerl/test/xmerl_SUITE.erl b/lib/xmerl/test/xmerl_SUITE.erl
new file mode 100644
index 0000000000..9b65232fe7
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE.erl
@@ -0,0 +1,634 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%%% Purpose : Test suite for the ASN.1 application
+
+-module(xmerl_SUITE).
+
+-compile(export_all).
+
+%%----------------------------------------------------------------------
+%% Include files
+%%----------------------------------------------------------------------
+-include_lib("test_server/include/test_server.hrl").
+%%-include("xmerl.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+-include_lib("kernel/include/file.hrl").
+
+
+%%======================================================================
+%% Tests
+%%======================================================================
+
+%%----------------------------------------------------------------------
+%% Test groups
+%%----------------------------------------------------------------------
+all() ->
+ [{group, cpd_tests}, xpath_text1, xpath_main,
+ xpath_abbreviated_syntax, xpath_functions,
+ {group, misc}, {group, eventp_tests},
+ {group, ticket_tests}, {group, app_test},
+ {group, appup_test}].
+
+groups() ->
+ [{cpd_tests, [],
+ [cpd_invalid1, cpd_invalid1_index, cpd_invalid2_index,
+ cpd_invalid_index3, cpd_invalid_is_layer,
+ cpd_expl_provided_DTD]},
+ {misc, [],
+ [latin1_alias, syntax_bug1, syntax_bug2, syntax_bug3,
+ pe_ref1, copyright, testXSEIF, export_simple1, export]},
+ {eventp_tests, [], [sax_parse_and_export]},
+ {ticket_tests, [],
+ [ticket_5998, ticket_7211, ticket_7214, ticket_7430,
+ ticket_6873, ticket_7496, ticket_8156, ticket_8697]},
+ {app_test, [], [{xmerl_app_test, all}]},
+ {appup_test, [], [{xmerl_appup_test, all}]}].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+%%----------------------------------------------------------------------
+%% Initializations
+%%----------------------------------------------------------------------
+init_per_suite(doc) ->
+ ["Starts the test suite"];
+init_per_suite(Config) ->
+ Dog=test_server:timetrap({minutes,10}),
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line ok=erl_tar:extract("cpd.tar.gz",[compressed]),
+ ?line ok=erl_tar:extract("misc.tar.gz",[compressed]),
+ ?line ok = change_mode(["cpd", "misc"]),
+ ?line file:set_cwd(filename:join(?config(data_dir,Config),xpath)),
+ TestServerIncludeDir=filename:join(filename:dirname(code:priv_dir(test_server)), "include"),
+ ?line {ok, xpath_lib} = compile:file(xpath_lib, [{i, TestServerIncludeDir}]),
+ ?line {ok, xpath_text} = compile:file(xpath_text, [{i, TestServerIncludeDir}]),
+ ?line {ok, xpath_abbrev} = compile:file(xpath_abbrev, [{i, TestServerIncludeDir}]),
+ [{watchdog, Dog}|Config].
+
+
+-ifndef(dont_rm_test_dirs).
+end_per_suite(doc) ->
+ ["Stops the test suite"];
+end_per_suite(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line ok=rm_files(["cpd", "misc"]),
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ lists:keydelete(watchdog,1,Config).
+
+-else.
+end_per_suite(doc) ->
+ ["Stops the test suite"];
+end_per_suite(Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ lists:keydelete(watchdog,1,Config).
+-endif.
+
+
+%% initialization before each testcase
+init_per_testcase(_TestCase,Config) ->
+ io:format("Config:~n~p",[Config]),
+ ?line {ok, _} = file:read_file_info(filename:join([?config(priv_dir,Config)])),
+ ?line code:add_patha(?config(priv_dir,Config)),
+ Dog=test_server:timetrap({minutes,10}),
+ [{watchdog, Dog}|Config].
+
+
+%% clean up after each testcase
+end_per_testcase(_Func,Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ ok.
+
+
+%%----------------------------------------------------------------------
+%% Test cases
+%%----------------------------------------------------------------------
+cpd_invalid1(suite) -> [];
+cpd_invalid1(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line case catch xmerl_scan:file(filename:join([?config(data_dir,Config), cpd,"cpd_test.xml"]),[]) of
+ {'EXIT',{fatal,Reason}} ->
+ case Reason of
+ {expected_markup,_Path,28,32} -> ok;
+ _ -> {comment,"parsing changed behaviour"}
+ end
+ end.
+
+cpd_invalid1_index(suite) -> [];
+cpd_invalid1_index(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line case catch xmerl_scan:file(filename:join([?config(data_dir,Config), cpd,"cpd_index.xml"]),[]) of
+ {'EXIT',{fatal,Reason}} ->
+ case Reason of
+ {{error,{whitespace_was_expected}},_Path,1,19} -> ok;
+ _ -> {comment,"parsing changed behaviour"}
+ end
+ end.
+
+cpd_invalid2_index(suite) -> [];
+cpd_invalid2_index(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line case catch xmerl_scan:file(filename:join([?config(data_dir,Config), cpd,"cpd_index2.xml"]),[]) of
+ {'EXIT',{fatal,Reason}} ->
+ case Reason of
+ {{invalid_target_name,_Ver},_Path,2,3} ->ok;
+ _ -> {comment,"parsing changed behaviour"}
+ end
+ end.
+
+cpd_invalid_index3(suite) -> [];
+cpd_invalid_index3(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line case catch xmerl_scan:file(filename:join([?config(data_dir,Config), cpd,"cpd_index3.xml"]),[]) of
+ {'EXIT',{fatal,Reason}} ->
+ case Reason of
+ {expected_markup,_Path,1,2} -> ok;
+ _ -> {comment,"parsing changed behaviour"}
+ end
+ end.
+
+cpd_invalid_is_layer(suite) -> [];
+cpd_invalid_is_layer(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line case catch xmerl_scan:file(filename:join([?config(data_dir,Config), cpd,"is_layer2.xml"]),[]) of
+ {'EXIT',{fatal,_Reason}} -> ok
+ end.
+
+cpd_expl_provided_DTD(suite) -> [];
+cpd_expl_provided_DTD(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {#xmlElement{},[]} = xmerl_scan:file(filename:join([?config(data_dir,Config), cpd,"file_wo_DTD.xml"]),[{validation,true},{doctype_DTD,"separate_DTD.dtd"}]).
+
+%%----------------------------------------------------------------------
+
+xpath_text1(suite) -> [];
+xpath_text1(Config) ->
+ ?line file:set_cwd(filename:join(?config(data_dir,Config),xpath)),
+ ?line ok = xpath_text:one().
+
+xpath_main(suite) -> [];
+xpath_main(Config) ->
+ ?line file:set_cwd(filename:join(?config(data_dir,Config),xpath)),
+ ?line ok = xpath_lib:test().
+
+xpath_abbreviated_syntax(suite) -> [];
+xpath_abbreviated_syntax(Config) ->
+ ?line file:set_cwd(filename:join(?config(data_dir,Config),xpath)),
+ ?line ok = xpath_abbrev:test().
+
+xpath_functions(suite) -> [];
+xpath_functions(Config) ->
+ ?line file:set_cwd(filename:join(?config(data_dir,Config),xpath)),
+ ?line ok = xpath_abbrev:functions().
+
+%%----------------------------------------------------------------------
+
+latin1_alias(suite) -> [];
+latin1_alias(Config) ->
+% ?line file:set_cwd(filename:join(?config(data_dir,Config),misc)),
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {_Elements,[]}=
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ misc,"motorcycles.xml"]),
+ [{validation,true},
+ {encoding,'iso-8859-1'}]).
+
+syntax_bug1(suite) -> [];
+syntax_bug1(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {fatal,{"expected one of: ?>, standalone, encoding",
+ {file,'misc/syntax_bug1.xml'},{line,1},{col,21}}} =
+ case catch xmerl_scan:file('misc/syntax_bug1.xml') of
+ {'EXIT',Reason} ->
+ Reason;
+ Err -> Err
+ end.
+
+syntax_bug2(suite) -> [];
+syntax_bug2(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {fatal,{"expected one of: ?>, whitespace_character",
+ {file,'misc/syntax_bug2.xml'},{line,1},{col,20}}} =
+ case catch xmerl_scan:file('misc/syntax_bug2.xml') of
+ {'EXIT',Reason} ->
+ Reason;
+ Err -> Err
+ end.
+
+syntax_bug3(suite) -> [];
+syntax_bug3(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {fatal,{{endtag_does_not_match,{was,obj,should_have_been,int}},
+ {file,'misc/syntax_bug3.xml'},{line,4},{col,3}}} =
+ case catch xmerl_scan:file('misc/syntax_bug3.xml') of
+ {'EXIT',Reason} ->
+ Reason;
+ Err -> Err
+ end.
+
+pe_ref1(suite) -> [];
+pe_ref1(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {#xmlElement{},[]} = xmerl_scan:file(filename:join([?config(data_dir,Config), misc,"PE_ref1.xml"]),[{validation,true}]).
+
+copyright(suite) -> [];
+copyright(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {#xmlElement{},[]} = xmerl_scan:file(filename:join([?config(data_dir,Config), misc,"cprght.xml"]),[{validation,true}]).
+
+testXSEIF(suite) -> [];
+testXSEIF(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {#xmlElement{},[]} = xmerl_scan:file(filename:join([?config(data_dir,Config), misc,"ReplBoard_1_1543-CNA11313Uen.xml"]),[{validation,true}]).
+
+export_simple1(suite) -> [];
+export_simple1(Config) ->
+ Simple = simple(),
+ Res = xmerl:export_simple(Simple,xmerl_xml,[{title, "Doc Title"}]),
+ ?line "<?xml version="++_ = lists:flatten(Res),
+
+ %% Use of fun in simple content OTP-6679
+ Simple2 = simple2(),
+ Res2 = xmerl:export_simple(Simple2,xmerl_xml,[{title,"Doc Title"}]),
+ ?line true = (Res2 =:= Res),
+ ok.
+
+export(suite) -> [];
+export(Config) ->
+ DataDir = ?config(data_dir,Config),
+ Prolog = ["<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE motorcycles SYSTEM \"motorcycles.dtd\">\n"],
+ TestFile = filename:join([DataDir,"misc","motorcycles.xml"]),
+ ?line {E,_} = xmerl_scan:file(TestFile),
+ ?line Exported = xmerl:export([E],xmerl_xml,[{prolog,Prolog}]),
+ B = list_to_binary(Exported++"\n"),
+ ?line {ok,B} = file:read_file(TestFile),
+ ok.
+
+%%----------------------------------------------------------------------
+
+sax_parse_and_export(suite) -> [];
+sax_parse_and_export(Config) ->
+ ?line ok = sax_parse_export_xml_big(Config),
+ ?line ok = sax_parse_export_xml_small(Config).
+
+%%----------------------------------------------------------------------
+
+sax_parse_export_xml_big(Config) ->
+ DataDir = ?config(data_dir,Config),
+ OutDir = ?config(priv_dir,Config),
+ io:format("DataDir: ~p~n,OutDir:~p~n",[DataDir,OutDir]),
+ CMOMxml = filename:join([DataDir,"eventp","CMOM.xml"]),
+ ?line {Ex,[]} = xmerl_eventp:file_sax(CMOMxml, xmerl_xml,[],[]),
+ OutFile = filename:join([OutDir,"cmom"]),
+ file:delete(OutFile),
+ StubFile = filename:join([DataDir,"eventp","CelloMOM.stub"]),
+ ?line {ok,Bin} = file:read_file(StubFile),
+ ?line {ok,IO} = file:open(OutFile,[write,append]),
+ ?line ok = file:write(IO,Bin),
+ ?line ok = io:format(IO,"~s~n~n",[lists:flatten(Ex)]),
+ Cmd = lists:flatten(io_lib:format("cmp ~s ~s",[OutFile,CMOMxml])),
+ ?line [] = os:cmd(Cmd),
+ ok.
+
+sax_parse_export_xml_small(Config) ->
+ DataDir = ?config(data_dir,Config),
+ OutDir = ?config(priv_dir,Config),
+ Wurfl_xml = filename:join([DataDir,"eventp","wurfl.xml"]),
+ ?line {Ex,[]} = xmerl_eventp:file_sax(Wurfl_xml, xmerl_xml,[],[]),
+ OutFile = filename:join([OutDir,"wrfl"]),
+ file:delete(OutFile),
+ StubFile = filename:join([DataDir,"eventp","wurfl.stub"]),
+ ?line {ok,Bin} = file:read_file(StubFile),
+ ?line {ok,IO} = file:open(OutFile,[write,append]),
+ ?line ok = file:write(IO,Bin),
+ ?line ok = io:format(IO,"~s~n",[lists:flatten(Ex)]),
+ Cmd = lists:flatten(io_lib:format("cmp ~s ~s",[OutFile,Wurfl_xml])),
+ ?line [] = os:cmd(Cmd),
+ ok.
+
+
+simple() ->
+ [{document,
+ [{title, "Doc Title"}, {author, "Ulf Wiger"}],
+ [{section,
+ [{heading, "heading1"}],
+ [{'P', ["This is a paragraph of text."]},
+ {section,
+ [{heading, "heading2"}],
+ [{'P', ["This is another paragraph."]},
+ {table,
+ [{border, 1}],
+ [{heading,
+ [{col, ["head1"]},
+ {col, ["head2"]}]},
+ {row,
+ [{col, ["col11"]},
+ {col, ["col12"]}]},
+ {row,
+ [{col, ["col21"]},
+ {col, ["col22"]}]}]}]}]}]}].
+
+
+simple2() ->
+ GenC = fun ?MODULE:generate_section/1,
+ GenA = fun ?MODULE:generate_attr_title/1,
+ [{document,[{GenA,2}],[{GenC,1}]}].
+
+generate_attr_title(0) ->
+ done;
+generate_attr_title(1) ->
+ {{title,"Doc Title"},0};
+generate_attr_title(2) ->
+ {{author, "Ulf Wiger"},1}.
+generate_section(0) ->
+ done;
+generate_section(N) ->
+ GenC = fun ?MODULE:generate_section_content/1,
+ GenA = fun ?MODULE:generate_section_attribute/1,
+ {{section,[{GenA,1}],[{GenC,2}]},N-1}.
+
+generate_section_attribute(0) ->
+ done;
+generate_section_attribute(N) ->
+ {{heading, "heading1"},N-1}.
+
+
+generate_subsection_content(0) ->
+ done;
+generate_subsection_content(1) ->
+ {{'P',["This is another paragraph."]},0};
+generate_subsection_content(N) ->
+ {{table,[{fun ?MODULE:generate_border_attribute/1,1}],
+ [{fun ?MODULE:generate_table_content/1,2}]},N-1}.
+generate_section_content(0) ->
+ done;
+generate_section_content(1) ->
+ {{'P',["This is a paragraph of text."]},0};
+generate_section_content(N) ->
+ {{section,[{heading,"heading2"}],
+ [{fun ?MODULE:generate_subsection_content/1,2}]},N-1}.
+generate_border_attribute(0) ->
+ done;
+generate_border_attribute(N) ->
+ {{border,N},N-1}.
+generate_table_content(0) ->
+ done;
+generate_table_content(1) ->
+ {{fun ?MODULE:generate_heading/1,1},0};
+generate_table_content(N) ->
+ {{fun ?MODULE:generate_row/1, {2,2}},N-1}.
+generate_row({0,_}) ->
+ done;
+generate_row(N) ->
+ UpdateS = fun({2,_}) -> {1,2};(_) -> {0,0} end,
+ {{row,[{fun ?MODULE:generate_row_col/1, N}]},UpdateS(N)}.
+generate_row_col({_,0}) ->
+ done;
+generate_row_col(N={C,R}) ->
+ UpdateS = fun({X,Y}) -> {X,Y-1} end,
+ {{col,[lists:concat(["col",C,R])]},UpdateS(N)}.
+generate_heading(0) ->
+ done;
+generate_heading(N) ->
+ {{heading,[{fun ?MODULE:generate_heading_col/1,2}]},N-1}.
+generate_heading_col(0) ->
+ done;
+generate_heading_col(N) ->
+ {{col,[lists:concat(["head",N])]},N-1}.
+
+%%----------------------------------------------------------------------
+%% Ticket Tests
+%%----------------------------------------------------------------------
+
+%%
+%% ticket_5998
+%%
+%% A Kleene Closure child in a sequence consumed all following
+%% childs. This problem has been fixed.
+%%
+ticket_5998(suite) -> [];
+ticket_5998(Config) ->
+ DataDir = ?config(data_dir,Config),
+ %% First fix is tested by case syntax_bug2.
+
+ ?line case catch xmerl_scan:file(filename:join([DataDir,misc,
+ "ticket_5998_2.xml"])) of
+ {'EXIT',{fatal,Reason1}} ->
+ case Reason1 of
+ {{endtag_does_not_match,
+ {was,obj,should_have_been,int}},
+ _,_,_} -> ok;
+ _ -> {comment,"parsing changed behaviour"}
+ end
+ end,
+
+ ?line case catch xmerl_scan:file(filename:join([DataDir,misc,
+ "ticket_5998_3.xml"])) of
+ {'EXIT',{fatal,Reason2}} ->
+ case Reason2 of
+ {"expected one of: ?>, standalone, encoding",
+ _,_,_} -> ok;
+ _ -> {comment,"parsing changed behaviour"}
+ end
+ end.
+
+
+%%
+%% ticket_7211
+%%
+%% A Kleene Closure child in a sequence consumed all following
+%% childs. This problem has been fixed.
+%%
+ticket_7211(suite) -> [];
+ticket_7211(Config) ->
+ DataDir = ?config(data_dir,Config),
+ ?line {E,[]} =
+ xmerl_scan:file(filename:join([DataDir,misc,"notes2.xml"]),
+ [{fetch_path,[filename:join([DataDir,misc,erlang_docs_dtd])]},
+ {validation,dtd}]),
+
+ ?line ok = case E of
+ Rec when is_record(Rec,xmlElement) ->
+ ok;
+ _ ->
+ E
+ end,
+
+ ?line {E2,[]} =
+ xmerl_scan:file(filename:join([DataDir,misc,"XS.xml"]),
+ [{fetch_path,[filename:join([DataDir,misc,erlang_docs_dtd])]},
+ {validation,dtd}]),
+
+ ?line ok = case E2 of
+ Rec2 when is_record(Rec2,xmlElement) ->
+ ok;
+ _ ->
+ E2
+ end.
+
+%%
+%% ticket_7214
+%%
+%% Now validating xhtml1-transitional.dtd.
+%% A certain contentspec with a succeding choice, that didn't match
+%% all content, followed by other child elements caused a
+%% failure. This is now corrected.
+%%
+ticket_7214(suite) -> [];
+ticket_7214(Config) ->
+ DataDir = ?config(data_dir,Config),
+
+ ?line {E,[]} =
+ xmerl_scan:file(filename:join([DataDir,misc,'block_tags.html']),
+ [{validation,dtd},
+ {fetch_path,[filename:join([DataDir,misc,erlang_docs_dtd])]}]),
+
+ ?line ok = case E of
+ Rec when is_record(Rec,xmlElement) ->
+ ok;
+ _ ->
+ E
+ end.
+
+%%
+%% ticket_7430
+%%
+%% Problem with contents of numeric character references followed by
+%% UTF-8 characters..
+%%
+ticket_7430(suite) -> [];
+ticket_7430(Config) ->
+ DataDir = ?config(data_dir,Config),
+
+ ?line {E,[]} =
+ xmerl_scan:string("<a>\303\251&#xD;\303\251</a>",
+ [{encoding, 'utf-8'}]),
+
+ ?line ok = case E of
+ {xmlElement,a,a,[],
+ {xmlNamespace,[],[]},
+ [],1,[],
+ [{xmlText,[{a,1}],1,[],"�",text},
+ {xmlText,[{a,1}],2,[],"\n�",text}],
+ [],_,undeclared} ->
+ ok;
+ _ ->
+ E
+ end.
+
+ticket_6873(suite) -> [];
+ticket_6873(Config) ->
+ ?line file:set_cwd(filename:join(?config(data_dir,Config),xpath)),
+ ?line ok = xpath_abbrev:ticket_6873(),
+ ?line ok = xpath_lib:ticket_6873().
+
+ticket_7496(suite) -> [];
+ticket_7496(Config) ->
+ ?line file:set_cwd(filename:join(?config(data_dir,Config),xpath)),
+ ?line ok = xpath_abbrev:ticket_7496().
+
+ticket_8156(suite) -> [];
+ticket_8156(Config) ->
+ ?line {ftp,{[],[]},"testmachine1",21,"/w.erl"} = xmerl_uri:parse("ftp://testmachine1/w.erl"),
+ ?line {ftp,{"user",[]},"testmachine1",21,"/w.erl"} = xmerl_uri:parse("ftp://user@testmachine1/w.erl"),
+ ?line {ftp,{"user","hello"},"testmachine1",21,"/w.erl"} =
+ xmerl_uri:parse("ftp://user:hello@testmachine1/w.erl"),
+ ?line {ftp,{[],[]},"testmachine1",3000,"/w.erl"} = xmerl_uri:parse("ftp://testmachine1:3000/w.erl"),
+ ?line {ftp,{"user","hello"},"testmachine1",3000,"/w.erl"} =
+ xmerl_uri:parse("ftp://user:hello@testmachine1:3000/w.erl"),
+ ok.
+
+ticket_8697(suite) -> [];
+ticket_8697(doc) ->
+ ["Test that xmerl_scan can decode unicode entities properly"];
+ticket_8697(Config) ->
+ ?line {UTF8Output, []} = xmerl_scan:string("<?xml version=\"1\" ?>\n<text>" ++ [229, 145, 156] ++ "</text>"),
+ ?line #xmlElement{content = [#xmlText{value = UTF8Text}]} = UTF8Output,
+ ?line [16#545C] = UTF8Text,
+ ?line {DecEntityOutput, []} = xmerl_scan:string("<?xml version=\"1\" ?>\n<text>&#21596;</text>"),
+ ?line #xmlElement{content = [#xmlText{value = DecEntityText}]} = DecEntityOutput,
+ ?line [21596] = DecEntityText,
+ ?line {HexEntityOutput, []} = xmerl_scan:string("<?xml version=\"1\" ?>\n<text>&#x545C;</text>"),
+ ?line #xmlElement{content = [#xmlText{value = HexEntityText}]} = HexEntityOutput,
+ ?line [16#545C] = HexEntityText,
+ ok.
+
+
+
+
+
+%%======================================================================
+%% Support Functions
+%%======================================================================
+
+%% Dir is a directory
+rm_f_(Dir) ->
+ ?line {ok,CWD} = file:get_cwd(),
+ ?line {ok,FileList} = file:list_dir(Dir),
+ ?line file:set_cwd(filename:join([CWD,Dir])),
+ rm_files(FileList),
+ ?line file:set_cwd(CWD),
+ ? line ok = file:del_dir(Dir).
+
+rm_files([])->
+ ok;
+rm_files([F|Fs]) ->
+ case filelib:is_dir(F) of
+ true ->
+ rm_f_(F);
+ _ ->
+ ?line ok = file:delete(F)
+ end,
+ rm_files(Fs).
+
+change_mode(Files) ->
+ change_mode3(Files).
+change_mode2(Dir)->
+ ?line {ok,CWD} = file:get_cwd(),
+ ?line {ok,FileList} = file:list_dir(Dir),
+ ?line file:set_cwd(filename:join([CWD,Dir])),
+ change_mode3(FileList),
+ ?line file:set_cwd(CWD).
+change_mode3([]) ->
+ ok;
+change_mode3([F|Fs]) ->
+ case filelib:is_dir(F) of
+ true ->
+ chmod(F),
+ change_mode2(F);
+ _ ->
+ chmod(F)
+ end,
+ change_mode3(Fs).
+
+chmod(F) ->
+ case file:read_file_info(F) of
+ {ok,FileInfo} ->
+ Mode= FileInfo#file_info.mode,
+ file:write_file_info(F,FileInfo#file_info{mode=8#00777 bor Mode});
+ _ ->
+ ok
+ end.
+
diff --git a/lib/xmerl/test/xmerl_SUITE_data/cpd.tar.gz b/lib/xmerl/test/xmerl_SUITE_data/cpd.tar.gz
new file mode 100644
index 0000000000..c750e14adf
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/cpd.tar.gz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_SUITE_data/eventp/CMOM.xml b/lib/xmerl/test/xmerl_SUITE_data/eventp/CMOM.xml
new file mode 100644
index 0000000000..7c64046897
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/eventp/CMOM.xml
@@ -0,0 +1,30261 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+ Document no: 1551-1/CSX10109
+ Revision: MOM-CELLO_4.3.1
+ Date: 12-17-2003
+ Author: Ake Pappila/Hsiang-Ling Teng
+
+ Generated from UML by uml2xml version 3.0 (based on DTD file rev. F)
+ Rational Rose model used: /vobs/cello/cma/cma_uml/CelloMOM.mdl
+-->
+
+<!DOCTYPE models SYSTEM "mp.dtd">
+
+<models>
+<mim name="MOM-CELLO_4.3.1-1" version="5" release="1">
+ <exception name="AttributeMissingException">
+ <description>Exception thrown when an attribute is missing during upgrade.</description>
+ </exception>
+
+ <exception name="EnableExistingProgramException">
+ <description>Exception thrown when enabling of existing programs fails.</description>
+ </exception>
+
+ <exception name="ExtraIdentifiersOfNonExistingLoadModulesException">
+ </exception>
+
+ <exception name="FileCopyException">
+ <description>Exception thrown when copying of files fails.</description>
+ </exception>
+
+ <exception name="FileNotExistException">
+ <description>Exception thrown when the specified file does not exist.</description>
+ </exception>
+
+ <exception name="FindAndReplaceException">
+ </exception>
+
+ <exception name="HeapPoolSettingsException">
+ <description>Exception thrown when the heap or pool setting is incorrect.</description>
+ </exception>
+
+ <exception name="AttributeValueOutOfRangeException">
+ <description>Exception thrown when an attribute value is out of range.</description>
+ </exception>
+
+ <exception name="CancelInstallRequestException">
+ <description>Exception thrown when a cancel install equest for some reason fails.</description>
+ </exception>
+
+ <exception name="ChecksumhandlerException">
+ <description>Exception thrown when the control of checksum for loadmodules has been rejaected due to 'null' recieved from resource layer.</description>
+ </exception>
+
+ <exception name="ClearAllPiuTypesReferencedByPlugInUnitException">
+ <description>Exception thrown when its not possible to clear all PiuTypes referenced by PlugInUnit.</description>
+ </exception>
+
+ <exception name="ConditionallyMandatoryAttributeOrElementMissingException">
+ <description>Exception thrown when an conditional mandatory attribute (or element) is missing.</description>
+ </exception>
+
+ <exception name="ConfigurationVersionMO_HandlerException">
+ <description>Exception thrown when the creation of a CV during upgrade fails.</description>
+ </exception>
+
+ <exception name="ControlFileDocumentHandlerException">
+ </exception>
+
+ <exception name="CreateLoadModuleException">
+ <description>Exception thrown when the creation of a load module fails.</description>
+ </exception>
+
+ <exception name="DisableExistingProgramsException">
+ <description>Exception thrown when disabling of existing programs for some reason fails.</description>
+ </exception>
+
+ <exception name="DocumentObjectProxyException">
+ </exception>
+
+ <exception name="ExplicitReplacementInInformationForRPUsException">
+ <description>Exception thrown when replacement of existing RPU information fails.</description>
+ </exception>
+
+ <exception name="InstallOfLoadModulesCancelledException">
+ <description>Exception thrown when the installation of Load Modules is cancelled.</description>
+ </exception>
+
+ <exception name="InstallOfLoadModulesPartlyExcecutedException">
+ <description>Exception thrown when the installment of Load Modules is only partly executed.</description>
+ </exception>
+
+ <exception name="InstallOfLoadModulesRejectedException">
+ <description>Exception thrown when the install of Load Modules is rejected.</description>
+ </exception>
+
+ <exception name="InstallRejectedFTP_ServerNotAccessibleException">
+ <description>Exception thrown when the install is rejected due to FTP server is not accessible.</description>
+ </exception>
+
+ <exception name="InstallRejectedGetLoadModuleFileException">
+ <description>Exception thrown when the install is rejected due to error when trying to retreive Load Module.</description>
+ </exception>
+
+ <exception name="InstallRejectedIP_AddressException">
+ <description>Exception thrown when install is rejected due to erronous IP address.</description>
+ </exception>
+
+ <exception name="InstallRejectedInsufficientDiskSpaceException">
+ <description>Exception thrown when the install is rejected due to insufficient disk space.</description>
+ </exception>
+
+ <exception name="InstallRejectedLoadListFileException">
+ </exception>
+
+ <exception name="InstallRequestException">
+ <description>Exception thrown when the installation of a Load Module fails.</description>
+ </exception>
+
+ <exception name="InsufficientDiskSpaceException">
+ <description>Exception thrown when the disk space is insufficient.</description>
+ </exception>
+
+ <exception name="JvmMO_HandlerException">
+ </exception>
+
+ <exception name="LoadModuleFIlePathLengthOutOfRangeException">
+ <description>Exception thrown when file path for the Load Module is out of length.</description>
+ </exception>
+
+ <exception name="LoadModuleMO_HandlerException">
+ </exception>
+
+ <exception name="ManagedElementDataMO_HandlerException">
+ </exception>
+
+ <exception name="MandatoryElementIsMissingException">
+ </exception>
+
+ <exception name="MergeControlFileException">
+ <description>Exception thrown when the merger of control files fails.</description>
+ </exception>
+
+ <exception name="PIU_MO_HandlerException">
+ </exception>
+
+ <exception name="ParseException">
+ </exception>
+
+ <exception name="ParserFactoryException">
+ </exception>
+
+ <exception name="PiuTypeDefinitionMissingInUpgradeControlFileException">
+ <description>Exception thrown when PiuType definitions is missing in the UCF file.</description>
+ </exception>
+
+ <exception name="PiuTypeMO_HandlerException">
+ </exception>
+
+ <exception name="ProductNumberAndRevisionAlreadyInUseException">
+ <description>Exception thrown when the product number and revision is already used.</description>
+ </exception>
+
+ <exception name="ProgramConfigurationException">
+ </exception>
+
+ <exception name="ReconfigureProgramsException">
+ <description>Exception thrown when reconfiguration of programs fails.</description>
+ </exception>
+
+ <exception name="ReferencedElementMissingException">
+ <description>Exception thrown when the referenced element is missing.</description>
+ </exception>
+
+ <exception name="RepertoireMO_HandlerException">
+ </exception>
+
+ <exception name="ReplaceConfigSupportMOsOpException">
+ </exception>
+
+ <exception name="ReserveLoadModulesException">
+ <description>Exception thrown when reserving a Load Module fails.</description>
+ </exception>
+
+ <exception name="SelectiveInstallFailureException">
+ <description>Exception thrown when a selective install fails.</description>
+ </exception>
+
+ <exception name="SlotMO_HandlerException">
+ </exception>
+
+ <exception name="SwAllocationMO_HandlerException">
+ </exception>
+
+ <exception name="UnexpectedAttributeException">
+ <description>Exception thrown when an unexpected attribute occurs at upgrade.</description>
+ </exception>
+
+ <exception name="UnexpectedAttributeFormatException">
+ <description>Exception thrown when an unexpected format of the attribute occurs.</description>
+ </exception>
+
+ <exception name="UnexpectedElementException">
+ <description>Exception thrown when </description>
+ </exception>
+
+ <exception name="UpgradeControlFileDataException">
+ </exception>
+
+ <exception name="UpgradeControlFileNotFoundException">
+ </exception>
+
+ <exception name="UpgradeControlFileParserException">
+ </exception>
+
+ <exception name="UpgradePackageDeleteException">
+ <description>Exception thrown when its not possible to delete the upgrade package.</description>
+ </exception>
+
+ <exception name="UpgradePackageDeleteNotAllowedException">
+ <description>Exception thrown when its not allowed to delete the upgrade package.</description>
+ </exception>
+
+ <exception name="UpgradePackageDoesNotExistException">
+ <description>Exception thrown when the specified upgrade package does not exist.</description>
+ </exception>
+
+ <exception name="UpgradePackageFileSystemErrorException">
+ <description>Exception thrown when an error in the file system occurs.</description>
+ </exception>
+
+ <exception name="UpgradeRejectedException">
+ <description>Exception thrown when the upgrade is rejected.</description>
+ </exception>
+
+ <exception name="ValidateException">
+ </exception>
+
+ <exception name="VerifyChecksumException">
+ <description>Exception thrown when the checksum is incorrect.</description>
+ </exception>
+
+ <exception name="VerifyCreationOfCVsException">
+ <description>Exception thrown when its not possible to verify the creation of CV's.</description>
+ </exception>
+
+ <exception name="VerifyOperationalPIUsException">
+ </exception>
+
+ <exception name="VerifyRejectedException">
+ </exception>
+
+ <exception name="VerifyRequestException">
+ </exception>
+
+ <exception name="VerifySupportedPIUsException">
+ </exception>
+
+ <exception name="VerifyUpgradeHandlerException">
+ </exception>
+
+ <exception name="VerifyUpgradeWindowException">
+ </exception>
+
+ <exception name="UpgradeLogFileNotAccessibleException">
+ <description>The upgrade trace log file is not accessible i.e. the log file exists but it is not possible to access it with write permission.</description>
+ </exception>
+
+ <exception name="UpgradeControlFileException">
+ <description>The file parser has found that the UpgradeControlFile is incorrect.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="UpgradeNotPossibleException">
+ <description>Before an upgrade is started it was found that the upgrade can not take place. A possible reason is that the upgrade package that is running in the node is not in the upgrade window of this upgrade package. </description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="UpgradeLogFileNotInUseException">
+ <description>The upgrade trace output is currently not directed to a file.
+
+This is a property that can be changed in the trace property file (Trace_01.prop).
+</description>
+ </exception>
+
+ <enum name="UpgradePackageState">
+ <enumMember name="NOT_INSTALLED">
+ <description>The upgrade package is not installed.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="INSTALL_COMPLETED">
+ <description>The upgrade package is completely installed.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="UPGRADE_EXECUTING">
+ <description>Upgrade is executing. </description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="AWAITING_CONFIRMATION">
+ <description>The execution of upgrade needs confirmation before it proceeds.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="ONLY_DELETEABLE">
+ <description>In this state an Upgrade Package can only be deleted. Its actions, when invoked, will throw the exception ActionNotAllowed. </description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="INSTALL_EXECUTING">
+ <description>Installation of the upgrade package is executing.</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="INSTALL_NOT_COMPLETED">
+ <description>The upgrade package is not completely installed i.e. parts of it has been installed. </description>
+ <value>6</value>
+ </enumMember>
+ <enumMember name="UPGRADE_COMPLETED">
+ <description>The upgrade has been successfully executed.</description>
+ <value>7</value>
+ </enumMember>
+ </enum>
+
+ <enum name="UpgradeProgressInformation">
+ <enumMember name="IDLE">
+ <description>No action is in progress. </description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="DOWNLOADING_FILES">
+ <description>Downloading of files (load modules) in progress.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SAVING_CV">
+ <description>Saving a Configuration Version.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="RECONFIGURING_MOS">
+ <description>Operation ReplaceConfigSupportMOs detected in upgrade.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="INITIATING_LOADER_INFO">
+ <description>Trigger Initiate detected in upgrade sequence.</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="PRELOADING">
+ <description>Trigger Preload detected in upgrade sequence.</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="CONVERSION_OF_PERSISTENT_DATA">
+ <value>6</value>
+ </enumMember>
+ <enumMember name="APPLICATION_SPECIFIC_ACTION">
+ <description>'Unique trigger' for an application detected in upgrade sequence.</description>
+ <value>7</value>
+ </enumMember>
+ <enumMember name="SHUTDOWN_WAIT">
+ <value>8</value>
+ </enumMember>
+ <enumMember name="TAKING_NEW_SOFTWARE_INTO_SERVICE">
+ <value>9</value>
+ </enumMember>
+ <enumMember name="FINISH_AND_CLEANING_UP">
+ <description>The error handling is switched back to normal.</description>
+ <value>10</value>
+ </enumMember>
+ <enumMember name="RESTORING_SYSTEM_STATE">
+ <value>11</value>
+ </enumMember>
+ <enumMember name="EXECUTION_FAILED">
+ <description>Indicates that the execution of an install or an upgrade action has failed.</description>
+ <value>12</value>
+ </enumMember>
+ <enumMember name="CANCEL_OF_INSTALLATION_IS_EXECUTING">
+ <description>Indicates that cancellation of an ongoing installation is in progress.</description>
+ <value>13</value>
+ </enumMember>
+ <enumMember name="CANCEL_OF_INSTALLATION_FAILED">
+ <description>Indicates that the execution of a cancel install action failed.</description>
+ <value>14</value>
+ </enumMember>
+ <enumMember name="VERIFICATION_INITIATED">
+ <value>15</value>
+ </enumMember>
+ <enumMember name="VERIFYING_UPGRADE_FROM_VERSION">
+ <value>16</value>
+ </enumMember>
+ <enumMember name="VERIFYING_POSSIBLE_TO_CREATE_REQ_NO_CVS">
+ <value>17</value>
+ </enumMember>
+ <enumMember name="VERIFYING_PIUS_SUPPORTED">
+ <value>18</value>
+ </enumMember>
+ <enumMember name="VERIFYING_CHECKSUM_FOR_LM">
+ <value>19</value>
+ </enumMember>
+ <enumMember name="VERIFYING_PIUS_NOT_FAULTY">
+ <value>20</value>
+ </enumMember>
+ <enumMember name="VERIFICATION_FINISHED">
+ <value>21</value>
+ </enumMember>
+ <enumMember name="VERIFICATION_FAILED">
+ <value>22</value>
+ </enumMember>
+ </enum>
+
+ <enum name="InvokedAction">
+ <enumMember name="VERIFY_UPGRADE">
+ <description>The verifyUpgrade action has been invoked.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="UPGRADE">
+ <description>An upgrade action (one of the variants) has been invoked.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="INSTALL">
+ <description>An install action (one of the variants) has been invoked.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="CANCEL_INSTALL">
+ <description>The cancelInstall action has been invoked.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <struct name="ActionResultData">
+ <structMember name="time">
+ <description>A timestamp.
+
+Format: "Date: 2003-04-24, Time: 20:52:11.182"</description>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ <structMember name="typeOfInvokedAction">
+ <enumRef name="InvokedAction">
+ <defaultValue>VERIFY_UPGRADE</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="info">
+ <enumRef name="Information">
+ <defaultValue>EXECUTED</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="actionId">
+ <description>This id is used to link more than one result to one action</description>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="additionalInfo">
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ </struct>
+
+ <enum name="Information">
+ <enumMember name="EXECUTED">
+ <description>The invoked action has been successfully executed without warnings.One of three possible main results of executed action.
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="UNSPECIFIED">
+ <description>A not specified error/ warning has been detected (see additional info for further details)
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="LM_CHECKSUM_VER_FAILED">
+ <description>A load module checksum verification has failed.
+
+Value valid for type of invoked action:
+INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="NOT_ENOUGH_AVAIL_DISK_SPACE">
+ <description> There is not enough available disk space for the required number of new CVs (configuration versions) to be created automatically during an upgrade.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="MAX_NO_CV_WILL_BE_EXCEEDED">
+ <description>The maximum number of allowed CVs (configuration versions) will be exceeded if the required number of new CVs is created automatically during an upgrade.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="UPGRADE_FROM_CURRENT_UP_NOT_ALLOWED">
+ <description>The Upgrade Window element in the Upgrade Control File does not specify the current Upgrade Package as a valid 'upgrade from' version.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="NON_SUPPORTED_PIU">
+ <description>A non supported Plug In Unit (PIU) has been detected i.e. the PIU in the node is not defined in the Upgrade Control File.
+This is not a fault that prevents an upgrade from being executed.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>6</value>
+ </enumMember>
+ <enumMember name="FAULTY_PIU">
+ <description>A faulty Plug In Unit (PIU) has been detected.
+This is not a fault that prevents an upgrade from being executed.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>7</value>
+ </enumMember>
+ <enumMember name="CREATION_OF_CV_FAILED">
+ <description>The auto-creation of an install CV failed.
+
+Value valid for type of invoked action:
+INSTALL
+</description>
+ <value>8</value>
+ </enumMember>
+ <enumMember name="ACTION_NOT_ALLOWED">
+ <description>The requested action is not allowed due to an other action already is in progress for an other UP MO.
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>9</value>
+ </enumMember>
+ <enumMember name="INSTALLATION_MANUALLY_CANCELLED">
+ <description>An ongoing installation has been cancelled (aborted) due to request from client.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>10</value>
+ </enumMember>
+ <enumMember name="FTP_SERVER_NOT_ACCESSIBLE">
+ <description>The FTP server to be used for downloads of load modules is not accessible.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>11</value>
+ </enumMember>
+ <enumMember name="INSUFFICIENT_DISK_SPACE_FOR_LOAD_MODULES">
+ <description>The required disk space for load modules to be installed is insufficient.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>12</value>
+ </enumMember>
+ <enumMember name="FTP_SERVER_IP_ADDRESS_ERROR">
+ <description>Error detected in the IP address of the FTP server.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>13</value>
+ </enumMember>
+ <enumMember name="DELTA_INSTALL_MERGE_ERROR">
+ <description>The install of the delta Upgrade Control File (UCF) failed i.e. the analysis of the delta UCF together with current active UP's UCF failed.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>14</value>
+ </enumMember>
+ <enumMember name="SELECTIVE_INSTALL_ERROR">
+ <description>Error detected during the selection phase of an install.
+
+Value valid for type of invoked action:
+INSTALL
+
+</description>
+ <value>15</value>
+ </enumMember>
+ <enumMember name="EXECUTION_FAILED">
+ <description>The execution of invoked action failed.One of three possible main results of executed action.
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>16</value>
+ </enumMember>
+ <enumMember name="EXECUTED_WITH_WARNINGS">
+ <description>The action has been successfully executed but with warnings.One of three possible main results of executed action.
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE</description>
+ <value>17</value>
+ </enumMember>
+ </enum>
+
+ <exception name="FtpServerNotAccessibleException">
+ <description>Ftp server is not accessible. This may depend on erroneous IP address, username, password, or that the IP communication with the Ftp server is down, or that the Ftp server itself is malfunctioning. </description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="GetFileException">
+ <description>An error was encountered during FTP get file. A filePath in the upgradeControlFile may be inconsistent with a filepath on the Ftp server. </description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <struct name="PiuTypeProgramConfiguration">
+ <structMember name="tag">
+ <description>The tag is used as a reference between the PiuType MO and the Repertoire MO to find out how to create the program object under a PlugInUnit MO.</description>
+ <string/>
+ </structMember>
+ <structMember name="subParentLDN">
+ <description>Local distinguished name of the program parent from the PlugInUnit.
+
+Example:
+1. "Spu=1,Spm=2" (the program is to be created under: ...PlugInUnit=2,Spu=1,Spm=2")
+2. "" (empty string - the program is to be created directly under the PlugInUnit)</description>
+ <string/>
+ </structMember>
+ <structMember name="programMoTypeName">
+ <description>The name of the Program MO that will be created.</description>
+ <string/>
+ </structMember>
+ <structMember name="loadableProcessorName">
+ <description>The loadableProcessorName is a user friendly name of the processor.</description>
+ <string/>
+ </structMember>
+ </struct>
+
+ <struct name="RepertoireLoadModuleData">
+ <description>This structure contains load module data that belongs to a piu type.
+</description>
+ <structMember name="loadModuleDN">
+ <description>The distinguished name of the load module, which is needed and sufficient to convert the load module to a real object reference.</description>
+ <string/>
+ </structMember>
+ <structMember name="tag">
+ <description>The tag is used as a reference between the PiuType MO and the Repertoire MO to find out how to create the program object under a PlugInUnit MO.</description>
+ <string/>
+ </structMember>
+ </struct>
+
+ <struct name="ConfigurationVersionAttributes">
+ <structMember name="name">
+ <string>
+ </string>
+ </structMember>
+ <structMember name="identity">
+ <string>
+ </string>
+ </structMember>
+ <structMember name="type">
+ <string/>
+ </structMember>
+ <structMember name="upgradePackageId">
+ <string/>
+ </structMember>
+ <structMember name="operatorName">
+ <string>
+ </string>
+ </structMember>
+ <structMember name="operatorComment">
+ <string>
+ </string>
+ </structMember>
+ <structMember name="date">
+ <string/>
+ </structMember>
+ <structMember name="status">
+ <string/>
+ </structMember>
+ </struct>
+
+ <enum name="ConfigurationVersionType">
+ <enumMember name="standard">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="upgrade">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="minimal">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="test">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="autocreate">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="other">
+ <value>5</value>
+ </enumMember>
+ </enum>
+
+ <enum name="LoadModuleLoaderType">
+ <enumMember name="OseLoader">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SpmLoader">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="Jvm">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="WebServer">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="Other">
+ <value>99</value>
+ </enumMember>
+ <enumMember name="SpmFpgaLoader">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="XpLoader">
+ <value>5</value>
+ </enumMember>
+ </enum>
+
+ <enum name="LoadModulePreLoadType">
+ <enumMember name="no">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="must">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="wish">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RPUSwitchOverMode">
+ <description>This attribute can have the following values:
+
+AtPiuFault = Indicates the MP (where the normal RPU is configured) is faulty (HW error). This is the default value.
+
+AtPiuRestart = Indicates the MP (where the normal RPU is configured) is restarted.</description>
+ <enumMember name="AtPiuFault">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="AtPiuRestart">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RPUNormalisationMode">
+ <description>This enumeration can have the following values:
+
+Manual = Indicates that no normalisation is performed by cello until the operator issues a "switch" action.
+
+Automatic = Indicates that Cello performs the normalisation automatically, after the failed RPU is available again. This is the default value.</description>
+ <enumMember name="Manual">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="Automatic">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RPUReplicationMode">
+ <description>This enumaration contains the following values:
+
+Always = Data replication is always performed. This overrides the characteristics set on the each container ( that is associated with the RPU ).
+
+Never = Data replication is never performed. This overrides the characteristics set on the each container ( that is associated with the RPU ).
+
+AtShutdown = Each time the RSH (which handles the RPU) is shut down, a complete snapshot is taken and replicated to the other MP, if necessary. Otherwise, the replication is performed according to the characteristics set on each container ( that is associated with the RPU ).
+
+ApplControlled = The data replication is made according to the characteristics set on each container ( that is associated with the RPU ). This is the default value.</description>
+ <enumMember name="Always">
+ <description>Always = Data replication is always performed. This overrides the characteristics set on the each container ( that is associated with the RPU ).</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="Never">
+ <description>Data replication is never performed. This overrides the characteristics set on the each container ( that is associated with the RPU ).</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="AtShutdown">
+ <description>AtShutdown = Each time the RSH (which handles the RPU) is shut down, a complete snapshot is taken and replicated to the other MP, if necessary. Otherwise, the replication is performed according to the characteristics set on each container ( that is associated with the RPU ).</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="ApplControlled">
+ <description>ApplControlled = The data replication is made according to the characteristics set on each container ( that is associated with the RPU ). This is the default value.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RPUOperationalMode">
+ <description>This enumeration contains the following values:
+
+AsConfigured = The RSHs runs as the RPU is configured.
+SwitchOver = The RSHs has been switched over.
+Unavailable = No RSHs, that uses this RPU, are running.</description>
+ <enumMember name="AsConfigured">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SwitchedOver">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="Unavailable">
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <struct name="PiuTypeMOConfiguration">
+ <structMember name="subParentLDN">
+ <string/>
+ </structMember>
+ <structMember name="moTypeName">
+ <string/>
+ </structMember>
+ <structMember name="identity">
+ <string/>
+ </structMember>
+ </struct>
+
+ <struct name="AirFlowData">
+ <description>Control value for the fan unit. Needed by cooling function.
+</description>
+ <structMember name="normalLowTempAirFlow">
+ <description>Control value for the fan unit running in normal autonomous mode.
+This parameter is the subrack/fanunit airflow value that is required to achieve sufficient cooling at 20 degree
+centigrade or lower ambient temperature of the most demanding plug in unit (PIU) in the subrack. This airflow value
+shall be sufficient (but not unnecessarily large) to secure that no "normal overtemp" fault indication is issued.
+Default values = 250 m3/h. (value &gt;=0)
+</description>
+ <float>
+ <defaultValue>250</defaultValue>
+ </float>
+ </structMember>
+ <structMember name="normalHighTempAirFlow">
+ <description>Control value for the fan unit running in normal autonomous mode. This parameter is the subrack/fanunit airflow
+value that is required to achieve sufficient cooling at 50 degree centigrade ambient temperature of the most
+demanding plug in unit (PIU) in the subrack. This airflow value shall be sufficient (but not unnecessarily large) to
+secure that no "normal overtemp" fault indication is issued.
+Default values = 400 m3/h. (value &gt;=0)</description>
+ <float>
+ <defaultValue>400</defaultValue>
+ </float>
+ </structMember>
+ <structMember name="noiseReducedLowTempAirFlow">
+ <description>Control value for the fan unit running in noise reduction mode. This parameter is the subrack/fanunit airflow value
+that is required to achieve sufficient cooling at 20 degree centigrade or lower ambient temperature of the most
+demanding plug in unit (PIU) in the subrack. This airflow value shall be sufficient (but not unnecessarily large) to
+secure that no "exceptional overtemp" fault indication is issued
+Default values = 250 m3/h. (value &gt;=0)</description>
+ <float>
+ <defaultValue>250</defaultValue>
+ </float>
+ </structMember>
+ <structMember name="noiseReducedHighTempAirFlow">
+ <description>Control value for the fan unit running in noise reduction mode. This parameter is the subrack/fanunit airflow value
+that is required to achieve sufficient cooling at 50 degree centigrade ambient temperature of the most demanding
+plug in unit (PIU) in the subrack. This airflow value shall be sufficient (but not unnecessarily large) to secure
+that no "exceptional overtemp" fault indication is issued.
+Default values = 400 m3/h. (value &gt;=0)</description>
+ <float>
+ <defaultValue>400</defaultValue>
+ </float>
+ </structMember>
+ </struct>
+
+ <exception name="IpAddressException">
+ <description>Erroneous Ip Address Format</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="AueFailureException">
+ <description>An application upgrade engine has reported a failure. </description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="ActionNotAllowedException">
+ <description>The action is not allowed, the UpgradePackage MO is in wrong state.
+
+For example if you try 'upgrade()' before an 'install()' or 'forcedInstall()' has been done.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVFileSystemErrorException">
+ <description>Exception thrown upon file system Error.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVDBErrorException">
+ <description>Data Base Error Exception (error when creating database backup).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVLLPErrorException">
+ <description>LLP Error Exception (error when creating ARMAMENT and LLP.LMID files).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVAlreadyExistsException">
+ <description>The configuration version already exists (e.g. message at create).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVDoesNotExistsException">
+ <description>The configuration version does not exist (e.g. message at setCVAsStartable).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVDeleteNotAllowedException">
+ <description>It is not allowed to delete the configuration version, because it is in use (used as startable or in rollback list).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVInvalidCVException">
+ <description>The configuration version is not valid (due to missing files).
+
+</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVFormatErrorException">
+ <description>Format Error in given configuration version name.
+
+The following characters are allowed within the name:
+[0-9], [A-Z], [a-z] and '&amp;','%',':','.','_', '-'
+
+Note! For comment and operatorName spaces (' ') are also allowed within the strings.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVErrorException">
+ <description>Error Exception.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="InstallException">
+ <description>Indicates that an error in an installation has occurred.</description>
+ <exceptionParameter name="install">
+ <description>The message of the exception.</description>
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="LogActivationException">
+ <description>Exception thrown when a database error occurs.</description>
+ </exception>
+
+ <exception name="InvalidDriveNameException">
+ <description>Exception thrown when an invalid drive name is specified or when a data base error occurs.</description>
+ </exception>
+
+ <exception name="VerifyUpgradeException">
+ </exception>
+
+ <exception name="CVActivityLogFilePathErrorException">
+ <description>Exception thrown when the log file path is wrong.</description>
+ </exception>
+
+ <exception name="CV_MaxNumberOfInstancesException">
+ <description>Exception thrown when max number of CV's in the system has been reached.</description>
+ </exception>
+
+ <exception name="Aal2PathIdNotUniqueException">
+ <exceptionParameter name="message">
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="PathAlreadyRegisteredException">
+ <exceptionParameter name="message">
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="NotInGroupException">
+ </exception>
+
+ <exception name="InvalidReferenceException">
+ </exception>
+
+ <exception name="InvalidPriorityException">
+ <description>Indicates an invalid priority level, i.e. the priority in question is out of the defined range.</description>
+ <exceptionParameter name="invalidPriority">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <struct name="QoSProfileClassA">
+ <description>This struct contains the values applicable for QoS Class A.</description>
+ <structMember name="boundOnProbOfDelay">
+ <description>Represents the upper bound on the probability that the delay in the node exceeds the delay limit given by the attribute "boundOnNodeDelay".
+
+Unit is 1/1000000000.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>500000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnProbOfLoss">
+ <description>Represents the upper bound of the cell loss probability in the current node.
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>500000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnNodeDelay">
+ <description>The upper bound on the delay (delay=queueing and serving of Aal2 packets in an Aal2 mux + delay on ATM layer) through the current node.
+Unit is micro seconds.</description>
+ <long>
+ <range>
+ <min>0</min> <max>10000</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="QoSProfileClassB">
+ <description>This struct contains the values applicable for QoS Class B.</description>
+ <structMember name="boundOnProbOfDelay">
+ <description>Represents the upper bound on the probability that the delay in the node exceeds the delay limit given by the attribute "boundOnNodeDelay".
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>500000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnProbOfLoss">
+ <description>Represents the upper bound of the cell loss probability in the current node.
+
+Unit is 1/1000000000.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>500000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnNodeDelay">
+ <description>The upper bound on the delay (delay=queueing and serving of Aal2 packets in an Aal2 mux + delay on ATM layer) through the current node.
+Unit is micro seconds.</description>
+ <long>
+ <range>
+ <min>0</min> <max>20000</max>
+ </range>
+ <defaultValue>15000</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="QoSProfileClassC">
+ <description>This struct contains the values applicable for QoS Class C.
+
+NOTE: The attribute 'boundONodeDelay' is not applicable for QoS Class C so setting of this attribute will have no effect.</description>
+ <structMember name="boundOnProbOfDelay">
+ <description>Represents the upper bound on the probability that the delay in the node exceeds the delay limit given by the attribute "boundOnNodeDelay".
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>1000000000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnProbOfLoss">
+ <description>Represents the upper bound of the cell loss probability in the current node.
+
+Unit is 1/1000000000.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>1000000000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnNodeDelay">
+ <description>The upper bound on the delay (delay=queueing and serving of Aal2 packets in an Aal2 mux + delay on ATM layer) through the current node.
+Unit is micro seconds.</description>
+ <long>
+ <defaultValue>25000</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="QoSProfileClassD">
+ <description>This struct contains the values applicable for QoS Class D.
+
+NOTE: The attribute 'boundONodeDelay' is not applicable for QoS Class D so setting of this attribute will have no effect.</description>
+ <structMember name="boundOnProbOfDelay">
+ <description>Represents the upper bound on the probability that the delay in the node exceeds the delay limit given by the attribute "boundOnNodeDelay".
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>1</min> <max>1000000000</max>
+ </range>
+ <defaultValue>1000000000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnProbOfLoss">
+ <description>Represents the upper bound of the cell loss probability in the current node.
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>1000000000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnNodeDelay">
+ <description>The upper bound on the delay (delay=queueing and serving of Aal2 packets in an Aal2 mux + delay on ATM layer) through the current node.
+Unit is micro seconds.</description>
+ <long>
+ <defaultValue>50000</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="SupportedQoSClasses">
+ <enumMember name="NO_CLASS_SUPPORTED">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="CLASS_A">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="CLASS_B">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="CLASS_A_B">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="CLASS_C">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="CLASS_A_C">
+ <value>5</value>
+ </enumMember>
+ <enumMember name="CLASS_B_C">
+ <value>6</value>
+ </enumMember>
+ <enumMember name="CLASS_A_B_C">
+ <value>7</value>
+ </enumMember>
+ <enumMember name="CLASS_D">
+ <value>8</value>
+ </enumMember>
+ <enumMember name="CLASS_A_D">
+ <value>9</value>
+ </enumMember>
+ <enumMember name="CLASS_B_D">
+ <value>10</value>
+ </enumMember>
+ <enumMember name="CLASS_A_B_D">
+ <value>11</value>
+ </enumMember>
+ <enumMember name="CLASS_C_D">
+ <value>12</value>
+ </enumMember>
+ <enumMember name="CLASS_A_C_D">
+ <value>13</value>
+ </enumMember>
+ <enumMember name="CLASS_B_C_D">
+ <value>14</value>
+ </enumMember>
+ <enumMember name="CLASS_A_B_C_D">
+ <value>15</value>
+ </enumMember>
+ </enum>
+
+ <exception name="IsReservedCanNotSetPathIdException">
+ <description>Exception thrown when an attempt is made to set or change the aal2PathId of an Aal2PathVccTp while its reserved by an other Aal2PathGrp</description>
+ </exception>
+
+ <exception name="IsUnlockedCanNotSetPathOwnerException">
+ <description>Exception thrown when an attempt is made to set or change the aal2PathOwner of an Aal2PathVccTp while its not LOCKED.</description>
+ </exception>
+
+ <enum name="SlotState">
+ <description>
+</description>
+ <enumMember name="free">
+ <description>It is free to be pre-configured with a new PlugInUnit. </description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="used">
+ <description>A PlugInUnit is inserted in the slot or the slot is pre-configured with a PlugInUnit.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="coveredByPiu">
+ <description>Currently not supported.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <struct name="AdminProductData">
+ <structMember name="productNumber">
+ <description>The product number of the product or document.
+
+Examples: ABC 101 001, CXC 123 456, 1/BFD 101 999
+
+In the case of UpgradePackage this is the document number of the upgrade package.</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>24</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="productRevision">
+ <description>The revision of the product number.
+
+Examples: R1, r1a, R1A02, P7B</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>7</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="productName">
+ <description>A user-friendly name of the product.</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>12</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ <structMember name="productInfo">
+ <description>User-friendly information about the product.</description>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ <structMember name="productionDate">
+ <description>The production date can be represented in two ways.
+
+1) The preferable syntax is a four-digit representation of the year, and a two-digit representation of the month and a two-digit representation of the day. The numbers of characters in this case, is eight.
+Example:
+19991231
+
+2) The date can also consist of two digits for the year, followed by the letter W for week and two digits for the number of week. The numbers of characters in this case, is five.
+Example:
+99W12
+</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>8</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ </struct>
+
+ <struct name="OperProductData">
+ <structMember name="productName">
+ <description>A user-friendly name of the product.
+
+
+
+</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>12</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="productNumber">
+ <description>Unique identity for each product, which is constituted by the Ericsson product number (ABC number).
+
+The maximum number of characters for a product number is 24 including 2 slashes, 2 spaces and 2 characters for origination notation.
+
+Example of product number:
+ABC 101 001
+(1/ABC 101 01/1234)
+123/ABCDE 101 1010/12345
+
+.</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>24</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="productRevision">
+ <description>Indicates the revision state of the product. It consists of a letter R or P, one or two digits and/or one or two letters. The maximum number of characters is four inclusive R or P.
+Example: R1A, R1A02, P7B
+
+A suffix may be added to the revision state. The suffix may consists of one or two digits or one letter.
+
+
+</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>7</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="serialNumber">
+ <description>The serial number consists of 13 alphanumerical characters grouped as 6 plus 7 characters. The first 6 characters are to be used for factory codes and the last 7 characters are used for an individual number or batch number.
+
+</description>
+ <string/>
+ </structMember>
+ <structMember name="productionDate">
+ <description>The production date can be represented in two ways.
+
+1) The preferable syntax is a four-digit representation of the year, and a two-digit representation of the month and a two-digit representation of the day. The numbers of characters in this case, is eight.
+Example:
+19991231
+
+2) The date can also consist of two digits for the year, followed by the letter W for week and two digits for the number of week. The numbers of characters in this case, is five.
+Example:
+99W12
+
+</description>
+ <string>
+ <lengthRange>
+ <min>5</min> <max>8</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ </struct>
+
+ <enum name="LoadClass">
+ <description>Defines the phase in the load and start sequence.
+</description>
+ <enumMember name="coreOs">
+ <value>10</value>
+ </enumMember>
+ <enumMember name="coreDevice">
+ <value>50</value>
+ </enumMember>
+ <enumMember name="loadListProvider">
+ <value>100</value>
+ </enumMember>
+ <enumMember name="coreEarly">
+ <value>200</value>
+ </enumMember>
+ <enumMember name="coreLate">
+ <value>300</value>
+ </enumMember>
+ <enumMember name="networkAndConnectionHandling">
+ <value>400</value>
+ </enumMember>
+ <enumMember name="application">
+ <value>500</value>
+ </enumMember>
+ <enumMember name="upgrade">
+ <value>600</value>
+ </enumMember>
+ </enum>
+
+ <enum name="StartState">
+ <enumMember name="disabled">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="enabled">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SubrackType">
+ <enumMember name="hub">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="device">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="PiuRole">
+ <enumMember name="mp">
+ <description>The board is a Main processor.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="bp">
+ <description>The board is a device board.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="others">
+ <description>The board is not a Main processor or a device board. </description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RestartCause">
+ <description>This attribute indicates the restart cause of plugInUnit. The defined values are:
+1. piuRestartError: restart because of error.
+2. piuRestartUpgrade: restart because of system upgrade.
+</description>
+ <enumMember name="piuRestartUpgrade">
+ <description>This attributes indicates that the Piu restart cause is upgrade.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="piuRestartError">
+ <description>This attributes indicates that the Piu restart cause is error.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="FanState">
+ <description>The Fan can be in one of three controlling state:
+- standalone: not manageable, full speed fans
+- autonomous: manageable, air-flow control
+- noiseReduced: time-limited low speed fan</description>
+ <enumMember name="standalone">
+ <description>It's running on itself, not manageable.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="autonomous">
+ <description>Manageable state.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="noiseReduced">
+ <description>Temporary state with reduced cooling.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SeqRestarts">
+ <enumMember name="RESTARTS_WITH_NO_LIMITS">
+ <description>This attributes indicates unlimited restarts and no faulty marking of the PIU. Used for critical PIU's such as TUBs, SCBs and some ET-boards.
+</description>
+ <value>-1</value>
+ </enumMember>
+ <enumMember name="RESTARTS_WITH_WARM">
+ <description>This attributes indicates the following sequential restarts:
+-warm
+-refresh
+-cold
+-cold with fault marked (not loaded). Alarm sent.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="RESTARTS_WITH_REFRESH">
+ <description>This attributes indicates the following sequential restarts:
+-refresh
+-cold
+-cold with fault marked (not loaded). Alarm sent.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="RESTARTS_WITH_COLD">
+ <description>This attributes indicates the following sequential restarts:
+-cold
+-cold with fault marked (not loaded). Alarm sent.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="RESTARTS_WITH_FAULT_MARKED">
+ <description>This attributes indicates the following sequential restarts:
+-cold with fault marked (not loaded). Alarm sent.</description>
+ <value>0</value>
+ </enumMember>
+ </enum>
+
+ <exception name="RepertoireNotFoundException">
+ <description>This class is an exception class thrown when a equipment specific error occurs.
+</description>
+ </exception>
+
+ <exception name="SwAllocationNotFoundException">
+ <description>This class is an exception class thrown when a equipment specific error occurs.
+</description>
+ </exception>
+
+ <exception name="WebServerPathConfigurationException">
+ <description>This class is an exception class thrown when failed to configure the webserver root path
+</description>
+ </exception>
+
+ <exception name="FroLocationFailedException">
+ </exception>
+
+ <exception name="FroShutdownException">
+ </exception>
+
+ <exception name="NotUniqueLineNoException">
+ </exception>
+
+ <exception name="WrongPhysPathTermTypeException">
+ </exception>
+
+ <enum name="OperState">
+ <enumMember name="disabled">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="enabled">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AdmState">
+ <enumMember name="locked">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="unlocked">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="shuttingDown">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <exception name="OccupiedException">
+ </exception>
+
+ <exception name="NotReservedException">
+ </exception>
+
+ <exception name="NotSupportedException">
+ </exception>
+
+ <enum name="SilPortState">
+ <description>Indication of Switch Internal Link port status.</description>
+ <enumMember name="portActive">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="portPassive">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="portNotConnected">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="portLocked">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="portNotInstalled">
+ <value>5</value>
+ </enumMember>
+ </enum>
+
+ <exception name="InvalidIndexException">
+ <description>Index specified is invalid, i.e. it is out of the range of valid indices.</description>
+ <exceptionParameter name="invalidIndex">
+ <description>The exception message.</description>
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="TransactionException">
+ </exception>
+
+ <exception name="UndeletableMoException">
+ <description>Exception thrown when MO is not possible to delete.</description>
+ </exception>
+
+ <exception name="FroNotAccessibleException">
+ <description>Exception that is thrown when a FRO (Facade Resource Object in the resource layer) cannot be accessed.</description>
+ </exception>
+
+ <exception name="FroRequestFailedException">
+ <description>Exception that is thrown when the result of a request to a FRO (Facade Resource Object in the resource layer) is not ok.</description>
+ </exception>
+
+ <exception name="MoReservedByOtherUserException">
+ <description>Exception thrown when the MO is already reserved by another user (MO).</description>
+ </exception>
+
+ <exception name="MoHasChildrenException">
+ <description>Exception class thrown when an MO is requested to be deleted, but the MO has children, which must be deleted first.</description>
+ </exception>
+
+ <exception name="MoReservedNotDeletableException">
+ <description>Exception thrown when trying to delete an MO that is reserved by another MO (user).</description>
+ </exception>
+
+ <exception name="MaxNumberExceededException">
+ <description>Exception thrown when the maximum number of childrens for an MO is exceeded.</description>
+ </exception>
+
+ <exception name="AttrValueNotUniqueException">
+ <description>Exception thrown when a value of an attribute is not unique.</description>
+ </exception>
+
+ <exception name="EquipException">
+ </exception>
+
+ <exception name="IpFormatException">
+ </exception>
+
+ <exception name="IpException">
+ </exception>
+
+ <exception name="TransactionRequiredException">
+ <description>Exception class thrown when an MO is accessed outside a transaction but the access method requires a transaction.</description>
+ </exception>
+
+ <exception name="ValueOutOfRangeException">
+ <description>Exception thrown when an MO attribute is requested to be set, but the requested value is not accepted.</description>
+ </exception>
+
+ <exception name="WrongAttributeTypeException">
+ <description>Exception thrown when an MO attribute is requested to be set, but the requested value is of the wrong type. </description>
+ </exception>
+
+ <exception name="NotHandledAttributeTypeException">
+ <description>Exception class thrown when an attribute of not handled type is requested. </description>
+ </exception>
+
+ <exception name="NoSuchFieldException">
+ <description>Exception class thrown when a Struct is accessed but the reqested Struct element is not found. </description>
+ </exception>
+
+ <exception name="MoCanNotBeCreatedException">
+ </exception>
+
+ <exception name="NoSuchAttributeException">
+ <description>Exception thrown when an MO attribute is requested to be accessed but the access
+method for the is not defined (the attribute can not be accessed)</description>
+ </exception>
+
+ <exception name="MoCardinalityViolationException">
+ <description>Exception class thrown when the creation of an MO fails due to child - parent
+cardinality violation. The cardinality is specified in the MIM. </description>
+ </exception>
+
+ <exception name="IllegalParentException">
+ <description>Exception thrown when the parent of the MO is of the wrong type.</description>
+ </exception>
+
+ <exception name="AttrNotSettableAtCreateException">
+ <description>Exception thrown when a create is ordered with
+attribute values that are not settable at create.</description>
+ </exception>
+
+ <exception name="AttrMissingAtCreateException">
+ <description>Exception thrown when an attribute that is mandatory at create is missing.</description>
+ </exception>
+
+ <exception name="MoNameAlreadyTakenException">
+ <description>Exception thrown when an MO is created and the distinguished name of the MO is already in use.</description>
+ </exception>
+
+ <exception name="IllegalArgumentTypeException">
+ <description>Exception thrown if the argument supplied is of the wrong type, for example in an action.</description>
+ </exception>
+
+ <exception name="IllegalAttributeValueException">
+ <description>Exception thrown if the value of the attribute is not valid.</description>
+ </exception>
+
+ <enum name="RestartRank">
+ <enumMember name="RESTART_WARM">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="RESTART_REFRESH">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="RESTART_COLD">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AvailabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <enumMember name="IN_TEST">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="FAILED">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="POWER_OFF">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="OFF_LINE">
+ <value>8</value>
+ </enumMember>
+ <enumMember name="OFF_DUTY">
+ <value>16</value>
+ </enumMember>
+ <enumMember name="DEGRADED">
+ <value>64</value>
+ </enumMember>
+ <enumMember name="NOT_INSTALLED">
+ <value>128</value>
+ </enumMember>
+ <enumMember name="LOG_FULL">
+ <value>256</value>
+ </enumMember>
+ <enumMember name="DEPENDENCY_LOCKED">
+ <value>544</value>
+ </enumMember>
+ <enumMember name="DEPENDENCY_FAILED">
+ <value>1056</value>
+ </enumMember>
+ <enumMember name="DEPENDENCY_SHUTTINGDOWN">
+ <value>2080</value>
+ </enumMember>
+ <enumMember name="NO_STATUS">
+ <value>0</value>
+ </enumMember>
+ </enum>
+
+ <exception name="InvalidMoReferenceException">
+ <description>Exception thrown when the submitted MO reference is invalid.</description>
+ </exception>
+
+ <exception name="FroNotLockedException">
+ <description>Exception thrown when a fRo cannot be accessed.</description>
+ </exception>
+
+ <exception name="GeneralErrorException">
+ <description>Exception thrown by an MO when there is a general error.</description>
+ </exception>
+
+ <exception name="IdentityNotAllowedException">
+ <description>Exception thrown when an identity (LDN) specified at create is not allowed.</description>
+ </exception>
+
+ <exception name="IllegalMoTypeException">
+ <description>Exception thrown when a reference to an MO is of a unexpected/wrong MO type.</description>
+ </exception>
+
+ <exception name="ImpossibleCollectAtmInfoException">
+ <description>Exception thrown when gathering of ATM info fails.</description>
+ </exception>
+
+ <exception name="MoCanNotBeDeletedException">
+ <description>Exception thrown when its not possible to delete an MO.</description>
+ </exception>
+
+ <exception name="MoNotPossibleToReserveException">
+ <description>Exception thrown when by an MO if its not possible to reserve the MO.</description>
+ </exception>
+
+ <exception name="MoNotReservedByUserException">
+ <description>Exception thrown when a user tries to release an MO that is not reserved by this user.</description>
+ </exception>
+
+ <exception name="NoDiskException">
+ <description>Exception thrown when there is no hard disk.</description>
+ </exception>
+
+ <exception name="RemovalFailedException">
+ <description>Exception thrown when an element cannot be removed from a sequence.</description>
+ </exception>
+
+ <exception name="RestartRejectedException">
+ <description>Exception thrown when restart of the PlugInUnit is not allowed.</description>
+ </exception>
+
+ <enum name="SyncMode">
+ <description>The Sync Mode Operation of the node.</description>
+ <enumMember name="NOT_USED">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="CDMA">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="WCDMA">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp2ProfileDataAnsi">
+ <structMember name="suermT">
+ <description>SUERM parameter T.
+Measured in SU units.</description>
+ <long>
+ <range>
+ <min>1</min> <max>511</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermD">
+ <description>SUREM parameter D.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>256</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermN">
+ <description>SUERM parameter N.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>16</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tin">
+ <description>Normal AERM threshold, Tin. Number of signal errors that cause abortion of a normal proving peroid.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tie">
+ <description>Emergency AERM threshold, Tie. Number of signal units errors that cause abortion of an emergency proving period.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="provings">
+ <description>Proving abort limit. Number of consecutive aborted proving periods that will cause a return to the Out Of Service state.
+
+Measurement units are the number of proving periods.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Maximum time to stay in Aligned Ready state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>12900</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Maximum time to stay in Not Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>32700</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Maximum time to stay in Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>11500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4n">
+ <description>Length of the normal proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>4000</max>
+ </range>
+ <defaultValue>2300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4e">
+ <description>Length of the emergengcy proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>4000</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Time between sending Status Indication "B" while in the Congested state.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Maximum time a remote site may remain in the congestated state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>8100</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT7">
+ <description>Maximum time to wait for an expected acknowledgement of an MSU before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="bitRate">
+ <description>The speed of the link. Only supported values are 64 and 56 kbit/s.
+0 = 64 kbit/s.
+1 = 56 kbit/s.
+
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="errorCorrection">
+ <description>The error correction algorithm to use. Only Basic Error Correction (BEC) is supported.
+0 = BEC
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet1">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 1 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet2">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 2 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet3">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 3 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>90</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement1">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 1 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement2">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 2 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement3">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 3 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel1">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 1 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel2">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 2 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel3">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 3 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n1Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n2Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp2ProfileDataItu">
+ <structMember name="suermT">
+ <description>SUERM parameter T.
+Measured in SU units.</description>
+ <long>
+ <range>
+ <min>1</min> <max>64</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermD">
+ <description>SUREM parameter D.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>256</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermN">
+ <description>SUERM parameter N.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>16</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tin">
+ <description>Normal AERM threshold, Tin. Number of signal errors that cause abortion of a normal proving peroid.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tie">
+ <description>Emergency AERM threshold, Tie. Number of signal units errors that cause abortion of an emergency proving period.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="provings">
+ <description>Proving abort limit. Number of consecutive aborted proving periods that will cause a return to the Out Of Service state.
+
+Measurement units are the number of proving periods.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Maximum time to stay in Aligned Ready state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>65500</max>
+ </range>
+ <defaultValue>40000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Maximum time to stay in Not Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>262000</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Maximum time to stay in Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4n">
+ <description>Length of the normal proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>7500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4e">
+ <description>Length of the emergengcy proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Time between sending Status Indication "B" while in the Congested state.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Maximum time a remote site may remain in the congestated state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>8100</max>
+ </range>
+ <defaultValue>3000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT7">
+ <description>Maximum time to wait for an expected acknowledgement of an MSU before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="bitRate">
+ <description>The speed of the link. Only supported values are 64 and 56 kbit/s.
+0 = 64 kbit/s.
+1 = 56 kbit/s.
+
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="errorCorrection">
+ <description>The error correction algorithm to use. Only Basic Error Correction (BEC) is supported.
+0 = BEC
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet1">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 1 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet2">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 2 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet3">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 3 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>90</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement1">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 1 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement2">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 2 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement3">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 3 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel1">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 1 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel2">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 2 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel3">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 3 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n1Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n2Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp2ProfileDataChina">
+ <structMember name="bitRate">
+ <description>The speed of the link. Only supported values are 64 and 56 kbit/s.
+0 = 64 kbit/s.
+1 = 56 kbit/s.
+
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="errorCorrection">
+ <description>The error correction algorithm to use. Only Basic Error Correction (BEC) is supported.
+0 = BEC</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="provings">
+ <description>Proving abort limit. Number of consecutive aborted proving periods that will cause a return to the Out Of Service state.
+
+Measurement units are the number of proving periods.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermD">
+ <description>SUERM parameter D.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>256</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermN">
+ <description>SUERM parameter N.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>16</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermT">
+ <description>SUERM parameter T.
+Measured in SU units.</description>
+ <long>
+ <range>
+ <min>1</min> <max>64</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tie">
+ <description>Emergency AERM threshold, Tie. Number of signal units errors that cause abortion of an emergency proving period.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Maximum time to stay in Aligned Ready state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>65500</max>
+ </range>
+ <defaultValue>45000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Maximum time to stay in Not Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>262000</max>
+ </range>
+ <defaultValue>132000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Maximum time to stay in Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4e">
+ <description>Length of the emergengcy proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4n">
+ <description>Length of the normal proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>8200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Time between sending Status Indication "B" while in the Congested state.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Maximum time a remote site may remain in the congestated state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>8100</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT7">
+ <description>Maximum time to wait for an expected acknowledgement of an MSU before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tin">
+ <description>Normal AERM threshold, Tin. Number of signal errors that cause abortion of a normal proving peroid.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet1">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 1 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet2">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 2 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet3">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 3 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>90</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement1">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 1 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement2">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 2 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement3">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 3 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel1">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 1 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel2">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 2 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel3">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 3 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n1Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n2Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="EmergencyStatus">
+ <description>This enumeration specifies the different stages of the emergency state.</description>
+ <enumMember name="NEVER_USED">
+ <description>Emergency state has not been activated since installation of license key file.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ACTIVE">
+ <description>All capacity restrictions removed and all features enabled. The maximum time in this state is 7 days.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="USE_DEGRADED">
+ <description>A new license key file has to be istalled in order not to jopardize future use and performance.
+The maximum time in this state is 7 days.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="ACTIVE_AGAIN">
+ <description>All features enabled again for a maximum period of 7 days then a new license key file has to be installed in order to be able to use this node.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="USE_DISABLED">
+ <description>Use of the node is no longer allowed since no new license key file has been installed.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <struct name="EmergencyInfo">
+ <description>This attribute provides information about the current EmergencyState.
+
+Note: for the states NEVER_USED and USE_DISABLED the return value for time is insignificant.</description>
+ <structMember name="state">
+ <description>The current emergency state of the license server.</description>
+ <enumRef name="EmergencyStatus">
+ <defaultValue>NEVER_USED</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="time">
+ <description>This attribute holds information on the time elapsed in this state.
+
+Note: The time out values for the states ALL_OPEN, DEGADED and PROLONGED is 7 days. The unit for this attribute is seconds.
+1 day = 86400 seconds
+7 days = 604800 seconds.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="NodeRestartType">
+ <enumMember name="WARM_AT_PIU_RESTART">
+ <description>Warm node restart at restart of the last PIU.</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="COLD_AT_PIU_RESTART">
+ <description>Cold node restart at restart of the last PIU.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="WARM_AT_PIU_FAULT">
+ <description>Warm node restart at fault mark of the last PIU.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="COLD_AT_PIU_FAULT">
+ <description>Cold node restart at fault mark of the last PIU.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <struct name="UniSaalProfileData">
+ <structMember name="maxPD">
+ <description>Maximum number of SD PDUs before a poll is sent.
+
+maxPD &lt; initialCredit</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>25</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxStat">
+ <description>Maximum number, odd integer value, of list elements placed in a STAT PDU.
+
+Note: The maxStat attribute is dependent on the AAL5 maximum SDU size defined in the Aal5TpVccTp MO. The maxStat times 4 (octets) plus additional 12 octets (for header) must not exceed the AAL5 maximum SDU size (lower of the two directions, fromUserMaxSduSize and toUserMaxSduSize).
+The consistency control is not performed until the UniSaalTp MO is created since there is no relation between the UniSaalProfile MO and the Aal5TpVccTp MO.</description>
+ <long>
+ <range>
+ <min>3</min> <max>1001</max>
+ </range>
+ <defaultValue>67</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="initialCredit">
+ <description>Initial number of credits.
+
+Note: For 64 kbit/s use 30.
+
+Note! The value for initialCredit must be larger than the value of maxPD.
+</description>
+ <long>
+ <range>
+ <min>10</min> <max>1000</max>
+ </range>
+ <defaultValue>250</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerKeepAlive">
+ <description>Timer to be used during a period of no outstanding acknowledgements or new data pending receipt of credit. At timeout the peer is polled to see if it is alive. The timer determines the interval between polls in transient phase. This timer should be greater than the roundtripdelay and also greater than timerpoll. Time unit = milliseconds.
+</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerNoResponse">
+ <description>Timer to determine the maximum time interval during which at least one STAT PDU reception is expected as a response to a poll. This timer should be equal to timerKeepAlive+roundtripdelay. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>7000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerIdle">
+ <description>Timer running when there are no PDUs to transmit and there are no outstanding acknowledgements or data pending for credit. When this timer is running, no POLL PDUs are sent. This timer should be significantly greater than timerKeepAlive value. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>1000</min> <max>600000</max>
+ </range>
+ <defaultValue>15000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerCC">
+ <description>Timer determining the time between re-transmission of PDUs: BGN, END, ER, RS. Should be slightly more than the roundtripdelay. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerPoll">
+ <description>Timer that specifies the maximum time between sending of POLL PDUs to the peer receiver during other traffic (active phase). Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>750</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxCC">
+ <description>Maximum number of re-transmissions of PDUs: BGN, END, ER, RS. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet">
+ <description>Attribute specifying the percentage of the buffer that must be filled in order to cause congestion. Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion level is used to take care of messages that were sent before the users stopped sending.
+
+This attribute should follow the rule 0 &lt;= congestationAbatement &lt; congestationOnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement">
+ <description>Attribute specifying the percentage of the buffer for which congestion is stopped. If the congestionAbatement level is lesser but almost equal to congestionOnSet, congestion alarms might be raised and ceased very often.
+
+This attribute should follow the rule 0 &lt;= congestationAbatement &lt; congestationOnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="NniSaalProfileData">
+ <description>Struct holding the values for an NniSaalProfile.
+
+NOTE: Congestition Level 1 - 3 is supported.</description>
+ <structMember name="timerPoll">
+ <description>Timer that specifies the maximum time between sending of POLL PDUs to the peer receiver during other traffic (active phase). Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxCC">
+ <description>Maximum number of re-transmissions of PDUs: BGN, END, ER, RS.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxPD">
+ <description>Maximum number of SD PDUs before a poll is sent.
+
+maxPD &lt; initialCredit</description>
+ <long>
+ <range>
+ <min>0</min> <max>10000</max>
+ </range>
+ <defaultValue>25</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxStat">
+ <description>Maximum number, odd integer value, of list elements placed in a STAT PDU.
+
+Note: The maxStat attribute is controlled by the AAL5 maximum SDU size defined in the Aal5TpVccTp MO. The maxStat times 4 (octets) plus additional 12 octets (for header) must not exceed the AAL5 maximum SDU size (lower of the two directions, fromUserMaxSduSize and toUserMaxSduSize).
+
+The consistency control is not performed until the NniSaalTp MO is created since there is no relation between the NniSaalProfile MO and the Aal5TpVccTp MO.</description>
+ <long>
+ <range>
+ <min>3</min> <max>1001</max>
+ </range>
+ <defaultValue>67</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="initialCredit">
+ <description>Initial number of credits.
+
+Note: For 64 kbit/s use 30.
+
+Note! The value for initialCredit must be larger than the value of maxPD.</description>
+ <long>
+ <range>
+ <min>10</min> <max>1000</max>
+ </range>
+ <defaultValue>250</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerKeepAlive">
+ <description>Timer to be used during a period of no outstanding acknowledgements or new data pending receipt of credit. At timeout the peer is polled to see if it is alive. The timer determines the interval between polls in transient phase. This timer should be greater than the roundtripdelay and also greater than timerpoll. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerNoResponse">
+ <description>Timer to determine the maximum time interval during which at least one STAT PDU reception is expected as a response to a poll.This timer should be equal to timerKeepAlive+roundtripdelay. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerIdle">
+ <description>Timer running when there are no PDUs to transmit and there are no outstanding acknowledgements or data pending for credit. When this timer is running, no POLL PDUs are sent. This timer should be significantly greater than timerKeepAlive value. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerCC">
+ <description>Timer determining the time between re-transmission of PDUs: BGN, END, ER, RS. Time unit = milliseconds.
+Should be more than the roundtrip delay.</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="mps">
+ <description>Management Proving Status which is used to decide if proving is done or not during SAAL connection setup.
+</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionLevel1OnSet">
+ <description>Attribute specifying the percentage of the buffer that must be filled in order to cause congestion.
+Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion
+level is used to take care of messages that were sent before the users stopped sending.
+
+Attribute specifying the percentage of the buffer that must be filled in order to cause congestion.
+Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion
+level is used to take care of messages that were sent before the users stopped sending.
+
+This attribute should follow the rule 0 &lt;= congestationLevel1OnSet &lt;= congestationLevel2OnSet &lt;= congestationLevel3OnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionLevel2OnSet">
+ <description>Attribute specifying the percentage of the buffer that must be filled in order to cause congestion.
+Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion
+level is used to take care of messages that were sent before the users stopped sending.
+
+This attribute should follow the rule 0 &lt;= congestationLevel1OnSet &lt;= congestationLevel2OnSet &lt;= congestationLevel3OnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionLevel3OnSet">
+ <description>Attribute specifying the percentage of the buffer that must be filled in order to cause congestion.
+Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion
+level is used to take care of messages that were sent before the users stopped sending.
+
+This attribute should follow the rule 0 &lt;= congestationLevel1OnSet &lt;= congestationLevel2OnSet &lt;= congestationLevel3OnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>90</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionLevel1Abatement">
+ <description>Attribute specifying the percentage of the buffer for which congestionLevel1 is stopped. If the congestionAbatement level is lesser but almost equal to congestionOnSet, congestion alarms might be raised and ceased very often.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="nrOfPDUsDuringProving">
+ <description>The length of proving in terms of number of transmitted PDUs (n1).
+noOfPDUsDuringProving x T3 &lt; T2
+
+For the TTC standard the only allowed value is 0 (which means no proving).</description>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxNRP">
+ <description>State variable which defines max number of retransmissions of PDUs during proving to consider proving successful.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerNoCredit">
+ <description>Maximum time of no credit. If the timer expires, the assured data transfer mode is released.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerRepeatSrec">
+ <description>Timer which is set whenever a report of SSCOP recovery is received from the SSCF. If the timer is running when another report of recovery is received, the assured data transfer mode is released. If the timer expires, nothing is done. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>0</min> <max>86400000</max>
+ </range>
+ <defaultValue>3600000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Timer between the link release action and the next link re-establish action during the alignment. At expiry of timer T1, a new attempt to setup assured data transfer mode to the peer is done. Time unit = milliseconds.
+</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Total time that SSCF will attempt alignment. At expiry of timer T2, the alignment procedure will be interrupted.
+ Time unit = milliseconds.
+</description>
+ <long>
+ <range>
+ <min>10</min> <max>200000</max>
+ </range>
+ <defaultValue>30000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Time between proving PDUs. The timer is set such that loading of the signalling link is approximately 50% of its nominal rate.
+Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>5</min> <max>1000</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <exception name="ListOfTimeSlotsNotUniqueException">
+ <description>Exception thrown when a time slot appears more than once in the time slot list.</description>
+ </exception>
+
+ <enum name="RefActivity">
+ <description>RefActivity can have the following values:
+
+inactive = Synchronization reference is currently not used in system clock generation.
+active = Synchronization is used in system clock generation.
+</description>
+ <enumMember name="inactive">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="active">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RefState">
+ <description>RefState can have the following values:
+failed = synchronization reference is not capable to perform its required tasks.
+degraded = capability of synchronization reference to perform its required tasks is degraded e.g. because of signal level degradation. This value is only applicable for traffic carrying (ET physical path termination) synchronization references. Note: attribute degradationIsFault controls whether synchronization reference degradation is interpreted as a synchronization reference fault or not.
+lossOfTracking = system clock regulation algorithm on TU board can not follow the 8kHz synchronization reference signal either because of the poor quality of the signal or because of a HW fault at TU board. If all synchronization references repeatedly end up to state lossOfTracking, fault is likely in TU HW.
+ok = synchronization reference is capable of performing its required tasks.
+</description>
+ <enumMember name="failed">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="degraded">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="lossOfTracking">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="ok">
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="FaultCriteria">
+ <description>FaultCriteria can have the following values:
+degrNotFault = synchronization reference degradation is NOT interpreted as a synchronization reference fault.
+degrIsFault = synchronization reference degradation is interpreted as a synchronization reference fault.</description>
+ <enumMember name="degrNotFault">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="degrIsFault">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="ClockState">
+ <description>ClockState can have the following values:
+startUp =
+locked = system clock signal on Timing Unit is locked: a synchronization reference is used in the system clock generation, clock accuracy is 50 ppb or better.
+holdOver = system clock signal on Timing Unit is hold-over: no synchronization reference is used in system clock generation, clock accuracy is 50 ppb or better.
+freeRunning = system clock signal on Timing Unit is free running: no synchronization reference is used in system clock generation, clock accuracy is 4.6 ppm or better.
+failed = system clock signal on Timing Unit is failed: fault in system clock generation function, no quarantee of clock accuracy level.
+not Applicable = system clock signal on Timing Unit is not applicable: TU board not present.</description>
+ <enumMember name="unknownMode">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="startupMode">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="lockedMode">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="holdOverMode">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="freeRunningMode">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="failedMode">
+ <value>5</value>
+ </enumMember>
+ <enumMember name="lossOfTrackingMode">
+ <value>6</value>
+ </enumMember>
+ <enumMember name="notApplicable">
+ <value>7</value>
+ </enumMember>
+ </enum>
+
+ <exception name="AlreadyRegisteredException">
+ <description>Exception thrown when an object is already registered.</description>
+ </exception>
+
+ <exception name="MaxNoOfRefRegisteredException">
+ <description>Exception thrown when the maximum number of references is reached.</description>
+ </exception>
+
+ <exception name="PriorityAlreadyInUseException">
+ <description>Exception thrown when a priority is already in use.</description>
+ </exception>
+
+ <exception name="PriorityOutOfRangeException">
+ <description>Exception thrown when the priority is out of range.</description>
+ </exception>
+
+ <exception name="NotPermittedException">
+ <description>Exception thrown when an reference is not valid, null or of incorrect type.</description>
+ </exception>
+
+ <exception name="NotRegisteredException">
+ <description>Exception thrown when trying to de-register an object that is not registered in the database.</description>
+ </exception>
+
+ <enum name="SystemClockRedundancy">
+ <enumMember name="SYSTEM_CLOCK_USERS_USE_PLANE_A">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SYSTEM_CLOCK_USERS_USE_PLANE_B">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SYSTEM_CLOCK_USERS_USE_PLANE_A_AND_B">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <exception name="NotUniqueFroIdException">
+ <description>Exception thrown when a fro Id is not unique.</description>
+ </exception>
+
+ <enum name="ActiveSwitchPlane">
+ <enumMember name="switchPlaneA">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="switchPlaneB">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="switchPlaneBoth">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SwitchReliableGroup">
+ <description>A predefined group consisting of working links and their corresponding protecting links. These links form the n+m link redundancy. </description>
+ <enumMember name="physicalLinkStatusWorking">
+ <description>Defines physical link status.
+</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="physicalLinkStatusProtecting">
+ <description>Defines physical link status.
+</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="physicalLinkStatusUndefined">
+ <description>Defines physical link status.
+</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <struct name="GlobalTitleData">
+ <structMember name="indicator">
+ <description>Global title indicator should have following values for both ITU and TTC:
+
+The values for the GT Indicator
+
+Value Comment
+
+0 No new global title
+2 TT only
+3 TT-NP-ES
+4 TT-NP-ES-NOA
+
+Explanation:
+
+TT = translation type
+NP = numbering plan
+ES = encoding scheme
+NOA = nature of address indication</description>
+ <long>
+ <range>
+ <min>0</min> <max>4</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="natureOfAddress">
+ <description>Indicates number type, i.e. national or international number.
+Coding of the Nature Address:
+
+0 = "unknown"
+1 = "Subscriber number"
+2 = "Reserved for national use"
+3 = "National significant number"
+4 = "International number"</description>
+ <long>
+ <range>
+ <min>0</min> <max>4</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="numberingPlan">
+ <description>Indicates which numbering plan that is used.
+
+Coding of the Numbering Plan:
+
+0 = "Unknown"
+1 = "ISDN/Telephony Numbering Plan"
+3 = "Data Numbering Plan"
+4 = "Telex Numbering Plan"
+5 = "Maritime Mobile Numbering Plan"
+6 = "Land Mobile Numbering Plan"
+7 = "ISDN/Mobile Numbering Plan"
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>7</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="translationType">
+ <description>Used to direct the message to the appropriate Global Title translation function.</description>
+ <long>
+ <range>
+ <min>0</min> <max>254</max>
+ </range>
+ </long>
+ </structMember>
+ <structMember name="addressInformation">
+ <description>Digit string of 1-37 digits, where each digit is 0-9, and B, C. B and C are for Code 11 and Code 12.
+The addressInformation may also contain wild card symbols: "*" or "?". Wild cards are only allowed for defining Global Title Translations, they are not allowed for specifying SCCP SAPs (built with SPC and Global Title or SPC + SSN + Global Title).</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>37</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="encodingScheme">
+ <description>Indicates if the number of address signals are an odd or even number, and is coded as follows:
+
+0 = "Unknown"
+1 = "BCD, odd number of digits"
+2 = "BCD, even number of digits"
+
+Other values in the encoding scheme will result in the error "Wrong Nature Of Address", (Routing failure reason=No translation for an address of such nature).</description>
+ <long>
+ <range>
+ <min>0</min> <max>2</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="SharingMode">
+ <enumMember name="loadShare">
+ <description>The when sharing mode is set to loadShare the SCCP traffic is load shared between the two entities (access points).</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="dupliDominant">
+ <description>When the sharing mode is set to dupliDominant the second entity (access point) is a backup for the first entity.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="EncodingScheme">
+ <description>Possible values for number signalling.</description>
+ <enumMember name="UNKNOWN">
+ <description>Unkown encoding scheme.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ODD_NUMBER">
+ <description>BCD, odd number of digits.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="EVEN_NUMBER">
+ <description>BCD, even number of digits.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="GlobalTitleIndicator">
+ <description>Global title indicator values for China, ITU, TTC and ANSI.
+
+Note: China, ITU and TCC will use TT_ONLY, TT_NP_ES, TT_NP_ES_NOA, NOA_ONLY.
+
+ANSI will use:
+ANSI_TT_NP_ES = 5
+ANSI_TT_ONLY = 6
+</description>
+ <enumMember name="TT_ONLY">
+ <description>Translation Type only.
+
+Only valid for China, ITU and TTC.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="TT_NP_ES">
+ <description>Translation Type, Numbering Plan and Encoding Scheme.
+
+Only valid for China, ITU and TTC.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="TT_NP_ES_NOA">
+ <description>Translation Type, Numbering Plan, Encoding Scheme, and Nature Of Address indication.
+
+Only valid for China, ITU and TTC.</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="NOA_ONLY">
+ <description>Nature of Address indicator only.
+
+Only valid for China, ITU and TTC.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="ANSI_TT_NP_ES">
+ <description>Translation Type, Numbering Plan and Encoding Scheme.
+
+Only valid for ANSI.
+</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="ANSI_TT_ONLY">
+ <description>Translation Type only.
+
+Only valid for ANSI.
+</description>
+ <value>6</value>
+ </enumMember>
+ </enum>
+
+ <enum name="NatureOfAddress">
+ <description>Phone number types.</description>
+ <enumMember name="UNKNOWN">
+ <description>Unknown number type.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SN">
+ <description>Subscriber number type.
+</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="RN">
+ <description>Reserved for national use, number type.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="NSN">
+ <description>National Significant Number type.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="IN">
+ <description>International number type.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <enum name="NumberingPlan">
+ <description>Numbering plans.</description>
+ <enumMember name="UNKNOWN">
+ <description>Unknown numbering plan.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="TELEPHONY">
+ <description>ISDN/Telephony numbering plan.
+</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="DATA">
+ <description>Data numbering plan.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="TELEX">
+ <description>Telex numbering plan.
+</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="MOBILE_MARITIME">
+ <description>Maritime mobile numering plan.
+</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="MOBILE_LAND">
+ <description>Land mobile numbering plan.
+</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="MOBILE">
+ <description>ISDN/Mobile numbering plan.</description>
+ <value>6</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SccpCountType">
+ <enumMember name="MESSAGES">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="OCTETS">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Scmg">
+ <structMember name="sendSST">
+ <description>Controls when to send SST (SCCP Subsystem Test message).
+
+0 = Wait for tStatInfo timer to expire once after MTP_RESUME before sending SST.
+1 = Send SST immediately after MTP_RESUME, then start tStatInfo timer.</description>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="sendSSA">
+ <description>Controls when to send SSA (SCCP Subsystem Allowed message).
+
+0 = Do not send SSA when client attaches, wait until SST is received. (default for ANSI/CHINA/ITU/TTC)
+1 = Send SSA immediately when client attaches.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="sendSSP">
+ <description>Controls whether to send SSP (SCCP Subsystem Prohibited message).
+
+0 = Do not send SSP when client detaches. (default for TTC)
+1 = Send SSP immediately when client detaches. (default for ANSI/CHINA/ITU)</description>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="useSST">
+ <description>Controls whether to send SST messages or not (SCCP Subsystem Test message).
+
+0 = Send SST as indicated by sendSST. (default for ANSI/CHINA/ITU)
+1 = (not used)
+2 = (not used)
+3 = Do not initiate SST messages at all, ie. do not start timer tStatInfo nor send any SST at MTP_RESUME. (default for TTC)</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="allowRemoteBroadcast">
+ <description>Controls the remote broadcast.
+
+0 = allow remote broadcast. (default for ANSI/CHINA/ITU/TTC)
+1 = do not allow remote broadcast</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="initiateTimerTcon">
+ <description>Controls whether to initiate hardcoded congestion timer or not.
+
+0 = start timer when SSC is received. (default for CHINA/ITU/TTC)
+1 = do not start timer
+
+Note! This attribute is not valid for the ANSI standard.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="DiscardReturnServiceMsg">
+ <enumMember name="DISCARD">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="RETURN">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <exception name="WrongUserTypeException">
+ </exception>
+
+ <exception name="UsageNotPermittedException">
+ </exception>
+
+ <enum name="J1Type">
+ <description>J1Type can have the following values:
+J1_G = 0 according to TTC JT-G703/G704
+J1_I = 1 according to TCC JT-I431</description>
+ <enumMember name="j1_G">
+ <description>J1 according to TTC JT-G703/G704</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="j1_I">
+ <description>J1 according to TCC JT-I431</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="StandardMode">
+ <description>Indicates what standard the MAO is operating to.</description>
+ <enumMember name="TTC">
+ <description>The standard mode is Telecommunication Technology Committee (TTC).</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="ANSI">
+ <description>The standard mode ANSI.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ETSI">
+ <description>The standard mode is ETSI.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="MuxMode">
+ <description>Indicates what multiplexing is being used.</description>
+ <enumMember name="STANDBY">
+ <description>Standby for protection.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="E1_J1_T1_LEVEL">
+ <description>Multiplexing terminated at the E1/J1/T1 level.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="VC4_STS3CSPE_LEVEL">
+ <description>Multiplexing terminated at the VC-4/STS3CSPE level.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Os155LoopBack">
+ <description>The loopback method available for use by the Os155SpiTtp MO.</description>
+ <enumMember name="NONE">
+ <description>No loopback in use.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="LINE">
+ <description>Loopingback using line.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SwitchModes">
+ <description>The switch modes.</description>
+ <enumMember name="AUTOMATIC">
+ <description>Automatic switching.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="LOCKED">
+ <description>Locked for swtiching.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <exception name="FailedResourceException">
+ </exception>
+
+ <exception name="LockedResourceException">
+ </exception>
+
+ <exception name="UnknownReasonException">
+ </exception>
+
+ <exception name="AlreadyLockedException">
+ </exception>
+
+ <exception name="IncorrectOsi155SpiIdException">
+ </exception>
+
+ <enum name="PathTraceFormat">
+ <description>Path Trace Formats.</description>
+ <enumMember name="ITU_T_G707">
+ <description>16 byte path trace format according to ITU-T G707 table 4.</description>
+ <value>16</value>
+ </enumMember>
+ <enumMember name="GR_253_CORE">
+ <description>64 byte path trace format according to section 3.3.2.3, Telecordia GR-253-CORE.</description>
+ <value>64</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Crc4Mode">
+ <description>Cyclical Redundancy Checks 4 modes.</description>
+ <enumMember name="OFF">
+ <description>CRC 4 is off.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ON">
+ <description>CRC 4 is on.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="AUTOMATIC">
+ <description>CRC 4 is automatic.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="IdlePattern">
+ <description>Idle patterns.</description>
+ <enumMember name="A_LAW">
+ <description>A law idle pattern.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="U_LAW">
+ <description>Micro law idle pattern.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="UNDEFINED">
+ <description>Undefined idle pattern.</description>
+ <value>0</value>
+ </enumMember>
+ </enum>
+
+ <enum name="LoopbackState">
+ <description>The possible loopback states for E1/J1/T1/E3/T3PhysPathTerm MOs.</description>
+ <enumMember name="none">
+ <description>This is the normal state, no loop back is preformed (and ordinary traffic is running).</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="line">
+ <description>The phyiscal path is looped on the line side, the external incoming path is looped back to the external outgoing path.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="system">
+ <description>The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="TransmissionMode">
+ <description>L stands for long haul interface and S stands for short haul interface.
+The subsequent figure specifies the cable distance in feets.</description>
+ <enumMember name="L_6000">
+ <description>Long Haul 6000 ft, -0 dB</description>
+ <value>8</value>
+ </enumMember>
+ <enumMember name="L_4000">
+ <description>Long Haul 4000 ft, -7 dB</description>
+ <value>7</value>
+ </enumMember>
+ <enumMember name="L_2000">
+ <description>Long Haul 2000 ft, -15 dB</description>
+ <value>6</value>
+ </enumMember>
+ <enumMember name="L_0">
+ <description>Long Haul 0 ft, -22 dB</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="S_133">
+ <description>Short Haul 0..133 ft</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="S_266">
+ <description>Short Haul 134..266 ft</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="S_399">
+ <description>Short Haul 267..399 ft</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="S_533">
+ <description>Short Haul 400..533 ft</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="S_655">
+ <description>Short Haul 534..655 ft</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp3bSpItuPriorityData">
+ <description>Priority attributes for MTP3b SP of the ITU standard.</description>
+ <structMember name="prioSlt">
+ <description>The prioSlt attribute sets the priority for the
+ Signalling Link Test Message and Acknowledge (SLTM / SLTA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCo">
+ <description>The prioCo attribute sets the priority for the ChangeOver Order and Acknowledge (COO/COA) or eXtended Change over Order and Acknowledge (XCO/XCA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet)
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCb">
+ <description>The prioCb attribute sets the priority for the
+ Change Back Declaration and Acknowledge (CBD / CBA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioEc">
+ <description>The prioEc attribute sets the priority for the
+Emergency Change over Order and Acknowledge (ECO / ECA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRst">
+ <description>The prioRst attribute sets the priority for the
+signalling Route Set Test (RST) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTra">
+ <description>The prioTra attribute sets the priority for the
+Traffic Restart Allowed signal (TRA) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioUpu">
+ <description>The prioUpu attribute sets the priority for the
+ User Part Unavailable (UPU) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioLink">
+ <description>The prioLink attribute sets the priority for link related messages when issued by the MTP3b itself. The messages are :
+
+Link INhibit (LIN), Link UNinhibit (LUN),
+Link Inhibit Denied (LID),
+Link Inhibit Acknowledge (LIA),
+Link Uninhibit Acknowledge (LUA),
+Link Forced Uninhibit (LFU),
+Link Local inhibit Test (LLT) and
+Link Remote inhibit Test (LRT)
+
+When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp3bSpItuTimerData">
+ <description>ITU timers for MTP3bSpItu. Timervalues in 1/10 s (deciseconds).</description>
+ <structMember name="timerT1">
+ <description>Delay to avoid message mis-sequencing on changeover.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Timer for waiting for a COO or a COA.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Delay to avoid message mis-sequencing on a time controlled diversion change back.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4">
+ <description>Timer for waiting for CBA, first attempt.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Timer for waiting for CBA, second attempt
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Timer for delay to avoid message mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT8">
+ <description>Timer for delay to prohibit sending of TFP messages via the response method. This is a STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT10">
+ <description>Timer for waiting to repeat sending of RST periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT12">
+ <description>Waiting for uninhibit acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT13">
+ <description>Timer for waiting for force uninhibit.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT14">
+ <description>Timer for waiting for inhibition acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT17">
+ <description>Delay to avoid oscillation of initial alignment failure and link restart.
+
+The value for this timer should be less than the value for timerT2.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTBsnt">
+ <description>Waiting for BSNT value from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTRetrieval">
+ <description>Timer for waiting for completion of buffer retrieval from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTStart">
+ <description>Timer for retransmission of DL_START_req if no answer received. Started when timerT17 expires. (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTc">
+ <description>Controlling the period a route set is considered congested when a Transfer Controlled message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT18">
+ <description>Supervision timer for the first phase of a restarting STP. This is an STP specific parameter, which is ignored when configured as an endpoint.
+
+The value for this timer should be less than the value for timerT2.
+
+Unit: deciseconds (1/10 second).
+</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>550</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT19">
+ <description>Controlling the response of the receipt of a traffic restart message from an adjacent node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>680</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT20">
+ <description>Overall MTP restart timer at the restarting MTP.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT21">
+ <description>Overall MTP restart timer at an adjacent signalling point to a restarting MTP.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>640</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT22">
+ <description>Local inhibit test timer.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT23">
+ <description>Remote inhibit test timer.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSlta">
+ <description>Supervision timer for SLTA message (time within SLTA should arrive).
+
+Timer T1 in ITU Q.707 standard.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSltm">
+ <description>Timer for sending SLTM periodically.
+
+Timer T2 in ITU Q.707 standard.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTack">
+ <description>Timer used for message acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaPeriodicAudit">
+ <description>Timer used for audit procedure.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT1">
+ <description>Delay to avoid mis-sequencing of messages when an association fails.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT3">
+ <description>Delay to avoid mis-sequencing of messages when an association becomes active.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT6">
+ <description>Delay to avoid mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT8">
+ <description>Delay to prohibit sending of DUNA messages via the response method.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT40">
+ <description>Delay to avoid message mis-sequencing on controlled/forced rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT41">
+ <description>Timer controlloing the traffic activation delay during restart phase.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT42">
+ <description>The forever interval period for trying association after an unsiccessfull trial.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTc">
+ <description>Timer controlling the period a route set is considered congested when a SCON message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT15">
+ <description>Timer waiting to start signaling route set congestiontest. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test".
+
+Guiding value 20 - 30.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT16">
+ <description>Timer waiting for route set congestion status update. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test"
+
+Guiding value 14 - 22.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>14</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTDlack">
+ <description>Timer pending an acknowledge from the network layer for a DL_ACK_REQ.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTassocack">
+ <description>Timer used for SCTP_ASSOCIATE_REQ message acknowledgement. This is the maximum time to wait for the SCTP_COMMUP_IND mesage before considering it to be an error.
+It should be longer than the time a message spends to reach the most distant destination, be processed and returned.</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="CongestLevel">
+ <description>The supported congestion levels.</description>
+ <enumMember name="level_0">
+ <description>No Congestion.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="level_1">
+ <description>Congestion level low.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="level_2">
+ <description>Congestion level medium.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="level_3">
+ <description>Congestion level high.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <exception name="ActivationFailedException">
+ </exception>
+
+ <exception name="NoAvailRouteException">
+ </exception>
+
+ <enum name="Mtp3bCongestLevel">
+ <enumMember name="notCongested">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="congested">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bNetworkInd">
+ <description>Indicates which type of geographical network, e.g. national, international, etc..
+
+Note: Not applicable for TTC.</description>
+ <enumMember name="INTERNATIONAL_NETWORK">
+ <description>International Network.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SPARE">
+ <description>Spare (for international use only).</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="NATIONAL_NETWORK">
+ <description>National network.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="RESERVED_FOR_NATIONAL_USE">
+ <description>Reserved for national use.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bTfrHandling">
+ <description>Indicates how a TransFer Restricted (TFR) signal is handled.</description>
+ <enumMember name="HANDLE_AS_TFA">
+ <description>Treat the TransFer Restricted (FTR) signal as a TransFer Allowed (TFA) signal.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="IGNORED">
+ <description>Ignore the TransFer Restricted (TFR) signal.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="HANDLE_BY_STANDARD">
+ <description>Handle the incoming TRF messages according to the standard.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bSioSpareBitsUse">
+ <description>Indicates whether the two spare bits in the Service Information Octet (SIO) should be treated as spare or for indicating a priority level. </description>
+ <enumMember name="SPARE">
+ <description>The two spare bits in the SIO are treated as spare.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="PRIO">
+ <description>The two spare bits in the SIO are to be used for indicating a priority level.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bItuVersion">
+ <description>Indicates which version of the ITU standard.</description>
+ <enumMember name="ITU_T_88">
+ <description>ITU-T -88.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ITU_T_03_93">
+ <description>ITU-T 03/93.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="ITU_T_07_96">
+ <description>ITU-T 07/96</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp3bSpAnsiTimerData">
+ <description>ANSI timers for MTP3bSpAnsi. Timervalues in 1/10 s (deciseconds).</description>
+ <structMember name="timerT1">
+ <description>Delay to avoid message mis-sequencing on changeover.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Timer for waiting for a COO or a COA.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Delay to avoid message mis-sequencing on a time controlled diversion change back.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4">
+ <description>Timer for waiting for CBA, first attempt.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Timer for waiting for CBA, second attempt
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Timer for delay to avoid message mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT8">
+ <description>Timer for delay to prohibit sending of TFP messages via the response method. This is a STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT10">
+ <description>Timer for waiting to repeat sending of RST periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT12">
+ <description>Waiting for uninhibit acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT13">
+ <description>Timer for waiting for force uninhibit.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT14">
+ <description>Timer for waiting for inhibition acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT15">
+ <description>Timer waiting to start signaling route set congestiontest. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test".
+
+Guiding value 20 - 30.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT16">
+ <description>Timer waiting for route set congestion status update. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test"
+
+Guiding value 14 - 22.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>14</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT17">
+ <description>Delay to avoid oscillation of initial alignment failure and link restart.
+
+The value for this timer should be less than the value for timerT2.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTBsnt">
+ <description>Waiting for BSNT value from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTRetrieval">
+ <description>Timer for waiting for completion of buffer retrieval from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTStart">
+ <description>Timer for retransmission of DL_START_req if no answer received. Started when timerT17 expires. (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTc">
+ <description>Controlling the period a route set is considered congested when a Transfer Controlled message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT30">
+ <description>Timer to limit sending of TFPs and TFRs in response to unexpected TRA and TRW. This timer is specific for STP functionality and is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT25">
+ <description>Delay extension timer invoked on reciept of a Traffic Restart Waiting message from an adjacent SP which is restarting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT26">
+ <description>Controlling the periodic resend of Traffic Restart Waiting messages during restart of the local node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>120</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT27">
+ <description>Timer enforcing a minimum node unavailablility period during MTP restart.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT28">
+ <description>Delay timer controlling a timed reaction of the restart of an adjacent node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT29">
+ <description>Timer controlling the response of the receipt of Traffic Restart messages from an adjacent node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT20">
+ <description>Controlling the periodic resend of Local Inhibit Change Message.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT21">
+ <description>Controlling the periodic resend of Remote Inhibit Test Message.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT22">
+ <description>Delay on commencement of MTP Restart to allow the node to rebuild an accurate routing table based on messages for adjacent nodes.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT23">
+ <description>Supervision timer for routing updates on MTP Restart.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>40</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT31">
+ <description>Timer controlling the detection of false link congestion.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTDlack">
+ <description>Timer pending an acknowledge from the network layer for a DL_ACK_REQ.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSltm">
+ <description>Timer for sending SLTM periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSlta">
+ <description>Supervision timer for SLTA message (time within SLTA should arrive).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTack">
+ <description>Timer used for message acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaPeriodicAudit">
+ <description>Timer used for audit procedure.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT1">
+ <description>Delay to avoid mis-sequencing of messages when an association fails.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT3">
+ <description>Delay to avoid mis-sequencing of messages when an association becomes active.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT6">
+ <description>Delay to avoid mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT8">
+ <description>Delay to prohibit sending of DUNA messages via the response method.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT40">
+ <description>Delay to avoid message mis-sequencing on controlled/forced rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT41">
+ <description>Timer controlloing the traffic activation delay during restart phase.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT42">
+ <description>The forever interval period for trying association after an unsiccessfull trial.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTc">
+ <description>Timer controlling the period a route set is considered congested when a SCON message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTassocack">
+ <description>Timer used for SCTP_ASSOCIATE_REQ message acknowledgement. This is the maximum time to wait for the SCTP_COMMUP_IND mesage before considering it to be an error.
+It should be longer than the time a message spends to reach the most distant destination, be processed and returned.</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp3bSpTtcTimerData">
+ <description>TTC timers for MTP3bSpTtc. Timervalues in 1/10 s (deciseconds).</description>
+ <structMember name="timerT1">
+ <description>Delay to avoid message mis-sequencing on changeover.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Timer for waiting for a COO or a COA.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Delay to avoid message mis-sequencing on a time controlled diversion change back.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4">
+ <description>Timer for waiting for CBA, first attempt.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Timer for delay to avoid message mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT8">
+ <description>Timer for delay to prohibit sending of TFP messages via the response method. This is a STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT10">
+ <description>Timer for waiting to repeat sending of RST periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT17">
+ <description>Delay to avoid oscillation of initial alignment failure and link restart.
+
+The value for this timer should be less than the value for timerT2.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSrt">
+ <description>Timer pending a Signalling Route Test Acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTBsnt">
+ <description>Waiting for BSNT value from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTRetrieval">
+ <description>Timer for waiting for completion of buffer retrieval from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTStart">
+ <description>Timer for retransmission of DL_START_req if no answer received. Started when timerT17 expires. (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTc">
+ <description>Controlling the period a route set is considered congested when a Transfer Controlled message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT15">
+ <description>Timer waiting to start signaling route set congestiontest. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test".
+
+Guiding value 20 - 30.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT16">
+ <description>Timer waiting for route set congestion status update. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test"
+
+Guiding value 14 - 22.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>14</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTDlack">
+ <description>Timer pending an acknowledge from the network layer for a DL_ACK_REQ.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp3bSpAnsiPriorityData">
+ <description>Priority attributes for MTP3b SP of the ANSI standard.</description>
+ <structMember name="prioSlt">
+ <description>The prioSlt attribute sets the priority for the
+ Signalling Link Test Message and Acknowledge (SLTM / SLTA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCo">
+ <description>The prioCo attribute sets the priority for the ChangeOver Order and Acknowledge (COO/COA) or eXtended Change over Order and Acknowledge (XCO/XCA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet)
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCb">
+ <description>The prioCb attribute sets the priority for the
+ Change Back Declaration and Acknowledge (CBD / CBA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioEc">
+ <description>The prioEc attribute sets the priority for the
+Emergency Change over Order and Acknowledge (ECO / ECA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRst">
+ <description>The prioRst attribute sets the priority for the
+signalling Route Set Test (RST) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTra">
+ <description>The prioTra attribute sets the priority for the
+Traffic Restart Allowed signal (TRA) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioUpu">
+ <description>The prioUpu attribute sets the priority for the
+ User Part Unavailable (UPU) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioLink">
+ <description>The prioLink attribute sets the priority for link related messages when issued by the MTP3b itself. The messages are :
+
+Link INhibit (LIN), Link UNinhibit (LUN),
+Link Inhibit Denied (LID),
+Link Inhibit Acknowledge (LIA),
+Link Uninhibit Acknowledge (LUA),
+Link Forced Uninhibit (LFU),
+Link Local inhibit Test (LLT) and
+Link Remote inhibit Test (LRT)
+
+When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp3bSpTtcPriorityData">
+ <description>Priority attributes for MTP3b SP of the TTC standard.</description>
+ <structMember name="prioCo">
+ <description>The prioCo attribute sets the priority for the ChangeOver Order and Acknowledge (COO/COA) or eXtended Change over Order and Acknowledge (XCO/XCA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet)
+.</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCb">
+ <description>The prioCb attribute sets the priority for the
+ Change Back Declaration and Acknowledge (CBD / CBA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioEc">
+ <description>The prioEc attribute sets the priority for the
+Emergency Change over Order and Acknowledge (ECO / ECA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRst">
+ <description>The prioRst attribute sets the priority for the
+signalling Route Set Test (RST) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTfa">
+ <description>The prioTfa attribute sets the priority for the Transfer Allowed, TFA, messages.
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRt">
+ <description>The priority indicator used for indicating message priority for signalling route test messages (SRT/SRA).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTfc">
+ <description>The priority indicator used for indicating the message prioirity for TFC.
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ </struct>
+
+ <enum name="Mtp3bSpPriorityLevel">
+ <description>Indicates the priority level for MTP 3.</description>
+ <enumMember name="LOWEST">
+ <description>Lowest priority setting.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="LOW">
+ <description>Low priority setting.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="HIGH">
+ <description>High priority setting.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="HIGHEST">
+ <description>Highest priority setting.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp3bSpChinaTimerData">
+ <description>China timers for MTP3bSpChina. Timervalues in 1/10 s (deciseconds).</description>
+ <structMember name="timerSlta">
+ <description>Supervision timer for SLTA message (time within SLTA should arrive).
+
+Timer T1 in ITU Q.707 standard.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSltm">
+ <description>Timer for sending SLTM periodically.
+
+Timer T2 in ITU Q.707 standard.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Delay to avoid message mis-sequencing on changeover.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT10">
+ <description>Timer for waiting to repeat sending of RST periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT12">
+ <description>Waiting for uninhibit acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT13">
+ <description>Timer for waiting for force uninhibit.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT14">
+ <description>Timer for waiting for inhibition acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT17">
+ <description>Delay to avoid oscillation of initial alignment failure and link restart.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT18">
+ <description>Supervision timer for the first phase of a restarting STP. This is an STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).
+</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT19">
+ <description>Controlling the response of the receipt of a traffic restart message from an adjacent node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>40</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Timer for waiting for a COO or a COA.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT20">
+ <description>Overall MTP restart timer at the restarting MTP.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>40</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT21">
+ <description>Overall MTP restart timer at an adjacent signalling point to a restarting MTP.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT22">
+ <description>Local inhibit test timer.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT23">
+ <description>Remote inhibit test timer.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Delay to avoid message mis-sequencing on a time controlled diversion change back.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4">
+ <description>Timer for waiting for CBA, first attempt.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Timer for waiting for CBA, second attempt
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Timer for delay to avoid message mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT8">
+ <description>Timer for delay to prohibit sending of TFP messages via the response method. This is a STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTBsnt">
+ <description>Waiting for BSNT value from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTc">
+ <description>Controlling the period a route set is considered congested when a Transfer Controlled message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTRetrieval">
+ <description>Timer for waiting for completion of buffer retrieval from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTStart">
+ <description>Timer for retransmission of DL_START_req if no answer received. Started when timerT17 expires. (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTack">
+ <description>Timer used for message acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaPeriodicAudit">
+ <description>Timer used for audit procedure.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT1">
+ <description>Delay to avoid mis-sequencing of messages when an association fails.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT3">
+ <description>Delay to avoid mis-sequencing of messages when an association becomes active.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT6">
+ <description>Delay to avoid mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT8">
+ <description>Delay to prohibit sending of DUNA messages via the response method.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT40">
+ <description>Delay to avoid message mis-sequencing on controlled/forced rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT41">
+ <description>Timer controlloing the traffic activation delay during restart phase.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT42">
+ <description>The forever interval period for trying association after an unsiccessfull trial.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTc">
+ <description>Timer controlling the period a route set is considered congested when a SCON message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT15">
+ <description>Timer waiting to start signaling route set congestiontest. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test".
+
+Guiding value 20 - 30.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT16">
+ <description>Timer waiting for route set congestion status update. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test"
+
+Guiding value 14 - 22.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>14</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTDlack">
+ <description>Timer pending an acknowledge from the network layer for a DL_ACK_REQ.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTassocack">
+ <description>Timer used for SCTP_ASSOCIATE_REQ message acknowledgement. This is the maximum time to wait for the SCTP_COMMUP_IND mesage before considering it to be an error.
+It should be longer than the time a message spends to reach the most distant destination, be processed and returned.</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="Mtp3bNetworkIndTtc">
+ <description>Indicates which type of geographical network, e.g. national, international, etc..
+
+Note: Only for TTC.</description>
+ <enumMember name="NATIONAL_NETWORK">
+ <description>National network.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SPARE">
+ <description>Spare (for international use only).</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="INTERNATIONAL_NETWORK">
+ <description>International Network.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="SPARE_1">
+ <description>Spare.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bUsageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).</description>
+ <enumMember name="IDLE">
+ <description>idle, the Mtp3bSl carries no traffic.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ACTIVE">
+ <description>active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="BUSY">
+ <description>busy, the Mtp3bSl is working but is congested (traffic is routed on other links).</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bProceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized</description>
+ <enumMember name="NOT_INITIALIZED">
+ <description>0 - not initialized.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="INITIALIZED">
+ <description>1 - initialized.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="NodeBehaviourType">
+ <description>The nodeBehaviorType attribute represents the MTP3b node type.</description>
+ <enumMember name="SEP">
+ <description>Signaling End Point.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SEP_STP">
+ <description>Signalling Transfer and End Point, i.e the signalling point is of both type Signalling End Point (SEP) and Signalling Transfer Point (STP).</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="SGW_STP_SEP">
+ <description>Signaling GateWay, Signaling End Point and Signalling Transfer Point, i.e the signalling point is of both type Signalling Transfer Point (STP), Signaling End Point (SEP) and Signaling GateWay (SGW).</description>
+ <value>5</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp3bSpChinaPriorityData">
+ <description>Priority attributes for MTP3b SP of the China standard.</description>
+ <structMember name="prioSlt">
+ <description>The prioSlt attribute sets the priority for the
+ Signalling Link Test Message and Acknowledge (SLTM / SLTA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCo">
+ <description>The prioCo attribute sets the priority for the ChangeOver Order and Acknowledge (COO/COA) or eXtended Change over Order and Acknowledge (XCO/XCA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet)
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCb">
+ <description>The prioCb attribute sets the priority for the
+ Change Back Declaration and Acknowledge (CBD / CBA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioEc">
+ <description>The prioEc attribute sets the priority for the
+Emergency Change over Order and Acknowledge (ECO / ECA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRst">
+ <description>The prioRst attribute sets the priority for the
+signalling Route Set Test (RST) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTra">
+ <description>The prioTra attribute sets the priority for the
+Traffic Restart Allowed signal (TRA) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioUpu">
+ <description>The prioUpu attribute sets the priority for the
+ User Part Unavailable (UPU) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioLink">
+ <description>The prioLink attribute sets the priority for link related messages when issued by the MTP3b itself. The messages are :
+
+Link INhibit (LIN), Link UNinhibit (LUN),
+Link Inhibit Denied (LID),
+Link Inhibit Acknowledge (LIA),
+Link Uninhibit Acknowledge (LUA),
+Link Forced Uninhibit (LFU),
+Link Local inhibit Test (LLT) and
+Link Remote inhibit Test (LRT)
+
+When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ </struct>
+
+ <enum name="Mtp3bRouteType">
+ <description>The type of Signalling Route.</description>
+ <enumMember name="TDM_ATM">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="IP">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="HomingState">
+ <enumMember name="SINGLE_HOMED_1">
+ <description>Single-homed with ipAddress1.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SINGLE_HOMED_2">
+ <description>Single-homed with ipAddress2.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="MULTI_HOMED">
+ <description>Multihomed association with ipAddress1 and
+ipAddress2
+</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RouteState">
+ <description>The state of the signaling route.</description>
+ <enumMember name="NOT_BLOCKED">
+ <description>The signaling route is not blocked.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="BLOCKED">
+ <description>The signaling route is blocked.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="WorkingMode">
+ <enumMember name="hostMode">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="routerMode">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="OspfMetricType">
+ <description>Open Shortest Path First metric type.</description>
+ <enumMember name="comparableCost">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="nonComparable">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RouteType">
+ <description>The types of the routes found in the IP routing table.</description>
+ <enumMember name="INET_RTPROTO_OTHER">
+ <description>The source of information is unknown.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="INET_RTPROTO_LOCAL">
+ <description>Route created from local configuration data (both static and interface routes).
+Each interface created gets an entry in the routing table of the RO.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="INET_RTPROTO_NETMGMT">
+ <description>Route added by SNMP.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="INET_RTPROTO_OSPF">
+ <description>Route added by OSPF.</description>
+ <value>13</value>
+ </enumMember>
+ <enumMember name="INET_RTPROTR_ICMP">
+ <description>Route added by ICMP redirect message.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <exception name="RouteNotFoundException">
+ <description>Invalid IP route has been given as a parameter to an action.</description>
+ <exceptionParameter name="routeNotFound">
+ <description>Exception message.</description>
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="InvalidRouteException">
+ <description>Invalid IP route has been given as a parameter to an action.</description>
+ <exceptionParameter name="invalidRoute">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <enum name="MauDuplexMode">
+ <enumMember name="HALF_DUPLEX">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="FULL_DUPLEX">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="ControllerMode">
+ <description>The controller mode of a physical interface.</description>
+ <enumMember name="CONTROLLER_E1">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="CONTROLLER_T1">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="CONTROLLER_J1">
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <struct name="OspfAreaRange">
+ <description>ipAddress - the subnet address of the range.
+subnetMask - IP subnet mask of the range to be added.
+advertise - indicates whether the area range should be advertised into OSPF.
+</description>
+ <structMember name="ipAddress">
+ <string/>
+ </structMember>
+ <structMember name="subnetMask">
+ <description>Note! The subnet has to be contigious. That is, has the LSB set to 0 (zero).
+
+Example:
+
+255.255.255.X
+
+Contiguous subnet mask:
+11111111.11111111.11111111.11111110 (X = 254)
+11111111.11111111.11111111.11111100 (X = 252)
+
+Not-contiguous subnet mask:
+11111111.11111111.11111111.11111010 (X = 250)
+</description>
+ <string/>
+ </structMember>
+ <structMember name="advertise">
+ <boolean/>
+ </structMember>
+ </struct>
+
+ <struct name="RoutingTableEntry">
+ <description>IP routing table entry.</description>
+ <structMember name="destinationIpAddr">
+ <description>The destination IP address.</description>
+ <string/>
+ </structMember>
+ <structMember name="destinationNetworkMask">
+ <description>The destination IP network mask.</description>
+ <string/>
+ </structMember>
+ <structMember name="nextHopIpAddr">
+ <description>The next hop IP address.</description>
+ <string/>
+ </structMember>
+ <structMember name="routeMetric">
+ <description>The route metric.</description>
+ <long/>
+ </structMember>
+ <structMember name="routeType">
+ <description>The route type.</description>
+ <enumRef name="RouteType">
+ </enumRef>
+ </structMember>
+ <structMember name="interfaceName">
+ <description>The interface name.</description>
+ <string/>
+ </structMember>
+ <structMember name="redistribute">
+ <description>Indicates if the route should be redistributed.</description>
+ <boolean/>
+ </structMember>
+ <structMember name="active">
+ <description>Indicates if the route is active.</description>
+ <boolean/>
+ </structMember>
+ </struct>
+
+ <enum name="AutoConfigurationMode">
+ <description>Denotes whether the autoConfiguration mode for the IpAccessHost is turned on or off.</description>
+ <enumMember name="ON">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="OFF">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Aal5TpSelectionModes">
+ <description>In case 'NO_PREFERENCE', 'LOCAL_MP_SELECT_VCC_AT_LINK_UP', LOCAL_MP_PEER_SELECTION_VCC' or 'LOCAL_MP_ACTIVE_RESELECTION' is selected the IpAtmLink MO will prefer Aal5TpVccTp on local MP (i.e. Aal5TpVccTp executing on the same MP as the IpAtmLink), but other Aal5TpVccTp will be accepted if needed.
+
+In case 'ONLY_LOCAL_MP' is selected, the ipAtmLink (Inet Link) will consider Aal5TpVccTp residing on other MPs as a malfunction and discard the usage of them. No InvArp sending will be performed on them and all incomming trafic on them will be discarded. If no local Aal5TpVccTp exists the operational state of the link will be changed to disabled.</description>
+ <enumMember name="NO_PREFERENCE">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="LOCAL_MP_SELECT_VCC_AT_LINK_UP">
+ <description>Prefer termination on local MP, select Vcc when link goes up.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="LOCAL_MP_PEER_SELECTION_VCC">
+ <description>Prefer termination on local MP, follow peer selection of Vcc.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="LOCAL_MP_ACTIVE_RESELECTION">
+ <description>Prefer termination on local MP, active reselection to new Aal5TpVccTp as soon as a better choice exists.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="ONLY_LOCAL_MP">
+ <description>Restricted to local MP, follow peer selection if termination is on local MP.
+</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AlarmReport">
+ <description>Alarm report for the Virtual path connection termination point.
+RDI - Remote defect indication
+LOC - Loss of continuity
+AIS - Alarm indication signal</description>
+ <enumMember name="ALARM_LOC">
+ <description>For alarms of type Loss of continuity.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="ALARM_LOC_RDI">
+ <description>For alarms of type Loss of continuity and Remote defect indication.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="ALARM_AIS_LOC">
+ <description>For alarms of type Alarm indication signal and Loss of continuity.</description>
+ <value>6</value>
+ </enumMember>
+ <enumMember name="ALARM_AIS_RDI_LOC">
+ <description>For alarms of type Alarm indication signal, Remote defect indication and Loss of continuity.</description>
+ <value>7</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AtmCounterMode">
+ <enumMember name="PM_MODE_OFF">
+ <description>Performance monitoring is turned off. PM counters give irrelevant values.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="PM_MODE_ONLYCOUNT">
+ <description>Performance monitoring counters are active
+</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="PM_MODE_FPM">
+ <description>FPM, Forward Performance Monitoring activated.
+
+Performance monitoring counters are active
+</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="PM_MODE_BR">
+ <description>Backward reporting, BR, cells are generated.
+
+Performance monitoring counters are active
+</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="PM_MODE_FPM_BR">
+ <description>FPM, Forward Performance Monitoring activated.
+
+Backward reporting, BR, cells are generated.
+
+Performance monitoring counters are active
+</description>
+ <value>6</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AtmNomPmBlkSize">
+ <description>Nominal performance monitoring, PM, blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.</description>
+ <enumMember name="NOM_PM_BLKSIZE_2_7">
+ <description>Nominal performance monitoring, PM, block size, 2e7 (2 to the power of 7).</description>
+ <value>128</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_8">
+ <description>Nominal performance monitoring, PM, block size, 2e8 (2 to the power of 8).</description>
+ <value>256</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_9">
+ <description>Nominal performance monitoring, PM, block size, 2e9 (2 to the power of 9).</description>
+ <value>512</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_10">
+ <description>Nominal performance monitoring, PM, block size, 2e10 (2 to the power of 10).</description>
+ <value>1024</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_11">
+ <description>Nominal performance monitoring, PM, block size, 2e11 (2 to the power of 11).</description>
+ <value>2048</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_12">
+ <description>Nominal performance monitoring, PM, block size, 2e12 (2 to the power of 12).</description>
+ <value>4096</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_13">
+ <description>Nominal performance monitoring, PM, block size, 2e13 (2 to the power of 13).</description>
+ <value>8192</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_14">
+ <description>Nominal performance monitoring, PM, block size, 2e14 (2 to the power of 14).</description>
+ <value>16384</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_15">
+ <description>Nominal performance monitoring, PM, block size, 2e15 (2 to the power of 15).</description>
+ <value>32768</value>
+ </enumMember>
+ </enum>
+
+ <enum name="ServiceCategory">
+ <enumMember name="SERVICE_CATEGORY_CBR">
+ <description>Service category Constant Bit rate, CBR.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SERVICE_CATEGORY_UBR">
+ <description>Service category Unspecified Bit rate, UBR.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="SERVICE_CATEGORY_UBR_PLUS">
+ <description>Service category Unspecified Bit rate+, UBR+. UBR+ guarantees a certain bandwidth. If higher bandwidth is used it will be handled as UBR.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AtmQos">
+ <description>ATM's Quality of Service classes.
+
+The ATM layer system provides four QoS classes, numbered 1 to 4, where CLASS_ONE gives the best QoS in regards to Cell Loss Ratio &lt;CLR&gt; and Cell Delay Variation &lt;CDV&gt; and CLASS_FOUR doesn't give any QoS guarantees. CLASS_ONE and CLASS_TWO are the only classes applicable for real time traffic.</description>
+ <enumMember name="CLASS_ONE">
+ <description>CDV &lt; 1 ms (milliseconds), CLR &lt; 10e-8. Typically used by timing unit.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="CLASS_TWO">
+ <description>CDV &lt; 1 ms, CLR &lt; 10e-7. Typically used for speech.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="CLASS_THREE">
+ <description>CLR &lt; 10e-5. Typically used for signalling.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="CLASS_FOUR">
+ <description>Typically used for IP.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <struct name="ValueOfUnex">
+ <description>The attributes in this struct represents the ATM header, (vpi, vci, pti), of the last recieved unexpected cell.</description>
+ <structMember name="vpi">
+ <description>The ATM header vpi.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="vci">
+ <description>The ATM header vci.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="pti">
+ <description>The ATM header pti.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <class name="TransportNetwork">
+ <description>This MO structures the transport network of the managed element. It is created automatically and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, TransportNetwork=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="TransportNetworkId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="getAal5ForNniSaal">
+ <description>This action returns a sequnce of Aal5TpVccTp MOs that is unreserved and executes on an MP.
+
+Also the following condition has to be fullfilled:
+
+MinAal5Sdu = min (fromUserMaxSduSize, toUserMaxSduSize)
+
+roundedDownSdu = (MinAal5Sdu - (MinAal5Sdu modulo 4) +4)
+
+roundedDownSdu &gt; low boundry for maxSduSize (in NniSaalTp)
+
+Note that the values for fromUserMaxSduSize and toUserMaxSduSize is the actual values set in the Aal5TpVccTp MO.
+Also note that the attributes minAal5Sdu and roundedDownSdu is used internaly in this action.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ </action>
+ <action name="getAal5ForUniSaal">
+ <description>This action returns a sequnce of Aal5TpVccTp MOs that is unreserved and executes on an MP.
+
+Also the following condition has to be fullfilled:
+
+MinAal5Sdu = min (fromUserMaxSduSize, toUserMaxSduSize)
+
+roundedDownSdu = (MinAal5Sdu - (MinAal5Sdu modulo 4) +4)
+
+roundedDownSdu &gt; low boundry for maxSduSize (in UniSaalTp)
+
+Note that the values for fromUserMaxSduSize and toUserMaxSduSize is the actual values set in the Aal5TpVccTp MO.
+Also note that the attributes minAal5Sdu and roundedDownSdu is used internaly in this action.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ </action>
+ <action name="getAal2PathForAal2Pdu">
+ <description>This action returns a sequence of all unreserved Aal2PathVccTp's that have an Aal2PathId that has not been
+used by another Aal2PathDistributionUnit under the same parent (Aal2Ap).
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ <parameter name="aal2Ap">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="getRpuForAal2Pdu">
+ <description>This action returns a sequence of all ReliableProgramUniters that has not reached the maximun number of possible reservations
+and has not already been used by other Aal2PathDistributionUnit MO's (if exists) under the same parent (Aal2Ap MO).
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ <parameter name="aal2Ap">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="getUnreservedPluginUnits">
+ <description>This action returns a sequence of PlugInUnits that is unreserved.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ </action>
+ <action name="getDs0BundlesForMtp2">
+ <description>This action returns a sequence of Ds0Bundle MOs that is unreserved and only has one (1) timeSlot set in the listOfTimeSlots.
+The attribute tdmMode in these Ds0Bundles must be enabled.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="Slot">
+ <description>The Slot MO is used to represent a slot in a subrack. A slot can hold a plug-in-unit, a board, (represented by PlugInUnit MOs).
+
+The number of slots in a subrack is specified when defining the subrack.
+
+The system will automatically create the right number of Slot MOs in the subrack at creation of the Subrack MO.
+This MO cannot be deleted by an operator.
+
+The local distinguished names of this MO's are select with identity Slot=1 in the leftmost slot with incremental numbering towards the right in the subrack.. </description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>A user friendly name associated to the managed object
+
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="slotState">
+ <description>Gives the state of the slot.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="SlotState">
+ <defaultValue>free</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="slotNumber">
+ <description>The number of the position from the left side, starting from 1.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long/>
+ </dataType>
+ </attribute>
+ <attribute name="SlotId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="productData">
+ <description>This product data describes the plug-in-unit that is presently inserted. The information is only available when slotState = used.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <structRef name="OperProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="upgradeGroupId">
+ <description>The upgradeGroupId is able to group a number of PIUs, all in the group can be upgraded at the same time.
+
+If upgradeGroupTypeName is "", this attribute is not used.
+</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="upgradeGroupTypeName">
+ <description>The upgradeGroupTypeName, together with the upgradeGroupId, define an upgrade group.
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ManagedObject">
+ <description>The Managed Object MO is not part of the model. It is only used to have valid reference types for certain attributes. </description>
+ <attribute name="ManagedObjectId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="getType">
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="getId">
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="getParent">
+ <returnType>
+ <moRef name="ManagedObject"/>
+ </returnType>
+ </action>
+ <action name="getChildren">
+ <returnType>
+ <long/>
+ </returnType>
+ </action>
+ <action name="getFullDistinguishedName">
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="delete">
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="MoHasChildrenException"/>
+ <raisesException name="MoReservedByOtherUserException"/>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ <raisesException name="UndeletableMoException"/>
+ <raisesException name="TransactionRequiredException"/>
+ </action>
+ <action name="getLocalDistinguishedName">
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="create">
+ <returnType>
+ <moRef name="ManagedObject"/>
+ </returnType>
+ <raisesException name="MoNameAlreadyTakenException"/>
+ <raisesException name="AttrMissingAtCreateException"/>
+ <raisesException name="AttrNotSettableAtCreateException"/>
+ <raisesException name="IllegalParentException"/>
+ <raisesException name="MoCardinalityViolationException"/>
+ <raisesException name="NoSuchAttributeException"/>
+ <raisesException name="MoCanNotBeCreatedException"/>
+ <raisesException name="NoSuchFieldException"/>
+ <raisesException name="NotHandledAttributeTypeException"/>
+ <raisesException name="WrongAttributeTypeException"/>
+ <raisesException name="ValueOutOfRangeException"/>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ <raisesException name="TransactionRequiredException"/>
+ <raisesException name="IpException"/>
+ <raisesException name="IpFormatException"/>
+ <raisesException name="EquipException"/>
+ <raisesException name="AttrValueNotUniqueException"/>
+ <raisesException name="MaxNumberExceededException"/>
+ <raisesException name="MoReservedNotDeletableException"/>
+ </action>
+ </class>
+
+ <class name="VclTp">
+ <description>This MO is used to represent the termination of an external VC link in the node.
+
+Note that a maximum of 10 000 MO of this kind may be configured in a node.
+
+Note! The performance monitoring counters in the VclTp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="externalVci">
+ <description>Virtual Channel Idenitifier, VCI, value for this Virtual Channel Link, VCL.
+
+Range: 32 - 65535.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>32</min> <max>65535</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="atmTrafficDescriptorId">
+ <description>Reference to the AtmTrafficDescriptor profile.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="AtmTrafficDescriptor"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>User that have reserved this VclTp.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the VclTp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmReceivedAtmCells">
+ <description>Performance monitoring counter for number of received ATM cells.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTransmittedAtmCells">
+ <description>Performance monitoring counter for number of transmitted ATM cells.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the VclTp.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="VclTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="eteLoopBack">
+ <description>Used by VclTp to inforce a Virtual Channel end-to-end loopback.
+false=Failed, true=Succeded.
+
+Note! This action requires a transaction.
+
+</description>
+ <returnType>
+ <boolean/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="ManagedElement">
+ <description>The Managed Element MO is the top MO in the MOM. A management application will communicate with the Managed Element MO for the purpose of monitoring it and controlling it.
+
+The ManagedElement MO is automatically created and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="site">
+ <description>This attribute gives information about geographical location (e.g. place name).</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>255</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="logicalName">
+ <description>This attribute gives a logical name of a site.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>255</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productType">
+ <description>This attribute describes the product type and is always set to the value "Node".</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>Node</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productName">
+ <description>This attribute describes the implemented functionality. </description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>12</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productNumber">
+ <description>This attribute uniquely identifies the product (e.g. ROF123).</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>24</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productRevision">
+ <description>This attribute identifies the version of the product (e.g. R2A).</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>7</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ManagedElementId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>Restart the node with an unconditional reload.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="restartRank">
+ <in/>
+ <dataType>
+ <enumRef name="RestartRank">
+ </enumRef>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="Equipment">
+ <description>This Managed Object is used as a structural element for the network element, i.e. it only acts as a container for other MO:s. This MO structures the equipment of the network element.
+
+The local distinguished name of this MO is ManagedElement=1, Equipment=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="EquipmentId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Subrack">
+ <description>This MO is used to represent a subrack.
+</description>
+ <attribute name="userLabel">
+ <description>A free tag that a user can associated to the this managed object. The value has no relevance for the managed system.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="switchModule">
+ <description>A reference to a SwitchModule ManagedObject, from which the SwitchModule number can be retrived. That number describes how the subrack is connected to the node, i.e. how the subracks cables are connected to the hub subrack. (The hub subrack has switch module number 0).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="SwitchModule"/>
+ </dataType>
+ </attribute>
+ <attribute name="subrackType">
+ <description>There can only be one hub subrack in the node. The hub subrack is used to control switching and synchronization for the complete node.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="SubrackType">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="productType">
+ <description>This attribute describes the product type and is always set to the value "HW".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>"HW"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeProductData">
+ <description>This product data describes the subrack that is configured to be installed.
+
+</description>
+ <mandatory/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="subrackPosition">
+ <description>The position of this subrack within a cabinet.
+The purpose of this attribute is to help an operator locate the source of an error by letting the system put this
+information in alarms. The system does not use this information in any other way i.e. it does not affect the
+operation of the system.
+The subrack position is an integer (1-n) stating the cabinet Id, starting from the left and a letter (A-Z) stating
+the Subrack vertical position starting from the ground, e.g. 5C.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="cabinetPosition">
+ <description>The position of the cabinet (within a group of other cabinets) in which this subrack is placed.
+The purpose of this attribute is to help an operator locate the source of an error by letting the system put this information in alarms. The system does not use this information in any other way i.e. it does not affect the operation of the system.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SubrackId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="numberOfSlots">
+ <description>Defines the number of slot in the subrack. The default value is 28.
+
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>28</max>
+ </range>
+ <defaultValue>28</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalProductData">
+ <description>The operational product data describes the subrack that is actually installed.
+
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <structRef name="OperProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>A reference to the SwAllocation MO that has reserved this Subrack for Fan MO upgrades..
+The attribute is set/cleared by internal actions.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <action name="removeSlots">
+ <description>Removes the given number of Slot MOs from the model. The Slots with the highest slotNumber are removed. After the action no Slot will have apn = 0.
+The attribute numberOfSlots will be udated.
+
+If there is a child MO the action will fail and the MOHasChildrenException is thrown.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="numberOfSlotsToRemove">
+ <description>The number of slots to remove.</description>
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="LoadModule">
+ <description>This MO is used to represent software installed in the file system.
+
+LoadModule MO can represent files with executable code, files with text information
+(COI) or directories in Cello file system.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.
+
+Note! In order for a program to be reliable the following conditions must be fulfilled:
+
+1. The attribute 'loaderType' must be set to 'OseLoader'.
+2. The attribute 'oseProgramLoadClass' must be set to a value &gt; 100.
+3. The program must execute on a MP (Main Processor).
+
+</description>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productData">
+ <description>Product information data.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="loadModuleFilePath">
+ <description>The path to this load module in the file system, including the file name.
+
+Example: /c/load_modules/CXC112874R1A01
+where /c/load_modules/ is the directory and CXC112874R1A01 is the file name.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="loaderType">
+ <description>The type of the program loader.
+
+Note! This corresponds to LoaderName in the Upgrade Control File (UCF).</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="LoadModuleLoaderType">
+ <defaultValue>OseLoader</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="otherLoaderName">
+ <description>This attribute must have a value if the loaderType attribute equals other.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="preLoad">
+ <description>A recommendation to the system to (if possible) cache this load module close to where its program(s) execute(s), e.g. in a flash file system. The purpose of this attribute is to enable faster loading at restart of programs referring to this load module.
+
+
+
+
+</description>
+ <dataType>
+ <enumRef name="LoadModulePreLoadType">
+ <defaultValue>no</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="fileFormat">
+ <description>The file format (RPDOUT, html, java, fpga, ...).</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="oseProgramLoadClass">
+ <description>Specifies in which load phase programs of this load module should be started.
+
+Note: If the LoadModule is a java archive file (.jar) it will be loaded in the load phase of the java machine rather than according to its own oseProgramLoadClass.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="LoadClass">
+ <defaultValue>application</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reliableProgramLabel">
+ <description>Reliable program identity.
+Compare this to the reliableProgramLabel in ReliableProgramUniter MO.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="isDirectory">
+ <description>Indicates if the load module is a file or directory.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="oseProgramPoolSize">
+ <description>This attribute sets the size of the program pool size. In the referenced loadModule there is
+possible to set this value at create.
+This value will then be fetched by program and used at create if no value is submitted at
+create of the program Mo.
+The referenced load module has a default size defined at compile time which is used if no
+value is submitted at create of loadModule or the program Mo.
+
+Note! The value of this attribute is overwritten during Software Upgrade.
+
+Unit is byte.
+
+</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="oseProgramHeapSize">
+ <description>This attribute sets the size of the program heap size. In the referenced loadModule there is possible to set this value at create. This value will then be fetched by program and used at create if no value is submitted at create of the program Mo.
+The referenced load module has a default size defined at compile time which is used if no value is submitted at create of loadModule or the program Mo.
+
+Note! The value of this attribute is overwritten during Software Upgrade.
+
+Unit is byte.
+
+</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="programMustBeSingleton">
+ <description>Indicator whether the (OSE) program must be a singleton or not.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="moppletEntries">
+ <description>Contains all class that are to be initialised and started when the JVM restarts.
+Technical note: The class name must specify the full package and class name in standard Java syntax, e.g. "se.ericsson.cello.X" ; must implement the se.ericsson.cello.moframework.Mopplet interface and be found in this LoadModule.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <string>
+ <defaultValue/>
+ </string>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="LoadModuleId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByUpgradePackage">
+ <description>Indicates whether this MO has been reserved by the UpgradePackage MO or not.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Synchronization">
+ <description>This MO is used to administer synchronization references for the network synchronization function and to view the system clock state of Timing Unit boards.
+
+Synchronization can have 0 to 8 relations to other MOs. The only valid MOs where relations can exist are E1Physpathterm, J1Physpathterm, T1Physpathterm, Os155SpiTtp, TU Synchronization Reference, and ManagedObject (for the non-Cello RXI820 MO) MOs. Note that maximum number of relations to these MOs is 8 all together.
+
+The synchronization MO is automatically created and cannot be deleted.
+
+Note: An external ManagedObject that wishes to be connected to the Synchronization MO must implement the following interface se.ericsson.cello.equipment.SyncReservable!
+
+The local distinguished name of this MO is ManagedElement=1,TransportNetwork=1,Synchronization=1
+
+.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="degradationIsFault">
+ <description>Controls whether synchronization reference degradation (e.g. signal level degradation) is interpreted as a synchronization reference fault or not. Attribute value is only applicable for traffic carrying synchronization references</description>
+ <dataType>
+ <enumRef name="FaultCriteria">
+ <defaultValue>degrNotFault</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="systemClockA">
+ <description>State of system clock signal on Timing Unit A.
+Note that system clock generated by TU A (TU in slot 4) has higher priority than TU B (TU in slot 5) system clock, i.e. each device board uses system clocks according to this priority order.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="ClockState">
+ <defaultValue>unknownMode</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="systemClockB">
+ <description>State of system clock signal on Timing Unit B. Note that system clock generated by TU A (TU in slot 4) has higher priority than TU B (TU in slot 5) system clock, i.e. each device board uses system clocks according to this priority order.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="ClockState">
+ <defaultValue>unknownMode</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="syncReference">
+ <description>Set of synchronization reference physical resources. An MO reference to an TU synchronization reference MO implementation.
+A synchronization reference in added to the system by using action AddSyncRefResource.
+Note: if this attributes has value "Non-existing MO reference" then all the respective attributes of type sequence of 8 are not applicable.
+
+Note: The length of this sequence is always 8.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ <length>8</length>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="syncRefPriority">
+ <description>Synchronization reference priority.
+1 represents the highest and 8 the lowest priority. Every synchronization reference must have unique priority value. Value 0 means not applicable, that no synchronization with this priority is defined.
+This attribute is mandatory when adding a synchronization reference to the system (by using action addSyncRefResource).
+A priority value can be changed with the changeSyncRefPriority action provided that the priority is not already assigned to some other SyncRefResource.
+
+Note: The length of this sequence is always 8.</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long>
+ <range>
+ <min>0</min> <max>8</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ <length>8</length>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="syncRefActivity">
+ <description>Set of synchronization reference activity attributes.
+
+Note: The length of this sequence is always 8.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <enumRef name="RefActivity">
+ <defaultValue>inactive</defaultValue>
+ </enumRef>
+ <length>8</length>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="syncRefStatus">
+ <description>Set of synchronization reference status attributes.
+
+Note: The length of this sequence is always 8.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <enumRef name="RefState">
+ <defaultValue>failed</defaultValue>
+ </enumRef>
+ <length>8</length>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SynchronizationId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="systemClockRedundancy">
+ <description>Indicates if the node is redundant from Network Synchronization functions point of view.</description>
+ <dataType>
+ <enumRef name="SystemClockRedundancy">
+ <defaultValue>SYSTEM_CLOCK_USERS_USE_PLANE_A</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <action name="addSyncRefResource">
+ <description>This action adds one synchronization reference to the system. As a result of successful action, one set of attributes (attributes of type sequence of 8) is added to Synchronization MO.
+Parameters:
+syncReference: Managed object implementation, to which a mo-reference is to be added. See description of attribute SyncReference.
+syncPriority: Priority of synchronization reference. Each synchronization reference must have unique priority value, this must be checked by synchronization MO.
+
+Description of exceptions:
+- AlreadyRegistered: this reference is already registered
+- MaxNoOfRefRegistered: maximum number (8) of synchronization references already present
+- PriorityAlreadyInUse: syncPriority is identical with an existing synchronization reference priority
+- PriorityOutOfRange: invalid syncPriority value
+- InvalidMoReference: invalid syncReference for registration as a synchronization reference (invalid MO type)
+- NotPermitted: syncReference does not allow SyncReserve to be performed
+
+Note: An external ManagedObject that wishes to be connected to the Synchronization MO must implement the following interface se.ericsson.cello.equipment.SyncReservable!
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="syncReference">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <parameter name="syncPriority">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="AlreadyRegisteredException"/>
+ <raisesException name="MaxNoOfRefRegisteredException"/>
+ <raisesException name="PriorityAlreadyInUseException"/>
+ <raisesException name="PriorityOutOfRangeException"/>
+ <raisesException name="InvalidMoReferenceException"/>
+ <raisesException name="NotPermittedException"/>
+ </action>
+ <action name="removeSyncRefResource">
+ <description>This action removes one synchronization reference that has previously been added.
+(In future releases, this action should include a check whether the synchronization reference to be removed is the only existing synchronization reference. In that case, the user is asked for a confirmation to remove the last synchronization reference.)
+Parameters:
+syncReference: Managed object implementation, to which a mo-reference currently exists, but is now to be removed. See description of attribute SyncReference.
+
+Description of exceptions:
+- NotRegistered: synchronization reference is not registered
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="syncReference">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <raisesException name="NotRegisteredException"/>
+ </action>
+ <action name="changeSyncRefPriority">
+ <description>This action changes the synchronization priority of one previously registered synchronization reference resource.
+Parameters:
+syncReference: Managed object implementation, for which the synchronization priority is to be changed. See description of attribute syncReference.
+syncPriority: The new priority of synchronization reference. Each synchronization reference must have unique priority value, this must be checked by synchronization MO.
+
+Description of exceptions:
+- PriorityAlreadyInUse: syncPriority is identical with an existing synchronization reference priority
+- PriorityOutOfRange: invalid syncPriority value
+- NotRegistered: synchronization reference is not registered
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="syncReference">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <parameter name="syncPriority">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="PriorityAlreadyInUseException"/>
+ <raisesException name="PriorityOutOfRangeException"/>
+ <raisesException name="NotRegisteredException"/>
+ </action>
+ <action name="resetLossOfTracking">
+ <description>This action resets the detected Loss of Tracking error condition of one synchronization reference. After reset the synchronization reference is usable again.
+Parameters:
+syncReference: Specifies the synchronization reference for which the Loss of Tracking status is to be reset.
+
+Description of exceptions:
+- NotRegistered: synchronization reference is not registered
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="syncReference">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <raisesException name="NotRegisteredException"/>
+ </action>
+ </class>
+
+ <class name="SccpApLocal">
+ <description>This Managed Object represents an SCCP Local Access Point. An SCCP AP instance is a logical point in the SCCP network at which an SCCP user can access the services provided by the SCCP and the SCCP can deliver its services to the SCCP user. The SCCP Access Point is identified by a SubSystem Number (SSN).
+
+A local SccpAp represents an access point in the own node.
+
+The performance monitoring counters found in SccpApLocal MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a shutdown request from the CLI (Cluster Interface).</description>
+ <attribute name="SccpApLocalId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SCCP AP. The operability of the SCCP AP is described by this attribute which has two possible values:
+
+Disabled: The SCCP AP is totally inoperable and unable to provide the service to the user.
+
+Enabled: The SCCP AP is partly or fully operable and available for use.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="ssN">
+ <description>The sub system number, SSN, of the SCCP Access Point. Note that this has to be a unique number.
+
+If the SccpAp is local then the SSN has to be unique among all other SccpAp MOs under the same SccpSp MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxConn">
+ <description>The maxConn attribute specifies the max number of connections allowed for this SCCP Access Point. It is only valid for local SCCP Access Points.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>524288</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="useS1">
+ <description>Controls adding of OPC from routing label to Calling Party Address if absent.
+
+False = Do not add OPC to Calling Part Address.
+True = Add OPC to Calling Part Address.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpSp">
+ <description>The Signalling Connection Control Part, SCCP, Signalling Point, SP, MO is the placeholder for all SCCP related managed objects.
+
+Startime for accounting is set by attributes accountDateFileOutput and accountTimeFileOutput.
+The attribute accountPeriodFileOutput sets period for the accounting record to be stored on the /c file system.
+The accounting is stopped by setting the accountPeriodFileOutput to zero (0).
+NOTE: The SRP function and SccpAccountingCriteria MO's should only be created for one signalling stack, i.e one PIU.
+
+Note! The guiding values that can be found for some attributes is to be regarded as a recommendation for these attributes.
+Depending on the size of the network, traffic load, use and so forth it might be neccesary to set values for these attributes outside the guiding values.</description>
+ <attribute name="SccpSpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SCCP SP. The operability of the SCCP SP is described by this attribute which has two possible values:
+
+Disabled: The SCCP SP is totally inoperable and unable to provide the service to the user (e.g. if the processor is not usable).
+
+Enabled: The SCCP SP is partly or fully operable and available for use.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtp3bSpId">
+ <description>The identity of the L3 Signaling Point used by this MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="prioSST">
+ <description>This attribute sets the priority for the Subsystem Test message when issued by the SCCP itself. When a message is transferred from the SCCP the message priority uses the two spare bits in the SIO.
+Coding of the message priority:
+0 Lowest priority
+1
+2
+3 Highest priority</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="prioIT">
+ <description>This attribute sets the priority for the Inactivity Test message when issued by the SCCP itself. When a message is transferred from the SCCP the message priority uses the two spare bits in the SIO.
+Coding of the message priority:
+0 Lowest priority
+1
+2
+3 Highest priority</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="prioRLSD">
+ <description>This attribute sets the priority for the connection release message when issued by the SCCP itself. When a message is transferred from the SCCP the message priority uses the two spare bits in the SIO.
+Coding of the message priority:
+0 Lowest priority
+1
+2
+3 Highest priority</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="prioGeneral">
+ <description>This attribute sets the priority for all the other messages which are issued by the SCCP itself. When a message is transferred from the SCCP the message priority uses the two spare bits in the SIO.
+
+Coding of the message priority:
+
+0 Lowest priority
+1
+2
+3 Highest priority</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="accountDateFileOutput">
+ <description>Date for accounting file output.
+Format in ASCI-code: yyyymmdd
+yyyy = 0000-9999
+mm = 01-12
+dd = 01-31
+
+Note! This is the start date for the output.</description>
+ <dataType>
+ <string>
+ <defaultValue>"00000000"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="accountTimeFileOutput">
+ <description>Time for accounting file output.
+Format in ASCI-code: hhmm
+hh = 00-23
+mm = 00-59</description>
+ <dataType>
+ <string>
+ <defaultValue>"0000"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="accountPeriodFileOutput">
+ <description>Period for accounting file output.
+Format: number of half hour.
+Range = 0, 1, 2, 4, 6, 8, 12, 16, 24, 48
+
+Note! if set to 0 (zero) the output will be stopped.</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="upperConnThres">
+ <description>The upper connection threshold allow the user to specify the level at which the upper connection threshold notification is triggered. The thresholds must be given as a percentage of the maximum number of connection resources made available for the entire SCCP.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="lowerConnThres">
+ <description>The lower connection threshold allow the user to specify the level at which the lower connection threshold notification is triggered. The thresholds must be given as a percentage of the maximum number of connection resources made available for the entire SCCP. The value must be less then UpperConnThres.
+
+The maximum value is less or equal to the upper connection threshold</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="swapUDTPointer">
+ <description>There are two ways to construct a UDTS from a UDT, the XUDTS will be constructed in the same way. One way is to only swap the pointers to Called Party Address and Calling Party Address in a UDT message when constructing a UDTS. The other way is to swap data. How this is done in the SCCP is configurable. The coding and interpretation is as follows:
+0, swap data Called party Address will be sent before Calling party Address
+1, swap pointers Called party Address will be sent after Calling party Address.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hopCounterSclc">
+ <description>The SCLC hop counter is a parameter that is decremented for each performed GT translation for SCLC messages on the way to the end destination. If decrementing the counter results in the value of zero in a non-end destination node, the SCCP initiates the appropriate error procedure.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>15</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hopCounterScoc">
+ <description>The SCOC hop counter is a parameter that is decremented for each performed GT translation for SCOC messages on the way to the end destination. If decrementing the counter results in the value of zero in no end destination node, the SCCP initiates the appropriate error procedure.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>15</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tconnEst">
+ <description>Connection establishment control timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 600 - 1200, Default 600
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tIas">
+ <description>Send inactivity control timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 3000-6000
+Default 3000</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>3000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tIar">
+ <description>Receive inactivity control timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 6600-12600
+Default 6600</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>6600</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tRel">
+ <description>Connection release timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 100-200
+Default 100</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tCong">
+ <description>Congestion timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 10-2550
+Default 300</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tStatInfo">
+ <description>Subsystem Status Test timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 10-2550
+Default 300</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tconnResp">
+ <description>Connection response waiting timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 100-200
+Default 150</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>150</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tReass">
+ <description>Reassembly timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 100-200
+Default 150</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>150</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tGuard">
+ <description>Guard timer for program restart not applicable for this CPP version. Instead a restart counter is used to improve restart performance.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 13800-15000 (23-25 minutes)
+Default 1380 (23 minutes)
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>13800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="smiValue">
+ <description>The SMI (Subsystem Multiplicity Indicator) is always ignored for incoming messages. This SCCP can however be configured to insert a specific SMI value in outgoing messages. The coding and interpretation is as follows:
+
+Coding Comment
+ 0 | Affected Subsystem multiplicity unknown.
+ 1 | Affected Subsystem is solitary.
+ 2 | Affected Subsystem is duplicated.
+ 3 | Spare.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="useSCMG">
+ <description>The use of SCMG functions.
+
+SST = SCCP Subsystem Test message.
+SSA = SCCP Subsystem Allowed message.
+SSP = SCCP Subsystem Prohibited message.
+SSC = SCCP Subsystem Congested message.
+
+The attributes contained in the struct is:
+initiateTimerTcon,
+allowRemoteBroadcast,
+useSST,
+useSSP,
+sendSSA,
+sendSST
+
+</description>
+ <dataType>
+ <structRef name="Scmg"/>
+ </dataType>
+ </attribute>
+ <attribute name="maxRelayedConn">
+ <description>Connection Oriented SCCP Signaling Relay Point (SRP-CO) and Maximum number of Relayed Connections is not used in this CPP version.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>524288</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUDTSent">
+ <description>Performance monitoring counter for number of sent UDT's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUDTRec">
+ <description>Performance monitoring counter for number of received UDT's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUDTSSent">
+ <description>Performance monitoring counter for number of sent UDTS's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUDTSRec">
+ <description>Performance monitoring counter for number of received UDTS's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfXUDTSent">
+ <description>Performance monitoring counter for number of sent XUDT's.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfXUDTRec">
+ <description>Performance management counter for number of received XUDT's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfXUDTSSent">
+ <description>Performance monitoring counter for number of sent XUDTS's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfXUDTSRec">
+ <description>Performance monitoring counter for number of received XUDTS's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCRSent">
+ <description>Performance monitoring counter for number of sent CR's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCRRec">
+ <description>Performance monitoring counter for number of received CR's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDT1Sent">
+ <description>Performance monitoring counter for number of sent DT1's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDT1Rec">
+ <description>Performance monitoring counter for number of received DT1's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfERRSent">
+ <description>Performance monitoring counter for number of sent ERR's.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfERRRec">
+ <description>Performance monitoring counter for number of received ERR's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSubsysAllowedSent">
+ <description>Performance monitoring counter for number of sent SSA's, subsystem allowed.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCREFRecFromNL">
+ <description>Performance monitoring counter for number of CREF messages received from NL.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCREFSentToNL">
+ <description>Performance monitoring counter for number of CREF messages sent to NL.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRLSDRecFromNL">
+ <description>Performance monitoring counter for number of RLSD messages received from NL.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRLSDSentToNL">
+ <description>Performance monitoring counter for number of RLSD messages sent to NL.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfConInUseExceedHighWaterMark">
+ <description>Performance monitoring counter for number of connections in use that has exceeded the high watermark threshold.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfConInUseReceededLowWaterMark">
+ <description>Performance monitoring counter for number of connections in use that has receded the low watermark threshold.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLUDTRec">
+ <description>Performance monitoring counter for number of received LUDT messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLUDTSSent">
+ <description>Performance monitoring counter for number of sent LUDTS messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpScrc">
+ <description>The Signalling Connection Control Part Routing Control (SCCP SCRC) MO holds information about the SCCP routing control.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SccpScrcId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailure">
+ <description>Performance monitoring counter for number of routing failures.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfConnectFailure">
+ <description>Performance monitoring counter for number of connect failures.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfHopCounterViolation">
+ <description>Performance monitoring counter for number of Hop counter violations.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailNoTransAddrOfSuchNature">
+ <description>Performance monitoring counter for number of routing failures due to no translation for Nature of Address field.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailNoTransSpecificAddr">
+ <description>Performance monitoring counter for number of routing failures due to no translation of specific address.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailurePointCodeUnAvail">
+ <description>Performance monitoring counter for number of routing failures due to destination point code not available.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailNetworkCongest">
+ <description>Performance monitoring counter for number of routing failures due to network congestion.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailSubsysUnavail">
+ <description>Performance monitoring counter for number of routing failures due to destination subsystem unavailable.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailReasonUnknown">
+ <description>Performance monitoring counter for number of routing failures due to unknown reason.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailUnequippedSubsys">
+ <description>Performance monitoring counter for number of routing failures due to unequipped subsystem.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Program">
+ <description>The Program MO represent the executable software on the target hardware.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.
+
+Note! Some programs are not possible to restart or can take part in an RPU. For more information please refer to the LoadModule MO.
+
+</description>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="loadModule">
+ <description>This attribute gives information about which load module the program is instantiated from.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="LoadModule"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute shows whether the program has normal performance capability or not.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="startState">
+ <description>This attribute shows whether the program is permitted to enter operational state enabled or not after a PIU restart. The default state is disabled in order to avoid that an operating program and a new version of the same program have its startState enabled at the same time.
+
+It is used on all types of node restarts and restart of PlugInUnit with restartCause = piuRestartUpgrade.</description>
+ <dataType>
+ <enumRef name="StartState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="heapSize">
+ <description>This attribute sets the size of the program heap size.
+
+The value in the referenced LoadModule is fetched by program and used at create if no value is submitted at create of the program MO.
+
+The referenced load module has a default size defined at compile time wich is used if no value is submitted at create of loadModule or the program Mo.
+
+Note! The value of this attribute is overwritten during Software Upgrade.
+
+Note: If the program is a child to a Fan Mo this attribute is irrelevant.
+
+Note: Setting of this attribute will have no effect until the program is restarted.</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="poolSize">
+ <description>This attribute sets the size of the program pool size. In the referenced LoadModule there is possible to set this value at create.
+
+The value in the referenced LoadModule is fetched by program and used at create if no value is submitted at create of the program MO.
+
+The referenced load module has a default size defined at compile time wich is used if no value is submitted at create of
+LoadModule or the Program Mo.
+
+Note! The value of this attribute is overwritten during Software Upgrade.
+
+Only working for MP-Program
+
+Unit is bytes.
+
+Note: If the program is a child to a Fan Mo this attribute is irrelevant.
+
+Note: Setting of this attribute will not have any effect until the program is restarted.
+
+</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="restartTimer">
+ <description>This type specifies the time that a program have to execute without faults, until the restart counter is reset. The time value is interpreted as seconds.
+
+restartTimer= -1 : Forever, implies that the restart counter is only reset when the PIU is restarted.
+
+Note: If the program is a child to a Fan Mo this attribute is irrelevant.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>-1</min>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="restartCounterLimit">
+ <description>This attribute specifies the number of times that a program can restart, without escalation to a PIU restart. The possible values are:
+
+restartCounterLimit = -1 : Unlimited, means never restart PIU, regardless of the number of times the specific program restarts.
+
+Note: If the program is a child to a Fan Mo this attribute is irrelevant.
+
+Note! The value 3 means 3 restarts, hot, warm and finally as a last resort PIU restart.
+
+Note! The program escalates to a PIU restart when the number of restarts reaches the value set for this attribute.
+I.e. if for example the value is set to 5, escalation to PIU restart will occur at the fifth restart.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>-1</min>
+ </range>
+ <defaultValue>3</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ProgramId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>Request to restart the program.
+Only valid for MP programs.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="UniSaalProfile">
+ <description>The UniSaal Profile MO represent and keeps attribute values used by one or more UNI SAAL termination point MOs.</description>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="UniSaalTp"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <description>See structure UniSaalProfileData</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="UniSaalProfileData"/>
+ </dataType>
+ </attribute>
+ <attribute name="UniSaalProfileId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="UniSaalTp">
+ <description>The MO represents an access point for a user where a UNI SAAL connection is terminated. The access point depends
+on an AAL5 connection termination located on the same processor.
+
+UniSaalTp can only terminate on a Mp processor.
+
+Note! The performance monitoring counters found in NniSaalTp MO is set to zero when the Mo and its RO is created.
+These counters are not reset unless there occurs a fault situation that demands a restart and recreation of the ROs.
+Also note that some of these counters are reset based on other conditions. For more details please refer to the
+descriptions of the performance monitoring counters in this MO.</description>
+ <attribute name="UniSaalTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the UniSaalTp MO.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="uniSaalProfileId">
+ <description>Reference to a UniSaalProfile MO.
+
+The maxStat attribute defined in the UniSaalProfile MO is dependent on the AAL5 SDU size defined in the Aal5TpVccTp MO. See the description of the maxStat attribute in the UniSaalProfile MO.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="UniSaalProfile"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpId">
+ <description>Reference to an Aal5TpVccTpMo.
+
+Note: The Aal5 termination point must terminate on a main processor, MP.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Aal5TpVccTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="maxSduSize">
+ <description>Maximum SAAL SDU size. The attribute is dependent on the AAL5 maximum SDU size defined in the Aal5TpVccTp MO. The 'maxSduSize' may not exceed the AAL5 maximum SDU size (the lower of the two directions, fromUserMaxSduSize and toUserMaxSduSize).
+
+Example: If 'fromUserMaxSduSize' is set to 256 and 'toUserMaxSduSize' is set to 512 in the Aal5TpVccTp MO, the ' maxSduSize' in the UniSaalTp MO may not exceed 252.
+
+(i.e. maxSduSize &lt;= the aal5MaxSduSize - 4 bytes)
+
+Note! When setting the value of 'maxSduSize' the 4 bytes used by the SAAL layer for the SAAL header has to be considered.
+
+Note! The upper limit of 2044 (2048 including the SAAL header) is due to limitations on the AAL5 layer.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>128</min> <max>2044</max>
+ </range>
+ <defaultValue>128</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSentSDUs">
+ <description>Number of successfully sent SDUs.
+Counts the number of successfully sent messages to the
+application using SAAL. Reset when the link goes InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReceivedSDUs">
+ <description>Number of successfully received SDUs.
+Counts the number of successfully received messages from
+ the application using SAAL. Reset when the link goes
+ InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLinkInServiceTime">
+ <description>The accumulated time (in seconds) the signalling link has
+ been in service (in assured data transfer mode) since it was created. If the link is down the value 0 is returned.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAllSLFailures">
+ <description>Number of all Signalling Link failures.
+Is a total sum of the error counters:
+ - Number of protocol errors
+ - Number of unsuccessfully retransmissions
+ - Number of NoResponses
+ - Number of other errors</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNoResponses">
+ <description>Number of no response. This counter is increased when SSCOP (Service Specific Connection Oriented Protocol)
+send an MaaError with error code P.
+For details refer to ITU-T Q.2110 - B-ISDN AATM Adaptation Layer - Service Specific Connection Oriented Protocol (SSCOP); (7/94).
+Counts the number of no responses detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalCongestions">
+ <description>Number of local congestions.
+This counter is increased when the sum of SAAL send and retransmission buffers are filled to more than 90%.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRemoteCongestions">
+ <description>Number of remote congestions.
+This counter is increased when the remote side gives SAAL no credit. Reset when the link goes InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSequenceDataLosses">
+ <description>Number of sequences data loss.
+Counts the number of SD loss detected the last 30 minutes</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfProtocolErrors">
+ <description>Number of unsolicited or inappropriate PDUs. This counter is increased when SSCOP (Service Specific Connection Oriented Protocol)
+send an MaaError with error code Q.
+For details refer to ITU-T Q.2110 - B-ISDN AATM Adaptation Layer - Service Specific Connection Oriented Protocol (SSCOP); (7/94).
+Counts the number of protocol errors detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccReTransmissions">
+ <description>Number of unsuccessful retransmissions.
+Counts the number of unsuccessfully retransmissions detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOtherErrors">
+ <description>Number of other list element errors. This counter is increased when SSCOP (Service Specific Connection Oriented Protocol)
+send an MaaError with error code Q-U.
+For details refer to ITU-T Q.2110 - B-ISDN AATM Adaptation Layer - Service Specific Connection Oriented Protocol (SSCOP); (7/94).
+Counts the number of other errors detected the last 30 minutes. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="E1PhysPathTerm">
+ <description>This MO represents an E1 (i.e. 2 Mbit/s) physical interface in the node. The E1PhysPathTerm MO does not define which type of traffic (TDM or ATM) that the interface should support.
+Please refer to the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+Note! The performance monitoring counters in the E1PhysPathTerm MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>8</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>This attribute describes the current Loopback State of this physical path termination.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance Monitoring counter for ES, Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="E1PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="crc4Mode">
+ <description>Indicates what Cyclical Redundancy Check 4 Mode that is being used.</description>
+ <dataType>
+ <enumRef name="Crc4Mode">
+ <defaultValue>AUTOMATIC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="idlePattern">
+ <description>The idle pattern.
+
+NOTE: Going from A_LAW or U_LAW to UNDEFINED is always allowed but setting up one ET board with
+both U_LAW and A_LAW is not allowed.
+E.g. If you want to change from A_LAW to U_LAW on one ET board you have to change idlePattern
+on each physical port belonging to the board to UNDEFINED first.
+A_LAW -&gt; UNDEFINED -&gt; U_LAW or U_LAW -&gt; UNDEFINED -&gt; A_LAW</description>
+ <dataType>
+ <enumRef name="IdlePattern">
+ <defaultValue>UNDEFINED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="degDegThr">
+ <description>The threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+This is a percentage value.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="degDegM">
+ <description>How many bad seconds in a row that causes a Degraded Signal alarm.
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="J1PhysPathTerm">
+ <description>This MO represents an J1 (i.e. 1.5 Mbit/s) physical interface in the node. The J1PhysPathTerm MO does not define which type of traffic (TDM or ATM) that the interface should support.
+Please refer to the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+The performance monitoring counters in the J1PhysPathTerm MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <attribute name="J1PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>8</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="physicalLineType">
+ <description>Supported interfaces is defined in J1Types</description>
+ <dataType>
+ <enumRef name="J1Type">
+ <defaultValue>j1_G</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="degThreshold">
+ <description>Maximum allowed BER(Bit Error Rate). Degraded signal (DEG) if BER &gt; degThreshold. The attribute gives a maximum BER of 10e-X, where X ranges from 5 to 9 (default 6)
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>3</min> <max>9</max>
+ </range>
+ <defaultValue>6</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>Possible values
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+system - The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter for Errored Seconds, ES.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Severly Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="idlePattern">
+ <description>The idle pattern.
+
+NOTE: Going from A_LAW or U_LAW to UNDEFINED is always allowed but setting up one ET board with
+both U_LAW and A_LAW is not allowed.
+E.g. If you want to change from A_LAW to U_LAW on one ET board you have to change idlePattern
+on each physical port belonging to the board to UNDEFINED first.
+A_LAW -&gt; UNDEFINED -&gt; U_LAW or U_LAW -&gt; UNDEFINED -&gt; A_LAW</description>
+ <dataType>
+ <enumRef name="IdlePattern">
+ <defaultValue>UNDEFINED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal0TpVccTp">
+ <description>This MO is used to represent the point in the node where an AAL0 connection is terminated. At this point the user exchange SDUs with its peer at the remote end of the AAL0 connection.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time
+of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0.
+
+</description>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="processorId">
+ <description>This attribute specifies on what processor the termination point resides. It could either be a board processor or main processor (MO type PlugInUnit), or a SP processor (MO type Spm).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational State reflects the operational state of the end points and the belonging node connections.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpId">
+ <description>The virtual channel to which this MO is termination.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="Aal0TpVccTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuitiy checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second.
+
+Activates VC end to end continuityCheck according to ITU.T rec I.610.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlkSize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>PM mode is set to indicate type of performance monitoring mode (i.e. activation of bidirectional PM measurements).
+
+</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for forwarded lost cells.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forwarded missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forwarded errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal5TpVccTp">
+ <description>This MO is used to represent the point in the node where an AAL5 connection is terminated. At this point the user exchanges SDUs with its peer at the remote end of the AAL5 connection.
+
+Note! The 'mtuSize' on the IpAtmLink MO does not include 8 bytes required for the LLC/SNAP header and this should be taken into consideration when setting the SduSize on the Aal5TpVccTp MO.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time
+of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0..</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="processorId">
+ <description>This attribute specifies on what processor the protocol is terminated. It could either be a board processor or main processor (PlugInUnit) or a SP processor (Spm).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpId">
+ <description>The virtual channel to which this MO is termination.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational State reflects the operational state of the end points and the belonging node connections.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="fromUserMaxSduSize">
+ <description>The maximum SDU size in number of octets received from the user (called maxIngressSduSize in the FRO domain).
+
+The allowed range is dependent on the processorType.
+SP: LowestMaxSduSize =1, HighestMaxSduSize=1600
+BP: LowestMaxSduSize =1, HighestMaxSduSize=1600
+MP:LowestMaxSduSize =1, HighestMaxSduSize=2048</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2048</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="toUserMaxSduSize">
+ <description>The maximum SDU size in number of octets sent to the user (called maxEgressSduSize in the FRO domain). This attribute is controlled by the processor type.
+
+The allowed range is dependent on the processorType.
+SP: LowestMaxSduSize =1, HighestMaxSduSize=1600
+BP: LowestMaxSduSize =1, HighestMaxSduSize=1600
+MP:LowestMaxSduSize =1, HighestMaxSduSize=2048</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2048</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The attribute is set by the action reserve from a user of Aal5TpVccTp. It could either be a Cello user like IpAtmLink/UniSaalTp or a node application.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="Aal5TpVccTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuitiy checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second. Continuity check both enables generation of CC cells as well as detection of LOC
+</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlkSize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.
+</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>PM mode is set to indicate type of performance monitoring mode (i.e. activation of bidirectional PM measurements).
+
+</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for number of lost forward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="AtmPort">
+ <description>The AtmPort MO is used to configure a physical port for ATM traffic.
+ATM can be transported accross the physical layer in three distinct and different ways:
+
+- Normal mode
+
+An AtmPort MO is created with a reference to physical layer object (any of E1PhysPathTerm,
+J1PhysPathTerm, T1PhysPathTerm, E3PhysPathTerm, T3PhysPathTerm, Sts3CspeTtp, E1Ttp, T1Ttp or Vc4Ttp).
+The payload of that physical layer object is used to transport the ATM traffic.
+
+- Fractional ATM mode
+
+An AtmPort MO is created with a reference to a Ds0Bundle object. The Ds0Bundle specifies
+in this case the timeslots on the physical layer (any of E1PhysPathTerm,J1PhysPathTerm,
+T1PhysPathTerm, T1Ttp or E1Ttp) that should be used for ATM traffic. The remaining timeslots
+are not used at all.
+I.e. when fractional ATM is used only one Ds0Bundle can exist as a child to a physical port MO.
+
+- IMA mode
+
+In IMA mode, a number of physical ports are grouped together to form one "virtual" physical
+ATM pipe. In this mode the AtmPort MO is created with a reference to an IMAGroup MO.
+Please refer to the ImaGroup MO for further details.
+
+Note! The performance monitoring counters in the AtmPort MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again..
+
+
+</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="AtmPortId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the ATM port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the AtmPort.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmTransmittedAtmCells">
+ <description>Performance monitoring counter for number of transmitted ATM cells through the ATM port. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmReceivedAtmCells">
+ <description>Performance monitoring counter for number of received ATM cells through the ATM port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="valueOfLastCellWithUnexp">
+ <description>This attribute returns the ATM header, (vpi, vci, pti), of the last received unexpected cell.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <structRef name="ValueOfUnex"/>
+ </dataType>
+ </attribute>
+ <attribute name="uses">
+ <description>Reference to the physical port, IMA Group or Ds0Bundle used by the ATM port.
+
+The possible MOs are:
+E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E3PhysPathTerm, T3PhysPathTerm, Sts3CspeTtp, Sts1SpeTtp, Vc4Ttp, E1Ttp, T1Ttp, Ds0Bundle and ImaGroup.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmSecondsWithUnexp">
+ <description>Performance monitoring counter for errored seconds with discarded cells due to protocol errors (unexpected, UNEX, events).
+
+I.610: With protcol errors is meant the reception of cells with either a non-standardized or a non-currently allocated header value.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hecCorrectionMode">
+ <description>Header Error Correction.
+
+This attribute specifies if the AtmPort should detect and correct single bit errors or detect multiple bit errors in the ATM header.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bAp">
+ <description>This MO represents an MTP3b Access Point (in a remote node). An MTP3b AP is a logical point in the MTP network at which an
+MTP3b user can access the services provided by MTP3b and the MTP3b can deliver its services to the MTP3b user.
+
+The performance monitoring counters found in Mtp3Ap MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetId">
+ <description>The routeSetId attribute points out the MTP3b Signalling Route Set (SRS) to which the Mtp3bAp MO is connected. </description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Mtp3bSrs"/>
+ </dataType>
+ </attribute>
+ <attribute name="serviceInd">
+ <description>The serviceInd attribute (Service Indicator, SI) is used by traffic handling functions to perform message distribution.
+Only SI=3 for SCCP usage and SI=12 for Q.2630.1 usage and SI=14 for GCP (H.248) usage have any meaning in this case.
+
+Full range of values for attribute SI:
+0 = Signalling network management messages
+1 = Signalling network testing &amp; maintenance regular messages
+2 = Signalling network testing &amp; maintenance special messages*
+3 = SCCP
+4 = Telephone User Part (TUP)
+5 = ISDN User Part (ISUP)
+6 = Data User Part, call and circuit related messages
+7 = Data User Part, facility registration and cancellation messages
+8 = MTP Testing User Part
+9 = Broadband ISDN User Part
+10 = Satellite ISDN User Part
+11 = Spare
+12 = Q.2630.1
+13 = Spare
+14 = H.248
+15 = Spare
+
+Note! The serviceIndicator has to be unique for each Mtp3bAp witin the same Mtp3bSrs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute determines the operational status of the MTP3b AP .
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp3bApId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUserPartUnavailRec">
+ <description>A performance management counter for number of received User Part Unavailable messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAdjacentSPNotAccessible">
+ <description>Performance management counter for number of Adjacent SP's that are not accessible via direct links.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="NniSaalProfile">
+ <description>The NniSaal Profile MO represents and keeps attribute values used by one or more NNI SAAL termination point MOs.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of NniSaalTps that have reserved this NniSaalProfile.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="NniSaalTp"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <description>See structure NniSaalProfileData.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="NniSaalProfileData"/>
+ </dataType>
+ </attribute>
+ <attribute name="NniSaalProfileId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="NniSaalTp">
+ <description>The MO represents an access point for a user where a NNI SAAL connection is terminated. The access point depends
+on an AAL5 connection termination located on the same processor.
+
+NniSaalTp can only terminate on a Mp processor.
+
+Note! The performance monitoring counters found in NniSaalTp MO is set to zero when the Mo and its RO is created.
+These counters are not reset unless there occurs a fault situation that demands a restart and recreation of the ROs.
+Also note that some of these counters are reset based on other conditions. For more details please refer to the
+descriptions of the performance monitoring counters in this MO.</description>
+ <attribute name="NniSaalTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the NniSaalTp MO.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="nniSaalProfileId">
+ <description>Reference to a NniSaalProfile MO.
+
+The maxStat attribute defined in the NniSaalProfile MO is controlled by the AAL5 SDU size defined in the Aal5TpVccTp MO. See the description of the maxStat attribute in the NniSaalProfile MO.
+
+Note! The consistency check of the attributes in the two MOs mentioned above could not be performed until the NniSaalTp MO was created since there is no direct relation between the objects. It is therefore the responsibility of NniSaalTp to verify the consistency.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="NniSaalProfile"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpId">
+ <description>Reference to a Aal5TpVccTp MO.
+
+Note: The Aal5 termination point must terminate on a main processor, MP.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Aal5TpVccTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="maxSduSize">
+ <description>Maximum SAAL SDU size. The attribute is dependent on the AAL5 maximum SDU size defined in the Aal5TpVccTp MO. The 'maxSduSize' may not exceed the AAL5 maximum SDU size (the lower of the two directions, fromUserMaxSduSize and toUserMaxSduSize).
+
+Example: If 'fromUserMaxSduSize' is set to 256 and 'toUserMaxSduSize' is set to 512 in the Aal5TpVccTp MO, the ' maxSduSize' in the NniSaalTp MO may not exceed 252.
+
+(i.e. maxSduSize &lt;= the aal5MaxSduSize - 4 bytes)
+
+Note! When setting the value of 'maxSduSize' the 4 bytes used by the SAAL layer for the SAAL header has to be considered.
+
+Note! The upper limit of 2044 (2048 including the SAAL header) is due to limitations on the AAL5 layer.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>128</min> <max>2044</max>
+ </range>
+ <defaultValue>128</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSentSDUs">
+ <description>Number of successfully sent SDUs.
+Counts the number of successfully sent messages to the
+application using SAAL. Reset when the link goes InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReceivedSDUs">
+ <description>Number of successfully received SDUs.
+Counts the number of successfully received messages from
+ the application using SAAL. Reset when the link goes
+ InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLinkInServiceTime">
+ <description>The accumulated time (in seconds) the signalling link has
+ been in service (in assured data transfer mode) since it was created. If the link is down the value 0 is returned.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAllSLFailures">
+ <description>Number of all Signalling Link failures.
+Is a total sum of the error counters:
+ - Number of protocol errors
+ - Number of unsuccessfully retransmissions
+ - Number of NoResponses
+ - Number of other errors</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNoResponses">
+ <description>Number of no response.
+Counts the number of no responses detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalCongestions">
+ <description>Number of local congestions.
+This counter is increased when the sum of SAAL send and retransmission buffers are filled to more than the congestionOnSet attribute is configured to..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRemoteCongestions">
+ <description>Number of remote congestions.
+This counter is increased when the remote side gives SAAL no credit. Reset when the link goes InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAlignmentFailures">
+ <description>Number of alignment or proving failures. This counter is
+increased when "alignment not successful".
+The counter is reset when the link is created or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSequenceDataLosses">
+ <description>Number of sequences data loss.
+Counts the number of SD loss detected the last 30 minutes</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfProtocolErrors">
+ <description>Number of unsolicited or inappropriate PDUs.
+Counts the number of protocol errors detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccReTransmissions">
+ <description>Number of unsuccessful retransmissions.
+Counts the number of unsuccessfully retransmissions detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOtherErrors">
+ <description>Number of other list element errors.
+Counts the number of other errors detected the last 30 minutes. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="AtmTrafficDescriptor">
+ <description>This MO specifies traffic and QoS parameters for virtual channel connections.
+
+The attributes can only be set in certain combinations:
+
+CBR:
+ingressAtmQos /egressAtmQos:
+1, 2
+
+ingressAtmPcr /egressAtmPcr:
+mandatory (must be specified)
+
+ingressAtmMcr /egressAtmMcr:
+optional (not used, any value submitted will be ignored)
+
+UBR+:
+ingressAtmQos /egressAtmQos:
+3
+
+ingressAtmPcr /egressAtmPcr:
+optional (if shaping is used the desired rate is specified, 0 means no shaping)
+
+ingressAtmMcr /egressAtmMcr:
+mandatory (must be specified)
+
+UBR:
+ingressAtmQos /egressAtmQos:
+4
+
+ingressAtmPcr /egressAtmPcr:
+optional (not used, any value submitted will be ignored)
+
+ingressAtmMcr /egressAtmMcr:
+optional (not used, any value submitted will be ignored)
+
+Note that the VP sub layer only supports ServiceCategory = CBR and QoS = 1.
+
+Note! The performance monitoring counters in the AtmTrafficDescriptor MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <attribute name="AtmTrafficDescriptorId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>This MO's user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ingressAtmPcr">
+ <description>Ingress ATM Peak cell rate (cells/s).
+
+Only positive values are allowed. This attribute is only mandatory when serviceCategory is CBR or UBR_PLUS.
+
+Note! When 'serviceCategory' is set to UBR this attribute has no relevance and the value submitted is ignored by the system.
+
+Note! When 'serviceCategory' is set to UBR+ the value 0 (zero) means that shaping is not used. A value larger than the minimum desired cell rate enables shaping to the rate specified.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ingressAtmQos">
+ <description>Ingress ATM quality of service.
+
+This attribute can be set to Class 1 and 2 if attribute serviceCategory is set to CBR.
+
+This attribute can be set to Class 3 if attribute serviceCategory is set to UBR+.
+
+This attribute can be set to Class 4 if attribute serviceCategory is set to UBR.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="AtmQos">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="egressAtmPcr">
+ <description>Egress ATM Peak cell rate (cells/s).
+
+Only positive values allowed.
+
+This attribute is only mandatory when serviceCategory is CBR or UBR_PLUS.
+
+Note! When 'serviceCategory' is set to UBR this attribute has no relevance and the value submitted is ignored by the system.
+
+Note! When 'serviceCategory' is set to UBR+ the value 0 (zero) means that shaping is not used. A value larger than the minimum desired cell rate enables shaping to the rate specified.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="egressAtmQos">
+ <description>Egress ATM quality of service.
+
+This attribute can be set to Class 1 and 2 if attribute serviceCategory is set to CBR.
+
+This attribute can be set to Class 3 if attribute serviceCategory is set to UBR+.
+
+This attribute can be set to Class 4 if attribute serviceCategory is set to UBR.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="AtmQos">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Sequence of Users that are using this AtmTrafficDescriptor.
+
+
+</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="egressAtmMcr">
+ <description>Egress ATM minimum desired cell rate.
+
+Only positive values allowed. The attribute is only mandatory when serviceCategory is UBR+.
+
+Note! When 'serviceCategory' is set to CBR or UBR this attribute has no relevance and the value submitted is ignored by the system.
+
+Note! This attribute cannot have a value larger than for 'egressAtmPcr'.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ingressAtmMcr">
+ <description>Ingress minimum desired cell rate (cells/s).
+
+Only positive vaues allowed. This attribute is mandatory only when serviceCategory is UBR+.
+
+Note! When 'serviceCategory' is set to CBR or UBR this attribute has no relevance and the value submitted is ignored by the system.
+
+Note! This attribute cannot have a value larger than for 'ingressAtmPcr'.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="serviceCategory">
+ <description>The service category.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="ServiceCategory">
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSrs">
+ <description>This MO represents/models a MTP3b Signalling Route Set.
+
+The performance monitoring counters found in Mtp3Srs MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).</description>
+ <attribute name="Mtp3bSrsId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Mtp3bSrs MO.
+
+There are two possible states for the operationalState attribute:
+
+- enabled, the MO is partly or fully operational.
+- disabled, the MO is not operational.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The attribute is set by the local action Reserve.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="autoReroute">
+ <description>This flag indicates Whether automatic rerouting is performed(true) or not(false), between IP and ATM/TDM
+routes when configuration is made. If set to 'false', it has to be done manually, for ex. by management actions(orders).
+
+Note! The attribute 'autoReroute' will always be set to 'false' regardless of value submitted. This attribute is to be removed in coming releases.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </attribute>
+ <attribute name="destPointCode">
+ <description>The destPointCode attribute (destination point code, DPC) represents the point code of this Mtp3b SRS MO.
+The Destination Point Code in a Route Set has to be unique within each Signaling Point.
+
+Note! The format of destPointCode must correspond to the signallingPointCode format in the Mtp3bSp, i.e. ITU, ANSI, TTC or China.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16777215</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="congestedLevel">
+ <description>There are two possible states for the congestedLevel attribute:
+
+- notCongested, no change in congestion level.
+- congested, change in congestion level has occurred.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bCongestLevel">
+ <defaultValue>notCongested</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDiscardedMsgFromBroadToNarrow">
+ <description>Performance management counter for number of messages discarded from broadband to narrowband.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTransferControlledRec">
+ <description>Performance monitoring counter for number of received Transfer Control (TFC) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTransferProhibitedRec">
+ <description>Performance monitoring counter for number of received Transfer Prohibited (TFP) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTransferAllowedRec">
+ <description>Performance monitoring counter for number of received Transfer Allowed (TFA) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="routeSetTestAnyRoute">
+ <description>The route set test is only available for the Japanese Mtp3b, TTC.
+
+See JT-Q.707 for details.
+
+The test selects a route in the route set and tests it.
+
+Possible return codes are:
+
+0 : successful test
+48 : unsuccessful test
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ </action>
+ <action name="routeSetTestSpecificRoute">
+ <description>The route set test is only available for the Japanese Mtp3b, TTC.
+
+See JT-Q.707 for details.
+
+The test tests the specified route.
+
+Possible return codes are:
+
+0 : successful test
+48 : unsuccessful test
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <parameter name="routeId">
+ <in/>
+ <dataType>
+ <moRef name="Mtp3bSr"/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="PlugInUnit">
+ <description>This MO is used to represent a plug-in-unit, that is a board inserted in a slot in a subrack.
+
+Note! Before deleting the PlugInUnit MO, administrativeState must be set to locked.</description>
+ <attribute name="PlugInUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>A free tag that a user can associated to the this managed object. The value has no relevance for the managed system.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the PlugInUnit.
+
+The possibility to rollback the setting of this attribute is limited.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state is set to 'enabled' when the plug-in-unit has loaded and started its 'Basic' load module.</description>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="productType">
+ <description>This attribute describes the product type and is always set to the value "HW".</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>"HW"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="piuType">
+ <description>A reference to an available PiuType at create of a PIU.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PiuType"/>
+ </dataType>
+ </attribute>
+ <attribute name="piuGroupNumber">
+ <description>Indicates which restart group the plug-in unit belongs to.
+Such a group consists of a number of plug-in units where at least one must be enabled (working) or performing recovery. When all plug-in units in a group are out of function, the node is restarted.
+
+Must have a positive value.
+
+Zero indicates no group.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>65536</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. It is a bit mapped CORBA long, where one or more of the bits may be set. If none of the bits are set then the availability status is considered to be undefined.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of managed objects depending on PlugInUnit</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmProcessorLoad">
+ <description>The measurement is done over 100 ms, and returns the sum of load on processes up to, and including process priority 23. The sum is expressed in %
+
+Supported on MP, BP and SP boards.
+
+In case of SP boards the returned processor load is the load of the BP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="allowedSeqRestarts">
+ <description>The number of automatic (do not require intervention from a human operator) sequential restarts that are allowed for a PIU. When this number of automatic restarts has been exceeded, the automatic restarting halts and the PIU is faulty marked.
+
+The time limit between two restarts is 5 minutes. This means that if the time between two restarts
+is less then 5 minutes the restarts are counted, otherwise the restart counter is reset.
+
+For example, 3 means 3 restarts with time limit &lt; 5 minutes are accepted but when the 4:th occurs within 5 minutes the board is considered faulty and an alarm is generated.</description>
+ <dataType>
+ <enumRef name="SeqRestarts">
+ <defaultValue>RESTARTS_WITH_WARM</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>
+Note! The restartCause can have the following values:
+1 = restart error
+2 = restart upgrade
+
+Note! The restartCause piuRestartUpgrade overrides the restartRank value and gives mainly restartRank=warm (or restartRank=refresh in some upgrade situations.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="restartRank">
+ <in/>
+ <dataType>
+ <enumRef name="RestartRank">
+ </enumRef>
+ </dataType>
+ </parameter>
+ <parameter name="restartCause">
+ <in/>
+ <dataType>
+ <enumRef name="RestartCause">
+ </enumRef>
+ </dataType>
+ </parameter>
+ <raisesException name="ValueOutOfRangeException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="Mtp3bSls">
+ <description>This MO represents the SS7 Signalling Link Set as defined in Recommendation Q.704 Ver. 3, April 28 1992 (ITU) T1.111-1996 (ANSI), JT-Q.704 Ver. 3, April 28 1992 (TTC) or GF001-9001 1990 (China).
+
+It provides information about a set of signalling links between an OPC/Adjacent PC pair. A link set is constructed from between 1 to16 Signalling Links (for China, Itu, Ttc and the ANSI standard), all of which have the same two end points (signalling points) as the Signalling Link Set. A Signalling LInk Set may be part of many routes.</description>
+ <attribute name="Mtp3bSlsId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Use label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MTP3B SLS.
+
+The operability of the MTP3B SLS is described by the operationalState attribute which has two possible values:
+
+- Enabled: The MTP3B SLS is partly or fully operable and available for use. At least one of the belonging links (SL) is enabled.
+- Disabled: The MTP3B SLS is totally inoperable and unable to provide service to the user.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>The usageState reflects the usage state of the links in the link set. There are three possible values:
+
+- Active: At least one of the belonging SLs of the SLS is Active and no link is Busy.
+- Busy: If one of the belonging links is Busy.
+- Idle: All SLs of the SLS are Unavailable.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="periodicLinkTestFlag">
+ <description>The periodicLinkTestFlag indicates if periodic sending of SLTM/SLTA messages are used or not. The SLTM message will be sent on every link which is "aligned" at an interval of (SLTM timer). The answer, SLTA is supposed to arrive within (SLTA timer). If this doesnt happen, or if the received SLTA doesnt match the sent SLTM a second SLTM will be sent. If this SLTM also fail then the link will be considered 'out-of-service' and a restart of that link will begin.
+
+ANSI: true is default.
+ITU: true is default.
+China: true is default.
+TTC: false is default.
+
+Note that TTC does not use this feature.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="mtp3bSrsId">
+ <description>The mtp3bSrsId attribute points out the corresponding MTP3b Signalling Route Set MO (adjacentDPC).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Mtp3bSrs"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp3bSr"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="deactivateLinkSet">
+ <description>This action deactivates a link set, which means the containing signalling links are taken out of service.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ <action name="activateLinkSet">
+ <description>A linkset containing signalling links which are all out of service, is called a deactivated linkset. In order to start up the signalling links and get them into service, there is an Activate Link Set action, or rather, there are two similar actions for activation of a link set.
+
+If the action fails to activate a link the ActivationFailed exception is raised.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ <action name="emergencyActivateLinkSet">
+ <description>This action activates the signalling link with emergency alignment.
+It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="Mtp3bSr">
+ <description>This MO represents a MTP3b Signalling Route. A Signalling Route is used to convey MTP3b User messages from a origin SP to a destination SP (Signalling Point). This MO is multiple instansiated and is contained in the MO MTP3b Signalling Route Set. A Signalling Route is from a network point of view the sequence of link sets from a originating signalling point to a destination signalling point.
+
+Note! At least one signalling route in the signalling route set must have priority = 1.
+If lower priorities are defined the next level must be priority=2. (e.g. routes with priority =1 and =3 in a route set will not work).
+
+Note! Signalling Routes belonging to the same route set with the same priority must have the same type of bearer (Broad Band or Narrow Band).</description>
+ <attribute name="Mtp3bSrId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="linkSetM3uId">
+ <description>The MTP3b Signalling Link Set (MTP3bSls) or M3uAssociation to which the MTP3bSr MO is connected.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state notification.There are two possible states for the operationalState attribute:
+- enabled, possible to perform operations on the MTP3b SR.
+- disabled, not possible to perform operations on the MTP3b SR.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+-active, route is active.
+-busy, route is congested.
+-idle, route not in use.
+
+(idle=0, active=1, busy=2)
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="priority">
+ <description>The priority of the alternative route. The traffic is directed to the highest priority route(s) available in the route set. If more than one route has the same priority within a route set then loadsharing is permitted between these routes.
+The value 1 is considered as the highest priority.</description>
+ <mandatory/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>5</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routeType">
+ <description>The type of the route.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bRouteType">
+ <defaultValue>TDM_ATM</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="RouteBlockingState">
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="RouteState">
+ <defaultValue>NOT_BLOCKED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSecondsAccumulatedRouteUnavailable">
+ <description>The number of seconds (accumulated) route unavailable.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="blockSignalingRoute">
+ <description>This action blocks the Signaling Route.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="deBlockSignalingRoute">
+ <description>This action deblocks the Signaling Route.
+
+Note! This action requires antransaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="IpSystem">
+ <description>The IP System MO constitutes the top structure level for IP related MOs in a Cello node.
+
+The IpSystem MO is automatically created and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, IpSystem=1.
+</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>An operator defined label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="IpSystemId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="ping">
+ <description>Ping - used to call a host or router to find out if it is present in the network. The following input parameter is used by the Ping action:
+The domain name or IP address to the host that shall be called.
+
+The following parameter is returned:
+Ping result: 'IP address/domain name' - is alive or no answer.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <string/>
+ </returnType>
+ <parameter name="host">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="traceRoute">
+ <description>Trace route - used to get information about the route through the IP network that is used for a destination with a specific IP address.
+
+The following input parameter is used by the trace route action:
+The domain name or IP address to a host that shall be trace-routed.
+
+The following parameter is returned:
+Trace result - list of IP addresses/domain names or path not found.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <string/>
+ </returnType>
+ <parameter name="host">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="IpAtmLink">
+ <description>This MO represents an Internet Protocol over ATM link. LLC/SNAP encapsulated packets over Atm Adaptation Layer 5, AAL5, ATM PVCs are used.
+
+Note: The performance monitoring counters in the IpAtmLink MO has a "Wrap-around time" of approximately 2 hours.
+
+Note! When setting the 'fromUserMaxSduSize' and 'toUserMaxSduSize' on the Aal5TpVccTp MO the defined SduSize should be 8 bytes larger then the 'mtuSize' on the IpAtmLink.
+
+Note! Only Aal5TpVccTp's that terminates on an MP (Main Processor) may be used when setting up IpAtmLink's.</description>
+ <attribute name="IpAtmLinkId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>The User Label attribute gives the operator the possibility to label the links.
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the IP over ATM link is dependent of the operational states of the underlying AAL5 termination points that are used to transport IP datagrams. If at least one operational AAL5 termination point (MO: AAL5 TP VCC TP) exists, the operational state of the IP over ATM Link is set to "ENABLED"</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. It is a bit mapped CORBA long, where one or more of the bits may be set. If none of the bits are set then the availability status is considered to be undefined.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>If set, indicates that this IpAtmLink is reserved by the OspfInterface represented by this attribute.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="OspfInterface"/>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="subnetMask">
+ <description>The attribute subnetMask states the subnet mask of the IP over ATM link (point to point link).
+
+The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.
+For a point to point link, the subnetmask 255.255.255.252 is very likely.
+
+Note! The subnet mask has to be contiguos. That is, it has the LSB's set to 0 (zero).
+
+Example:
+
+255.255.255.X
+
+Contiguous subnet mask:
+11111111.11111111.11111111.11111110 (X = 254)
+11111111.11111111.11111111.11111100 (X = 252)
+
+Not-contiguous subnet mask:
+11111111.11111111.11111111.11111010 (X = 250)
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="mtuSize">
+ <description>The attribute mtuSize states the maximum IP datagram size that may be sent on the IP over ATM link in bytes, without fragmentation. Recommended MTU size is 1500 bytes to prevent IP fragmentation.
+
+Note that the size of the IP datagram does not include the 8 Bytes added for the LLC/SNAP header before putting the IP datagram in AAL5 SDU.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>576</min> <max>2040</max>
+ </range>
+ <defaultValue>1500</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="metric">
+ <description>The attribute metric states the metric "cost" of the IP over ATM link. The metric value is calculated as 10^8 /link bit speed.
+
+For example:
+Metric for 10 Mbps Ethernet = 10^8/10^7 = 10
+Metric for 100 Mbps Ethernet = 10^8/10^8 = 1</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>32767</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="monitor">
+ <description>This attribute indicates whether InvATMARP monitor is turned on or off.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="monitorInterval">
+ <description>The interval between sending monitor packets.
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>60</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="monitorRetries">
+ <description>The number of retries when sending monitor packets.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="interfaceName">
+ <description>The interface name.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpSelectionMode">
+ <description>The selection mode for the Aal5TpVccTp's used by the IpAtmLink MO. Determines how the IpAtmLink MO selects the Aal5 termination points used.
+
+In case 'NO_PREFERENCE', 'LOCAL_MP_SELECT_VCC_AT_LINK_UP', LOCAL_MP_PEER_SELECTION_VCC' or 'LOCAL_MP_ACTIVE_RESELECTION' is selected the IpAtmLink MO will prefer Aal5TpVccTp on local MP (i.e. Aal5TpVccTp MOs executing on the same MP as the IpAtmLink), but other Aal5TpVccTp will be accepted if needed.
+
+In case 'ONLY_LOCAL_MP' is selected, the ipAtmLink (Inet Link) will consider Aal5TpVccTp residing on other MPs as a malfunction and discard the usage of them. No InvArp sending will be performed on them and all incomming trafic on them will be discarded. If no local Aal5TpVccTp exists the operational state of the link will be changed to disabled.
+
+ </description>
+ <dataType>
+ <enumRef name="Aal5TpSelectionModes">
+ <defaultValue>NO_PREFERENCE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Aal5TpVccTpIdList">
+ <description>References to MOs of type Aal5TpVccTp representing the underlying AAL5 termination points (of a AAL5 PVC:s) for the IP over Atm link.
+
+The operator gives a list of relative distinguished names of the Aal5TpVccTp MO's to be used by the IP over ATM link.
+An Aal5TpVccTp MO may only be specified once in the list.
+
+To change in the set of Aal5TpVccTp MO's related to the IP over ATM link the link has to be deleted and then created with the desired set of AAL5 TP.
+
+Note! Only Aal5TpVccTp's that terminates on an MP (Main Processor) may be used when setting up IpAtmLink's.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal5TpVccTp"/>
+ <length>4</length>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInUcastPkts">
+ <description>Performance monitoring counter for the number of input unicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInNUcastPkts">
+ <description>Performance monitoring counter for the number of input broadcast/multicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutUcastPkts">
+ <description>Performance monitoring counter for the number of out unicast packets deliverred to higher layer</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutNUcastPkts">
+ <description>Performance monitoring counter for the number of output broadcast/multicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInErrors">
+ <description>Performance monitoring counter for the number of input packets discarded due to any error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInDiscards">
+ <description>Performance monitoring counter for the number of input packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfifOutDiscards">
+ <description>Performance monitoring counter for the number of outbound packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="assignIpAddress">
+ <description>This action sets the IP address and the subnet mask.
+
+The changing of the IP address with the operation assignIpAddress, it might cause an interruption of the communication between the node and the network management tool. If an incorrect or erroneous IP address is configured, the communication with the node might be lost until the node is restarted or the IP address is changed to the correct value.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddress">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="subnetMask">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="EthernetLink">
+ <description>The Ethernet Link MO represents the Internet Protocol over Ethernet link. There is only one Ethernet link MO per Cello node.
+
+The changing of the IP address with operation assignIpAddress might cause interruption of the communication if the network management tool is connected via the ethernet link.
+
+Note: The EthernetLink MO can not be deleted!
+
+Note: The performance monitoring counters in the EthernetLink MO has a "Wrap-around time" of approximately 2 hours.
+</description>
+ <attribute name="userLabel">
+ <description>The User Label attribute gives the operator the possibility to label the links.
+
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress">
+ <description>The attribute ipAddress states the IP address of the Ethernet link, it is also the IP address for the O&amp;M host..
+
+The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.
+It must not be a broadcast or multicast address.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="subnetMask">
+ <description>The attribute subnetMask states the subnet mask of the Ethernet link.
+
+The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.
+
+Note! The subnet mask has to contiguos. That is, it has the LSB set to 0 (zero).
+
+Example:
+
+255.255.255.X
+
+Contiguous subnet mask:
+11111111.11111111.11111111.11111110 (X = 254)
+11111111.11111111.11111111.11111100 (X = 252)
+
+Not-contiguous subnet mask:
+11111111.11111111.11111111.11111010 (X = 250)
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="broadcastAddress">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <mandatory/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="mtuSize">
+ <description>The IP layer expects the Ethernet link to have an MTU size (maximum Ethernet frame size without fragmentization) of 1500 bytes.
+
+The value is always the default value.
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1500</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="metric">
+ <description>The attribute metric states the metric of the Ethernet link. The metric value is calculated as 10^8/link bit speed.
+
+For example:
+Metric for 10 Mbps Ethernet = 10^8/10^7 = 10
+Metric for 100 Mbps Ethernet = 10^8/10^8 = 1</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>32767</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Ethernet link is dependent of the operational states of the underlying MAU:s that represents the Ethernet transceiver function. If at least one operational MAU exists, the operational state of the Ethernet Link is set to "ENABLED"</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="interfaceName">
+ <description>The interface name.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="macAddress">
+ <description>The mac address is persistently stored in flash prom on the MP where the IP stack resides. It is stored there at manufacturing. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ <length>6</length>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>If set, indicates that this EthernetLink is reserved by the OspfInterface MAO represented by this attribute.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="OspfInterface"/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="EthernetLinkId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInUcastPkts">
+ <description>Performance monitoring counter for the number of input unicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInNUcastPkts">
+ <description>Performance monitoring counter for the number of input broadcast/multicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutUcastPkts">
+ <description>Performance monitoring counter for the number of out unicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInErrors">
+ <description>Performance monitoring counter for the number of input packets discarded due to any error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInDiscards">
+ <description>Performance monitoring counter for the number of input packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutNUcastPkts">
+ <description>Performance monitoring counter for the number of output broadcast/multicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfifOutDiscards">
+ <description>Performance monitoring counter for the number of outbound packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="assignIpAddress">
+ <description>This action sets the IP address and the subnet mask.
+
+The changing of the IP address with the operation assignIpAddress,
+causes an interruption of the communication between the node and
+the network management tool. If an incorrect or erroneous IP address
+is configured, the communication with the node might be lost until
+the node is restarted or the IP address is changed to the correct
+value.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddress">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="subnetMask">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="IpRoutingTable">
+ <description>This MO holds the IP routing table.
+
+The IpRoutingTable MO is automatically created when the Ip MO is created.
+The IpRoutingTable MO can not be created manually.
+The IpRoutingTable MO can not be deleted.
+</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="indexOfDeletableStaticRoutes">
+ <description>This attribute gives the indexes for the static routes that are possible to delete by the operator.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="IpRoutingTableId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="addStaticRoute">
+ <description>Used to add a new static route to the routing table. It can be
+indicated if the static route should be redistributed by OSPF.
+When adding a static route with an ipaddress, which is not a subnet
+address, the ipaddress is recalculated to the corresponding subnet
+address, based on the ipaddress and the subnet mask. So when looking
+for this route using the action 'getRoutingTableEntry' it is in fact
+the recalculated ipaddress, that is displayed and not the ip address
+entered with addStaticRoute. This is an automatic correction.
+
+Note! If an attempt is made to add a static route with hopIpAddress starting with 0.0 an exception will be thrown.
+
+Note! This action requires a transaction.
+
+
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddress">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="subnetMask">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="hopIpAddress">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="routeMetric">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="redistribute">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="listRoutes">
+ <description>List routes actions is used to list all routes in the routing table. It requires no input parameters.
+
+The output is a formatted string, indicating the number of routes in the table followed by route information for each of these routes.
+
+The number of routes in the table is found at the very start of the returned string. Immediately following this is the information on each route in the list in turn. The route information for each route begins with a new line character ("\n") and is followed by the following data items (in the order written below), which are separated from each other by a SPACE character:
+
+- Destination IP address
+- Destination Network mask
+- Next hop IP address/Interface index of connected networks in dot-decimal format
+- Route metric
+- Route type
+- Interface name
+- Redistribute
+- Active
+
+Note that the next hop ipaddress is not an ipaddress per se, it is the subnet on wich the host/router to route to resides.
+
+Below is an example list of routes that could be returned from this action:
+
+"\n123.123.123.123 234.234.234.234 0.0.0.7 10 13 LE0 FALSE active\n122.122.122.122 233.233.233.233 0.0.0.6 2 8 LE0 TRUE active\n132.132.132.132 243.243.243.243. 0.0.0.7 9 13 LE0 TRUE inactive"
+
+In this case, there are three routes in the routing table. The first route has destination IP address of 123.123.123.123, the second route has it set to 122.122.122.122, while finally the third has it set to 132.132.132.132.
+
+NOTE that the route types can be of the following types:
+
+INET_RTPROTO_OTHER 1
+INET_RTPROTO_LOCAL 2
+INET_RTPROTO_NETMGMT 3
+INET_RTPROTO_ICMP 4
+INET_RTPROTO_OSPF 13
+
+The types listed above also denote the origin of the routing entry.
+
+Note! This action does not require a transaction.
+</description>
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="getRoutingTableEntry">
+ <description>Returns a RoutingTableEntry according to the specified index.
+
+Should be used with action 'numberOfRoutes' within a transaction. To refresh the routing table stored in the MO, invoke the action 'numberOfRoutes'.
+
+Precondition: 0 &lt;= index &lt;= numberOfRoutes() - 1
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <structRef name="RoutingTableEntry"/>
+ </returnType>
+ <parameter name="index">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidIndexException"/>
+ </action>
+ <action name="numberOfRoutes">
+ <description>Returns the number of entries in the routing table.
+
+Each time this action is invoked, the MO retrieves routing table information from the resource layer and then builds a new array of RoutingTable structs to store this information.
+
+This action along with getRoutingTableEntry(), which allows one to iterate through the array stored in the MO, should be used together with a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ </action>
+ <action name="deleteStaticRoute">
+ <description>Removes the RoutingTableEntry submitted as a parameter from the Routing Table, if it is found in the table.
+
+Note that only static roues, previously added, can be deleted with this action.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="routingTableEntry">
+ <in/>
+ <dataType>
+ <structRef name="RoutingTableEntry"/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Ip">
+ <description>The Ip MO represents the IP protocol layer with IP forwarding functionality.
+
+Note: The performance monitoring counters in the Ip MO has a "Wrap-around time" of approximately 2 hours.
+
+</description>
+ <attribute name="IpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="workingMode">
+ <description>The workingMode of the IP MO controls if the IP stack in the node will work as a combined host/router (routerMode) or only as a host (hostMode).</description>
+ <mandatory/>
+ <dataType>
+ <enumRef name="WorkingMode">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="retransInterval">
+ <description>The retransmission interval. The units are seconds.
+Must be a value &gt; 0.</description>
+ <dataType>
+ <long>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="noOfRetrans">
+ <description>The number of retransmissions.
+Must be a value &gt; 0.</description>
+ <dataType>
+ <long>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="dnsServer">
+ <description>The Domain Name Server IP address.
+
+The IP address must be a Unicast IP address.
+</description>
+ <dataType>
+ <string>
+ <defaultValue>"127.0.0.1"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="isRecursiveSearch">
+ <description>Holds information about how the DNS client wants the DNS server do the search for the IP address in the network . It can be either Recursive search or Non-recursive search.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="isSubDomainName">
+ <description>Holds information about whether to use subsets of the fully qualified domain name to reach the simple domain name. It can be either Use subsets of domain name or Not use subsets of domain name.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="isDefDomainName">
+ <description>Holds information about whether the default domain name is present. It can be Present or Not present.
+
+</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="defDomainName">
+ <description>Contains default domain name.
+If 'isDefDomainName' is set to 'true' the domain name found in this attribute is used by the DNS resolver and there is no need to submit the complete domain name. If the domain name is for example 'ws5741.uab.ericsson.se' then the default domain name would be '.uab.ericsson.se'. If 'isDefDomainName' is set to true the there is no need for using '.uab.ericsson.se'. If set to false then the complete domain name has to be used.
+A valid domain name consists of 1 or more labels separated by dots (".").
+Valid characters for a label shall be limited to letters 'a' - 'z', 'A' - 'Z', digits '0' - '9', the character '-' ("dash").
+Character case shall be preserved. Labels shall start with a letter. Total length of a label shall not exceed 255 characters.
+
+Note! The first and last character in the domain name has to be within the following alphabet: letters 'a' - 'z', 'A' - 'Z' and digits '0' - '9'. For more information refer to RFC 952 and 1101.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the IP MO is ENABLED if at least one link is operational.
+
+Shows whether the MO is OK (enabled) or failed (disabled). The values are set by the system.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="numberOfLinks">
+ <description>Represents the number of interfaces (Ethernet and IP over
+ATM links) which has registered to the IP MO.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>If set, indicates that this Ip is reserved by the Ospf represented by this attribute.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Ospf"/>
+ </dataType>
+ </attribute>
+ <attribute name="useHostFile">
+ <description>Indicates if the hosts file should be used or not. The hostFile is used by the resolver and
+chosen as a source of information before querying a DNS server.
+
+true - use the host file.
+false - do not use the host file.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="dscp">
+ <description>The DiffServ CodePoint.
+The code point values are used by DiffServ enabled hosts and router to identify different service levels.
+When set, the DSCPs are mapped to PHBs (Per Hop Behaviours) by forwarding devices along the path
+between the source and destination. PHBs dictates how each packet will be handled i.e. what type of
+service that is applied to the packet when it is forwarded.
+
+Note! Only traffic originated from the node is tagged with the dscp value. The Cello router does not implement functionality for handling different service levels when routing IP traffic.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>63</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="icmpRedirect">
+ <description>Indicates if ICMP redirects is sent out or not.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="udpChecksumState">
+ <description>Enable/Disable generation of UDP checksum.
+0 = disabled
+1 = enabled
+
+The UDP checksum is used for verifying that the UDP header has not been damaged during transmit.</description>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="connectionAttemptTimer">
+ <description>The time that elapses before a connection (TCP) attempt times out.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <defaultValue>75</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxRetransmissionAttempts">
+ <description>The maximum number of retransmission attempts before a TCP connection is dropped.
+The default value is 10 attempts, which is around 5 minutes.
+Setting this attribute value to -1 means infinity, and TCP will never give up in trying
+to establish a connection.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>-1</min>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpInReceives">
+ <description>Performance monitoring counter for total number of datagrams received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfHdrErrors">
+ <description>Performance monitoring counter for the number of datagrams discarded due to format error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpAddrErrors">
+ <description>Performance monitoring counter for the number of datagrams discarded due to misdelivery.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpForwDatagrams">
+ <description>Performance monitoring counter for the number of datagrams forwarded.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpInDiscards">
+ <description>Performance monitoring counter for the number of datagrams dascarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpOutDiscards">
+ <description>Performance monitoring counter for the number of datagrams discarded due to lack of resources.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpReasmReqds">
+ <description>Performance monitoring counter for the number of fragments received needing reassembly.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpReasmOKs">
+ <description>Performance monitoring counter for the number of datagrams successfully reassembled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpEntitySet">
+ <description>This MO represents an SCCP EntitySet which is made of one SCCP Entity. An SCCP Entity is a local MTP-SAP + a DPC + possibly an SSN, i.e an SCCP EntitySet identifies the set of access points that result from a global title translation. An SCCP EntitySet may also be made of two SCCP Entities of the same type (if an SSN is present in one SCCP Entity, then an SSN shall also be present in the other). In the latter case the two SCCP entities may be considered either as a "primary" SCCP Entity and a "backup" SCCP Entity (dupli-dominant mode) or may be interpreted as two equal SCCP entities that can be used for outgoing loadsharing purpose. In this implementation they can only be considered as "primary" and "backup".The Routing Indicator (RI) in the Called Party Address is normally not set by the SCCP for outgoing messages and should therefore be set by the user. This means that if the user has set "Route on SSN" this will be the case after the GTT also even if the set consist of MTP-3b Access Points. However, if the set consists of SCCP Access Points the RI is implicitly set to "Route on SSN" by SCCP.
+
+DPC Destination Point Code
+GTT Global Title Translation
+MTP Message Transfer Part
+SAP Signalling Access Point
+SSN Subsystem Number
+
+Note: the SccpEntitySet MO depends either on MAOs of type SccpApLocal OR SccpApRemote, not on a mixture of these MAO types.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="routeIds">
+ <description>The Entity Set routeId is an array of maximum two instances of Sccp ApLocal MO's OR two instances of SccpApRemote MO's OR two instances of Mtp3bAp MO's OR one instance of SccpSP MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ <length>2</length>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="sharingMode">
+ <description>The sharingMode attribute controls the distribution of SCCP traffic over the entities (Access Points) in the set.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="SharingMode">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="newSubSystemNumber">
+ <description>The new sub system number attribute is only valid if the Mtp3b Access Points are used in the set. In that case the SSN attribute allows to optionally set the subsystem number in the Called Party Address as a result of a Global Title Translation. If the set consists of SCCP Access Points the subsystem number in the Called Party Address is always implicitly set to the SCCP Access Point SAP (SSN) as a result of a Global Title Translation.
+This attribute is controlled by the type of AP(s) that the EntitySet refers to.
+
+The default value 0 means no new subsystem number.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>254</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="newGlobalTitle">
+ <description>The New Global Title attribute allows to optionally replace the global title in the Called Party Address as a result of a Global Title Translation (GTT). If the GT resulting from a GTT is different from the GT previously included in the Called Party Address, the newly produced GT replaces the existing one. The gtIndicator attribute is read-only and is derived from the combination of Nature Of Address, the Translation Type and Numbering Plan used.
+
+Default value is considered as no new Global Title.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="GlobalTitleData"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SccpEntitySetId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpGlobalTitle">
+ <description>The SCCP Global Title MO represents a combination of a global title translator and a global title rule. If no Destination Point Code (DPC) is present in the Called Party Address, a Global Title (GT) is needed. Then a global title must be present in the Called Party Address, otherwise a routing error occurs. A global title translator is selected by SCCP based on a combination of the values of the Nature Of Address (NA), the translation type (TT), and the Numbering Plan (NP) if available, in this MO matched with the same information in the Called Party Address provided by an SCCP user. A global title translation rule is selected by SCCP by matching the Global Title Address Information and possibly the Encoding Scheme in this MO, with the same information in the Called Party Address provided by an SCCP user. A global title translation rule points to the SCCP Entity Set resulting from the global title translation (GTT).
+The translation results in a DPC and possibly a new Sub System Number (SSN) or GT or both (decided by the SCCP Entity Set it refers to). If the GT and/or SSN resulting from a GTT is different from the GT and/or SSN previously included in the Called Party Address, the newly produced GT and/or SSN replaces the existing one.
+
+GT - Global Title
+SCCP - Signalling Connection Control Part
+SSN - Sub System Number
+DPC - Destination Point Code
+TT - Translation Type
+GTT - Global Title Translation</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="gtIndicator">
+ <description>Global title indicator for China, ITU, TTC and ANSI.
+
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="GlobalTitleIndicator">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="natureOfAddress">
+ <description>Indicates number type, i.e. national or international number.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NatureOfAddress">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="numberingPlan">
+ <description>Indicates which numbering plan that is used.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NumberingPlan">
+ <defaultValue>UNKNOWN</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="translationType">
+ <description>Used to direct the message to the appropriate Global Title translation function.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>254</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="addressInformation">
+ <description>Digit string of 1-37 digits, where each digit is 0-9, and "B", "C". "B" and "C" are for Code 11 and Code 12.
+The addressInformation may also contain wild card symbols: "*" or "?". Wild cards are only allowed for defining Global Title Translations, they are not allowed for specifying SCCP SAPs (built with SPC and Global Title or SPC + SSN + Global Title).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>37</max>
+ </lengthRange>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="encodingScheme">
+ <description>Indicates if the number of address signals are an odd or even number.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="EncodingScheme">
+ <defaultValue>UNKNOWN</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="sccpEntitySetId">
+ <description>The sccpEntitySetId attribute points out the corresponding SccpEntitySet MO.
+
+Note! This attribute is only optional if this MO is used by Policing. In all other cases it has to be set.</description>
+ <noNotification/>
+ <dataType>
+ <moRef name="SccpEntitySet"/>
+ </dataType>
+ </attribute>
+ <attribute name="SccpGlobalTitleId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2PathVccTp">
+ <description>This MO is used to represent an AAL2 Path, i.e. an ATM VC connection that carries multiplexed AAL2 links.
+
+VCC TP - Virtual Channel Connection Termination Point.
+
+The total number of Aal2PathVccTps associated to an Aal2Ap, by connecting them to Aal2PathDistributionUnits under that Aal2Ap, must not exceed 632.
+
+The total number of Aal2PathVccTps associated to a ReliableProgramUniter, by connecting them to Aal2PathDistributionUnits associated to the ReliableProgramUniter, must not exceed 280.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0.
+</description>
+ <attribute name="Aal2PathVccTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpId">
+ <description>Reference to the VclTp to be used by this Aal2PathVccTp.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the termination point. </description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of the termination point.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving Aal2PathDistribution MO.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of Aal2PathVccTp.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuitiy checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second.
+
+Activates VC end to end continuityCheck according to ITU.T rec I.610.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>PM mode is set to indicate type of performance monitoring mode (ie. activation of bidirectional PM measurements).
+
+</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlocksize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="timerCu">
+ <description>Timer that assures that CPS-packets with one or more octets already packed in the ATM cell wait at most the duration of timerCu before being scheduled for transmission.
+
+Units for timerCu is 10 to the power of -4 seconds. This value can be set in steps of 10 to the power of -4.
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aal2PathId">
+ <description>This attribute is used to identify the path in the Q.2630.1 protocol.
+
+The pathId value must be unique within all Aal2PathDistributionUnits under the same Aal2Ap
+
+All integers &gt; 0 are allowed (not 0).
+
+The Aal2PathId is used by the Aal2 connection control function in two Aal2 nodes to uniquely identify an AAL2 path between the two nodes. This means that the value of the attribute Aal2PathId for an Aal2 path must be the same in each of the two nodes.
+
+In order to set this attribute, the Aal2PathVccTp may not be reserved. If an attempt is made, an "IsReservedCanNotSetPathId" exception is thrown.
+
+Note! Setting of this attribute will not have any effect until 'actionAddPath' in Aal2PathDistributionUnit MO' is called adding this MO to the list of Aal2PathVccTp MO's.</description>
+ <mandatory/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2147483647</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aal2PathOwner">
+ <description>This attribute indicates whether this Aal2 Path VCC Termination Point is considered the owner of the Aal2 Path in order to decide channel selection procedure in the Q.2630.1 protocol.
+
+Note! In order to set this attribute, the Aal2PathVccTp may not be reserved. If an attempt is made, an "IsReservedCanNotSetPathId" exception is thrown.
+
+Note! The administrativeState has to be LOCKED when this attribute is set, if not the "IsUnlockedCanNotSetPathOwner" exception is thrown.
+
+Note! Setting of this attribute will not have any effect until 'actionAddPath' in Aal2PathDistributionUnit MO' is called adding this MO to the list of Aal2PathVccTp MO's.</description>
+ <mandatory/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="aal2QoSProfileId">
+ <description>The identity of the QosProfile used by the Aal2PathVccTp.</description>
+ <mandatory/>
+ <dataType>
+ <moRef name="Aal2QosProfile"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal2QoSAvailableProfiles">
+ <description>This attribute specifies which QoSClass that can be supported by this Aal2Path.
+</description>
+ <dataType>
+ <enumRef name="SupportedQoSClasses">
+ <defaultValue>CLASS_A_B_C_D</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for forwarded lost cells.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forwarded missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forwarded errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2RoutingCase">
+ <description>This MO represents a AAL2 routing case which points out an AAL2 access point. </description>
+ <attribute name="Aal2RoutingCaseId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>For free use</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="routeList">
+ <description>An array of alternative routes identified by the concerned Aal2Ap MOs. A routeList can have 0 to 5 Aal2Aps.
+The Aal2Ap must be unique.
+Note! if this attribute is set, the routePriorityList also must be se with the same number of values ( if the routeList
+contains 3 routes, the routePriorityList must contain 3 prioritys).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2Ap"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="routePriorityList">
+ <description>A list of all the Aal2Ap priorities.
+The priority values can be in the range 1 to 5, one beeing the highest priority.
+The Aal2Aps can have the same priorities.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <long>
+ <range>
+ <min>0</min> <max>5</max>
+ </range>
+ </long>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="numberDirection">
+ <description>Defines the possible set of AAL type 2 Service Endpoint Addresses (A2EA) that match the routing case.
+
+The number direction of a routing case shall be interpreted as all AAL type 2 Service Endpoint Addresses
+starting with the string of numbers defined in the number direction. For example, the AAL2 End System
+Addresses "12340" and "123400" will both match the number direction "1234".
+
+The AAL2 routing function uses a longest match comparison to select between routing cases with overlapping
+number directions. For example, given two routing cases A with the number direction "1234" and B with the number
+direction "12345" the AAL2 End System Address "12345" will be routed using routing case B, whereas the AAL
+type 2 Service Endpoint Addresses "12344" and "12346" will be routed using routing case A.
+
+NOTE: It is not allowed to use leading zeros when configuring this attribute.
+
+NOTE: It is not possible to replace an existing routing case by creating routing cases with number directions that
+completely overlap the number direction of the existing routing case.
+
+NOTE: It is not possible to create two routing cases with the exact same number directions in a node.
+
+NOTE: It is possible to create one or more routing cases with number directions that partially overlap the number
+direction of an existing routing case.
+
+Length range 1..15
+Alphabet: "0123456789"
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>15</max>
+ </lengthRange>
+ </string>
+ </dataType>
+ </attribute>
+ <action name="addAal2ApToRc">
+ <description>Adds the identified (and existing) Aal2Ap MO to the routeList. This action should also be used when changing the priority for an existing Aal2Ap MO. When submitting an existing Aal2Ap MO with a new priority the routing list will be updated with the new priority for the specified Aal2Ap MO.
+
+Note! In order to be able to update the priority for a routing entry, the routing entry first has to be deleted and then submitted with the new priority.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="priority">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="route">
+ <in/>
+ <dataType>
+ <moRef name="Aal2Ap"/>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidPriorityException"/>
+ <raisesException name="IllegalArgumentTypeException"/>
+ <raisesException name="IllegalAttributeValueException"/>
+ </action>
+ <action name="removeAal2ApFromRc">
+ <description>Removes the identified Aal2Ap MO from the routeList.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="route">
+ <in/>
+ <dataType>
+ <moRef name="Aal2Ap"/>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalAttributeValueException"/>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ </class>
+
+ <class name="Aal2Sp">
+ <description>The Aal2Sp (AAL2 Signalling Point) MO is used to represent the AAL type 2 Service Endpoint Address of the node in the AAL2 network.
+There is one and only one instance of this MO in the ATM NE system.</description>
+ <attribute name="userLabel">
+ <description>For free use</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="a2ea">
+ <description>An E.164 format number that specifies the AAL type 2 Service Endpoint Address of the node.
+
+Length Range: 1..15
+Alphabet: "0123456789"
+
+Note! It is not allowed to use leading zeros when configuring this attribute.</description>
+ <mandatory/>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>15</max>
+ </lengthRange>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Aal2SpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnsuccessfulConnsInternal">
+ <description>Performance monitoring counter for the number of unsuccessful attempts to establish connections due to node internal problems.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2Ap">
+ <description>This MO represents a AAL2 Access Point signalling function associated with a single AAL2 signalling relationship to a remote peer AAL2 acess point signalling function. An AAL2 access point is either a high rate access point that uses MTP-3B for signalling or a low rate access point that uses UNI-SAAL for signalling.
+
+Aal2Ap - Aal2 Access Point
+
+Note! The performance monitoring counters in the AalAp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="Aal2ApId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Free for use</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>This attribute holds a list of the reserving MOs.
+</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of the AAL2 AP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the Aal2Ap.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="timerErq">
+ <description>Q.2630.2 establishment request timer. Unit is milli seconds.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>5000</min> <max>30000</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="timerRel">
+ <description>Q.2630.2 release request timer. Unit is milli seconds.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>2000</min> <max>60000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="sigLinkId">
+ <description>Reference to a UniSaalTp or Mtp3bAp MO that provides a signalling link for the Aal2Ap.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="secondarySigLinkId">
+ <description>Reference to a secondary signalling link MO of type UniSaalTp. This attribute can only be set when sigLinkId is of type UniSaalTp.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>The physical location of an AP (Access Point) LR/HR (Low Rate/ High Rate) program represented by a reference to a RPU (ReliableProgramUniter) MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal2QoSCodePointProfileId">
+ <description>The identity of the QoSCodePointProfile used by this MO.</description>
+ <dataType>
+ <moRef name="Aal2QosCodePointProfile"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmExisOrigConns">
+ <description>Performance monitoring counter pmExisOrigConns.
+Number of existing connections for the AP originating in this node.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nrOfConfiguredAal2Paths">
+ <description>The total number of Aal2PathVccTp MOs configured on this Aal2 Ap.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nrOfUnavailableAal2Paths">
+ <description>The total number of unavailable Aal2PathVccTp's on this Aal2 Ap, i.e. the number of Aal2PathVccTp MOs connectected to this Aal2Ap with 'administrativeState' LOCKED.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmExisTermConns">
+ <description>Performance monitoring counter pmExisTermConns.
+Number of existing connections for the AP terminating in this node.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmExisTransConns">
+ <description>Performance monitoring counter pmExisTransConns.
+Number of existing connections for the AP transiting in this node.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSuccOutConnsRemote">
+ <description>Performance monitoring counter pmSuccOutConnsRemote.
+Number of successful establishment of outgoing connections on this AP</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSuccInConnsRemote">
+ <description>Performance monitoring counter pmSuccInConnsRemote.
+Number of successful establishment of incoming connections on this AP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnSuccInConnsRemote">
+ <description>Performance monitoring counter pmUnSuccInConnsRemote.
+
+Number of unsuccessful establishment of incoming connections on this AP caused by reject from beyond this node.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnSuccOutConnsRemote">
+ <description>Performance monitoring counter pmUnSuccOutConnsRemote.
+
+Number of unsuccessful establishment of outgoing connections on this AP caused by reject from remote side, reset from remote side, no reply or signalling link failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnSuccInConnsLocal">
+ <description>Performance monitoring counter pmUnSuccInConnsLocal.
+Number of unsuccessful attempts to allocate Common Part Sublayer, CPS, resources during establishment of incoming connections on this AP caused by Channel Identifier, CID, and/or bandwidth collision or mismatch of Call Admission Control, CAC, between peers.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnSuccOutConnsLocal">
+ <description>Performance monitoring counter pmUnSuccOutConnsLocal.
+
+Number of unsuccessful attempts to allocate CPS resources during establishment of outgoing connections on this AP. Caused by rejects in CAC (Connections Admission Control).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnRecMessages">
+ <description>Performance monitoring counter pmUnRecMessages.
+
+Number of received unrecognized Q.2630.1 messages on this AP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnRecParams">
+ <description>Performance monitoring counter pmUnRecParams.
+
+Number of received Q.2630.1 messages with unrecognized parameters on this AP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etm1">
+ <description>This MO represents the hardware of the ET-M1 board type. It only represents the ET specific hardware, while the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-M1 board contains 8 physical ports that can be configured as either E1 (ETSI), J1 (TTC) or T1(ANSI). The board does not allow for a mix of E1, J1 and T1 ports, thus all configured ports on the board must be configured to the same standard.
+
+Each of the ports on the ET-M1 board can be used to carry either ATM traffic or circuit orientated (Nx64 Kbits/s connections) traffic.
+
+Each port can support up to 30 ATM VC connections. Two of these connections are reserved for AAL2 paths, and therefore two AAL2 multiplexers per port are available.
+
+Each port can support up to 2 VP connections.
+
+The ET-M1 board supports 1 bidirectional F4/F5 PM flow per port.
+
+Other restrictions:
+- All ports (configured for ATM) on the board must have the same value for the hecCorrection attribute (ATM Port MO).
+- It is possible to configure UBR+ traffic, but there is no guarantee on the minimum cell rate.
+- VP shaping is not supported (it is recommended to configure at most one VP per physical port).
+- VC shaping is not supported with an exception for AAL2 path traffic. This is shaped to the peak bandwidth on the VC connection.
+- When using the Etm1 board the performance monitoring counters in the transmit direction found on the AtmPort MO does not show the following cells: CC cells and OAM FPM cells.
+
+Note! IMA is not applicable for the ETM1 board.
+
+Note! When using fractional atm, timeslot 1 must be a part of the fraction.
+
+Note! ETM1 does not support EPD and PPD
+
+Note! ETM1 does not have a proper buffer management. Thus fairness of UBR+ traffic can not be guaranteed and shaping on UBR+ traffic is not possible.
+
+Note! The number of VCC TP+VPC TP with performance monitoring enabled (i.e. PM mode &lt;&gt; off) is restricted to 1 per port.
+</description>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the Etm1 board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Etm1Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="TuSyncRef">
+ <description>This MO is used to administer synchronization reference (a synchronization input with support for 2MHz and 10MHz signals) on Timing Unit board.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of TU synchronization reference</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>Administrative state of TU synchronization reference</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the TuSyncRef.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>When the TU synchronization reference is registered in the system as an usable synchronization reference, this MO reference is set by using "local" operation syncReserve(). When synchronization reference is de registered, "local" operation syncRelease is used. Note that the only valid user of these operations is Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ <attribute name="TuSyncRefId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Spm">
+ <description>The Special purpose Processor Module MO, Spm, represents one of the Special Purpose Processors and its connected hardware. This object is used for SW management and restart. Hardware failure indications are sent to Spu.
+
+Note! If the board is of type SPB1 the maximum number of Spm MO's that is possible to create under the Spu MO is 3.
+If the board is of type SPB2 the maximum number of Spm MO's that is possible to create under the Spu MO is 5.</description>
+ <attribute name="SpmId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SPM</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="switchModuleNumber">
+ <description>Switch Module Number</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="asciPortNumber">
+ <description>ASCI Port Number</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="executionResourceNumber">
+ <description>The identity of the SPM on the Special purpose Processor Unit (SPU).
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="runningResourceIdList">
+ <description>The list of identities of running Spm's
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="installedResourceIdList">
+ <description>The list of identities of installed Spm's in the system.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="spLinkName">
+ <description>The uniqe name of the link between the SP and BP.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>Restarts the SP.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Spu">
+ <description>The Special purpose Processor Unit MO, Spu, represents the board specific HW on SPB. This objects collects HW failure indications on the board and issues/ceases alarms.</description>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SPB board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="spLinkName">
+ <description>The special purpose processor link name.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SpuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>Restarts all SPs on the board (but not the BP).
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="AtmCrossConnection">
+ <description>This MO is used to represent the point-to-point ATM cross-connect relationship between two VCL termination points.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state for the cross connection.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpAId">
+ <description>Identifies the VclTp managed object involved in the A side of the cross connection (which consists of an A and B side).
+
+Must not be the same as vclTpBId.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpBId">
+ <description>Identifies the VclTp managed object involved in the B side of the cross connection (which consists of an A and B side).
+
+Must not be the same as vclTpAId.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="AtmCrossConnectionId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ConfigurationVersion">
+ <description>The Configuration Version, CV, is an MO managing all on disk saved node configuration. This MO keeps all administrative data about the CV's including path and file-names of the configuration files. There may be more than one CV on the disk but only one is used at the time. A CV is always based on one Upgrade Package.
+
+The local distinguished name of this MO is ManagedElement=1, SwManagement=1, ConfigurationVersion=1.</description>
+ <systemCreated/>
+ <attribute name="ConfigurationVersionId">
+ <description>Configuration version MO's id.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="storedConfigurationVersions">
+ <description>List of stored configuration versions in the node.
+
+Stored in and read from the file system.
+
+List of stored configuration versions (CV) in the node.
+
+The list is a sequence of CVs.
+Each CV is presented as structure. A CV structure has following fields:
+ 1. Name
+ 2. Identity
+ 3. Type
+ 4. UpgradePackageId
+ 5. Operator name
+ 6. Comment
+ 7. Date
+ 8. Status
+
+The CV list is formatted as a sequence of ConfigurationVersionAttributes.
+Each struct contains one CV.
+
+The following characters are allowed within the struct members below.
+
+[0-9], [A-Z], [a-z] and '&amp;' , '%' , ':' , '.' , '_' , '-'
+
+Note! For comment and operatorName spaces (' ') are also allowed within the strings.
+
+Struct element description :
+-Name is in string format, max length is 40.
+-Identity is in string format, max length is 40.
+-Type is in string format, max length is 40.
+-UpgradePackageId is in string format, max length is 40.
+-Operator name is in string format, max length is 40.
+-Comment is in string format, max length is 40.
+-Date is in string format, max length is 40. Format for date is: weekday month date hour:min:seconds year.
+-Status is in string format, max length is 40.
+
+Note! The identity can not be the same as name. Identity should contain the product identity.
+
+
+</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <structRef name="ConfigurationVersionAttributes"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="currentLoadedConfigurationVersion">
+ <description>The name of the current loaded configuration version.
+
+Stored in and read from the file system.
+
+This is the configuration version that the system started with, i.e. the configuration version that was startable at the last node restart. </description>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="startableConfigurationVersion">
+ <description>The name of the configuration version that will be used at next node restart.
+
+Stored in and read from the file system.
+
+This attribute is set by the action "setStartable( name of cv)".
+Also set at rollback by the system. The first CV in the rollback list is then used.</description>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="rollbackList">
+ <description>A list of configuration versions to rollback to (configuration version name).
+
+The configuration version on the first line is used at the next rollback. That line is then automatically removed from the rollback list.
+
+This attribute is modified by actions setFirstRollbackList() and removeFromRollbackList()</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="currentUpgradePackage">
+ <description>A reference to current executing upgrade package.</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="UpgradePackage"/>
+ </dataType>
+ </attribute>
+ <attribute name="autoCreatedCVIsTurnedOn">
+ <description>Flag that indicates that a configuration version will be created automatically once a day.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="timeForAutoCreatedCV">
+ <description>Time for the automatic creation of configuration versions once a day.
+
+The string must be specified as "HH:MM" to be accepted at set.
+
+See also Class Attribute autoCreatedCVIsTurnedOn.
+The time is UTC time.
+
+Note! If changing the clock on the node, this attribute must be set or
+the JVM MP must be reastarted.
+
+
+</description>
+ <dataType>
+ <string>
+ <defaultValue>"04:00"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="rollbackOn">
+ <description>Flag that indicates if rollback is enabled or not.
+When true the system will automatically set the rollback counter. In case of cyclic restarts a rollback will be issued after x restarts. x is defined by the rollbackInitCounterValue.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rollbackInitTimerValue">
+ <description>Used by the system when rollback is switched on (autoRollbackOn=true). After the given time the node is considered not in a cyclic restart mode. The rollback counter will then be reset to its initial value (rollbackInitCounterValue).
+
+Timer value in minutes.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>10000</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="rollbackInitCounterValue">
+ <description>Initial value for the rollback counter. Used when rollback is switched on (autoRollbackOn=true).
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>10000</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="commandlogStatus">
+ <description>An attribute to indicate status of command log.
+It can be ON/OFF(true/false). </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="executingCv">
+ <description>The name of the executing Configuration Version, CV.
+
+Same as 'currentLoadedConfigurationVersion' after a node restart, changed to the value of lastCreatedCv when a CV is created.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="lastCreatedCv">
+ <description>The name of the last created Configuration Version, CV.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <action name="setStartable">
+ <description>The CV given will be the one used at the normal node restarts. Only A CV with status = OK can be set as startable.
+
+This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="create">
+ <description>A new CV directory will be created. A DB backup from the current RAM CV,
+an ARMAMENT file and the file LLP:LMid is created at the directory. The current
+command log file is copied to the CV directory first, then it removes the file from
+the current directory.
+
+Note: The file cmdlog.properties under /c/ will not be saved to the CV.
+
+The following characters are allowed in the Strings:
+
+[0-9], [A-Z], [a-z] and '&amp;' , '%' , ':' , '.' , '_' , '-'
+
+Note! For comment and operatorName spaces (' ') are also allowed within the strings
+
+-configurationVersionName is in string format, max length is 40 characters.
+-identity is in string format, max length is 40 characters.
+-operatorName is in string format, max length is 40 characters.
+-comment is in string format, max length is 40 characters.
+
+This action does not require a transaction.
+
+Note! The configurationVersionName and identity can not be the same. The identity should be the product identity.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <description>One ASCII text string. It must be possible to create a directory with string. Do not use string "autocreated1" and "autocreated2" as cv name. They are used by the system.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="identity">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="type">
+ <description>Type of the configuration version [ standard | test | other ].</description>
+ <in/>
+ <dataType>
+ <enumRef name="ConfigurationVersionType">
+ <defaultValue>other</defaultValue>
+ </enumRef>
+ </dataType>
+ </parameter>
+ <parameter name="operatorName">
+ <description>The operator's name.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="comment">
+ <description>The operator's comment.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <raisesException name="ValueOutOfRangeException"/>
+ </action>
+ <action name="delete">
+ <description>Delete a configuration version (CV) permanently.
+
+If CV is referenced in the startable or in the rollback list, the action is not performed (an exception is thrown instead).
+
+Note! The latest created CV is not deletable until a node restart is performed or a new CV is created. Also note that a CV is not possible to delete when it has one of the folowing properties:
+- "loaded"
+- "startable"
+- The CV is found in the "rollbacklist"
+
+This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="removeFromRollbackList">
+ <description>Removes a Configuration Version (CV) from the rollback list.
+
+This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="setFirstRollbackList">
+ <description>Adds a Configuration Version (CV) first in the rollback list. This will cause the node to chose this CV at the next rollback. A CV with status NOK, can't be put in the rollback list.
+
+This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="activateCommandLog">
+ <description>This action activates the log.
+
+The inparameter is the drive name (where the command log file should be stored).
+
+Default command log is drive /c/.
+
+Note! Invoking this action affects the attribute'commandLogStatus'.
+
+Note! This action does not require a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="cmdlogdriveName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidDriveNameException"/>
+ <raisesException name="LogActivationException"/>
+ </action>
+ <action name="deactivateCommandLog">
+ <description>This action deactivates the logging of configuration commands.
+
+Please note that uncommited data will be lost.
+
+Note! Invoking this action affects the attribute'commandLogStatus'.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="LogActivationException"/>
+ </action>
+ </class>
+
+ <class name="SwManagement">
+ <description>This MO is used as a structural element for the SW managed object. The MO structures the software resources of the node.
+
+Note that the SwManagement MO is automatically created and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, SwManagement=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SwManagementId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="normalizeRPU">
+ <description>This action will normalize all RPUs in the node.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="UpgradePackage">
+ <description>The UpgradePackage, UP, represents an upgrade package as stored in the node file system and as stored on the ftp server that it is/shall be fetched from.
+
+There may be more than one UP at the same time on the disk. One UP represents the running system issue in the node. That one is pointed out by the Configuration Version MO.
+
+The actions on an UpgradePackage MO, are actions that can be called to take that particular UpgradePackage into operation on the node.
+
+The deletion of the Upgrade Package on disk is performed when the associated Upgrade Package MO is deleted. The Upgrade Package's unique LoadModule MOs and files are deleted. ConfigurationVersions in otherReferringCVs are deleted.
+
+
+The UP MO refers to all load modules used in the UP. One load module may by used in more than one UP.
+
+Note at the start-up of the system/database/loading of a Configuration Version, special Upgrade Package MOs are created to represent Upgrade Packages that are stored on the disk but do not have an MO in the current Configuration Version. These special Upgrade Package MOs have are in the "onlyDeletable" state. In this state, the MO will throw ActionNotAllowedException on all its actions!
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.</description>
+ <attribute name="UpgradePackageId">
+ <description>The identity of the MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free of use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="loadModuleList">
+ <description>List of references to load modules that belong to this upgrade package.
+
+The list will be null until a successful install has been performed.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="LoadModule"/>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="upgradeControlFilePath">
+ <description>Path to the .xml file on the node once it has been fetched from the FTP server.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="state">
+ <description>Contains the state of this upgrade package.
+
+The management system and/or operator need to act on some changes in the state attribute.
+
+This attribute is used to accept/reject and modify behavior of actions. For example action 'upgrade' is not allowed in state notInstalled. Furthermore, action 'upgrade' does not behave the same if state == 'Installed' compared to if state == 'executingUpgrade' or 'awaitingConfirm'.
+
+To continue and conclude the upgrade sequence when in state == 'awaitingConfirm', action 'confirmUpgrade()' must be called. In this state it is also advisable to check attribute 'confirmationDeadline' to see how much time it is left before automatic rollback is done.
+
+Upgrade Package MOs that are stored on disk but do not have an MO in the current Configuration Version are in state "onlyDeletable". An MO in this state will throw the exception ActionNotAllowedException on all its actions.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <enumRef name="UpgradePackageState">
+ <defaultValue>NOT_INSTALLED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="progressHeader">
+ <description>Header enum describing the current progress indication.
+Note that this is only progress information, that should be shown to a human operator, because some operations may take time.
+
+Changes in the progress header NEVER entails that the operator or management system need to perform any particular actions. </description>
+ <readOnly/>
+ <dataType>
+ <enumRef name="UpgradeProgressInformation">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="progressTotal">
+ <description>
+This notification attribute is used to indicate progress for different steps in the upgrade sequence. The value gives the total number of steps that is to be performed in current step.
+
+This attribute is changed whenever 'progressHeader' is changed and indicates a maximum count for the progress of the progress counter. What items that are counted is specific for each case. For some cases, the counter is not yet implemented. In these cases, the progressTotal is set to zero (0) when the progressHeader is set.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="progressCount">
+ <description>This attribute is used to indicate progress for different steps in the upgrade sequence. The value is separated in increments from 0 to progressTotal.
+
+The value of progressCount never exceeds the value of 'progressTotal'.
+
+For some cases, the counter is not yet implemented. In these cases, the progressCount is set to zero (0) when the progressHeader is set.</description>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeData">
+ <description>Contains product data for this upgrade package. This information is extracted from the upgrade control file. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="confirmationDeadline">
+ <description>This attribute contains the deadline date and time for an operator confirmation. If the deadline is not met, then an automatic rollback to a previous configuration is issued by the system.
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ftpServerIpAddress">
+ <description>Ip address to the ftp server where the upgrade package is stored.
+
+The input format used by the operator is four fields of digits, separated by a dot.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="upFilePathOnFtpServer">
+ <description>File path on the FTP server to the upgrade control file. </description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="user">
+ <description>User id. to be used for logging in to the FTP server.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>anonymous</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="password">
+ <description>Password to the FTP server. This attribute is only supplied at create and is not readable.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>anonymous</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="upgradePackageDocumentId">
+ <description>The document number and revision of the uppgrade package where the white spaces has been removed and underscore between the document number and revision has been inserted e.g. 19089-CSX10901/1_A.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="deletePreventingCVs">
+ <description>The list containing the names of the Configuration Versions that stop the Upgrade Package MO from being deleted.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="otherReferringCVs">
+ <description>The list of names of Configuration Versions that refer to the Upgarde Package MO, but do not affect the deletable status of the Upgrade Package MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="isDeletable">
+ <description>Indicates if the Upgrade Package MO can be deleted.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="basedOnUpgradePackages">
+ <description>This attribute is only valid for Upgrade Packages of type Delta.It contains the merge history of this upgrade package.
+
+Example: [Product Data for normal UP (non Delta UP), Product Data for Delta UP1, Product Data for Delta UP2]. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <structRef name="AdminProductData"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="upCompatibilityIndex">
+ <description>This attribute states a compatibility index.
+
+If specified, it may be used when verifying that an upgrade 'from' state is valid for this Upgrade Package.
+
+Note: It is only used when the Upgrade Control File element upgrade window contains this type of information.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="cppUpVersion">
+ <description>This attribute states the CPP upgrade package version of this Upgrade Package</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="actionResult">
+ <description>The attribute contains the result from the latest four invoked actions.
+
+This attribute is only valid for actions::
+- install (all variants)
+- cancelInstall
+- verifyUpgrade
+- upgrade (all variants, Note that the attribute is only valid when the verification phase discovers that upgrade is not possible').</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <structRef name="ActionResultData"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="install">
+ <description>Load modules defined in the Upgrade Package Control file will only be downloaded to the node if the Load Module MO representing the load module file doesn't already exist.
+The result of this action is indicated in the attribute ActionResult. In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'.Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action will be removed in a later version.
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="FtpServerNotAccessibleException"/>
+ <raisesException name="GetFileException"/>
+ <raisesException name="IpAddressException"/>
+ <raisesException name="UpgradeControlFileException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="verifyUpgrade">
+ <description>Verifies that an upgrade is possible.
+
+The operation is not blocked while the verification is executing i.e. after basic controls the operation initiates the verification and returns 'void'.
+
+The progress of this action is indicated in the attribute ProgressHeader.The result of this action is indicated in the attribute ActionResult.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note: This action does not require a transaction.
+
+
+
+</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="VerifyUpgradeException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="upgrade">
+ <description>Upgrades the node. The operation is not blocked while upgrade is executing i.e. after basic controls the operation initiates the upgrade and returns 'void'.
+
+Before the real upgrade is started a verification phase is executed.
+
+The progress of this action is indicated in the attribute ProgressHeader.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+The result of this action is only indicated in attribute ActionResult in case the verification phase discovers that upgrade is not possible.
+
+Note: This action does not require a transaction.
+
+</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="UpgradeNotPossibleException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="rebootNodeUpgrade">
+ <description>The same as upgrade except that the hard upgrade sequence is always chosen.
+
+It could be helpful to use this method if the application has start- or upgrade- synchronization problems when using a soft upgrade sequence.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+The result of this action is only indicated in attribute ActionResult in case the verification phase discovers that upgrade is not possible.
+
+Note: This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="UpgradeNotPossibleException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="confirmUpgrade">
+ <description>The operator invokes this method when the trial period is over.
+The operation is not blocked while upgrade is executing i.e. after basic controls the operation initiates the upgrade and returns 'void'.In case the upgrade fails after 'void' has been returned the attribute ProgressHeader will be set to 'UpgradeExecutionFailed'.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="UpgradeNotPossibleException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="cancelUpgrade">
+ <description>Cancels an executing upgrade or an upgrade that is awaiting confirm.
+
+Note: This action performs a node restart so that the CV pointed out in the ConfigurationVersion MO is rolled back.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="forcedInstall">
+ <description>All load modules defined in the Upgrade Package Control file will be downloaded to the node even if the Load Module MO representing the load module already exists i.e. existing load module files are replaced.
+The result of this action is indicated in the attribute ActionResult.In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'.Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action will be removed in a later version.
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="FtpServerNotAccessibleException"/>
+ <raisesException name="GetFileException"/>
+ <raisesException name="IpAddressException"/>
+ <raisesException name="UpgradeControlFileException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="nonBlockingInstall">
+ <description>Load modules defined in the Upgrade Package Control file will only be downloaded to the node if the Load Module MO representing the load module doesn't already exist.
+
+This action is non-blocking i.e. the action initiates the installation and returns 'void' immediately without waiting for the installation to be completed.
+
+In case the installation fails after 'void' has been returned, this will be indicated by change of the value of attribute 'ProgressHeader' to 'ExecutionFailed'. Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action does not require a transaction.
+</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="nonBlockingForcedInstall">
+ <description>All load modules defined in the Upgrade Package Control file will be downloaded to the node even if the Load Module MO representing the load module already exists i.e. existing load module files are replaced.
+This action is non-blocking i.e. the action initiates the installation and returns 'void' immediately without waiting for the installation to be completed.
+The result of this action is indicated in the attribute ActionResult.In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'. Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="nonBlockingSelectiveForcedInstall">
+ <description>This action only installs the load modules that are required in this node i.e. the load modules required after successful execution of action upgrade on this upgrade package.
+
+A load module is considered to be required if one of the following criteria is fulfilled:
+a) The load module is included in a Repertoire MO where the Repertoire MO is connected to a SwAllocation MO and the SwAllocation MO is connected to a Slot MO, a Fan MO, a Jvm MO, a Webserver MO or an applicable type of application MO.
+b) The load module is of type 'other'.
+
+All required load modules will be downloaded to the node even if the Load Module MO representing the load module already exists i.e. existing load module files are replaced.
+
+This operation is non-blocking i.e. the action initiates the installation and returns "void" immediately without waiting for the installation to be completed.
+The result of this action is indicated in the attribute ActionResult.In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'. Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+Note. The behaviour described for this action is also obtained for the other installation actions if the Upgrade Control File indicates that the upgrade package is of type selective (which is recommended).
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="nonBlockingSelectiveInstall">
+ <description>This action only installs the load modules defined in the Upgrade Package Control file that are required in this node i.e. the load modules required after successful execution of action upgrade on this upgrade package.
+
+A load module is considered to be required if one of the following criteria is fulfilled:
+a) The load module is included in a Repertoire MO where the Repertoire MO is connected to a SwAllocation MO and the SwAllocation MO is connected to a Slot MO, a Fan MO, a Jvm MO, a Webserver MO or an applicable type of application MO.
+b) The load module is of type 'other'.
+
+Returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute
+actionResult.
+
+The required load modules will only be downloaded to the node if the Load Module MO representing the load module doesn't already exist.
+
+This action is non-blocking i.e. the action initiates the installation and returns 'void' immediately without waiting for the installation to be completed.
+
+The result of this action is indicated in the attribute ActionResult. In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'. Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.long
+
+Note. The behaviour described for this action is also obtained for the other installation actions if the Upgrade Control File indicates that the upgrade package is of type selective (which is recommended).
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="cancelInstall">
+ <description>This action interrupts an ongoing installation of an upgrade package.
+
+Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at execution of this action.
+
+This action is non-blocking i.e. the action initiates the cancel of the installation and returns 'void' immediately without waiting for the cancellation to be completed.
+
+During execution of this action the value of attribute 'ProgressHeader' is set to 'CancelOfInstallationIsExecuting'.
+
+In case the cancellation fails after 'void' has been returned this will be indicated by change of the value of attribute 'ProgressHeader' to 'CancelOfInstallationFailed'.
+
+Note! This action does not require a transaction.
+
+This action interrupts an ongoing installation of an upgrade package.
+Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at execution of this action.
+This action is non-blocking i.e. the action initiates the cancel of the installation and returns 'void' immediately without waiting for the cancellation to be completed.
+During execution of this action the value of attribute 'ProgressHeader' is set to 'CancelOfInstallationIsExecuting'.The result of this action is indicated in the attribute ActionResult.In case the cancellation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'CancelOfInstallationFailed'.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="clearUpgradeLogFile">
+ <description>Is used to clear the contents of current upgrade log file.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="UpgradeLogFileNotInUseException"/>
+ <raisesException name="UpgradeLogFileNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="Repertoire">
+ <description>The Repertoire is an abstraction of a functionality represented by a plug in unit type (PiuType MO) and one or more load modules (LoadModule MO). The repertoire also provides rules for PiuType/ Load Module combinations valid for a specific function where one function can be provided by one or many PiuType-Load Module combinations.
+These rules are used to load the correct software (Load Modules) to a PlugInUnit. This could be used as operator configuration support and/or in situations where automatic re-configuration is required (hot repair).
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade is recommended to create them.</description>
+ <attribute name="userLabel">
+ <description>A user friendly name associated to the managed object. </description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="name">
+ <description>A function friendly name associated to the repertoire. The value must be unique with respect to all repertoires with the same install state.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="info">
+ <description>Information regarding the function.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="piuTypeList">
+ <description>A list containing all PiuType references that has been added to this repertoire.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="PiuType"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="RepertoireId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving SwAllocation MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="SwAllocation"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="OspfInterface">
+ <description>The OSPF Interface MO represents an interface that is used by the OSPF protocol to communicate with a neighbour node. By connecting an OSPF interface to a Link MO that Link is defined as a link to be used by OSPF.
+
+Each OspfInterface MO must always be connected to a OspfArea MO.
+</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ospfAreaRelated">
+ <description>The identity of the OspfArea connected to this OspfInterface. The default value is the default OspfArea MO.</description>
+ <dataType>
+ <moRef name="OspfArea"/>
+ </dataType>
+ </attribute>
+ <attribute name="lsaTransmissionInterval">
+ <description>The time, in seconds, between LSA re-transmissions over the interface - default value 5 seconds.</description>
+ <dataType>
+ <long>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="helloInterval">
+ <description>The time, in seconds, between sending OSPF Hello-packets over the interface. Default value 10 seconds.
+
+Note! Must be a positive value.</description>
+ <dataType>
+ <long>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routerDeadInterval">
+ <description>The time, in seconds, after which a neighbor router is declared dead when not heard from.
+</description>
+ <dataType>
+ <long>
+ <defaultValue>40</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="interfaceTransitDelay">
+ <description>Estimated delay, in seconds, for the transmission of a link state update package over the interface.
+</description>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="interfacePriority">
+ <description>The interface priority. Each router is configured with a priority configured from 0 - 255 where 0 is the lowest priority and 255 the highest.
+
+Note! Must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="relatedLink">
+ <description>Each OSPF interface is connected to one IP link.
+The relatedLink can be either an IpAtmLink or an EthernetLink MO
+reference.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="OspfInterfaceId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOspfIfEvents">
+ <description>Performance monitoring counter for the number of times this OSPF interface has changed its state or an error has occured.
+
+See RFC 1850.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Ospf">
+ <description>The Ospf MO represents an instance of the Open Shortest Path First (OSPF) routing protocol running in a Cello node.
+
+When the Ospf MO is created a default OspfArea MO is also created. This OspfArea has the areaId 000.000.000.000.
+
+The attribute range0 in the default OspfArea will contain the following values:
+advertise = false
+ipAddress = 000.000.000.000
+subnetMask = 000.000.000.000
+</description>
+ <attribute name="OspfId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ospfRouterId">
+ <description>The ospfRouterId attribute is in the form of an IP address.
+In order to able to set ospfRouterId the attribute
+administrativeState has to be set to locked. The ospfRouterId
+is uniquely identifying the router in the Autonomous System. By
+convention to ensure uniqueness, this should be configured to the
+value of one of the routers IP interface addresses.</description>
+ <mandatory/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="ospfASBdrRtrStatus">
+ <description>The ospfASBdrRtrStatus attribute controls, whether this router is configured as an Autonomous System border router (Routers connected to multiple areas are called area border routers). The attribute must be set to 'True' if the user wants to configure static routes, which should be distributed to other OSPF routes as external routes. Configuration of static routes is the same as adding and deleting static routes to the IpRoutingTable Mo.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MO.
+The operationalState can only be enabled when the IP MO is in workingMode routerMode.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the MO.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="ospfAreaBdrRtrStatus">
+ <description>Area border router flag - indicates whether the router is acting as an area border router or not.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="ipMo">
+ <description>The name of the Ip MO that the Ospf MO is to use</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ip"/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. It is a bit mapped CORBA long, where one or more of the bits may be set. If none of the bits are set then the availability status is considered to be undefined.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOspfOriginateNewLsas">
+ <description>The number of new link-state advertisments that have been originated. This number is incremented each time the router originates a new LSA.
+
+For more detailed information, see RFC 1850.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOspfRxNewLsas">
+ <description>The number of link-state advertisments received determined to be new instantiations. This number does not include newer instantiations of self-originated link-state advertisments.
+
+For more detailed information, see RFC 1850.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="recoverTopoDb">
+ <description>Indicates whether the topology database is to be recovered from the database at restart.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="topoDbStoreInterv">
+ <description>The interval, in seconds, with which the topology database will be stored.</description>
+ <dataType>
+ <long>
+ <defaultValue>60</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="OspfArea">
+ <description>An OSPF autonomous system is divided into OSPF areas. The OSPF Area MO represents such OSPF areas.
+
+A default OspfArea MO is automatically created when the Ospf MO is created.
+It has the identity = 1, so LDN of this MO will be
+ManagedElement=1,IpSystem=1,Ospf=1,OspfArea=1.
+
+Note! A maximum of 4 OspfAreas can be configured each with a maximum of 8 interfaces.</description>
+ <attribute name="OspfAreaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="stubArea">
+ <description>Indicates whether the OSPF area is a stub area or not.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="importExternalLsa">
+ <description>Indicates whether importing Autonomous System external LSA's is supported.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="sendAreaSummary">
+ <description>Import Area summary - indicates whether the router will originate and propagate summary LSAs into a stub-area.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="stubAreaMetric">
+ <description>Cost for default route that the router advertises into the area if the area is a stub area and the router is an area border router. By default set to the least metric among the interfaces to other areas.</description>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="stubAreaMetricType">
+ <description>Stub Area metric type.
+
+RFC 1850 (OSPF V2 MIB):
+
+comparableCost (external type 1)
+nonComparable (external type 2)</description>
+ <dataType>
+ <enumRef name="OspfMetricType">
+ <defaultValue>comparableCost</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="areaLsaChecksum">
+ <description>Area Lsa checksum - 32-bit unsigned sum of the link-state advertisements LS check sums contained in this area's link-state database.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="areaId">
+ <description>The OSPF area identity in form of an IP address. This areId uniquely identifies the area.
+AreaId 0.0.0.0 is used for the OSPF backbone.
+Range: 000.000.000.000 to 255.255.255.255.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="range0">
+ <description>OspfArea IP address range zero (0).</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="OspfAreaRange"/>
+ </dataType>
+ </attribute>
+ <attribute name="range1">
+ <description>OspfArea IP address range one (1).</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="OspfAreaRange"/>
+ </dataType>
+ </attribute>
+ <attribute name="range2">
+ <description>OspfArea IP address range two (2).</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="OspfAreaRange"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOspfSpfRuns">
+ <description>The number of times that the intra-area route table has been calculated using this area's link-state database. This is typically done using Dijkstra's algorithm.
+
+For more detailed information, see RFC 1850.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving OspfInterface MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="OspfInterface"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="addAreaRange">
+ <description>Add aggregation range. Used to add a range of IP addresses to an OSPF area.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="range">
+ <description>The area range aggregation.</description>
+ <in/>
+ <dataType>
+ <structRef name="OspfAreaRange"/>
+ </dataType>
+ </parameter>
+ <parameter name="rangeIndex">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="AttrMissingAtCreateException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="NoSuchFieldException"/>
+ <raisesException name="ValueOutOfRangeException"/>
+ <raisesException name="WrongAttributeTypeException"/>
+ </action>
+ <action name="deleteAreaRange">
+ <description>Delete an IP address range. Used to remove a range of IP addresses from an OSPF area.
+
+Input is the area aggregation range index.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="rangeIndex">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroNotAccessibleException"/>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="ValueOutOfRangeException"/>
+ </action>
+ </class>
+
+ <class name="SwitchCoreUnit">
+ <description>The Switch Core Unit MO, SCU, represents the board specific HW on the SCB. This object collects HW failure on the board and sends alarms. It is also used for configuration of board specific FW.
+This board can only be fitted in slot 1 and 28 in a standards subrack.
+The board has a number of switch internal link ports.</description>
+ <notificationTypes>alarm</notificationTypes>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeStateSili">
+ <description>The administrative state of the switch internal link ports on the switch board. The attribute refers to all ports (locking will lock all ports, unlocking unlock all ports).
+SILI -switch internal link interface.
+</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSil">
+ <description>Operational state indicates the the traffic handling capability of all ports as a group on the board, i.e it is enabled if one or more of the eight ports is enabled. The purpose of this attribute is only for test.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSync">
+ <description>Operational State for network synchronization distribution.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSil">
+ <description>The availability status of the switch internal link (SIL) ports..
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSync">
+ <description>Availability state for network synchronization distribution.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="SwitchCoreUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>A list of the reserving MO's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="silPorts">
+ <description>The attribute provides a list of port numbers.
+The port number is between 0-7 and is used to read state of the switch internal port.
+See action getSilPortState, getOperState and getAvailState.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="getSilPortState">
+ <description>Returns status of the switch internal link port, which is the same as the LEDs on the unit.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <enumRef name="SilPortState">
+ </enumRef>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getSilOperState">
+ <description>Returns operational status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <enumRef name="OperState">
+ </enumRef>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getSilAvailState">
+ <description>Returns availability status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="GeneralProcessorUnit">
+ <description>The General purpose Processor Unit MO, GPU, represents the board specific HW on the GPB; hard disk, ethernet and serial port etc.
+
+Note! The 'availabilityStatus' for the GeneralProcessorUnit MO is retreived from the PlugInUnit MO.</description>
+ <attribute name="GeneralProcessorUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Indicates if the function provided by the managed object is capable of performing its normal functions or not.
+
+Note! The value for operationalState is retrived from the GeneralProcessorUnit's parent, i.e. the PlugInUnit.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumeDSize">
+ <description>The total size in bytes of the D volume.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumeDFreespace">
+ <description>The amount in bytes of freespace available on the D volume.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumePSize">
+ <description>The total size in bytes of the P volume.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumePFreespace">
+ <description>The amount in bytes of freespace available on the P volume.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds the identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Jvm">
+ <description>The JVM MO is used to represent the Java Virtual Machine. This object is used for configuration JVM parameters, including SW management of Java class libraries used in the machine.
+
+The local distinguished name of this MO is ManagedElement=1, Equipment=1, JVM=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="classpath">
+ <description>Current classpath, the JVM is using</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="admClasspath">
+ <description>New classpath that will be activated at next restart of JVM. The classpath has a directory, which contains the load module, i.e. the classpath references the load module.</description>
+ <dataType>
+ <sequence>
+ <moRef name="LoadModule"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="freeMemory">
+ <description>Free memory in the java machine, in bytes.
+
+NOTE: Before this value is read from the system the action 'garbageCollect' is invoked.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="totalMemory">
+ <description>Total amount of memory allocated to the java machine, in bytes.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="mopplets">
+ <description>Contains all classes that are to be initilised and started when the JVM restarts.
+
+Technical note: The specified classes must implement the se.ericsson.cello.moframework.Mopplet interface and be found in a jar/zip-file pointed out by the classpath.
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="main">
+ <description>Defines the start class name.
+e.g. "se.ericsson.cello.oms.Oms"</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="options">
+ <description>Current options:
+ -D&lt;property&gt;=&lt;value&gt; Set a system property value. Commonly java.class.path
+-Xms&lt;size&gt; Specify the size, in bytes, of the memory allocation pool.
+-Xss&lt;size&gt; Set thread stack size in bytes.
+-Xverify:[all | remote | none] Verify classes according to the suboption.
+ -Xverify:all verifies all classes.
+ -Xverify:remote verifies remote classes only.
+ -Xverify:none turns off class verification.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="JvmId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="properties">
+ <description>Determines the current system properties.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="reliableProgramUniter">
+ <description>A reference to the ReliableProgramUniter that refers to the programs in the which the JVM executes.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="admMain">
+ <description>New start class that will be activated at next restart of the JVM.
+e.g. "se.ericsson.cello.oms.Oms"</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="admOptions">
+ <description>This attribute is used when setting one or more administrative options.
+
+A set option is operational after the next Java Machine restart.
+
+See also attribute 'options'
+
+One or more options can be set, one option in each string of the
+sequence according to description below:
+
+Current options:
+ -D&lt;property&gt;=&lt;value&gt; Set a system property value. Commonly java.class.path
+-Xms&lt;size&gt; Specify the size, in bytes, of the memory allocation pool.
+-Xss&lt;size&gt; Set thread stack size in bytes.
+-Xverify:[all | remote | none] Verify classes according to the suboption.
+ -Xverify:all verifies all classes.
+ -Xverify:remote verifies remote classes only.
+ -Xverify:none turns off class verification.</description>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySwAllocation">
+ <description>This attribute holds the identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="SwAllocation"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="garbageCollect">
+ <description>Runs the garbage collector.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="setProperty">
+ <description>Sets a system property (i.e. propertys in the operating system).
+Note! The valeus set with this action is not saved in the database.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="name">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="value">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="restart">
+ <description>Restart of executing JVM instance.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="SwitchFabric">
+ <description>This MO represents the switch of a Cello node. It is used for general switch configuration.
+
+The system creates automatically one instance of this MO at restart.
+
+Today, only a maximum of 32 Switch Modules MOs and 2 SwitchInternalLinks MOs per InternalLinkGroup MOs are allowed in a Cello node. However, in theory the switch addressing space in the system allows up to 256 SwitchModules MOs. This would then mean there are 255 InternalLinkGroup MOs, each of which is allowed 256 SwitchInternalLink MOs by the addressing.
+
+The local distinguished name of this MO is ManagedElement=1, SwitchFabric=1.
+
+</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SwitchFabricId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SwitchModule">
+ <description>This MO represents two switch planes of one sub-rack, i.e. either the main switch or an external switch.
+
+Note! In a non-redundant system the administrativeStateSwitchPlaneA/B has to be set to locked for the non-present plane. </description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="switchModuleNumber">
+ <description>Indicates the number of the switch module, SMN.
+
+switchModuleNumber &amp;gt;= 0
+
+The main switch module, with one or two TimingUnits, is given SMN = 0. SMN for extension switch modules depends on the port pair that the extension switch module is connected to in the main switch module.
+
+The SMN is calculated according to the following formula:
+
+Switch module number [1..255] = int (APN/2)*8 + ISL-port in main [1..8]
+
+APN - ASCC port number
+ISL - inter-switch link</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="secondSmnEvaluation">
+ <description>secondSmnEvaluation - There are two cables that
+are relevant for Switch Module Number (smn) numbering
+If the cabling is wrong secondSmnEvaluation
+will show the second opinion about smn.
+Under normal conditions secondSmnEvaluation = smn.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the switch module.
+
+Note! When setting the 'administrativeState' to shutting down a notification about that the state has changed to 'locked' will be sent towards the operator. There is however no guarantee that this operation has been succesful despite the notification and state change due to limitations in the resource layer
+</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeStateSwitchPlaneA">
+ <description>The administrative state of switch plane A.
+It is not allowed to lock both switch plane A and B.
+
+Note! When setting the 'administrativeState' to shutting down a notification about that the state has changed to 'locked' will be sent towards the operator. There is however no guarantee that this operation has been succesful despite the notification and state change due to limitations in the resource layer</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeStateSwitchPlaneB">
+ <description>The administrative state of switch plane B.
+It is not allowed to lock both switch plane A and B.
+
+Note! When setting the 'administrativeState' to shutting down a notification about that the state has changed to 'locked' will be sent towards the operator. There is however no guarantee that this operation has been succesful despite the notification and state change due to limitations in the resource layer</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Switch Module. At least one of switch plane is enabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSwitchPlaneA">
+ <description>The operational state of Switch Module plane A. The state is disabled if any switch ports is faulty. But switch may still be used.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSwitchPlaneB">
+ <description>The operational state of Switch Module plane B. The state is disabled if any switch ports is faulty. But switch may still be used.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the Switch Module.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSwitchPlaneA">
+ <description>The availability status of the Switch Plane A.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSwitchPlaneB">
+ <description>The availability status of the Switch Plane B.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="activeSwitchPlane">
+ <description>The active switch plane: A, B. During multiple faults, both plan A and B may be used.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="ActiveSwitchPlane">
+ <defaultValue>switchPlaneA</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SwitchModuleId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="InternalLinkGroup">
+ <description>The Internal Link Group MO represents all switch internal links connecting the main switch to an external switch.
+
+Switch internal links are automatically grouped in Reliable Groups for redundancy.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="switchModuleNumber1">
+ <description>Reference to the SwitchModule MO that is interconnected by the link in the InternalLinkGroup.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="SwitchModule"/>
+ </dataType>
+ </attribute>
+ <attribute name="switchModuleNumber2">
+ <description>Reference to the SwitchModule MO that is interconnected by the link in the InternalLinkGroup.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="SwitchModule"/>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative status of internal link group.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational status of internal link group.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="InternalLinkGroupId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="getRlgLinks">
+ <description>Returns a list of resource instance identities of the switch internal links in the specified Reliable Group.
+
+The existing Reliable Groups are listed with action getReliableLinkGroups.
+
+Note! This action is transactional.</description>
+ <returnType>
+ <sequence>
+ <longlong/>
+ </sequence>
+ </returnType>
+ <parameter name="rlgNumber">
+ <description>Reliable link group number.</description>
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getLinkStatus">
+ <description>Returns the status of the specified switch internal link, within the specified Reliable Group.
+
+Note! This action is transactional.</description>
+ <returnType>
+ <enumRef name="SwitchReliableGroup">
+ </enumRef>
+ </returnType>
+ <parameter name="instanceId">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="rlgNumber">
+ <description>Reliable link group number.</description>
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getReliableLinkGroups">
+ <description>Returns a sequence of Reliable Group numbers.
+
+Each Reliable Group is identified by a unique number which can be used to read out the identities of the switch internal links that are allocated to the Reliable Group. This is done with action getRlgLinks.
+
+The allocation of switch internal links to Reliable Groups is automatic.
+
+Note! This action is transactional.
+</description>
+ <returnType>
+ <sequence>
+ <long/>
+ </sequence>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="SwitchInternalLink">
+ <description>This MO represents a link interconnecting the from either a SCB or SXB port on the main switch to a SCB on an external switch.
+
+The main switch is located in the hub subrack.
+
+The SCB is represented by the SwitchCoreUnit MO, while the SXB is represented by the SwitchExtensionUnit MO.
+
+Switch internal links are automatically grouped in Reliable Groups for redundancy.</description>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SwitchInternalLinkId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnit1">
+ <description>The reference of one connection point for a SwitchCoreUnit or SwitchExtensionUnit.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnit2">
+ <description>The reference of one connection point for a SwitchCoreUnit or SwitchExtensionUnit.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="siliport1">
+ <description>Switch internal port number on PlugInUnit1.
+
+Note!
+On a standard SCB/SXB board, the ports are labeled from the bottom to the top.
+
+Port nr -&gt; label:
+ '0' 'D'
+ '1' 'C'
+ '2' 'B'
+ '3' 'A'
+
+Also note that his mapping will change when adding/removing a board.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="siliport2">
+ <description>Switch internal port number on PlugInUnit2.
+
+Note!
+On a standard SCB/SXB board, the ports are labeled from the bottom to the top.
+
+Port nr -&gt; label:
+ '0' 'D'
+ '1' 'C'
+ '2' 'B'
+ '3' 'A'
+
+Also note that his mapping will change when adding/removing a board.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of switch internal link.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateTraffic">
+ <description>The operational state of switch internal link. There is no traffic if the link is disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusTraffic">
+ <description>The availabilityl status of switch internal link.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSync">
+ <description>The operational state of sync link. There is no clock distribution if the link is disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSync">
+ <description>The availability state of sync link.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etm4">
+ <description>This MO represents the hardware of the ET-M4 board type. It only represents the ET specific hardware, while the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-M4 board contains 2 physical ports that can be configured as either STM1(ETSI/TTC) or OC3C (ANSI). The board supports unchannelised ATM access (i.e. it maps ATMs cells directly into an SDH VC4 container).
+
+The board supports up to 1800 ATM VC connections.
+The number of terminated VPs are limited to 48/board.
+The board supports up to 750 VC UBR+ connections.
+
+The ET-M4 board contains 128 AAL2 multiplexers.
+The ET-M4 board supports up to 256 bidirectional F4/F5 PM flow per port.
+
+Note! IMA is not applicable for the ETM4 board.
+
+Note! The number of VCC TP+VPC TP with performance monitoring enabled (i.e. PM mode &lt;&gt; off) is restricted to 256 per board.
+
+Note! When using the Etm4 board the performance monitoring counters in the transmit direction found on the AtmPort MO does not show the following cells: CC cells and OAM FPM cells.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the hardware ETM4. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Etm4Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="VpcTp">
+ <description>Virtual path connection termination point, VpcTp, is used to represent the point where the VPC and associated overhead (F4 OAM cells) are terminated/originated.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time
+of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="VpcTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the VpcTp</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuity checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second. Continuity check both enables generation of CC cells as well as detection of LOC</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>PM mode is set to indicate type of performance monitoring mode (i.e. activation of bidirectional PM measurements).
+
+</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlkSize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.
+</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for number of lost forward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <action name="eteLoopBack">
+ <description>This action performs VC end to end loopback from this VpcTp.
+false=Failed, true=Succeded
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <boolean/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="VplTp">
+ <description>This MO is used to represent the termination of a VP link.
+
+Note that a maximum of 999 MO's of this type may be configured.
+
+Note! For information on how many VplTp's that can be configured under the AtmPort MO please refer to the board that is parent to the termination reserved by the AtmPort MO.
+
+The performance monitoring counters in the VplTp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large to fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="userLabel">
+ <description>This MOs user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="atmTrafficDescriptor">
+ <description>Reference to the Atm Traffic Descriptor.</description>
+ <mandatory/>
+ <dataType>
+ <moRef name="AtmTrafficDescriptor"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the VplTp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="externalVpi">
+ <description>This is the virtual path identifier for the external ATM cells.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmReceivedAtmCells">
+ <description>Performance monitoring counter for number of received ATM cells for the VplTp.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTransmittedAtmCells">
+ <description>Performance monitoring counter for number of transmitted ATM cells.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="VplTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="TimingUnit">
+ <description>This MO represents a timing unit (reference clock) in the node.
+
+The corresponding Program shall be of LoadModuleLoaderType, SpmFpgaLoader.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of TimingUnit</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the TimingUnit.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="TimingUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="PiuType">
+ <description>The PiuType is an MO that holds product information about a PlugInUnit and the execution resources of the PlugInUnit. It is created/deleted during a software upgrade.
+The PiuType is used when creating execution MOs connected to a PlugInUnit and when allocating software to this resource.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.
+
+
+</description>
+ <attribute name="userLabel">
+ <description>A user friendly name associated to the managed object. </description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productData">
+ <description>The productData describes the product number, short product revision, product name and product information of the PlugInUnit. The production date is not used.
+
+Trailing letters in the revision is recommended to be excluded in the PiuType. Example: R2B will be R2 without trailing letter, R2B/3 must be R2B/3 in the PiuType, R2B/A should be R2 in the PiuType.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="boardWidth">
+ <description>The width of the PlugInUnit board in steps of 5 mm.
+A PlugInUnit can use/cover more than the slot that it occupies.
+
+Example: boardWidth=3 corresponds to 3*5 = 15 mm.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long/>
+ </dataType>
+ </attribute>
+ <attribute name="airFlowData">
+ <description>Control value m3/h for the fan unit. Needed by cooling function.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="AirFlowData"/>
+ </dataType>
+ </attribute>
+ <attribute name="PiuTypeId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="role">
+ <description>The value will be MP if a board has the role of a Main processor.
+The value will be BP if a board has the role of a device board
+Otherwise the value will be OTHERS.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="PiuRole">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity's of the reserving MO's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="numberOfMoConfigurations">
+ <description>Returns the number of entries in the PIUTypeConfigurationArray.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ </action>
+ <action name="getMoConfiguration">
+ <description>Returns a struct of a specific MoConfiguration at a given index.
+The moConfiguration holds information about how to create the
+subordinate objects for a specific piu type.
+
+Precondition: 0 &lt;= index &lt;= numberOfMoConfigurations() - 1
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <structRef name="PiuTypeMOConfiguration"/>
+ </returnType>
+ <parameter name="index">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidIndexException"/>
+ </action>
+ </class>
+
+ <class name="SwAllocation">
+ <description>This MO is primarily used to handle data for automatic configuration of load modules. Automatic in the meaning that the system selects the appropriate load module and revision. A SWA may be related to a slot, indicating that a specific functionality is requested at this location. The SWA is manually created by the operator.
+
+The SWA object is related to (one or more) repertoires, which hold information on possible PIU-type/revisions and load module combinations.
+
+In some cases (e.g multi-purpose boards, boards with processor/FPGA-pools) it may not be possible to completely configure the PIU without instructions from the operator (e.g which load module runs on which processor/FPGA). In these cases a specialization of the SWA has to be designed in such a way that it can be manually configured.
+
+When a SwAllocation MO depends on a ManagedObject MO, this ManagedObject actually represents a RBS Fan.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade is recommended to create them.</description>
+ <attribute name="userLabel">
+ <description>Free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="role">
+ <description>The role of a slot/PIU. The role must be unique with respect to other SwAllocations in the node.
+
+This is a preparation to introduce predefined SwAllocation in future upgrade packages.</description>
+ <mandatory/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="repertoireList">
+ <description>A list of references to repertoires.</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Repertoire"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="slotList">
+ <description>A list of references to mainly slots in a subrack, e.g. Slot or Fan MO. It may also refer to other objects handling auxiliary units, e.g. RBS Fan.</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SwAllocationId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="addRepertoire">
+ <description>Adds the specifed repertoire to this list.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aRepertoire">
+ <in/>
+ <dataType>
+ <moRef name="Repertoire"/>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ <action name="deleteRepertoire">
+ <description>Removes the first occurrence of the specified repertoire from this list.
+
+Notw! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aRepertoire">
+ <in/>
+ <dataType>
+ <moRef name="Repertoire"/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="addSlot">
+ <description>Adds the specified Slot to the slotList.
+The slot can only be of type Slot MO, Fan MO, WebServer MO, JVM MO or an applicable type of application MO (e.g. for "RBS Fans").
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aSlot">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ <action name="deleteSlot">
+ <description>Removes the first occurrence of the specified slot from this list.
+The slot can only be of type Slot MO, Fan MO, WebServer MO or an
+applicable type of application MO (e.g. for "RBS Fans").
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aSlot">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="deleteAllRepertoires">
+ <description>Removes all repertoires from this list and sets its size to zero.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="deleteAllSlots">
+ <description>Removes all slots from this list and sets its size to zero.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="addSlots">
+ <description>Adds the specified Slot to the slotList.
+The slot can only be of type Slot MO, Fan MO, WebServer MO, JVM MO or an applicable type of application MO (e.g. for "RBS Fans").
+If the slot exists in the list, the object is ignored.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="managedObjects">
+ <in/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ <action name="addRepertoires">
+ <description>Adds the specifed repertoire to this list.
+
+If the repertoires exist in the list the repertoire is ignored.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="repertoire">
+ <in/>
+ <dataType>
+ <sequence>
+ <moRef name="Repertoire"/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ </class>
+
+ <class name="MediumAccessUnit">
+ <description>The Medium Access Unit (MAU) MO represents the Ethernet transceiver function on a General Processor Board (GPB).
+
+Note! Ethernet links which are modelled by a MediumAccessUnit MO are used for O&amp;M IP traffic only. MediumAccessUnit MOs must not be configured under a GeneralProcessorUnit MO which have a IpAccessHostGpb referring to it.
+
+Note! This object is known in standards as "MediumAttachmentUnit".
+</description>
+ <attribute name="userLabel">
+ <description>Label for free use.
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Description of operational state which has an enumerated datatype</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="MediumAccessUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="connectorLabel">
+ <description>This attribute is used by a management system to show the label on the port the connector is attached to.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>Eth</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDot3StatsLateCollisions">
+ <description>Performance management counter for the number of times that a collision was detected on the interface after the minimum length of a frame.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDot3StatsFCSErrors">
+ <description>Performance management counter for the number of frames that did not pass the FCS check.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="linkSpeed">
+ <description>The Link Speed, measurment unit is Mb/s..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="duplexMode">
+ <description>The duplex mode used.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="MauDuplexMode">
+ <defaultValue>FULL_DUPLEX</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ReliableProgramUniter">
+ <description>A Reliable Program Uniter (RPU) is a controlling and addressing entity providing one common addressing unit for two Reliable Programs. Or more correctly for parts of two Reliable Programs, each part is called a Resource Suite Handler (RSH). The RSH is implemented and owned by the application. It is not a function or a concept within Cello.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reliableProgramLabel">
+ <description>Reliable Program Label.
+Compare this to the reliableProgramLabel in LoadModule MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="admActiveSlot">
+ <description>Reference to slot, contains the running "Normal" relation to a slot. If the reference is set to the passive slot, the passive slot will be cleared and only one relation will be set.</description>
+ <mandatory/>
+ <dataType>
+ <moRef name="Slot"/>
+ </dataType>
+ </attribute>
+ <attribute name="admPassiveSlot">
+ <description>Reference to slot, contains the running "Stand-by" relation to a slot. If the reference is set to the active slot or a null value, the passive slot will be cleared. </description>
+ <dataType>
+ <moRef name="Slot"/>
+ </dataType>
+ </attribute>
+ <attribute name="switchOver">
+ <description>This attribute controls when to switchover the RPU, if a certain type error situation occurs.</description>
+ <dataType>
+ <enumRef name="RPUSwitchOverMode">
+ <defaultValue>AtPiuFault</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="normalisation">
+ <description>This attribute controls when to switch back the RPU, after error recovery has been done.</description>
+ <dataType>
+ <enumRef name="RPUNormalisationMode">
+ <defaultValue>Automatic</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="replication">
+ <description>This attribute indicates that which level of data replication that is associated with the RPU.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="RPUReplicationMode">
+ <defaultValue>ApplControlled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalMode">
+ <description>This attribute indicates if the RSH execution mode (active/passive) in the two Reliable Program, matches the normal/stand-by relations set on the corresponding RPU.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="RPUOperationalMode">
+ <defaultValue>Unavailable</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="ReliableProgramUniterId">
+ <mandatory/>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="switch">
+ <description>This action will force the two corresponding RSHs to change their execution mode (active/passive). It will lead either to a switchover or to a switchback, depending of what value the operational Mode attribute is showing.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ </class>
+
+ <class name="ManagedElementData">
+ <description>This object contains attributes and actions on Cello node-level.
+
+The ManagedElementData MO is automatically created and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, ManagedElementData=1.</description>
+ <systemCreated/>
+ <attribute name="ManagedElementDataId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfigurationAllowed">
+ <description>This attribute specifies if the system is allowed to auto create detected objects. Note that slots will always be auto created.
+
+Note! When setting this attribute from true to false the system creates a new CV.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="documentServerAddress">
+ <description>The base URL for the documentation server (ALEX). The attribute is read by Element Management application to find the documentation server in the network.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="logonServerAddress">
+ <description>A list of node names or IP addresses of the single logon servers (SLSs). The list uses commas to seperate the single logon server addresses, e.g. "https://SLS1,https://SLS2,https://SLS3", these addresses consists of the URLs to the concerned SLS servers. The attribute is read by Element Management application to find the single logon server in the network.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="dhcpServerAddresses">
+ <description>IP addresses to the DHCP server, used by the DHCP Relay Agent.
+
+Default is an empty array.
+
+Adding and removing addresses is done through the actions addDhcpServerAddress() and removeDhcpServerAddress().
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string>
+ <defaultValue>empty</defaultValue>
+ </string>
+ <length>10</length>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="performanceDataPath">
+ <description>This attribute is used by the internal performance management service
+to know where to store it's data files. The attribute is the name of
+a path in the node.
+
+Example: /c/public_html/cello/XML_files/</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ntpServerAddressPrimary">
+ <description>This is the IP address to the NTP server</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ntpServiceActivePrimary">
+ <description>This is a boolean that controls if the node should poll the primary NTP server for information.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="ntpMinPollPrimary">
+ <description>This value states the minimum interval (in seconds) for polling the primary NTP server.
+
+Note! This value has to be &gt; 0.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>16</min> <max>131072</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ntpMaxPollPrimary">
+ <description>This value states the maximum interval (in seconds) for polling the primary NTP server.
+
+Note! This value has to be &gt; 0.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>16</min> <max>131072</max>
+ </range>
+ <defaultValue>1024</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ntpBurstFlagPrimary">
+ <description>This is the burst flag used towards the primary NTP server.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="ntpServerAddressSecondary">
+ <description>This is an alternative IP address to a NTP server</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ntpServiceActiveSecondary">
+ <description>This is a boolean that controls if the node should poll the secondary NTP server for information.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="ntpMinPollSecondary">
+ <description>This value states the minimum interval (in seconds) for polling the secondary NTP server.
+
+Note! This value has to be &gt; 0.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>16</min> <max>131072</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ntpMaxPollSecondary">
+ <description>This value states the maximum interval (in seconds) for polling the secondary NTP server.
+
+Note! This value has to be &gt; 0.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>16</min> <max>131072</max>
+ </range>
+ <defaultValue>1024</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ntpBurstFlagSecondary">
+ <description>This is the burst flag used towards the secondary NTP server.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="nodeUTCTime">
+ <description>This attribute specifies the UTC time used in the node. The attribute value is milliseconds since epoch (January 1, 1970, 00:00:00 GMT).
+The value may only be set while ntpServiceActive both for primary and secondary is false.</description>
+ <dataType>
+ <longlong>
+ <defaultValue>0</defaultValue>
+ </longlong>
+ </dataType>
+ </attribute>
+ <attribute name="nodeLocalTimeZone">
+ <description>This value states in what time zone the node is located. This attribute is needed by management application to convert UTC time from a log or NTP service to local time.
+It will not change the real time clock on the node.
+
+The timeZone is represented by three characters, example GMT.
+
+Available options are:
+
+TimeZone ID Offset
+GMT (Greenwich Mean Time) 0
+UTC (Coordinated Universal Time) 0
+ECT ( Central European Standard Time) + 1
+EET (Eastern European Time) + 2
+ART (Eastern European Time) + 2
+EAT (Eastern African Time) + 3
+MET (Iran Time) + 3.5
+NET (Armenia Time) + 4
+PLT (Pakistan Time) + 5
+IST (India Standard Time) + 5.5
+BST (Bangladesh Time) + 6
+VST (Indochina Time) + 7
+CTT (China Standard Time) + 8
+JST (Japan Standard Time) + 9
+CST (Central Standard Time) + 9.5
+EST (Eastern Standard Time) + 10
+AET (Eastern Standard Time) + 10
+SST (Solomon Is. Time) + 11
+NST (New Zealand Standard Time) + 12
+CAT (Central Alaska Time) - 1
+AGT (Argentina Time) - 3
+BET (Brazil Time) - 3
+CNT (Newfoundland Standard Time) - 3.5
+PRT (Atlantic Standard Time) - 4
+IET (Eastern Standard Time) - 5
+ACT (Central Standard Time) - 6
+PNT (Mountain Standard Time) - 7
+MST (Mountain Standard Time) - 7
+PST (Pacific Standard Time) - 8
+AST (Alaska Standard Time) - 9
+HST (Hawaii Standard Time) - 10
+MIT (West Saoma Time) - 11
+--
+
+Reference: http://www.greenwichmeantime.com
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="daylightSavingTime">
+ <description>This attribute states weather daylight saving time is used on this node. It is used to by the management application and will not change the real time clock on the node.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumeCSize">
+ <description>The total size of the C volume on the Cello node in bytes. The C volume may be replicated on several hard disks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumeCFreespace">
+ <description>The number of bytes of free space available on the C volume. The C volume may be replicated on several hard disks in a Cello node.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nodeUniqueID">
+ <description>This is a unique node identity to be set only in the factory.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="swServerUrlList">
+ <description>A list of URLs of external server for downloading of software. A comma-separated list or URLs, complete with path and name of property file.
+
+Note: For downloading of software for system upgrade, see attribute ftpServerIpAddress in MO UpdradePackage.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="piuGroupEscalationType">
+ <description>The type of node restart when it is a problem with the last PIU in a PIU group.</description>
+ <dataType>
+ <enumRef name="NodeRestartType">
+ <defaultValue>WARM_AT_PIU_RESTART</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="syncModeOperation">
+ <description>The sync mode operation of the node. Note that this attribute is only relevant when the node contains CBU board. For all other cases the value shall be set to NOT_USED.</description>
+ <dataType>
+ <enumRef name="SyncMode">
+ <defaultValue>NOT_USED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <action name="createNtpPrimary">
+ <description>This action creates the primary Network Time Protocol. There can only exist one primary and one secondary ntp.
+
+Once the ntp is created it is possible to change the attributes, i.e ip address, burst flag, max- and min poll and which is the active one.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ntpServerAddressPrimary">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpMinPollPrimary">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpMaxPollPrimary">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpBurstFlagPrimary">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpServiceActivePrimary">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="createNtpSecondary">
+ <description>This action creates the secondary/alterative Network Time Protocol.
+There can only exist one primary and one secondary ntp.
+
+Once the ntp is created it is possible to change the attributes, i.e ip address, burst flag, max- and min poll and which is the active one.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ntpServerAddressSecondary">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpMinPollSecondary">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpMaxPollSecondary">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpBurstFlagSecondary">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpServiceActiveSecondary">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="deleteNtpPrimary">
+ <description>This action deletes the primary NTP.
+
+An exception will be thrown if the primary attributes are accessed (set and get).
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="deleteNtpSecondary">
+ <description>This action deletes the secondary NTP.
+
+An exception will be thrown if the secondary attributes are accessed (set and get).
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="addDhcpServerAddress">
+ <description>Takes an array of Ip addresses (Strings), and adds them to the list held by the Dhcp Relay Agent fRO.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddressArray">
+ <description>Elements are assumed to have the format of a String with 4 fields of numerics, each field separated with a dot. E.g. 123.322.34.123. An empty array or empty string in first element is not allowed. Max 10 elements.</description>
+ <in/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="removeDhcpServerAddress">
+ <description>Takes an array of Ip addresses (Strings), and removes them from the list held by the Dhcp Relay Agent fRO.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddressArray">
+ <description>Elements are assumed to have the format of a String with 4 fields of numerics, each field separated with a dot. E.g. 123.322.34.123. An empty array or empty string in first element is not allowed. Max 10 elements.</description>
+ <in/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="setNodeUniqueId">
+ <description>Used for setting the nodeUniqueId attribute. This method should only be used in the factory, i.e. it is not for general use by the operator.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="nodeUniqueId">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="SwitchExtensionUnit">
+ <description>This MO represents the Switch Extension Unit, SXU, board. The board may only be inserted in slot 2-27 (in a standard subrack).
+If redundant links are used, two boards must be inserted next to each other.
+The board has a number of switch internal link ports.</description>
+ <attribute name="SwitchExtensionUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>This attribute is used to hold a user friendly name of the object if needed.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeStateSil">
+ <description>The administrative state of switch internal link ports on the switch board.
+The attribute refers to all ports (locking will lock all ports, unlocking will unlock all ports).
+SIL- switch internal link.
+
+</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSil">
+ <description>Operational State for all ports. Operational state is enabled if one of the eight ports is enabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSync">
+ <description>Operational State for network synchronization distribution</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSil">
+ <description>The availability state of switch internal link (sil) ports.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSync">
+ <description>The availability state of the sync link.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The attribute is set by the action Reserve.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SilPorts">
+ <description>The attribute provides a list of port numbers.
+The port number is between 0-7 and is used to read state of the switch internal port.
+Se action getSilPortState, getSilOperState and getSilAvailState.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="getSilPortState">
+ <description>Returns status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <enumRef name="SilPortState">
+ </enumRef>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getSilOperState">
+ <description>Returns operational status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <enumRef name="OperState">
+ </enumRef>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getSilAvailState">
+ <description>Returns availability status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Aal2PathDistributionUnit">
+ <description>This MO is used to represent an AAL2 Path Distribution Unit. Such a unit handles a set of Aal2PathVccTps that belong to the same Aal2 AP and that are handled by the same Path Resource Handling Program.
+This Path Resource Handling Program is referenced by the rpuId attribute.</description>
+ <attribute name="Aal2PathDistributionUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>The physical location of a CPS RC (Common Part Sub-Layer Resource Control) program represented by a reference to a ReliableProgramUniter.
+
+Note that one ReliableProgramUniter MO may only be referenced once under one Aal2Ap. That means all Aal2PathDistributionUnits must reference different ReliableProgramUniter MO's.
+
+Two Aal2PathDistributionUnits under different Aal2Ap's may however reference the same ReliableProgramUniter MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal2PathVccTpList">
+ <description>List of references to Aal2PathVccTp MO:s.
+Note that setting of this attribute removes the current list of Aal2PathVccTp's.
+Each reference must be unique among all paths within all Aal2PathDistributionUnit's belonging to the same Aal2Ap.</description>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2PathVccTp"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="addPath">
+ <description>This action adds a list of Aal2PathVccTps to an Aal2PathDistributionUnit.
+
+If the data contains a reference to a non existing path, the exception InvalidReference is raised.
+
+If the path list contains a path that has a non-unique aal2PathId value, then the exception Aal2PathIdNotUnique is raised. The pathId value must be unique within all Aal2PathDistributionUnits under the same Aal2Ap.
+
+If the path list contains a path that already belongs to a Aal2PathDistributionUnit, then the exception PathAlreadyRegistered is raised.
+
+Note! Adding one or more Aal2PathVccTps using this action updates the attribute 'Aal2PathVccTpList'.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aal2PathVccTpId">
+ <in/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2PathVccTp"/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidReferenceException"/>
+ <raisesException name="Aal2PathIdNotUniqueException"/>
+ <raisesException name="PathAlreadyRegisteredException"/>
+ </action>
+ <action name="removePath">
+ <description>This action removes a list (sequence) of AAL2 path's from the Aal2PathDistributionUnit.
+
+If the path list contains a path that is not in this Aal2PathDistributionUnit, the exception NotInGroup is raised.
+
+Note! Removing one or more Aal2PathVccTps using this action updates the attribute 'Aal2PathVccTpList'.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aal2PathList">
+ <in/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2PathVccTp"/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="NotInGroupException"/>
+ </action>
+ </class>
+
+ <class name="Fan">
+ <description>The Fan is used for cooling the Cello-subrack and is connected to one or two
+SCU (switch core board). This MO is used for controlling and sending alarm from
+the Fan.
+
+Note, either the fan can be supplied by Cello and Fan MO is used, or alternatively the fan can supplied by a source external to Cello and therefore a ManagedObject MO is used to represent the fan.
+
+</description>
+ <attribute name="FanId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrativeState of Fan MO.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="connectedToScu">
+ <description>A Fan must always be connected to a Switch Core unit that mediates the communication with a main processor.
+
+In this attribute it is possible to see which SwichCoreUnit that the fan is connected to.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="SwitchCoreUnit"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state is set to 'enabled' when the Fan has loaded and started its load module.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="piuType">
+ <description>A reference to an available PiuType at create of a Fan.
+</description>
+ <mandatory/>
+ <dataType>
+ <moRef name="PiuType"/>
+ </dataType>
+ </attribute>
+ <attribute name="controllingState">
+ <description>The application that controls the Fan has three main states:
+- standalone: running on itself, not manageable
+- autonomous: manageable state
+- noiseReduced: temporary state with reduced cooling
+
+NOTE: This attribute is not supported in CPP 4.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="FanState">
+ <defaultValue>standalone</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="hdlcAddress">
+ <description>The physical address of the RS-485 communication link.
+Incorrect setting of the address can cause collision with other connected auxiliary units or lost connection. The default value should be suitable for most configurations.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <action name="restartFan">
+ <description>A restart will cause the Fan to be initiated, re-booted and all load modules to be reloaded from persistent memory. This is also known as a forced reload.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="restartCause">
+ <in/>
+ <dataType>
+ <enumRef name="RestartCause">
+ </enumRef>
+ </dataType>
+ </parameter>
+ <raisesException name="EquipException"/>
+ <raisesException name="ValueOutOfRangeException"/>
+ </action>
+ </class>
+
+ <class name="Mtp2TpItu">
+ <description>This MO represents a MTP2 Termination Point for the ITU standard, as defined in Recommendation Q.703 07/96.
+
+The performance monitoring counters found in Mtp2Itu MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a hardware fault, aal1 server/adm restart or node restart.
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard
+which is NOT the ITU standard.
+
+NOTE: There is a restriction of a maximum of 32 Mtp2Tp's per MP.</description>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2TpItuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MTP2 Signalling Terminal.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtp2ProfileItuId">
+ <description>Reference to a Mtp2ProfileItu MO.
+
+Note: The bitRate can not be changed.</description>
+ <mandatory/>
+ <noNotification/>
+ <dataType>
+ <moRef name="Mtp2ProfileItu"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReTransmittedOctets">
+ <description>Number of re-transmitted octets.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNacks">
+ <description>Number of negative acknowledgements received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuReceivedInError">
+ <description>Number of signal units received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfStartedRBCongestion">
+ <description>Number of started local RB congestions.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSendBufferOctets">
+ <description>Number of octets in send buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLocalSIBTime">
+ <description>Total time in local SIB (Sending).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRemoteSIBTime">
+ <description>Total time in remote SIB (Receiving).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFTransmitted">
+ <description>Number of SIO &amp; SIF octets transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The attribute is set by the list of reserving MO's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Mtp3bSlItu"/>
+ </dataType>
+ </attribute>
+ <attribute name="ds0BundleId">
+ <description>The Ds0Bundle MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ds0Bundle"/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnitId">
+ <description>The PlugInUnit MO that this MO references.
+It indicates on which processor the Termination Point will be.
+
+Note: The PlugInUnit must be of type GPB.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PlugInUnit"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUTransmitted">
+ <description>Number of MSUs transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFReceived">
+ <description>Number of SIO and SIF octets received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUReceived">
+ <description>Number of MSUs received..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp2TpAnsi">
+ <description>This MO represents a MTP2 Termination Point for the ANSI standard , as defined in T1.111-1996.
+
+The performance monitoring counters found in Mtp2Ansi MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a hardware fault, aal1 server/adm restart or node restart.
+
+NOTE: This MO cannot in anyway be related (either contained by or dependent on) an MO that belongs to a
+standard which is NOT the ANSI standard.
+
+NOTE: There is a restriction of a maximum of 32 Mtp2Tp's per MP.</description>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2TpAnsiId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MTP2 Signalling Terminal.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtp2ProfileAnsiId">
+ <description>Reference to a Mtp2ProfileAnsi MO.
+
+Note: The bitRate can not be changed.</description>
+ <mandatory/>
+ <noNotification/>
+ <dataType>
+ <moRef name="Mtp2ProfileAnsi"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReTransmittedOctets">
+ <description>Number of re-transmitted octets.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNacks">
+ <description>Number of negative acknowledgements received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuReceivedInError">
+ <description>Number of signal units received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfStartedRBCongestion">
+ <description>Number of started local RB congestions.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSendBufferOctets">
+ <description>Number of octets in send buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLocalSIBTime">
+ <description>Total time in local SIB (Sending).
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRemoteSIBTime">
+ <description>Total time in remote SIB (Receiving).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFTransmitted">
+ <description>Number of SIO &amp; SIF octets transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUReceived">
+ <description>Number of MSUs received..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Mtp3bSlAnsi"/>
+ </dataType>
+ </attribute>
+ <attribute name="ds0BundleId">
+ <description>The Ds0Bundle MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ds0Bundle"/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnitId">
+ <description>The PlugInUnit MO that this MO references.
+It indicates on which processor the Termination Point will be.
+
+Note: The PlugInUnit must be of type GPB.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PlugInUnit"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUTransmitted">
+ <description>Number of MSUs transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFReceived">
+ <description>Number of SIO and SIF octets received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Ds0Bundle">
+ <description>The Ds0Bundle, Digital Signalling Level 0, MO represents a number of timeslots on a physical port.
+Any of E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E1Ttp or T1Ttp.
+The Ds0Bundle can be used in three different ways:
+
+- Fractional ATM
+
+Please refer to the AtmPort MO for details. Note that the TdmMode attribute
+must be disabled.
+
+-Circuit emulation
+
+Please refer to Aal1VccTp MO for details. Note that the TdmMode attribute
+must be disabled. Note that only 4 Ds0Bundle's per port can be configured
+when running circuit emulation.
+
+- TDM Switching
+
+The Ds0Bundle is reserved for switching node internal Ds0 connections. In
+this mode, the tdmMode attribute should be enabled.
+
+
+</description>
+ <attribute name="Ds0BundleId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availabiltity status of Ds0Bundle.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of Ds0Bundle.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="listOfTimeSlots">
+ <description>The list gives the time slots (within ATM traffic fraction) that are to be allocated to the Ds0Bundle.
+
+When a Ds0Bundle is contained by a E1PhysPathTerm the slots that can be placed in this list are 1 to 31.
+When a Ds0Bundle is contained by a J1PhysPathTerm then the slots that can be placed in this list are 1 to 24.
+When a Ds0Bundle is contained by a T1PhysPathTerm then the slots that can be placed in this list are 1 to 24.
+When a Ds0Bundle is contained by a E1Ttp the slots that can be placed in this list are 1 to 31.
+
+Note: the same timeslot cannot appear more than once in the list! If a E1/J/T1PhysPathTerm contains more than
+one Ds0Bundle, then the Ds0Bundles listOfTimeSlots must be mutually exclusive (i.e. slots in one list cannot be used in another list).
+
+Note! If the Ds0Bundle is used for carrying SS7 traffic, the listOfTimeSlots can only contain 1 (one) time slot.
+In this case that is if the Ds0Bundle is reserved by an Mtp2TpAnsi, Mtp2TpItu or Mtp2TpChina.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <long>
+ <range>
+ <min>0</min> <max>31</max>
+ </range>
+ </long>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="tdmMode">
+ <description>The state of tdmMode (Time Division Multiplexing), can be disabled/enabled.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal1TpVccTp">
+ <description>The Aal1TpVccTp MO represents the Aal1 interworking function in a circuit emulation. The object refers to a Ds0Bundle which represents one end of the circuit emulation, and a VclTp which represents the other end.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time
+of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0.</description>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ds0BundleId">
+ <description>The Ds0Bundle MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ds0Bundle"/>
+ </dataType>
+ </attribute>
+ <attribute name="partialFill">
+ <description>Indicates how many bytes are filled in each ATM cell. The value 47 indicates that the partial filled cells is not used, i.e. all the cells are filled completely.
+
+Partial filling of cells in used in circuit emulation. It is used to reduce packetisation delay. Refer to the ATM Forum specifications for more details.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>23</min> <max>47</max>
+ </range>
+ <defaultValue>47</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="cdvt">
+ <description>Specifies the cell delay variation tolerance. Refer to ATM Forum specifications for more details.
+
+Unit is micro seconds.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>100</min> <max>4000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of Aal1TpVccTp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuitiy checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second.
+
+Activates VC end to end continuityCheck according to ITU.T rec I.610.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>Controls the activation of PM counters and F5 PM flow on the VC connection.</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlockSize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for forwarded lost cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forwarded missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forwarded errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="Aal1TpVccTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpId">
+ <description>The VclTp MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSpAnsi">
+ <description>Mtp3b Signalling Point for the ANSI standard.
+
+This MO represents/models the MTP3b Signaling Point characteristics/functions according to the Ansi standard.
+A signaling point is a logical node in the signaling network. The combination of signaling points and their interconnecting
+signaling links form the SS No. 7 signaling network. The signaling point represented by this object is a Local Signaling Point.
+
+The performance monitoring counters found in Mtp3SpAnsi MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: IT IS NOT POSSIBLE TO CREATE SIGNALLING POINTS OF DIFFERENT STANDARDS!
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the ANSI standard.
+
+NOTE: The combination of network indicator (networkInd) and Signalling Point Code (signallingPointCode) has to be unique for each Signalling Point.
+
+NOTE: A maximum of 15 instances of this MO can be created on (referencing) the same PlugInUnit.
+
+NOTE: The maximum number of Signalling Points that can be created in a CPP based node is 24.
+
+NOTE: Deleting a singel L3 Signal Point is not possible, if it necessary to delete a Signal Point then all Signal Points has to be deleted. This also has to be done whitin the same transaction.
+
+NOTE: Any object created under a certain SP (Signaling Point) cannot refer to an object created under another SP. Nor can it refer to an object created under another SP.</description>
+ <attribute name="Mtp3bSpAnsiId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>Holds a reference to the Reliable Program Uniter.
+The RPU is at the server.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="networkInd">
+ <description>The network indicator, NI, is used for discrimination of messages between functionally different networks.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bNetworkInd">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signallingPointCode">
+ <description>The signallingPointCode (Local Point Code) attribute (SPC) is used together with the network indicator (NI, networkInd attribute) to uniquely identify the MTP Signalling Point, SP.
+SP = NI-SPC.
+Size (2 exp 24)-1 (16777215).
+The SignallingPointCode (SPC) is normally grouped together as three numbers wich correspond to network identifier, network cluster, network cluster member. The three numbers are coded as 8-8-8 bits in the total SPC. To enter the SPC-value, you have to convert the 3 numbers to their binary code and then convert the whole 24-bit patterna as an integer. Sometimes the SPC is used as a whole uniqe number (no internal structure).
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16777215</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="testPatternSltm">
+ <description>The testPatternSltm attribute represents a string testpattern in the Signalling Link Test Message.
+
+Minimum string length 2 characters, maximum 30 characters. Allowed characters are 0-9, A-F.
+Only even number of characters is allowed.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>2</min> <max>30</max>
+ </lengthRange>
+ <defaultValue>"A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="nodeBehaviour">
+ <description>The nodeBehaviour attribute represents the MTP3b node type.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NodeBehaviourType">
+ <defaultValue>SEP</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeReroutBuf">
+ <description>The maxSizeReroutBuf attribute represents the maximum size (in kB) of the rerouting buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeChangeBuf">
+ <description>The maxSizeChangeBuf attribute represents the maximum size (in kB) of the changeover buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="transFrHandler">
+ <description>Determines how a TransFer Restricted signal (TFR) should be treated.
+</description>
+ <dataType>
+ <enumRef name="Mtp3bTfrHandling">
+ <defaultValue>IGNORED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="sioSpare">
+ <description>The sioSpare2 attribute determines if the two spare bits in the SIO (Service Information Octet) should be treated as spare.</description>
+ <dataType>
+ <enumRef name="Mtp3bSioSpareBitsUse">
+ <defaultValue>PRIO</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="m3uaNoOfAttempsOfDauds">
+ <description>For M3UA, number of attempts to send the DAUD message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="noOfAttempsOfAssociationEstablishment">
+ <description>Number of attempts to send the SCTP_ASSOCIATE_REQ message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>65535</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="statusIndInterval">
+ <description>The statusIndInterval attribute sets the interval for sending MTP-STATUS indication, i.e. send indication every Nth message .</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="resendTfcInterval">
+ <description>Send TFC back to originating signalling point code for every n:th message when
+the destination is congested. Set to 0 will suppress sending of TFC.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="sendSltmBefLink">
+ <description>The sendSltmBefLink attribute determines if the SLTM (Signalling Link Test Message) should be sent and a SLTA received before the link is considered to be in service.
+
+Note! It is not recommended nor is it in accordance with standard to set the value of this attribute to 'false' </description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="spPriority">
+ <description>Struct containing the ANSI priority attributes.
+</description>
+ <dataType>
+ <structRef name="Mtp3bSpAnsiPriorityData"/>
+ </dataType>
+ </attribute>
+ <attribute name="noOfCongestLevelForNI">
+ <description>Defines the number of congestion levels for NI.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetCongestTestFlag">
+ <description>Selection of which procedure to use during congestion handling if the national option with priorities is used.
+
+0, use TcTimer as described by the TTC standard.
+1, use Route Set Congestion Test as described by the ANSI, ITU and China Standard.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute reflects the operational status of the MTP3b SP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="spTimer">
+ <description>Struct containing ANSI specific timer data.</description>
+ <dataType>
+ <structRef name="Mtp3bSpAnsiTimerData"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's. Can be of type SccpSp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfForcedRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed forced rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfControlledRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed controlled rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfEmergencyChangeOverRec">
+ <description>Performance management counter for number of received emergency changeOver orders (ECO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeOverRec">
+ <description>Performance counter for number of changeOver order messages (COO/XCO) received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeBackDeclRec">
+ <description>Performance management counter for number of received change Back Declarations (CBD) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTAFirstTimeOutRec">
+ <description>Performance management counter for number of SLTA first time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTASecondTimeOutRec">
+ <description>Performance management counter for number of SLTA second time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUPMsgDiscardedDueToRoutingErr">
+ <description>Performance monitoring counter for number of UP (user part) messages (MTP_TRANSFER_req) discarded due to routing error.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCASent">
+ <description>Performance management counter for number of sent COA/XCA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECOSent">
+ <description>Performance management counter for number of sent ECO messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECASent">
+ <description>Performance management counter for number of sent ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCARec">
+ <description>Performance management counter for number of received COA/XCA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBARec">
+ <description>Performance management counter for number of received CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECARec">
+ <description>Performance management counter for number of received ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRARec">
+ <description>Performance management counter for number of received TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRASent">
+ <description>Performance management counter for number of sent TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTimerT21WasStarted">
+ <description>Performance monitoring counter for number of times the timer T21 was started (i.e. how many times the remote inhibit test message has been sent).
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBASent">
+ <description>Performance management counter for number of sent CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessForcedRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed forced reroutings.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessControlledRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed controlled reroutings.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocEstablish">
+ <description>Performance management counter for number of successful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocEstablish">
+ <description>Performance management counter for number of unsuccessful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpCommunicationErr">
+ <description>Performance management counter for number of SCTP communication error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpSendFailure">
+ <description>Performance management counter for number of SCTP send failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpBufOverflow">
+ <description>Performance management counter for number of SCTP stop sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpResumeSending">
+ <description>Performance management counter for number of SCTP resume sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpNetworkStatusChange">
+ <description>Performance management counter for number of SCTP network status change.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpAssociationRestart">
+ <description>Performance management counter for number of SCTP association restart.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocAbort">
+ <description>The number of successful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocShutDown">
+ <description>The number of succesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocAbort">
+ <description>The number of unsuccessful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocShutDown">
+ <description>The number of unsuccesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIncomingAssocEstabRequestInStateDownWhenStateEstabIsBlocked">
+ <description>The number of incoming request for association establishment when state on the association is 'DOWN' and establishment of associations is blocked. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocEstabReached">
+ <description>The number of times that the max limit for trying to establish an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocActivReached">
+ <description>The number of times that the max limit for trying to activate an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLowerPrioMsgDiscarded">
+ <description>The number of messages with low priority that has been discarded.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSpItu">
+ <description>Mtp3b Signalling Point for the ITU standard.
+
+This MO represents/models the MTP3b Signaling Point characteristics/functions according to the ITU standard.
+A signaling point is a logical node in the signaling network. The combination of signaling points and their interconnecting
+signaling links form the SS No. 7 signaling network. The signaling point represented by this object is a Local Signaling Point.
+
+The performance monitoring counters found in Mtp3SpItu MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: IT IS NOT POSSIBLE TO CREATE SIGNALLING POINTS OF DIFFERENT STANDARDS!
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the ITU standard.
+
+NOTE: The combination of network indicator (networkInd) and Signalling Point Code (signallingPointCode) has to be unique for each Signalling Point.
+
+NOTE: A maximum of 15 instances of this MO can be created on (referencing) the same PlugInUnit.
+
+NOTE: The maximum number of Signalling Points that can be created in a CPP based node is 24.
+
+NOTE: Deleting a singel L3 Signal Point is not possible, if it necessary to delete a Signal Point then all Signal Points has to be deleted. This also has to be done whitin the same transaction.
+
+NOTE: Any object created under a certain SP (Signaling Point) cannot refer to an object created under another SP. Nor can it refer to an object created under another SP.
+
+NOTE: The value of the attribute 'version' is valid for all SPs (Mtp3bSpItu MOs) and the value of the last created or changed SP will be used for all SPs.</description>
+ <attribute name="Mtp3bSpItuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="networkInd">
+ <description>The networkInd attribute (NI) is used by signalling message handling functions in MTP3b
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bNetworkInd">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signallingPointCode">
+ <description>The signallingPointCode (Local Point Code) attribute (SPC) is used together with the network indicator (NI, networkInd attribute) to uniquely identify the MTP Signalling Point, SP.
+SP = NI-SPC.
+Size (2 exp 14)-1 (16383).
+The SignallingPointCode (SPC) is normally used as a whole unique number (no internal structure). But sometimes the SPC is grouped together as three numbers which corresponds to zone, area/network, signalling point. If this is the case the three numbers are coded as 3-8-3 bits in the total SPC. To enter the SPC-value then you have to convert the three numbers to their binary code and then convert the whole 14-bit pattern as an integer.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16383</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="version">
+ <description>This attribute shows what MTP3b ITU standard the system follows. With ITU, it is possible using this attribute to set which of the ITU standard versions that shall be followed.
+
+Note! Setting of another value than 'ITU_T_07_96' at create will have no effect. The Signaling Point will always be created with the value 'ITU_T_07_96'.
+
+Note! It is not possible to hav signaling points with different versions in the node so setting of this attribute will effect all signaling points. The value for the last created or changed signaling point will be used for all signaling points.</description>
+ <dataType>
+ <enumRef name="Mtp3bItuVersion">
+ <defaultValue>ITU_T_07_96</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="nodeBehaviour">
+ <description>The nodeBehaviour attribute represents the MTP3b node type.
+
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NodeBehaviourType">
+ <defaultValue>SEP</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="noOfCongestLevelForNI">
+ <description>Defines the number of congestion levels for NI.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetCongestTestFlag">
+ <description>Selection of which procedure to use during congestion handling if the national option with priorities is used.
+
+0, use TcTimer as described by the TTC standard.
+1, use Route Set Congestion Test as described by the ANSI, ITU and China Standard.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="resendTfcInterval">
+ <description>Send TFC back to originating signalling point code for every n:th message when
+the destination is congested. Set to 0 will suppress sending of TFC.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeReroutBuf">
+ <description>The maxSizeReroutBuf attribute represents the maximum size (in kB) of the rerouting buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeChangeBuf">
+ <description>The maxSizeChangeBuf attribute represents the maximum size (in kB) of the changeover buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="transFrHandler">
+ <description>Determines if a TransFer Restricted signal (TFR) should be treated as a TFA (TransFer Allowed signal) or be ignored.
+</description>
+ <dataType>
+ <enumRef name="Mtp3bTfrHandling">
+ <defaultValue>IGNORED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="sioSpare">
+ <description>The sioSpare2 attribute determines if the two spare bits in the SIO (Service Information Octet) should be treated as spare.</description>
+ <dataType>
+ <enumRef name="Mtp3bSioSpareBitsUse">
+ <defaultValue>PRIO</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="statusIndInterval">
+ <description>The statusIndInterval attribute sets the interval for sending MTP-STATUS indication, i.e. send indication every Nth message .</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="sendSltmBefLink">
+ <description>The sendSltmBefLink attribute determines if the SLTM (Signalling Link Test Message) should be sent and a SLTA received before the link is considered to be in service.
+
+Note! It is not recommended nor is it in accordance with standard to set the value of this attribute to 'false' </description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="testPatternSltm">
+ <description>The testPatternSltm attribute represents a string testpattern in the Signalling Link Test Message.
+
+Minimum string length 2 characters, maximum 30 characters. Allowed characters are 0-9, A-F.
+Only even number of characters is allowed.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>2</min> <max>30</max>
+ </lengthRange>
+ <defaultValue>"A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="spPriority">
+ <description>Struct containing the priority attributes.
+</description>
+ <dataType>
+ <structRef name="Mtp3bSpItuPriorityData"/>
+ </dataType>
+ </attribute>
+ <attribute name="spTimer">
+ <description>Struct containing ITU specific timer attributes</description>
+ <dataType>
+ <structRef name="Mtp3bSpItuTimerData"/>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>Holds a reference to the Reliable Program Uniter.
+The RPU is at the server.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute reflects the operational status of the MTP3b SP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="m3uaNoOfAttempsOfDauds">
+ <description>For M3UA, number of attempts to send the DAUD message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="noOfAttempsOfAssociationEstablishment">
+ <description>Number of attempts to send the SCTP_ASSOCIATE_REQ message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>65535</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's. Can be of type SccpSp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfForcedRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed forced rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfControlledRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed controlled rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfEmergencyChangeOverRec">
+ <description>Performance management counter for number of received emergency changeOver orders (ECO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeOverRec">
+ <description>Performance counter for number of changeOver order messages (COO/XCO) received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeBackDeclRec">
+ <description>Performance management counter for number of received change Back Declarations (CBD) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTAFirstTimeOutRec">
+ <description>Performance management counter for number of SLTA first time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTASecondTimeOutRec">
+ <description>Performance management counter for number of SLTA second time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUPMsgDiscardedDueToRoutingErr">
+ <description>Performance monitoring counter for number of UP (user part) messages (MTP_TRANSFER_req) discarded due to routing error.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCASent">
+ <description>Performance management counter for number of sent COA/XCA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECOSent">
+ <description>Performance management counter for number of sent ECO messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECASent">
+ <description>Performance management counter for number of sent ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCARec">
+ <description>Performance management counter for number of received COA/XCA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBARec">
+ <description>Performance management counter for number of received CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECARec">
+ <description>Performance management counter for number of received ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRARec">
+ <description>Performance management counter for number of received TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRASent">
+ <description>Performance management counter for number of sent TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTimerT21WasStarted">
+ <description>Performance monitoring counter for number of times the timer T21 was started (i.e. adjacent SP restarted).
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBASent">
+ <description>Performance management counter for number of sent CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessForcedRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed forced reroutings.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessControlledRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed controlled reroutings.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocEstablish">
+ <description>Performance management counter for number of successful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocEstablish">
+ <description>Performance management counter for number of unsuccessful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpCommunicationErr">
+ <description>Performance management counter for number of SCTP communication error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpSendFailure">
+ <description>Performance management counter for number of SCTP send failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpBufOverflow">
+ <description>Performance management counter for number of SCTP stop sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpResumeSending">
+ <description>Performance management counter for number of SCTP resume sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpNetworkStatusChange">
+ <description>Performance management counter for number of SCTP network status change.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpAssociationRestart">
+ <description>Performance management counter for number of SCTP association restart.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocAbort">
+ <description>The number of successful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocShutDown">
+ <description>The number of succesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocAbort">
+ <description>The number of unsuccessful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocShutDown">
+ <description>The number of unsuccesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIncomingAssocEstabRequestInStateDownWhenStateEstabIsBlocked">
+ <description>The number of incoming request for association establishment when state on the association is 'DOWN' and establishment of associations is blocked. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocEstabReached">
+ <description>The number of times that the max limit for trying to establish an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocActivReached">
+ <description>The number of times that the max limit for trying to activate an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLowerPrioMsgDiscarded">
+ <description>The number of messages with low priority that has been discarded.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSpTtc">
+ <description>Mtp3b Signalling Point for the TTC standard.
+
+This MO represents/models the MTP3b Signaling Point characteristics/functions according to the TTC standard.
+A signaling point is a logical node in the signaling network. The combination of signaling points and their interconnecting
+signaling links form the SS No. 7 signaling network. The signaling point represented by this object is a Local Signaling Point.
+
+The performance monitoring counters found in Mtp3SpTtc MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a
+standard which is NOT the TTC standard.
+
+NOTE: IT IS NOT POSSIBLE TO CREATE SIGNALLING POINTS OF DIFFERENT STANDARDS!
+
+NOTE: The combination of network indicator (networkInd) and Signalling Point Code (signallingPointCode) has to be unique for each Signalling Point.
+
+NOTE: A maximum of 15 instances of this MO can be created on (referencing) the same PlugInUnit.
+
+NOTE: The maximum number of Signalling Points that can be created in a CPP based node is 24.
+
+NOTE: Deleting a singel L3 Signal Point is not possible, if it necessary to delete a Signal Point then all Signal Points has to be deleted. This also has to be done whitin the same transaction.
+
+NOTE: Any object created under a certain SP (Signaling Point) cannot refer to an object created under another SP. Nor can it refer to an object created under another SP.</description>
+ <attribute name="Mtp3bSpTtcId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="networkInd">
+ <description>The networkInd attribute (NI) is used by signalling message handling functions in MTP3b.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bNetworkIndTtc">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signallingPointCode">
+ <description>The signallingPointCode (Local Point Code) attribute (SPC) is used together with the network indicator (NI, networkInd attribute) to uniquely identify the MTP Signalling Point, SP.
+SP = NI-SPC.
+Size (2 exp 16)-1 (65535).
+The SignallingPointCode (SPC) is always used as a whole unique number (no internal structure).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nodeBehaviour">
+ <description>The nodeBehaviour attribute represents the MTP3b node type.
+
+Note! Only SEP and STP is supported for the Ttc standard.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NodeBehaviourType">
+ <defaultValue>SEP</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetCongestTestFlag">
+ <description>Selection of which procedure to use during congestion handling if the national option with priorities is used.
+
+0, use TcTimer as described by the TTC standard.
+1, use Route Set Congestion Test as described by the ANSI, ITU and China Standard.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="resendTfcInterval">
+ <description>Send TFC back to originating signalling point code for every n:th message when
+the destination is congested. Set to 0 will suppress sending of TFC.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeReroutBuf">
+ <description>The maxSizeReroutBuf attribute represents the maximum size (in kB) of the rerouting buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeChangeBuf">
+ <description>The maxSizeChangeBuf attribute represents the maximum size (in kB) of the changeover buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="statusIndInterval">
+ <description>The statusIndInterval attribute sets the interval for sending MTP-STATUS indication, i.e. send indication every Nth message .</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="testPatternSltm">
+ <description>The testPatternSltm attribute represents a string testpattern in the Signalling Link Test Message.
+
+String length 4 characters. Allowed characters are 0-9, A-F.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>4</min> <max>4</max>
+ </lengthRange>
+ <defaultValue>"7711"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="spPriority">
+ <description>Struct containing the TTC priority attributes.
+</description>
+ <dataType>
+ <structRef name="Mtp3bSpTtcPriorityData"/>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>Holds a reference to the Reliable Program Uniter.
+The RPU is at the server.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="spTimer">
+ <description>Struct containing TTC timer attributes.</description>
+ <noNotification/>
+ <dataType>
+ <structRef name="Mtp3bSpTtcTimerData"/>
+ </dataType>
+ </attribute>
+ <attribute name="noOfCongestLevelForNI">
+ <description>Defines the number of congestion levels for NI.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute reflects the operational status of the MTP3b SP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's. Can be of type SccpSp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfForcedRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed forced rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfControlledRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed controlled rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfEmergencyChangeOverRec">
+ <description>Performance management counter for number of received emergency changeOver orders (ECO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeOverRec">
+ <description>Performance counter for number of changeOver order messages (COO/XCO) received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeBackDeclRec">
+ <description>Performance management counter for number of received change Back Declarations (CBD) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTAFirstTimeOutRec">
+ <description>Performance management counter for number of SLTA first time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTASecondTimeOutRec">
+ <description>Performance management counter for number of SLTA second time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUPMsgDiscardedDueToRoutingErr">
+ <description>Performance monitoring counter for number of UP (user part) messages (MTP_TRANSFER_req) discarded due to routing error.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCASent">
+ <description>Performance management counter for number of sent COA/XCA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECOSent">
+ <description>Performance management counter for number of sent ECO messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECASent">
+ <description>Performance management counter for number of sent ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCARec">
+ <description>Performance management counter for number of received COA/XCA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBARec">
+ <description>Performance management counter for number of received CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECARec">
+ <description>Performance management counter for number of received ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRARec">
+ <description>Performance management counter for number of received TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRASent">
+ <description>Performance management counter for number of sent TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBASent">
+ <description>Performance management counter for number of sent CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessForcedRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed forced reroutings.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessControlledRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed controlled reroutings.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocEstablish">
+ <description>Performance management counter for number of successful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocEstablish">
+ <description>Performance management counter for number of unsuccessful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpCommunicationErr">
+ <description>Performance management counter for number of SCTP communication error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpSendFailure">
+ <description>Performance management counter for number of SCTP send failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpBufOverflow">
+ <description>Performance management counter for number of SCTP stop sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpResumeSending">
+ <description>Performance management counter for number of SCTP resume sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpNetworkStatusChange">
+ <description>Performance management counter for number of SCTP network status change.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpAssociationRestart">
+ <description>Performance management counter for number of SCTP association restart.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSlAnsi">
+ <description>This MO represents an MTP3b Signalling Link for the ANSI standard. It represents the termination of the signalling link within the signalling point as defined in T1.111-1996.
+
+The total amount of links between any two specific nodes in the network shall not be more than 80 independent on how many linksets that are defined between the two nodes. The signalLinkCode for a link must be unique between the nodes, independent on which linkSet the link belongs to. A maximum of five linksets with a maximum of 16 links in each linkset can be configured. A maximum of 16 links between two adjacent nodes can be configured.
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the ANSI standard.
+
+The performance monitoring counters found in Mtp3SlAnsi MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).</description>
+ <attribute name="Mtp3bSlAnsiId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute reflects the operational status of the Mtp3bSlAnsi.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="tpId">
+ <description>The tpId attribute points out the termination point of the lower layer protocol.
+
+For narrowband this signalling link will be connected to an MTP L2 termination point (Mtp2Tp MO). And for broadband it will be connected to a NNI SAAL termination point (NniSaalTp Mo).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="linkState">
+ <description>The link state of the Mtp3bSlAnsi.
+
+The link state is a bit map which contains a combination of the following values: (in hexadecimal format)
+
+0x00 Available
+0x01 Failed
+0x02 Remotely blocked
+0x04 Locally blocked
+0x08 Remotely inhibited
+0x10 Locally inhibited
+0x20 Deactivated</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signLinkCode">
+ <description>The signalling link code, SLC, used for this link.
+The signLinkCode for a link must be unique between the nodes,
+independent on in which linkSet the link belongs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="proceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bProceduralState">
+ <defaultValue>NOT_INITIALIZED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkCongestLevel">
+ <description>The congestion level of the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="CongestLevel">
+ <defaultValue>level_0</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartLink">
+ <description>Controls if the Mtp3bSL should be activated at create.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALINServiceInd">
+ <description>Performance management counter for number of received link-in-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALOUTInd">
+ <description>Performance management counter for number of received link-out-of-service indications.
+
+Note! This counter is incremented every time a link out of service indication is received for the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOOXCOSent">
+ <description>Performance management counter for number of sent change over order (COO/XCO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBDSent">
+ <description>Performance management counter for number of sent CBD messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestRec">
+ <description>Performance monitoring counter for number of local link congestion primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestCeaseRec">
+ <description>Performance monitoring counter for number of local link congestion ceased primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSURec">
+ <description>Performance monitoring counter for number of received MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUSent">
+ <description>Performance monitoring counter for number of sent MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="deactivate">
+ <description>This action deactivates the signalling link.
+ It will also set autoStartLink = false.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="activate">
+ <description>This action activates the signalling link with normal alignment. It will also set autoStartLink = true.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="emergencyActivate">
+ <description>This action activates the signalling link with emergency alignment.
+ It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="localInhibit">
+ <description>This action inhibits the Mtp3bSlAnsi. Signalling link management inhibiting is requested by management when it becomes necessary, e.g for maintenance or testing purposes to make or keep a signalling link unavailable to User Part-generated signalling traffic.
+Inhibiting of a signalling link may be requested by management function at either end of the link. The request is granted, provided that the inhibiting action does not cause any previously accessible destinations to become inaccessible at either end of the signalling link. The request may also be refused under certain circumstances such as congestion.
+Exception FroRequestFailed if it was not possible to inhibit.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="localUninhibit">
+ <description>This action uninhibits the Mtp3bSlAnsi.
+
+Exception FrorequestFailed if it was not possible to uninhibit.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Mtp3bSlItu">
+ <description>This MO represents an MTP3b Signalling Link for the ITU standard. It represents the termination of the signalling link within the signalling point as defined in Q.704 and Q.2210 (07/96).
+
+The total amount of links between any two specific nodes in the network shall not be more than 16, independent on how many linksets that are defined between the two nodes. The signalLinkCode for a link must be unique between the nodes, independent on which linkSet the link belongs to.
+
+The performance monitoring counters found in Mtp3SlItu MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the ITU standard.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="tpId">
+ <description>The tpId attribute points out the termination point of the lower layer protocol.
+
+For narrowband this signalling link will be connected to an MTP L2 termination point (Mtp2Tp MO). And for broadband it will be connected to a NNI SAAL termination point (NniSaalTp Mo).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute reflects the operational status of the Mtp3bSl.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkState">
+ <description>The link state of the Mtp3bSl.
+
+The link state is a bit map which contains a combination of the following values: (in hexadecimal format)
+
+0x00 Available
+0x01 Failed
+0x02 Remotely blocked
+0x04 Locally blocked
+0x08 Remotely inhibited
+0x10 Locally inhibited
+0x20 Deactivated</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signLinkCode">
+ <description>The signalling link code, SLC, used for this link.
+The signLinkCode for a link must be unique between the nodes,
+independent on in which linkSet the link belongs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="proceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bProceduralState">
+ <defaultValue>NOT_INITIALIZED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkCongestLevel">
+ <description>The congestion level of the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="CongestLevel">
+ <defaultValue>level_0</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartLink">
+ <description>Controls if the Mtp3b Signalling Link should be activated at create.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="prioBeforeSio">
+ <description>This Boolean tells if the message priority shall be inserted in an octet before the Service Indicator Octet (SIO).
+
+ITU default is false.
+</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALINServiceInd">
+ <description>Performance management counter for number of received link-in-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALOUTInd">
+ <description>Performance management counter for number of received link-out-of-service indications.
+
+Note! This counter is incremented every time a link out of service indication is received for the link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOOXCOSent">
+ <description>Performance management counter for number of sent change over order (COO/XCO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBDSent">
+ <description>Performance management counter for number of sent CBD messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestRec">
+ <description>Performance monitoring counter for number of local link congestion primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestCeaseRec">
+ <description>Performance monitoring counter for number of local link congestion ceased primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSURec">
+ <description>Performance monitoring counter for number of received MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUSent">
+ <description>Performance monitoring counter for number of sent MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp3bSlItuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="localInhibit">
+ <description>This action inhibits the Mtp3bSlItu. Signalling link management inhibiting is requested by management when it becomes necessary, e.g for maintenance or testing purposes to make or keep a signalling link unavailable to User Part-generated signalling traffic.
+Inhibiting of a signalling link may be requested by management function at either end of the link. The request is granted, provided that the inhibiting action does not cause any previously accessible destinations to become inaccessible at either end of the signalling link. The request may also be refused under certain circumstances such as congestion.
+Exception FroRequestFailed if it was not possible to inhibit.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="localUninhibit">
+ <description>This action uninhibits the Mtp3bSlItu.
+
+Exception FrorequestFailed if it was not possible to uninhibit.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="deactivate">
+ <description>This action deactivates the Mtp3bSl.
+It will also set autoStartLink = false.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="activate">
+ <description>This action activates the Mtp3bSl with normal alignment. It will also set autoStartLink = true.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="emergencyActivate">
+ <description>This action activates the Mtp3bSl with emergency alignment.
+It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="Mtp3bSlTtc">
+ <description>This MO represents an MTP3b Signalling Link for the TTC standard. It represents the termination of the signalling link within the signalling point as defined in JT-Q.704 Ver. 3, April 28 1992 and JT-Q.2210 Ver.1 April 24 1996.
+
+The total amount of links between any two specific nodes in the network shall not be more than 16, independent on how many linksets that are defined between the two nodes. The signalLinkCode for a link must be unique between the nodes, independent on which linkSet the link belongs to.
+
+The performance monitoring counters found in Mtp3SlTtc MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the TTC standard.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="tpId">
+ <description>The tpId attribute points out the termination point of the lower layer protocol. Only BroadBand is supported for TTC. The MO will be connected to a NNI SAAL termination point (NniSaalTp Mo).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute reflects the operational status of the Mtp3bSl.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkState">
+ <description>The link state of the Mtp3bSl.
+
+The link state is a bit map which contains a combination of the following values: (in hexadecimal format)
+
+0x00 Available
+0x01 Failed
+0x02 Remotely blocked
+0x04 Locally blocked
+0x08 Remotely inhibited
+0x10 Locally inhibited
+0x20 Deactivated</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signLinkCode">
+ <description>The signalling link code, SLC, used for this link.
+The code have to be uniqe in this signal link set, i.e the signallingLinkCode for
+all the Mtp3bSl that belongs to the same Mtp3bSls must be unique(mutual exclusive). </description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="proceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bProceduralState">
+ <defaultValue>NOT_INITIALIZED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkCongestLevel">
+ <description>The congestion level of the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="CongestLevel">
+ <defaultValue>level_0</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartLink">
+ <description>Controls if the Mtp3b Signalling Link should be activated at create.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="prioBeforeSio">
+ <description>This Boolean tells if the message priority shall be inserted in an octet before the Service Indicator Octet (SIO).
+
+</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALINServiceInd">
+ <description>Performance management counter for number of received link-in-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALOUTInd">
+ <description>Performance management counter for number of received link-out-of-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOOXCOSent">
+ <description>Performance management counter for number of sent change over order (COO/XCO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBDSent">
+ <description>Performance management counter for number of sent CBD messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestRec">
+ <description>Performance monitoring counter for number of local link congestion primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestCeaseRec">
+ <description>Performance monitoring counter for number of local link congestion ceased primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSURec">
+ <description>Performance monitoring counter for number of received MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUSent">
+ <description>Performance monitoring counter for number of sent MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp3bSlTtcId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="deactivate">
+ <description>This action deactivates the Mtp3bSl.
+It will also set autoStartLink = false.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ <action name="activate">
+ <description>This action activates the signalling link with normal alignment. It will also set autoStartLink = true.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ <action name="emergencyActivate">
+ <description>This action activates the signalling link with emergency alignment.
+It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="Mtp2ProfileAnsi">
+ <description>The MTP 2 Profile MO represents and keeps attribute values used by one or more MTP 2 ANSI termination point MOs.</description>
+ <attribute name="userLabel">
+ <description>This MOs user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2ProfileAnsiId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <description>Struct containing profile data.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="Mtp2ProfileDataAnsi"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of Mtp2TpAnsi MOs that have reserved this Mtp2TpProfileAnsi MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp2TpAnsi"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp2ProfileItu">
+ <description>The MTP 2 Profile MO represents and keeps attribute values used by one or more MTP 2 ITU termination point MOs.</description>
+ <attribute name="userLabel">
+ <description>The MOs user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2ProfileItuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <description>Struct containing profile data.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="Mtp2ProfileDataItu"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of Mtp2TpItu MOs that have reserved this Mtp2TpProfileItu MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp2TpItu"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="E1Ttp">
+ <description>This MO represents a channelised E1 interface in the node. The E1Ttp (Trail Termination Point) MO
+does not define which type of traffic (TDM or ATM) that the interface should support. Please refer to
+the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+The performance monitoring counters in the E1Ttp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! This MO is automatically created as a consequence of creating an Os155SpiTtpMo
+Please refer to the Os155SpiTtpMo for more details.
+
+</description>
+ <systemCreated/>
+ <attribute name="degDegThr">
+ <description>The threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+This is a percentage value.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="degDegM">
+ <description>How many bad seconds in a row that causes a Degraded Signal alarm.
+
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="crc4Mode">
+ <description>Indicates what Cyclical Redundancy Check 4 Mode that is being used.</description>
+ <dataType>
+ <enumRef name="Crc4Mode">
+ <defaultValue>AUTOMATIC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="idlePattern">
+ <description>The idle pattern.
+
+NOTE: Going from A_LAW or U_LAW to UNDEFINED is always allowed but setting up one ET board with
+both U_LAW and A_LAW is not allowed.
+E.g. If you want to change from A_LAW to U_LAW on one ET board you have to change idlePattern
+on each physical port belonging to the board to UNDEFINED first.
+A_LAW -&gt; UNDEFINED -&gt; U_LAW or U_LAW -&gt; UNDEFINED -&gt; A_LAW</description>
+ <dataType>
+ <enumRef name="IdlePattern">
+ <defaultValue>UNDEFINED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter of Errored Seconds (ES).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Severely Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="E1TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identityof the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Vc4Ttp">
+ <description>This MO is automatically created as a consequence of creating an Os155SpiTtp object if any of the following conditions are true:
+a) standardmode = ETSI or
+b) standardmode = TTC and muxmode = VC4_STS3CSPE_LEVEL.
+
+It represents the termination of the SDH VC-4 path layer. The VC-4 can either be used for channelised access, in which case VC-12 MOs are created as children to the Vc4Ttp MO, or be used to carry ATM traffic, in which case there is a relationship between the AtmPort MO and the Vc4Ttp MO.
+
+Note! The performance monitoring counters in the Vc4TtpMO is set to 0 (zero) at start or restart of the node.
+When the value is to large to fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <systemCreated/>
+ <attribute name="pathTraceFormat">
+ <description>Indicates the format of the expectedPathtrace and transmittedPathtrace attributes. The format may be in 16 or 64 characters. Usually 16 is used for ETSI and 64 for ANSI/TTC.
+
+ITU_T_G707=16
+GR_253_CORE=64
+
+Note that the 16 characters format requires the operator to specify 15 characters where no character contains the null character (the 16th character is added automatically).
+
+Note that the 64 characters format requires the operator to specify 62 ASCII characters all different from null followed by CR/LF.</description>
+ <dataType>
+ <enumRef name="PathTraceFormat">
+ <defaultValue>ITU_T_G707</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="transmittedPathTrace">
+ <description>The transmitted path trace.
+Can be defined in two formats. The format may be in 16 or 64 characters. Usually 16 is used for ETSI and 64 for ANSI/TTC.
+
+Note: The string must be of 15 or 62 characters length, or empty string ("").
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="expectedPathTrace">
+ <description>Expected path trace.
+
+The string can be of 15 or 62 characters length, or empty string ("").
+
+Note: An empty string for this attribute means that the detection of Trace Identifier Mismatch (TIM) should be disabled. This attribute is set to empty string every time attribute pathTraceFormat is set.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="timConsequentAction">
+ <description>Trace Identifier Mismatch (TIM) consequent action, i.e. for generation of Alarm Indication Signal (AIS) downstream and Remote Defect Indication (RDI) upstream as a consequence of the TIM detection.
+
+True - enabled.
+False - disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="vcDegThreshold">
+ <description>This threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+The attribute value is in unit of % (percent).</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="vcDegM">
+ <description>Indicates how many bad seconds in a row that causes a Degraded Signal alarm.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="auAisReporting">
+ <description>AU AIS reporting.
+
+True - enable reporting.
+False - disable reporting.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="vcRdiReporting">
+ <description>VC RDI reporting.
+
+True - enable reporting.
+False - disable reporting.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmVcEs">
+ <description>Performance monitoring counter for Virtual Container 4, VC4, Errored Seconds, ES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmVcSes">
+ <description>Performance monitoring counter for Virtual Container 4, VC4, Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Vc4TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Os155SpiTtp">
+ <description>This MO represents the physical interface and the termination of the SDH Regenerator and Multiplexer Section Layers.
+
+When creating the Os155SpiTtp a number of additional objects will be created. Depending on the values of standardmode and muxmode different objects will be created as described below:
+
+muxmode = standby
+standardmode = ETSI, TTC, ANSI
+No objects under the Os155SpiTtp is created.
+
+muxmode = VC4_STS3CSPE_LEVEL
+standardmode = ETSI, TTC
+A Vc4 MO is created under the Os155SpiTtp MO.
+
+muxmode = VC4_STS3CSPE_LEVEL
+standardmode = ANSI
+A Sts3CspeTtp MO is created under the Os155SpiTtp MO.
+
+The following two configurations is only applicable for the ET-MC41 board.
+
+muxmode = E1_J1_T1_LEVEL
+standardmode = ETSI
+A Vc4 MO, 63 Vc12Ttp MO's and 63 E1Ttp MO's is created under the Os155SpiTtp MO
+
+muxmode = E1_J1_T1_LEVEL
+standardmode = ANSI
+3 Sts1CspeTtp MO's, 3*28 Vt15Ttp MO's and 3*28 TiTtp MO's is created under the Os155SpiTtp MO.
+
+The performance monitoring counters in the Os155SpiTtp MO is set to 0 (zero) at start or restart of the node.
+When the value is too large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! If the Os155SpiTtp is configured as part of an Mspg protection group and is configured as standby, muxMode set to standby, no children's to this MO will be created.</description>
+ <attribute name="Os155SpiTtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual line number.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="standardMode">
+ <description>The standard that this MO is operating to.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="StandardMode">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="muxMode">
+ <description>The level at which the STM-1/OC3 signal is demultiplexed.
+
+If parent is of type Etmc41, the valid muxMode is STANDBY or E1_J1_T1_LEVEL.
+If parent is of type Etm4, the valid muxMode is STANDBY or VC4_STS3CSPE_LEVEL.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="MuxMode">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="msDegThreshold">
+ <description>MS - multiplexer section.
+
+The threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+This is a percentage value.
+
+Note: When operating to the ANSI standard, this attribute has no meaning.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="msDegM">
+ <description>MS - multiplexer section.
+
+How many bad seconds in a row that causes a Degraded Signal alarm.
+
+Note: When operating to the ANSI standard, this attribute has no meaning.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="msRdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="msAisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="loopBack">
+ <description>Enables or disables line loopback, i.e. the received signal is returned in the transmitted direction.
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="Os155LoopBack">
+ <defaultValue>NONE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmMsEs">
+ <description>Performance monitoring counter for Multiplexer Section, MS, Errored Seconds, ES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmMsSes">
+ <description>Performance monitoring counter for Multiplexer Section, MS, Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Vc12Ttp">
+ <description>This MO is automatically created when the configuring the Os155SpiTtp. It represents the termination of the SDH VC-12 path layer.
+
+Note: This MO is only valid when the ETSI standard is in use.
+
+The performance monitoring counters in the Vc12TtpMO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <systemCreated/>
+ <attribute name="Vc12TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="transmittedPathTrace">
+ <description>The transmitted path trace.
+
+Note: when 16 byte tracing is used, only 15 bytes should be used in the set action for this attribute.
+
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="expectedPathTrace">
+ <description>Expected path trace.
+
+Note: when 16 byte tracing is used, only 15 bytes should be used in the set action for this attribute.
+
+Note: An empty string for this attribute means that the detection of Trace Identifier Mismatch (TIM) should be disabled.
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="timConsequentAction">
+ <description>Trace Identifier Mismatch (TIM) consequent action, i.e. for generation of Alarm Indication Signal (AIS) downstream and Remote Defect Indication (RDI) upstream as a consequence of the TIM detection.
+
+True - enabled.
+False - disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="vcDegThreshold">
+ <description>This threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+The attribute value is in unit of % (percent).</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="vcDegM">
+ <description>Indicates how many bad seconds in a row that causes a Degraded Signal alarm.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tuAisReporting">
+ <description>Timing Unit Alarm Indication Signal (TU AIS) reporting.
+
+True - enable reporting.
+False - disable reporting.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="vcRdiReporting">
+ <description>VC RDI reporting.
+
+True - enable reporting.
+False - disable reporting.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmVcEs">
+ <description>Performance monitoring counter for Virtual Container 12, VC12, Errored Seconds, ES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmVcSes">
+ <description>Performance monitoring counter for Virtual Container 12, VC12, Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etmc1">
+ <description>This MO represents the hardware of the ET-MC1 board type. It only represents the ET specific hardware, the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-MC1 board contains 8 phyiscal ports that can be configured as either E1 (ETSI), J1 (TTC) or T1(ANSI). The board does not allow for a mix of E1, J1 and T1 ports, thus all configured ports on the board must be configured to the same standard.
+
+Each port on the ET-MC1 board can be used to carry either ATM traffic or circuit orientated (Nx64 Kbits/s connections) traffic.
+
+Each port can support up to 30 ATM VC connections. Two of these connections are reserved for AAL2 paths, and therefore two AAL2 multiplexers per port are available.
+
+Each port can support up to 2 VP connections.
+
+The ET-MC1 port supports one bidirectional F4/F5 PM flow per port.
+
+At the VP/VC endpoints, the Lost FPM/BR cells counters are not available.
+
+Note! The ETMC1 supports IMA.
+
+For more details on restrictions please refer to 155 17-21/CSX 101 09 Uen.
+
+Note! When the Etmc1 is part of the Cbu it is only possible to configure 4 physical ports of type E1, J1 or T1 on the Etmc1 board.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the ETMC1 board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Etmc1Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etmc41">
+ <description>This MO represents the hardware of the ET-MC41 board type. It only represents the ET specific hardware, while the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-MC41 board contains a 155 Mbits/s physical optical port. The board can be configured as a E1 channelised board providing 63 logical E1 interfaces.
+
+Each E1 logical channel on the ET-MC41 can be used to carry either ATM traffic or circuit oriented (Nx64 kbit/s) traffic.
+
+Each E1 logical channel can support up to 30 ATM VC connections. Two of these connections are reserved for aal2 paths, and therefore two AAL2 multiplexers per E1/DS1/J1 channel are available.
+
+Each E1/DS1/J1 channel can suport up to 2 VP connections.
+
+The ET-MC41 board support one biderectional F4/F5 PM flow per E1 channel.
+
+Note! The ETMC41 supports IMA. However the E1 ports being part of the same IMA group can not be selected randomly.
+
+Note! The number of VCC TP+VPC TP with performance monitoring enabled (i.e. PM mode &lt;&gt; off) is restricted to 1 / port
+
+For more details on restrictions please refer to 155 17-21/CSX 101 09 Uen.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the ET-MC41 board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Etmc41Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp2ProfileChina">
+ <description>The MTP2 Profile MO represents and keeps attribute values used by one or more MTP2 China termination point MOs.</description>
+ <attribute name="Mtp2ProfileChinaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="Mtp2ProfileDataChina"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of Mtp2TpChina MOs that have reserved this Mtp2TpProfileChina MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp2TpChina"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>The MOs user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp2TpChina">
+ <description>This MO represents a MTP 2 termination point for the China standard, as defined in GF001-9001, plus supplement 1-3.
+
+The performance monitoring counters found in Mtp2China MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a hardware fault, aal1 server/adm restart or node restart.
+
+NOTE: This MO cannot in anyway be related (either contained by or dependent on) an MO that belongs to a standard
+which is NOT the China standard.
+
+NOTE: There is a restriction of a maximum of 32 Mtp2Tp's per MP.
+
+</description>
+ <attribute name="ds0BundleId">
+ <description>The Ds0Bundle MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ds0Bundle"/>
+ </dataType>
+ </attribute>
+ <attribute name="mtp2ProfileChinaId">
+ <description>Reference to a Mtp2ProfileChina MO.
+
+Note: The bitRate can not be changed.</description>
+ <mandatory/>
+ <noNotification/>
+ <dataType>
+ <moRef name="Mtp2ProfileChina"/>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2TpChinaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MTP2 Signalling Terminal.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmLocalSIBTime">
+ <description>Total time in local SIB (Sending).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUTransmitted">
+ <description>Number of MSUs transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNacks">
+ <description>Number of negative acknowledgements received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuReceivedInError">
+ <description>Number of signal units received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReTransmittedOctets">
+ <description>Number of re-transmitted octets.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSendBufferOctets">
+ <description>Number of octets in send buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFReceived">
+ <description>Number of SIO and SIF octets received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFTransmitted">
+ <description>Number of SIO &amp; SIF octets transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfStartedRBCongestion">
+ <description>Number of started local RB congestions.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRemoteSIBTime">
+ <description>Total time in remote SIB (Receiving).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Mtp3bSlChina"/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnitId">
+ <description>The PlugInUnit MO that this MO references.
+It indicates on which processor the Termination Point will be.
+
+Note: The PlugInUnit must be of type GPB.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PlugInUnit"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUReceived">
+ <description>Number of MSUs received..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSlChina">
+ <description>This MO represents an MTP3b Signalling Link for the China standard. It represents the termination of the signalling link within the signalling point as defined in GF001-9001, plus supplement 1-3.
+
+The total amount of links between any two specific nodes in the network shall not be more than 16, independent on how many linksets that are defined between the two nodes. The signalLinkCode for a link must be unique between the nodes, independent on which linkSet the link belongs to.
+
+The performance monitoring counters found in Mtp3SlChina MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard that is NOT the China standard.</description>
+ <attribute name="Mtp3bSlChinaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute reflects the operational status of the Mtp3bSl.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartLink">
+ <description>Controls if the Mtp3b Signalling Link should be activated at create.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="linkCongestLevel">
+ <description>The congestion level of the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="CongestLevel">
+ <defaultValue>level_0</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkState">
+ <description>The link state of the Mtp3bSl.
+
+The link state is a bit map which contains a combination of the following values: (in hexadecimal format)
+
+0x00 Available
+0x01 Failed
+0x02 Remotely blocked
+0x04 Locally blocked
+0x08 Remotely inhibited
+0x10 Locally inhibited
+0x20 Deactivated</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="prioBeforeSio">
+ <description>This Boolean tells if the message priority shall be inserted in an octet before the Service Indicator Octet (SIO).
+
+China default is false.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="proceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bProceduralState">
+ <defaultValue>NOT_INITIALIZED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signLinkCode">
+ <description>The signalling link code, SLC, used for this link.
+The signLinkCode for a link must be unique between the nodes,
+independent on in which linkSet the link belongs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tpId">
+ <description>The tpId attribute points out the termination point of the lower layer protocol.
+
+For narrowband this signalling link will be connected to an MTP L2 termination point (Mtp2Tp MO). And for broadband it will be connected to a NNI SAAL termination point (NniSaalTp Mo).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALINServiceInd">
+ <description>Performance management counter for number of received link-in-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALOUTInd">
+ <description>Performance management counter for number of received link-out-of-service indications.
+
+Note! This counter is incremented every time a link out of service indication is received for the link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBDSent">
+ <description>Performance management counter for number of sent CBD messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOOXCOSent">
+ <description>Performance management counter for number of sent change over order (COO/XCO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestCeaseRec">
+ <description>Performance monitoring counter for number of local link congestion ceased primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestRec">
+ <description>Performance monitoring counter for number of local link congestion primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSURec">
+ <description>Performance monitoring counter for number of received MSU's on this signalling link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUSent">
+ <description>Performance monitoring counter for number of sent MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="activate">
+ <description>This action activates the Mtp3bSl with normal alignment. It will also set autoStartLink = true.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="deactivate">
+ <description>This action deactivates the Mtp3bSl.
+It will also set autoStartLink = false.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="emergencyActivate">
+ <description>This action activates the Mtp3bSl with emergency alignment.
+It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="localInhibit">
+ <description>This action inhibits the Mtp3bSlChina. Signalling link management inhibiting is requested by management when it becomes necessary, e.g for maintenance or testing purposes to make or keep a signalling link unavailable to User Part-generated signalling traffic.
+Inhibiting of a signalling link may be requested by management function at either end of the link. The request is granted, provided that the inhibiting action does not cause any previously accessible destinations to become inaccessible at either end of the signalling link. The request may also be refused under certain circumstances such as congestion.
+Exception FroRequestFailed if it was not possible to inhibit.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="localUninhibit">
+ <description>This action uninhibits the Mtp3bSlItu.
+
+Exception FrorequestFailed if it was not possible to uninhibit.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Mtp3bSpChina">
+ <description>Mtp3b Signalling Point for the China standard.
+
+This MO represents/models the MTP3b Signaling Point characteristics/functions according to the China standard.
+A signaling point is a logical node in the signaling network. The combination of signaling points and their interconnecting
+signaling links form the SS No. 7 signaling network. The signaling point represented by this object is a Local Signaling Point.
+
+The performance monitoring counters found in Mtp3SpChina MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: IT IS NOT POSSIBLE TO CREATE SIGNALLING POINTS OF DIFFERENT STANDARDS!
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the China standard.
+
+NOTE: The combination of network indicator (networkInd) and Signalling Point Code (signallingPointCode) has to be unique for each Signalling Point.
+
+NOTE: A maximum of 15 instances of this MO can be created on (referencing) the same PlugInUnit.
+
+NOTE: The maximum number of Signalling Points that can be created in a CPP based node is 24.
+
+NOTE: Deleting a singel L3 Signal Point is not possible, if it necessary to delete a Signal Point then all Signal Points has to be deleted. This also has to be done whitin the same transaction.
+
+NOTE: Any object created under a certain SP (Signaling Point) cannot refer to an object created under another SP. Nor can it refer to an object created under another SP.</description>
+ <attribute name="Mtp3bSpChinaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeChangeBuf">
+ <description>The maxSizeChangeBuf attribute represents the maximum size (in kB) of the changeover buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeReroutBuf">
+ <description>The maxSizeReroutBuf attribute represents the maximum size (in kB) of the rerouting buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="networkInd">
+ <description>The network indicator, NI, is used for discrimination of messages between functionally different networks.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bNetworkInd">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute reflects the operational status of the MTP3b SP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's. Can be of type SccpSp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="sendSltmBefLink">
+ <description>The sendSltmBefLink attribute determines if the SLTM (Signalling Link Test Message) should be sent and a SLTA received before the link is considered to be in service.
+
+Note! It is not recommended nor is it in accordance with standard to set the value of this attribute to 'false' </description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="signallingPointCode">
+ <description>The signallingPointCode (Local Point Code) attribute (SPC) is used together with the network indicator (NI, networkInd attribute) to uniquely identify the MTP Signalling Point, SP.
+SP = NI-SPC.
+Size (2 exp 24)-1 (16777215).
+The SignallingPointCode (SPC) is nornally used as a whole unique number (no internal structure). But sometimes the SPC is grouped together as three numbers which corresponds to zone, area/network, signalling point. If this is the case the three numbers are coded as 8-8-8 bits in the total SPC. To enter the SPC-value then you have to convert the three numbers to their binary code and then convert the whole 24-bit pattern as an integer.
+ </description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16777215</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nodeBehaviour">
+ <description>The nodeBehaviour attribute represents the MTP3b node type.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NodeBehaviourType">
+ <defaultValue>SEP</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="noOfCongestLevelForNI">
+ <description>Defines the number of congestion levels for NI.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetCongestTestFlag">
+ <description>Selection of which procedure to use during congestion handling if the national option with priorities is used.
+
+0, use TcTimer as described by the TTC standard.
+1, use Route Set Congestion Test as described by the ANSI, ITU and China Standard.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="resendTfcInterval">
+ <description>Send TFC back to originating signalling point code for every n:th message when
+the destination is congested. Set to 0 will suppress sending of TFC.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="sioSpare">
+ <description>The sioSpare attribute determines if the two spare bits in the SIO (Service Information Octet) should be treated as spare.</description>
+ <dataType>
+ <enumRef name="Mtp3bSioSpareBitsUse">
+ <defaultValue>SPARE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="spPriority">
+ <description>Struct containing the priority attributes.
+
+Note: The China and ITU priorityData is identical so the ItuPriorityData is used for China to avoid duplication of data.</description>
+ <dataType>
+ <structRef name="Mtp3bSpChinaPriorityData"/>
+ </dataType>
+ </attribute>
+ <attribute name="spTimer">
+ <description>Struct containing China specific timer attributes</description>
+ <dataType>
+ <structRef name="Mtp3bSpChinaTimerData"/>
+ </dataType>
+ </attribute>
+ <attribute name="statusIndInterval">
+ <description>The statusIndInterval attribute sets the interval for sending MTP-STATUS indication, i.e. send indication every Nth message .</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="testPatternSltm">
+ <description>The testPatternSltm attribute represents a string testpattern in the Signalling Link Test Message.
+
+Minimum string length 2 characters, maximum 30 characters. Allowed characters are 0-9, A-F.
+Only even number of characters is allowed.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>2</min> <max>30</max>
+ </lengthRange>
+ <defaultValue>"A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="transFrHandler">
+ <description>Determines if a TransFer Restricted signal (TFR) should be treated as a TFA (TransFer Allowed signal) or be ignored.
+</description>
+ <dataType>
+ <enumRef name="Mtp3bTfrHandling">
+ <defaultValue>IGNORED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>Holds a reference to the Reliable Program Uniter.
+The RPU is at the server.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="m3uaNoOfAttempsOfDauds">
+ <description>For M3UA, number of attempts to send the DAUD message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="noOfAttempsOfAssociationEstablishment">
+ <description>Number of attempts to send the SCTP_ASSOCIATE_REQ message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>65535</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="version">
+ <description>This attribute shows what MTP3b ITU standard the system follows. With ITU, it is possible using this attribute to set which of the ITU standard versions that shall be followed.
+
+Note! Setting of another value than 'ITU_T_07_96' at create will have no effect. The Signaling Point will always be created with the value 'ITU_T_07_96'.
+
+Note! It is not possible to hav signaling points with different versions in the node so setting of this attribute will effect all signaling points. The value for the last created or changed signaling point will be used for all signaling points.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bItuVersion">
+ <defaultValue>ITU_T_07_96</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBARec">
+ <description>Performance management counter for number of received CBA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBASent">
+ <description>Performance management counter for number of sent CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeBackDeclRec">
+ <description>Performance management counter for number of received change Back Declarations (CBD) messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeOverRec">
+ <description>Performance counter for number of changeOver order messages (COO/XCO) received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCARec">
+ <description>Performance management counter for number of received COA/XCA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCASent">
+ <description>Performance management counter for number of sent COA/XCA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfControlledRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed controlled rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECASent">
+ <description>Performance management counter for number of sent ECA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECARec">
+ <description>Performance management counter for number of received ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECOSent">
+ <description>Performance management counter for number of sent ECO messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfEmergencyChangeOverRec">
+ <description>Performance management counter for number of received emergency changeOver orders (ECO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfForcedRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed forced rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTAFirstTimeOutRec">
+ <description>Performance management counter for number of SLTA first time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTASecondTimeOutRec">
+ <description>Performance management counter for number of SLTA second time out received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTimerT21WasStarted">
+ <description>Performance monitoring counter for number of times the timer T21 was started (i.e. adjacent SP restarted).
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRARec">
+ <description>Performance management counter for number of received TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRASent">
+ <description>Performance management counter for number of sent TRA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessControlledRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed controlled reroutings.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessForcedRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed forced reroutings.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUPMsgDiscardedDueToRoutingErr">
+ <description>Performance monitoring counter for number of UP (user part) messages (MTP_TRANSFER_req) discarded due to routing error.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocEstablish">
+ <description>Performance management counter for number of successful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocEstablish">
+ <description>Performance management counter for number of unsuccessful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpCommunicationErr">
+ <description>Performance management counter for number of SCTP communication error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpSendFailure">
+ <description>Performance management counter for number of SCTP send failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpBufOverflow">
+ <description>Performance management counter for number of SCTP stop sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpResumeSending">
+ <description>Performance management counter for number of SCTP resume sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpNetworkStatusChange">
+ <description>Performance management counter for number of SCTP network status change.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpAssociationRestart">
+ <description>Performance management counter for number of SCTP association restart.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocAbort">
+ <description>The number of successful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocShutDown">
+ <description>The number of succesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocAbort">
+ <description>The number of unsuccessful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocShutDown">
+ <description>The number of unsuccesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIncomingAssocEstabRequestInStateDownWhenStateEstabIsBlocked">
+ <description>The number of incoming request for association establishment when state on the association is 'DOWN' and establishment of associations is blocked. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocEstabReached">
+ <description>The number of times that the max limit for trying to establish an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocActivReached">
+ <description>The number of times that the max limit for trying to activate an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLowerPrioMsgDiscarded">
+ <description>The number of messages with low priority that has been discarded.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mspg">
+ <description>The MSPG (Multiplex Section Protection Group) object enables two different protection mechanism in Cello. First it enables a standard 1+1 MSP mechanism. A failure on the working line will thus cause a sub 50 ms switch to the standby line.
+Secondly the MSPG is used to enable equipment protection, whereas a failure of the working board will cause a switch to the standby board. While executing an equipment protection switch, the node on the other end of the multiplexer section, will experience a standard 1+1 MSP switch.
+
+It is possible to force traffic to one port/board by using administrative state.
+Setting administrative state to locked on the working board, will automatically cause an equipment switch to the standby board. Similarily setting administrative state to locked on the working port, will cause an MSP switch to the standby port.
+
+The process of configuring a MSP protection interface is as follows:
+1) Create the working interface as normal.
+2) Create the standby interface by creating an Os155SpiTtp with mux mode set to STANDBY (standby for protection).
+3) Create a MSPG object with references to the two Os155SpiTtp objects.
+
+Note! The ports selected for MSPG must be have the attribute standardMode configured in exactly the same way.
+
+Note! The Os155SpiTtp created for standby will not create any children, i.e no Vc4Ttp or Vc4Ttp, Vc12Ttp and E1Ttp will be created. Nor will object of type Sts1SpeTtp, Vt15Ttp or T1Ttp be created.</description>
+ <attribute name="os155SpiWorkingId">
+ <description>The working OS155 pyhiscal path termination.
+This is the administrative value.
+
+To retrive the Id of the current working port, use the selectedPort.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Os155SpiTtp"/>
+ </dataType>
+ </attribute>
+ <attribute name="os155SpiStandbyId">
+ <description>The standby OS155 physical path termination.
+This is the administrative value.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Os155SpiTtp"/>
+ </dataType>
+ </attribute>
+ <attribute name="switchMode">
+ <description>The switching mode.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="SwitchModes">
+ <defaultValue>AUTOMATIC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Mspg.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="MspgId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="selectedPort">
+ <description>The port currently selected by the MSPG. The selected port can only
+change due to a MSP or equipment switch.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Os155SpiTtp"/>
+ </dataType>
+ </attribute>
+ <attribute name="selectedBoard">
+ <description>The board currently providing the user traffic interface to the Cello switch.
+The only action that can change the selected board is an equipment switch.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="degCauseMsp">
+ <description>If set to true, then a swith is performed upon detection of DEG.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <action name="manualMspSwitch">
+ <description>Initiates a switch when there does not exist a defect.
+
+This action can fail for the following reasons:
+FailedResource - the switch was not possible due to a traffic affecting fault on the port to which the switch was requested (i.e. the one not currently selected).
+LockedResource - the port to which the switch is intended is administratively locked.
+UnknownReason - there exists another fault that prevents the action.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FailedResourceException"/>
+ <raisesException name="LockedResourceException"/>
+ <raisesException name="UnknownReasonException"/>
+ </action>
+ </class>
+
+ <class name="T1PhysPathTerm">
+ <description>This MO represents an T1 (i.e. 1.5 Mbit/s) physical interface in the node. The T1PhysPathTerm MO does not define which type of traffic (TDM or ATM) that the interface should support.
+Please refer to the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="T1PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>8</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>Possible values
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+system - The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter for Errored Seconds, ES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Severly Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="idlePattern">
+ <description>The idle pattern.
+
+NOTE: Going from A_LAW or U_LAW to UNDEFINED is always allowed but setting up one ET board with
+both U_LAW and A_LAW is not allowed.
+E.g. If you want to change from A_LAW to U_LAW on one ET board you have to change idlePattern
+on each physical port belonging to the board to UNDEFINED first.
+A_LAW -&gt; UNDEFINED -&gt; U_LAW or U_LAW -&gt; UNDEFINED -&gt; A_LAW</description>
+ <dataType>
+ <enumRef name="IdlePattern">
+ <defaultValue>UNDEFINED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="transmissionMode">
+ <description>The type of transmission media.
+Refer to the TransmissionMode enumeration for details.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="TransmissionMode">
+ <defaultValue>S_133</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ImaGroup">
+ <description>IMA, Inverse Multiplexing for ATM, makes it possible to group several physical
+interfaces together to form a virtual physical pipe for atm. The capacity of this
+pipe is equal to the sum of each of the physical interfaces included in the
+group.
+
+When IMA should be configured, an ATMPort MO is created with reference to an
+IMAGroup MO rather than a pure physical interface MO.
+The IMAGroup MO in turn is created with a list of the physical port MO's that
+are included in the group. The physical port MO's must be of the same type
+and be located on the same ET board.
+
+For each of the physical port MO's included in the IMAGroup, an IMALink object
+is automatically created. The IMALink object is responsible for handling link
+specific performance and fault management related to IMA.
+
+The ports can be of type E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E1Ttp, T1Ttp.
+
+The performance monitoring counters in the ImaGroup MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! A general restriction in Cello is that ports being part of the same IMA group
+must be located on the same board.
+
+Note! Only termination points on Etmc1 and Etmc41 boards are allowed as ImaLinks.
+
+Note! At least two links has to be configured in an Ima Group.</description>
+ <attribute name="ImaGroupId">
+ <description>The identity of the MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="physicalPortList">
+ <description>Holds a list of the physical ports connected to the ImaGroup.
+Can be of type:
+E1PhysPathTerm,
+J1PhysPathTerm,
+T1PhysPathTerm,
+E1Ttp,
+T1Ttp.</description>
+ <mandatory/>
+ <noNotification/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="requiredNumberOfLinks">
+ <description>The required number of links specifies the number of IMALinks that needs to be
+operational in order for the complete group to be operational. The bandwidth
+available for the ATMPort (and thus for creating VP/VC connections) is defined
+by this number.
+Setting the requiredNumberOfLinks field to K less than the number of physical
+links included in the IMAGroup, will reduce the bandwidth available to the atmport
+with the corresponding bandwidth but will also give the effect that K links
+failures can be tolerated with virtually no traffic disturbance.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>8</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="activeLinks">
+ <description>The number of active links in the ImaGroup.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the ImaGroup.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmGrUasIma">
+ <description>This performance counter reflects the GrUasLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmGrFc">
+ <description>This performance counter reflects the GrFc attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmGrFcFe">
+ <description>This performance counter reflects the GrFcFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ImaLink">
+ <description>This MO is automatically created as a consequence of creating an IMAGroup or
+adding links to an IMAGroup.
+It provides IMA Link specific performance and fault management information.
+
+The links can be of type E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E1Ttp or T1Ttp.
+
+The performance monitoring counters in the ImaLink MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! A general restriction in Cello is that ports being part of the same IMA group
+must be located on the same board.</description>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the ImaLink.
+If the operationalState is disabled the ImaLink will be blocked for traffic.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmIvIma">
+ <description>This performance counter reflects the LvLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ImaLinkId">
+ <description>The identity of the MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmOifIma">
+ <description>This performance counter reflects the OifLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesIma">
+ <description>This performance counter reflects the SesLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesImaFe">
+ <description>This performance counter reflects the SesLmaFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUasIma">
+ <description>This performance counter reflects the UasLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUasImaFe">
+ <description>This performance counter reflects the UasLmaFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxUusIma">
+ <description>This performance counter reflects the TxUusLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxUusIma">
+ <description>This performance counter reflects the RxUusLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxUusImaFe">
+ <description>This performance counter reflects the TxUusLmaFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxUusImaFe">
+ <description>This performance counter reflects the RxUusLmaFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxFc">
+ <description>This performance counter reflects the TxFc attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxFc">
+ <description>This performance counter reflects the RxFc attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxFcFe">
+ <description>This performance counter reflects the TxFcFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxFcFe">
+ <description>This performance counter reflects the RxFcFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxStuffIma">
+ <description>This performance counter reflects the TxStuffLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxStuffIma">
+ <description>This performance counter reflects the RxStuffLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="uses">
+ <description>Reference to the physical port represented by this MO.
+Can be of types E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E1Ttp or T1Ttp.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Sts3CspeTtp">
+ <description>This MO represents the termination of the SONET higher order paths.
+This MO is automatically created when creating the OS155SPITTP with mux mode
+set to VC4_STS3CSPE_LEVEL and standardMode set to ANSI.
+
+The performance monitoring counters in the Sts3CspeTtp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large to fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="Sts3CspeTtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Sts3CspeTtp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="aisPReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiPReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="timConsequentAction">
+ <description>Trace Identifier Mismatch (TIM) consequent action, i.e. for generation of Alarm Indication Signal (AIS) downstream and Remote Defect Indication (RDI) upstream as a consequence of the TIM detection.
+
+True - enabled.
+False - disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="expectedPathTrace">
+ <description>Expected path trace.
+
+The string can be of 64 characters length, or empty string ("").
+The string shall consist of 62 ASCII characters followed by CR/LF.
+The empty string shall be coded with the first character equal to ASCII null (i.e. byte value 0) and the rest dummy or non-existing.
+
+Note: An empty string for this attribute means that the detection of Trace Identifier Mismatch (TIM) should be disabled. This attribute is set to empty string every time attribute pathTraceFormat is set.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="transmittedPathTrace">
+ <description>The transmitted path trace.
+
+The string shall consist of 62 ASCII characters followed by CR/LF.
+The empty string shall be coded with the first character equal to ASCII null (i.e. byte value 0) and the rest dummy or non-existing.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Identity of the AtmPort reserving this MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmEsp">
+ <description>Performance Monitoring counter for ES, Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesp">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="WebServer">
+ <description>The WebServer MO represents the WebServer in the node.
+
+This object is used for configuration of the WebServer paths. By connecting this object to a
+SwAllocation MO that is connected to a Repertoire MO the WebServer paths will be
+automatically configured during system upgrade.
+
+The local distinguished name of this MO is ManagedElement=1, WebServer=1.
+
+The WebServer MO is created automatically by the system.</description>
+ <systemCreated/>
+ <attribute name="WebServerId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="webServerPaths">
+ <description>Paths that shall be used by the WebServer separated by the delimiter character ":".</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySwAllocation">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="SwAllocation"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="IpAccessAutoConfig">
+ <description>This MO represents the Auto Configuration feature for the IpAccessHost's in Cello.
+
+</description>
+ <attribute name="IpAccessAutoConfigId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Hold a list of the identitys of the reserving IpAccessHost's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="networkPrefix">
+ <description>The network prefix.
+
+The prefix denotes how many bits that are used for calculating the subnet mask.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>32</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nrOfUnusedAdresses">
+ <description>The number of addresses in the range that are not used.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="totalNrOfAddresses">
+ <description>The total number of addresses in the range.
+
+Note that the first address in the range will be the same one as the one for networkAddress.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="minIpAddress">
+ <description>The lowest value that can be used as host IP address. If autoConfig=ON for an IpAccessHost, the operator does not explicitly have to assign an Ip Address and prefixLength to the host. This is done by the Control Plane, based on the IpAccesAutoConfig identity specified for the IpAccessHost.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="maxIpAddress">
+ <description>The highest value that can be used as host IP address. If autoConfig=ON for an IpAccessHost, the operator does not explicitly have to assign an Ip Address and prefixLength to the host. This is done by the Control Plane, based on the IpAccesAutoConfig identity specified for the IpAccessHost.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="IpAccessHostMsb">
+ <description>This MO represents the Ip Access Host used for payload. This host type executes on a MSB board (Media Stream Board used by Media Gateway).
+
+Note! If autoConfig is set to ON, the Ip Addresses and the Prefixes for this MO is set by the IpAccessAutoConfig MO.
+
+Note! There can be a maximum of 128 host's in the node.
+
+Note! The references to Aal5TpVccTp MO's has to be set in pairs.
+
+Note! The IpAccessMsbHost must execute on the sam MP as the Aal5TpVccTp that are defined in the attributes 'aal5TpVccTpRef1' and 'aal5TpVccTpRef2'.
+
+Note! The 'administrativeState' has to be set to LOCKED in order to be able to delete this host.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Ip Access Host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>DEGRADED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the Ip Access Host.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimer">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="dspId">
+ <description>The identity of the DSP (Digital Signalling Processor) on a MSB board.
+
+Note! The value of this attribute has to be unique among the host's that execute on the same board.</description>
+ <mandatory/>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpRef1">
+ <description>Holds a reference to an Aal5 termination point (Aal5TpVccTp MO).
+
+Note! The Aal5TpVccTp references are mutually exclusive.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Aal5TpVccTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpRef2">
+ <description>Holds a reference to an Aal5 termination point (Aal5TpVccTp MO).
+
+Note! The Aal5TpVccTp references are mutually exclusive.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Aal5TpVccTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfig">
+ <description>This attribute specifies whether the auto configuration feature for the Ip Access Host is used or not.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="AutoConfigurationMode">
+ <defaultValue>OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfigIdentity">
+ <description>The identity of the IpAccessAutoConfig MO used by this host.
+
+Note! This attribute can only be set if 'autoConfig' is set to 'ON'.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="IpAccessAutoConfig"/>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress">
+ <description>The IpAddress.
+
+Note! If autoConfig = OFF this attribute is mandatory.
+
+Note! If the autoConfiguration is used for this IpAccessHost (autoConfig = ON) this attribute cannot be set. This attribute is then set by the 'IpAccessAutoConfig MO'.
+
+Note! The IpAddress has to be unique within the node.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="networkPrefix">
+ <description>The network prefix.
+
+The prefix denotes how many bits that are used for calculating the subnet mask.
+
+Note! If auto configuration is used (autoConfig = ON) this attribute cannot be set, the networkPrefix is then set in the ipAccessAutoConfig MO class.
+
+Note! If auto configuration is not used (autoConfig = OFF) this attribute must be set.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>32</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="linkStatusAddress">
+ <description>The link Status for Ip Address.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtu">
+ <description>The maximum transfer unit.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>72</min> <max>2048</max>
+ </range>
+ <defaultValue>1024</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ipDefaultTtl">
+ <description>The default value inserted into the Time-To-Live field of the IP header of datagrams originated at this entity,
+whenever a TTL value is not supplied by the transport layer protocol.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInReceives">
+ <description>The total number of input datagrams received from interfaces, including those received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInHdrErrors">
+ <description>The number of input datagrams discarded due to errors in their IP headers, including bad checksums, version number
+mismatch, other format errors, time-to-live exceeded, errors discovered in processing their IP options, etc.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInAddrErrors">
+ <description>The number of input datagrams discarded because the IP address in their IP header's destination field was not a
+valid address to be received at this entity. This count includes invalid addresses (e.g., 0.0.0.0) and addresses of
+unsupported Classes (e.g., Class E). For entities which are not IP routers and therefore do not forward datagrams,
+this counter includes datagrams discarded because the destination address was not a local address.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInUnknownProtos">
+ <description>The number of locally-addressed datagrams received successfully but discarded because of an unknown or
+unsupported protocol.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInDiscards">
+ <description>The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but which
+were discarded (e.g., for lack of buffer space). Note that this counter does not include any datagrams discarded while
+awaiting re-assembly.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInDelivers">
+ <description>The total number of input datagrams successfully delivered to IP user-protocols (including ICMP).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpOutRequests">
+ <description>The total number of IP datagrams which local IP user-protocols (including ICMP) supplied to IP in requests for
+transmission. Note that this counter does not include any datagrams counted in ipForwDatagrams</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpOutDiscards">
+ <description>The number of output IP datagrams for which no problem was encountered to prevent their transmission to their
+destination, but which were discarded (e.g., for lack of buffer space). Note that this counter would include
+datagrams counted in ipForwDatagrams if any such packets met this (discretionary) discard criterion.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInMsgs">
+ <description>The total number of ICMP messages which the entity received.
+Note that this counter includes all those counted by icmpInErrors</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInErrors">
+ <description>The number of ICMP messages which the entity received but determined as having
+ICMP-specific errors (bad ICMP checksums, bad length, etc.).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInDestUnreachs">
+ <description>The number of ICMP Destination Unreachable messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInTimeExcds">
+ <description>The number of ICMP Time Exceeded messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInParamProbs">
+ <description>The number of ICMP Parameter Problem messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInSrcQuenchs">
+ <description>The number of ICMP Source Quench messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInRedirects">
+ <description>The number of ICMP Redirect messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInEchos">
+ <description>The number of ICMP Echo (request) messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInEchoReps">
+ <description>The number of ICMP Echo Reply messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutMsgs">
+ <description>The total number of ICMP messages which this entity attempted to send.
+Note that this counter includes all those counted by icmpOutErrors.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutErrors">
+ <description>The number of ICMP messages which this entity did not send due to problems discovered within ICMP such as a lack of
+buffers. This value should not include errors discovered outside the ICMP layer such as the inability of IP to route the
+resultant datagram. In some implementations there may be no types of error which contribute to this counter's value.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutDestUnreachs">
+ <description>The number of ICMP Destination Unreachable messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutParmProbs">
+ <description>The number of ICMP Parameter Problem messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutEchos">
+ <description>The number of ICMP Echo (request) messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutEchoReps">
+ <description>The number of ICMP Echo Reply messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpInDatagrams">
+ <description>The total number of UDP datagrams delivered to UDP users.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpNoPorts">
+ <description>The total number of received UDP datagrams for which there was no application at the destination port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpInErrors">
+ <description>The number of received UDP datagrams that could not be delivered for
+reasons other than the lack of an application at the destination port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpOutDatagrams">
+ <description>The total number of UDP datagrams sent from this entity.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="IpAccessHostMsbId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnitId">
+ <description>Holds a reference to the PlugInUnit.
+
+Note that the 'plugInUnitId has to be the same as the one defined in the attribute 'processorId' found on the Aal5TpVccTpMo.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PlugInUnit"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2QosProfile">
+ <description>This MO represents the definitions of properties for a set of Aal2 quality of service classes.</description>
+ <attribute name="Aal2QosProfileId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="profileClassA">
+ <description>This attribute holds the values applicable for QoS Class A.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="QoSProfileClassA"/>
+ </dataType>
+ </attribute>
+ <attribute name="profileClassB">
+ <description>This attribute holds the values applicable for QoS Class B.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="QoSProfileClassB"/>
+ </dataType>
+ </attribute>
+ <attribute name="profileClassC">
+ <description>This attribute holds the values applicable for QoS Class C.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="QoSProfileClassC"/>
+ </dataType>
+ </attribute>
+ <attribute name="profileClassD">
+ <description>This attribute holds the values applicable for QoS Class D.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="QoSProfileClassD"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving Aal2PathVccTp MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2PathVccTp"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2QosCodePointProfile">
+ <description>This MO represents the QoS CodePoints for the different Aal2 QoS classes.</description>
+ <attribute name="Aal2QosCodePointProfileId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="qualityOfServiceCodePointA">
+ <description>The Code Point for Class A.
+
+Recommended value for Class A, 128.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="qualityOfServiceCodePointB">
+ <description>The Code Point for Class B.
+
+Recommended value for Class B, 129.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="qualityOfServiceCodePointC">
+ <description>The Code Point for Class C.
+
+Recommended value for Class C, 130.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="qualityOfServiceCodePointD">
+ <description>The Code Point for Class D.
+
+Recommended value for Class D, 131.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds the identity of the reserving Aal2Ap Mo.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2Ap"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="M3uAssociation">
+ <description>This MO represents the M3UA Association part of the M3UA (MTP3-User Adaptaion Layer) that is a protocol
+for the transport of any SS7 MTP3-User signalling (e.g., ISUP and SCCP messages) over IP using the services
+of the Stream Control Transmission Protocol.
+
+Note that the local port number is hard coded to 2905.
+
+
+</description>
+ <attribute name="M3uAssociationId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving Signaling Route's (Mtp3bSr MO).
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp3bSr"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The Operational State of the M3Ua</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtp3bSrsId">
+ <description>The identity of the Signalling Route Set used.</description>
+ <mandatory/>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <moRef name="Mtp3bSrs"/>
+ </dataType>
+ </attribute>
+ <attribute name="sctpId">
+ <description>The SctpHost used by this association.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Sctp"/>
+ </dataType>
+ </attribute>
+ <attribute name="dscp">
+ <description>The DSCP, DiffServCodePoint, for the internal M3UA user.
+Only one DSCP value is valid and set by the first defined MO 'instance'.
+
+NOTE: The value set for the 'dscp' when creating the first M3uAssociation under a signaling point will also be used for all other M3uAssociation MO's that are created under this signaling point. So setting the value for the 'dscp' on other instances than the first one created will have no effect. Note that associations created under a different signaling point can have a different dscp-value. </description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>63</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="associationState">
+ <description>The possible states of an M3Ua association.
+
+Bit 1 = 1 indicates INACTIVE
+Bit 2 = 1 indicates ACTIVE
+Bit 3 = 1 indicates ESTABLISHED
+Bit 4 = 1 indicates DOWN
+
+These values are mutually exclusive.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="localIpMask">
+ <description>This attribute denotes whether single or multi homing is used.
+
+Note! that all M3uAssociations that refers to the same SCTP MO must have this attribute set to the same value.
+
+Note! If localipMask=2 or localipMask=3 . the attribute ipAddress2 or autoConfigIdentity2 in IpAccessHostGpb MO must be defined.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="HomingState">
+ <defaultValue>SINGLE_HOMED_1</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartAssociation">
+ <description>If true, the M3ua layer in the stack will after a restart, start up all signalling associations.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="remotePortNumber">
+ <description>The port number of the remote signalling point (SP).</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2905</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="remoteIpAddress1">
+ <description>Remote IpAddress 1, if not used the value should be an empty string.
+Range is 0.0.0.0 - 255.255.255.255
+
+Note! This address is concidered as the primary IP-address. In case of association establisment failure 'remoteIpAddress2' will be used.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="remoteIpAddress2">
+ <description>Remote IpAddress 2, if not used the value should be an empty string.
+Range is 0.0.0.0 - 255.255.255.255
+
+Note! This address cannot be the same as remoteIpAddress1. This address is used when trying to establish association in case association attempt using 'remoteIpAddress1' fails.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCommunicationLost">
+ <description>Number of communication losses.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCongestions">
+ <description>Number of congestions.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDunaRec">
+ <description>Number of DUNA messages received through the association.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDavaRec">
+ <description>Number of DAVA messages received through the association.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSconRec">
+ <description>Number of SCON messages received through the association.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDupuRec">
+ <description>Number of DUPU messages received through the association.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDataMsgSent">
+ <description>The number of data messages sent on the associations related to this signalling point.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDunaSent">
+ <description>Number of DUNA messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDavaSent">
+ <description>Number of DAVA messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSconSent">
+ <description>Number of SCON messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDupuSent">
+ <description>Number of DUPU messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDataMsgRec">
+ <description>Number of DATA (payload data) messages received through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfErrorMsgRec">
+ <description>Number of ERROR messages received through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfErrorMsgSent">
+ <description>Number of ERROR messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNotifyMsgRec">
+ <description>Number of NOTIFY messages received through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDaudMsgSent">
+ <description>The number of daud messages sent on the associations related to this signalling point.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDaudMsgRec">
+ <description>The number of daud messages received on the associations related to this signalling point.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspupSent">
+ <description>The number of ASPUP sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspupReceived">
+ <description>The number of ASPUP received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspdnSent">
+ <description>The number of ASPDN sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspdnReceived">
+ <description>The number of ASPDN received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspacSent">
+ <description>The number of ASPAC sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspacReceived">
+ <description>The number of ASPAC received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspiaSent">
+ <description>The number of ASPIA sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspiaReceived">
+ <description>The number of ASPIA received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspupAckSent">
+ <description>The number of ASPUP_Ack sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspupAckReceived">
+ <description>The number of ASPUP_Ack received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspdnAckSent">
+ <description>The number of ASPDN_Ack sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspdnAckReceived">
+ <description>The number of ASPDN_Ack received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspacAckSent">
+ <description>The number of ASPAC_Ack sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspacAckReceived">
+ <description>The number of ASPAC_Ack received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspiaAckSent">
+ <description>The number of ASPIA_Ack sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspiaAckReceived">
+ <description>The number of ASPIA_Ack received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfM3uaDataMsgDiscarded">
+ <description>The number of data Messages discarded.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="setAutoActivate">
+ <description>This action starts the association.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="setAutoDown">
+ <description>This action stops the association.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="Sctp">
+ <description>This MO represents the SCTP, Stream Control Transmission Protocol in Cello.
+SCTP is designed to transport signaling messages over IP networks.</description>
+ <attribute name="SctpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Ip Access Host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="numberOfAssociations">
+ <description>The maximum number of M3uAssociations that can be handled by this SCTP MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>512</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the M3Ua's handled by the SCTP.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="M3uAssociation"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="ipAccessHostGpbId">
+ <description>The identity of the IpAccessHostGbp reserved by this MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="IpAccessHostGpb"/>
+ </dataType>
+ </attribute>
+ <attribute name="minimumRto">
+ <description>The minimum value for RTO (Retransmission time-out).
+The minimumRto shall be larger than tSack + expected Round Trip Time.
+
+Unit is second/100.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>4</min> <max>500</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maximumRto">
+ <description>The maximum value for RTO (Retransmission time-out).
+
+Unit is second/100.
+
+maximumRto must be larger than minimumRto.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>4</min> <max>180000</max>
+ </range>
+ <defaultValue>15</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="initialRto">
+ <description>The initial value that the RTO (Retransmission time-out) will take prior to the first RTT (Round Trip Time) measure.
+
+Note that the value for 'initialRto' has to be equal to or greater than 'minimumRto'.
+
+Unit is seconds/100.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>4</min> <max>180000</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="rtoAlphaIndex">
+ <description>This parameter is used for computing the value of the SRTT (Smoothed Round Trip Time) for a specific destination
+address. Is is used to weight the RTT values, and it's value must be between 0 and 1 (0 &lt; rtoAlpha &lt; 1). A value
+close to 1 gives a higher importance to the last RTT measurement.
+The range of possible values in the configuration file and the actual value given to this parameter within the module
+are the following:
+
+rtoAlphaIndex = 1 -&gt; RTO-Alpha = 1/2
+rtoAlphaIndex = 2 -&gt; RTO-Alpha = 1/4
+rtoAlphaIndex = 3 -&gt; RTO-Alpha = 1/8
+rtoAlphaIndex = 4 -&gt; RTO-Alpha = 1/16</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>4</max>
+ </range>
+ <defaultValue>3</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="rtoBetaIndex">
+ <description>This parameter is used for computing the the value of RTTVar (Round Trip Time Variation) of a destination
+address.
+It's value must be between 0 and 1 (0 &lt; rtoBetaIndex &lt; 1). A value close to 1 gives more importance to the
+last observed variation.
+The range of possible values in the configuration file and the actual value given to this parameter within the module
+are the following:
+
+rtoBetaIndex = 1 -&gt; RTO-Beta = 1/2
+rtoBetaIndex = 2 -&gt; RTO-Beta = 1/4
+rtoBetaIndex = 3 -&gt; RTO-Beta = 1/8
+rtoBetaIndex = 4 -&gt; RTO-Beta = 1/16
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>4</max>
+ </range>
+ <defaultValue>2</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="validCookieLife">
+ <description>This parameter sets up the lifespan of the State Cookie sent in the INIT_ACK chunk. It is used for limiting the
+the valid amount of time between sending the INIT_ACK and the reception of a COOKIE_ECHO chunk when
+establishing an association.
+If a COOKIE_ECHO chunk arrives after 'validCookieLife' has expired when sending an INIT_ACK chunk, the
+COOKIE_ECHO shall be discarded and no association will be established.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>180</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="allowedIncrementCookieLife">
+ <description>The sender of an INIT chunk may request to the remote endpoint a cookie life-span increase (for example, if a previous attempt to
+connect failed due to a state-cookie error). If the value sent in the "Cookie Preservative field" of the INIT chunk is less or equal to
+this parameter, the reciver of the INIT chunk will increase the 'validCookieLife' with the number of seconds specified. If the value
+present in the "Cookie Preservative field" is higher than this parameter, the cookie life should be incremented with the number of
+seconds specified by the parameter.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>180</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="keyChangePeriod">
+ <description>Defines how often the secret key used for computing the MAC (Message Authentication Code) on the State Cookie is changed.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>180</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="associationMaxRtx">
+ <description>This is the maximum number of consecutive retransmissions to a remote peer (on all the destination transport addresses of the peer, if it's multi homed). If the number of retransmissions becomes higher than this value, the remote peer shall be considered unreachable and the association shall be closed down.
+
+The value of this attribute should be greater than, or equal to the value of the attribute 'pathMaxRtx'.
+
+Note that for a specific association, it might happen that all the remote addresses (if the the remote end is multi homed) becomes unreachable without exceeding the 'associationMaxRtx'. In such a case the association will be closed down.
+
+Note! The value need to be increased to avoid frequent CommLost's in case of an unstable network.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>20</max>
+ </range>
+ <defaultValue>2</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pathMaxRtx">
+ <description>Maximum number of consecutive retransmissions to a remote transport address. If the number of retransmissions becomes higher than this value, the remote transport address shall be considered as "inactive" and no data shall be sent to it. If all of the remote transport addresses becomes "inactive", tha association will be closed down.
+
+Note! The value need to be increased to avoid frequent CommLost's in case of an unstable network.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>20</max>
+ </range>
+ <defaultValue>2</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxInitialRtrAtt">
+ <description>The maximum nimber of retransmissions allowed for both INIT and COOKIE_ECHO chunks. If the number of retransmissions
+exceeds this value, then the SCTP must abort the initialization of the association and report the error to the user.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxShutDownRtrAtt">
+ <description>The maximum number of retransmission during the shutdown phase of an association.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="heartbeatInterval">
+ <description>The amount of time added to the RTO (Retransmission Time Out) of a specific address when setting up the period of
+time between sending heartbeats. Small values can lead to an earlier detection of unreachable addresses than higher
+values. Note that sendig often might lead to performace penalty.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>1800</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="heartbeatStatus">
+ <description>This attribute enables/disables heartbeats for associations.
+
+True = Enables</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="maxIncomingStream">
+ <description>This is the maximum incoming streams (MIS) for an association. Established associations might have an IS less or equal to
+this, but it's MIS can never be higher than the value of this attribute.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16384</max>
+ </range>
+ <defaultValue>17</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxOutgoingStream">
+ <description>The maximum number of outgonig streams for an association.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16384</max>
+ </range>
+ <defaultValue>17</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxUserDataSize">
+ <description>The maximum number of bytes a user is allowed to pass as a non fragmentable user data in a SCTP_SEND_REQ message
+(fixed user MTU):
+The values for this attribute is 'user' data and do not include IP header (20 bytes), SCTP header (12 bytes) or DATA chunk
+header (16 bytes).
+
+Unit is bytes.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>528</min> <max>65484</max>
+ </range>
+ <defaultValue>1432</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="mBuffer">
+ <description>This attribute sets the size of the buffer used for storing user data pending to be sent or retransmitted in an association. I.e. establish the maximum amount of user data that SCTP shall buffer before discarding user messages.
+
+The Unit is in kilo bytes.
+
+Note! The restriction on this attribute is:
+mBuffer x number of M3uAssociation MOs connected to this Sctp + 20 Mb &lt;= the heap for Sctp program.
+
+Note! The value may need to be increased to ensure stable dataflow at high load.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2048</max>
+ </range>
+ <defaultValue>128</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nThreshold">
+ <description>This attribute sets the value of the threshold used by SCTP to stop the delivery of data on anassociation.
+Once nThreshold or more bytes are queued and pending to be sent, the SCTP layer shall issue an indication to the user.
+The value of nThreshold should be less than mBuffer in order to be effective. A normal value for nThreshold is 3/4 * mBuffer.
+
+Unit is kilo bytes.
+
+Note! The value may need to be increased to ensure stable dataflow at high load.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2048</max>
+ </range>
+ <defaultValue>96</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tSack">
+ <description>The delay of sending the SACK. I.e. the time from DATA chunk reception to Sack chunk sending.
+
+Unit is second/100</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>50</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxDataSizeIp">
+ <description>The maximum number of bytes SCTP shall be able to fetch every time it reads from the socket.
+
+Note! This value includes the Ip header, 20 bytes.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1500</min> <max>65535</max>
+ </range>
+ <defaultValue>8192</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="initialAdRecWin">
+ <description>The value of the initial advertised reciver window.
+
+Note! The range is 1500 to maxDataSizeIp.
+
+Unit is bytes.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1500</min> <max>65535</max>
+ </range>
+ <defaultValue>8192</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="intervalOobPkts">
+ <description>The number of seconds for the interval for which the counter for out of the blue chunks will be reset.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>6500</max>
+ </range>
+ <defaultValue>3600</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="intervalLostUser">
+ <description>The number of seconds for the interval for which the SCTP will decide that the SCTP user that lost the
+connection is dead. After the time specified in this attribute has elapsed, all associations related to the
+SCTP user will be destroyed.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3600</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxBurst">
+ <description>The number of packages that will be sent during the fast retransmit phase when a SACK is processed.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16384</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nPercentage">
+ <description>The size of 'n' inpercentage when SCTP_CONGESTION_CEASE_IND is sent. At 100 percent the
+primitive will buffer usage goes below 'nThreshold'.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>85</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="bundlingActivated">
+ <description>This attribute enables/disables the use of bundling.
+Valid values:
+1: enabled.
+0: disabled.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="bundlingTimer">
+ <description>This attribute specifies maximum SCTP bundling delay.
+Value=0 means that SCTP will only bundle what is available and send directly (no delay).
+Unit is milliseconds</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1000</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpCurrEstab">
+ <description>Number of SCTP associations for which the current state is either ESTABLISHED, SHUTDOWN-PENDING, or SHUTDOWN-RECEIVED.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpActiveEstab">
+ <description>Number of times that SCTP associations have made a direct transition to the ESTABLISHED state from the COOKIE-ECHOED state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpPassiveEstab">
+ <description>Number of times that SCTP associations have made a direct transition to the ESTABLISHED state from the CLOSED state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpAborted">
+ <description>Number of times that SCTP associations have made a direct transition to the CLOSED state from any state using the primitive ABORT.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpShutdowns">
+ <description>Number of times that SCTP associations have made a direct transition to the CLOSED state from either the SHUTDOWN-SENT state or the SHUTDOWN-ACK-SENT state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatAssocOutOfBlue">
+ <description>Number of out of the blue packets (SCTP packet correctly formed-right checksum- but the receiver is not able to identify the association to which this packet belongs) received by the host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatSentChunks">
+ <description>Number of complete data chunks sent to the peers (no retransmissions included).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatRecChunks">
+ <description>Number of complete data chunks received from the peers (no retransmissions included).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatOutOfOrderSendChunks">
+ <description>Number of unordered chunks sent to the peers.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatOutOfOrderRecChunks">
+ <description>Number of unordered chunks received from the peers.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatChecksumErrorCounter">
+ <description>Number of SCTP packets received from the peers with an invalid checksum.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatRetransChunks">
+ <description>Number of data chunks retransmitted to the peers.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatSentControlChunks">
+ <description>Number of datagrams sent with chunk type id &gt; 0.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatReceivedControlChunks">
+ <description>Number of datagrams Receivedwith chunk type id &gt; 0.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatFragmentedUserMsg">
+ <description>Number of fragmented user messages, incremented when the first data chunk of a fragmented message is sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatReassembledUserMsg">
+ <description>Number of reassembled user messages, incremented when the first data chunk of a fragmented message is received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatSentPackages">
+ <description>Number of SCTP packages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatReceivedPackages">
+ <description>Number of SCTP packages Received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatCommStop">
+ <description>Number of times the SCTP has sent a communication stop indication to the user.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatCommResume">
+ <description>Number of times SCTP has sent a communication resume indication to the user.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatSentChunksDropped">
+ <description>Number of sent chunks that SCTP has been forced to drop due to buffer overflow in the sending buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatRecChunksDropped">
+ <description>Number of received chunks that SCTP has been forced to drop due to buffer overflow in the receiving buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Sts1SpeTtp">
+ <description>This MO represents the termination of the SONET higher order paths.
+This MO is automatically created when creating the OS155SPITTP with mux mode
+set to E1_J1_T1_LEVEL and standardmode set to ANSI.
+
+The performance monitoring counters in the Sts1SpeTtp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large to fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="Sts1SpeTtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Sts3CspeTtp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="aisPReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiPReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="timConsequentAction">
+ <description>Trace Identifier Mismatch (TIM) consequent action, i.e. for generation of Alarm Indication Signal (AIS) downstream and Remote Defect Indication (RDI) upstream as a consequence of the TIM detection.
+
+True - enabled.
+False - disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="expectedPathTrace">
+ <description>Expected path trace.
+
+The string can be of 64 characters length, or empty string ("").
+
+Note: An empty string for this attribute means that the detection of Trace Identifier Mismatch (TIM) should be disabled. This attribute is set to empty string every time attribute pathTraceFormat is set.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="transmittedPathTrace">
+ <description>The transmitted path trace.
+Can be defined in two formats. The format may be in 16 or 64 characters. Usually 16 is used for ETSI and 64 for ANSI/TTC.
+
+Note: The string must be of 15 or 62 characters length, or empty string ("").</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="pmEsp">
+ <description>Performance Monitoring counter for ES, Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesp">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Vt15Ttp">
+ <description>This MO is automatically created when the configuring the Os155SpiTtp. It represents the termination of the SONET VP 1.5 path layer.
+
+This MO is automatically created when creating the Os155SpiTtp MO with the following conditions:
+muxmode = E1_J1_T1_LEVEL
+standardmode = ANSI
+
+The performance monitoring counters in the Vt15Ttp is set to 0 (zero) at start or restart of the node.
+When the value is too large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <systemCreated/>
+ <attribute name="Vt15TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="aisVreporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiVreporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimer">
+ <description>This timer defines the time that elapses before shut down when administrativeState is se to 'shuttingDown'.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Vt15Ttp MO.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the Vt15Ttp MO.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter of Errored Seconds (ES).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Serverely Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="T1Ttp">
+ <description>This MO represents a channelised T1 interface in the node. The T1Ttp MO does not define which type of traffic (TDM or ATM) that the interface should support. Please refer to the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+The performance monitoring counters in the T1Ttp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! This MO is automatically created as a consequence of creating an Os155SpiTtpMo
+Please refer to the Os155SpiTtpMo for more details.</description>
+ <systemCreated/>
+ <attribute name="T1TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the T1Ttp MO.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter of Errored Seconds (ES).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Serverely Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving AtmPort MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="E3PhysPathTerm">
+ <description>This MO represents an E3 (i.e. 34 Mbit/s) physical interface in the node. Please refer to the AtmPort object for details about configuration of traffic type.
+
+Note! The performance monitoring counters in the E3PhysPathTerm MO is set to 0 (zero) at start or restart of the node.
+When the value is too large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="E3PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the E3PhysPathTerm.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>Possible values
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+system - The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="degDegThr">
+ <description>The threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+This is a percentage value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="degDegM">
+ <description>How many bad seconds in a row that causes a Degraded Signal alarm.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance Monitoring counter for ES, Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="T3PhysPathTerm">
+ <description>This MO represents an T3 (i.e. 45 Mbit/s) physical interface in the node. Please refer to the AtmPort object for details about configuration of traffic type.
+
+Note! The performance monitoring counters in the T3PhysPathTerm MO is set to 0 (zero) at start or restart of the node.
+When the value is too large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="T3PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the T3PhysPathTerm MO.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>Possible values
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+system - The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmEsCpp">
+ <description>Performance Monitoring counter for ES, Errored Seconds based on C-bit parity.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesCpp">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES based on C-bit parity.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etm3">
+ <description>This MO represents the hardware of the ET-M3 board type. It only represents the ET specific hardware, while the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-M3 board contains 2 physical ports that can be configured as either E3 (ETSI) or T3(ANSI).
+
+Each port on the ET-M3 board can be used to carry ATM traffic.
+
+At the VP/VC endpoints, the Lost FPM/BR cells counters are not available.
+
+IMA is not applicable for theETM3 board.
+
+The ET-M3 board supports eight bidirectional F4/F5 PM flow per port.
+
+The number of VCC TP+VPC TP with performance monitoring enabled (i.e. PM mode &lt;&gt; off) is restricted to 8/port.
+
+Each port can support up to 240 ATM VC connections. Sixteen of these connections are reserved for AAL2 paths, and therefore sixteen AAL2 multiplexers per port are available.
+
+Each port can support up to 16 VP connections. </description>
+ <attribute name="Etm3Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the Etm3 board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpApRemote">
+ <description>This Managed Object represents an SCCP Remote Access Point. An SCCP AP instance is a logical point in the SCCP network at which an SCCP user can access the services provided by the SCCP and the SCCP can deliver its services to the SCCP user. The SCCP Remote Access Point is identified by a SubSystem Number (SSN).
+
+A remote SccpAp represents an access point in another node and is related to a Mtp3bAp MO.
+
+The performance monitoring counters found in SccpAp MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a shutdown request from the CLI (Cluster Interface).</description>
+ <attribute name="SccpApRemoteId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SCCP AP. The operability of the SCCP AP is described by this attribute which has two possible values:
+
+Disabled: The SCCP AP is totally inoperable and unable to provide the service to the user (e.g. if the MTP-3b AP is not usable).
+
+Enabled: The SCCP AP is partly or fully operable and available for use.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="mtp3bApId">
+ <description>The identity of the Mtp3bAp used by this MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Mtp3bAp"/>
+ </dataType>
+ </attribute>
+ <attribute name="ssN">
+ <description>The sub system number, SSN, of the SCCP Access Point. Note that this has to be a unique number.
+
+The SSN has to be unique among all other SccpApRemote MOs that has the same DPC in their corresponding Mtp3bSrs MOs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="IpAccessHostGpb">
+ <description>This MO represents the Ip Access Host used for payload. This host type executes on a GPB board (GeneralPocessorUnit).
+
+Note! If autoConfig is set to ON, the Ip Addresses and the Prefixes for this MO is set by the IpAccessAutoConfig MO.
+
+Note! There can be a maximum of 128 host's in the node, and only one host on each main processor.
+
+Note! The host cannot be configured on a MP which have a MediumAccessUnit-child MO. They are exclusive.
+
+Note! The 'administrativeState' has to be set to LOCKED in order to be able to delete this host.</description>
+ <attribute name="IpAccessHostGpbId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO, can be of type Sctp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Ip Access Host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>DEGRADED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the Ip Access Host.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimer">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="linkStatusAddress1">
+ <description>The link status for IpAddress1.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkStatusAddress2">
+ <description>The link status for IpAddress2, only valid if 2 IpAddresses are configured for this host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="generalProcessorUnitId">
+ <description>Holds a reference to the GPU (GenerelProcessorUnit).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="GeneralProcessorUnit"/>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfig">
+ <description>This attribute specifies whether the auto configuration feature for the Ip AccessHost is used or not.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="AutoConfigurationMode">
+ <defaultValue>OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfigIdentity">
+ <description>The identity of the IpAccessAutoConfig MO used by this host.
+
+Note! This attribute is mandatory if 'autoConfig' is set to ON.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="IpAccessAutoConfig"/>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfigIdentity2">
+ <description>The identity of the IpAccessAutoConfig MO used by this host.
+
+Note! This attribute can only be set if 'autoConfig' is set to 'ON'. This attribute is not neccesary to set if 'autoConfig' is set to ON, unless the host shall have two Ip Addresses automatically assigned.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="IpAccessAutoConfig"/>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress">
+ <description>The IpAddress.
+
+Note! If autoConfig = OFF this attribute is mandatory.
+Note! If the autoConfiguration is used for this IpAccessHostGpb (autoConfig = ON) this attribute cannot be set. This attribute is then set by the 'IpAccessAutoConfig MO'.
+Note! If the attribute is set, its value must not be the same as for attribute ipAddress2.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress2">
+ <description>The second IpAddress.
+
+Note! If autoConfig = OFF this attribute is possible to set. This attribute should only be set if multi-homing is used for this host (i.e. two addresses defined).
+Note! If the autoConfiguration is used for this IpAccessHostGpb (autoConfig = ON) this attribute cannot be set. This attribute is then set by the 'IpAccessAutoConfig MO'.
+Note! If the attribute is set, its value must not be the same as for attribute 'ipAddress'.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="pathMTUDiscovery">
+ <description>Specifies whether path MTU discovery should be used by this host.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="mtu">
+ <description>The maximum transfer unit.
+
+The MTU has a initial value of 1452 if pathMTUDiscovery is set to false.
+If pathMTUDiscovery is set to true, the initial value of MTU is 1452.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>72</min> <max>2048</max>
+ </range>
+ <defaultValue>1452</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ipDefaultTtl">
+ <description>The default value inserted into the Time-To-Live field of the IP header of datagrams originated at this entity,
+whenever a TTL value is not supplied by the transport layer protocol.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ipReasmTimeout">
+ <description>The maximum number of seconds which received fragments are
+held while they are awaiting reassembly at this entity.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.
+
+Note! The value for this attribute has to be positive.</description>
+ <dataType>
+ <long>
+ <defaultValue>300</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nextHopIpAddr">
+ <description>The next hop IP address.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="nextHopIpAddr2">
+ <description>The secondary next hop IP address.
+
+Note! This attribute must only be set if one of the following conditions are fulfilled:
+1. Attribute 'ipAddress2' is set.
+2. Attribute 'autoConfig' = 'ON' and attribute 'autoConfigIdentity2' is set.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="networkPrefix">
+ <description>The network prefix.
+
+The prefix denotes how many bits that are used for calculating the subnet mask.
+
+Note! The default value 0 (zero) is most likely not possible to use and an other value should be submitted if this attribute is configured manually.
+Note! If auto configuration is not used (autoConfig = OFF) this attribute must be set (i.e. this attribute is then 'mandatory').
+Note! If auto configuration is used (autoConfig = ON) this attribute cannot be set, networkPrefix is then set by the ipAccessAutoConfig MO class.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>32</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="networkPrefix2">
+ <description>The second network prefix.
+
+The prefix denotes how many bits that are used for calculating the subnet mask.
+
+Note! The default value 0 (zero) is most likely not possible to use and an other value should be submitted if this attribute is configured manually.
+Note! If auto configuration is not used (autoConfig = OFF) and ipAddress2 is set this attribute must be set (i.e. this attribute is then 'mandatory').
+Note! If auto configuration is used (autoConfig = ON) this attribute cannot be set, networkPrefix2 is then set by the ipAccessAutoConfig MO class. </description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>32</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInReceives">
+ <description>The total number of input datagrams received from interfaces, including those received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInHdrErrors">
+ <description>The number of input datagrams discarded due to errors in their IP headers, including bad checksums, version number
+mismatch, other format errors, time-to-live exceeded, errors discovered in processing their IP options, etc.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInAddrErrors">
+ <description>The number of input datagrams discarded because the IP address in their IP header's destination field was not a
+valid address to be received at this entity. This count includes invalid addresses (e.g., 0.0.0.0) and addresses of
+unsupported Classes (e.g., Class E). For entities which are not IP routers and therefore do not forward datagrams,
+this counter includes datagrams discarded because the destination address was not a local address.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInUnknownProtos">
+ <description>The number of locally-addressed datagrams received successfully but discarded because of an unknown or
+unsupported protocol.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInDiscards">
+ <description>The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but which
+were discarded (e.g., for lack of buffer space). Note that this counter does not include any datagrams discarded while
+awaiting re-assembly.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInDelivers">
+ <description>The total number of input datagrams successfully delivered to IP user-protocols (including ICMP).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpOutRequests">
+ <description>The total number of IP datagrams which local IP user-protocols (including ICMP) supplied to IP in requests for
+transmission. Note that this counter does not include any datagrams counted in ipForwDatagrams</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpOutDiscards">
+ <description>The number of output IP datagrams for which no problem was encountered to prevent their transmission to their
+destination, but which were discarded (e.g., for lack of buffer space). Note that this counter would include
+datagrams counted in ipForwDatagrams if any such packets met this (discretionary) discard criterion.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpReasmReqds">
+ <description>The number of IP fragments received which needed to be reassembled at this entity.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpReasmOKs">
+ <description>The number of IP datagrams successfully re-assembled.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpReasmFails">
+ <description>The number of failures detected by the IP re-assembly algorithm (for whatever reason: timed out, errors, etc).
+Note that this is not necessarily a count of discarded IP fragments since some algorithms (notably the algorithm
+in RFC 815) can lose track of the number of fragments by combining them as they are received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpFragOKs">
+ <description>The number of IP datagrams that have been successfully fragmented at this entity.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpFragFails">
+ <description>The number of IP datagrams that have been discarded because they needed to be fragmented
+at this entity but could not be, e.g., because their Don't Fragment flag was set.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpFragCreates">
+ <description>The number of IP datagram fragments that have been generated as a result of fragmentation at this entity.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInMsgs">
+ <description>The total number of ICMP messages which the entityreceived.
+Note that this counter includes all those counted by icmpInErrors</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInErrors">
+ <description>The number of ICMP messages which the entity received but determined as having
+ICMP-specific errors (bad ICMP checksums, bad length, etc.).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInDestUnreachs">
+ <description>The number of ICMP Destination Unreachable messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInTimeExcds">
+ <description>The number of ICMP Time Exceeded messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInParamProbs">
+ <description>The number of ICMP Parameter Problem messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInSrcQuenchs">
+ <description>The number of ICMP Source Quench messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInRedirects">
+ <description>The number of ICMP Redirect messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInEchos">
+ <description>The number of ICMP Echo (request) messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInEchoReps">
+ <description>The number of ICMP Echo Reply messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutMsgs">
+ <description>The total number of ICMP messages which this entity attempted to send.
+Note that this counter includes all those counted by icmpOutErrors.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutErrors">
+ <description>The number of ICMP messages which this entity did not send due to problems discovered within ICMP such as a lack of
+buffers. This value should not include errors discovered outside the ICMP layer such as the inability of IP to route the
+resultant datagram. In some implementations there may be no types of error which contribute to this counter's value.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutDestUnreachs">
+ <description>The number of ICMP Destination Unreachable messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutParmProbs">
+ <description>The number of ICMP Parameter Problem messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutEchos">
+ <description>The number of ICMP Echo (request) messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutEchoReps">
+ <description>The number of ICMP Echo Reply messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpInDatagrams">
+ <description>The total number of UDP datagrams delivered to UDP users.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpNoPorts">
+ <description>The total number of received UDP datagrams for which there was no application at the destination port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpInErrors">
+ <description>The number of received UDP datagrams that could not be delivered for
+reasons other than the lack of an application at the destination port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpOutDatagrams">
+ <description>The total number of UDP datagrams sent from this entity.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInUcastPkts">
+ <description>Performance monitoring counter for the number of input unicast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutUcastPkts">
+ <description>Performance monitoring counter for the number of out unicast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInErrors">
+ <description>Performance monitoring counter for the number of input packets discarded due to any error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInDiscards">
+ <description>Performance monitoring counter for the number of input packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInBroadcastPkts">
+ <description>Performance monitoring counter for the number of input broadcast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInMulticastPkts">
+ <description>Performance monitoring counter for the number of input multicast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutBroadcastPkts">
+ <description>Performance monitoring counter for the number of output broadcast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutMulticastPkts">
+ <description>Performance monitoring counter for the number of output multicast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SystemFunctions">
+ <description>This MO structures the SystemFunctions of the managed element. It is created automatically and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, SystemFunctions=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SystemFunctionsId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Licensing">
+ <description>This MO represents the Licensing (Software Keys) functions in Cello.</description>
+ <systemCreated/>
+ <attribute name="LicensingId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="emergencyStateInfo">
+ <description>This attribute holds information about the emergency status and the time remaining in the current state.
+
+Note! If the node is in emergency state USE_DEGRADED, or the emergency state is USE_DISABLED, the the value of'time' is insignificant.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="EmergencyInfo"/>
+ </dataType>
+ </attribute>
+ <attribute name="licenseFileUrl">
+ <description>This attribute returns the URL to the License Key File so it can be viewed with an XML capable web browser
+in case this is a licensed node.
+
+Note! In case the node is not licensed, an empty string will be returned.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>256</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <action name="updateLicenseKeyFile">
+ <description>This action sends a request to the FTP/SFTP server to update the license key file.
+
+User Id for login to FTP/SFTP server where license key files are located.
+If a null string userId is given, anonymous FTP/SFTP transfer is assumed.
+Max length is 20 characters.
+
+Password for login to the FTP/SFTP server where license key files are located.
+Max length is 20 characters.
+
+The IpAddress of the FTP/SFTP server where license key files are located.
+Max length is 16 characters.
+
+Source name and path of the license key file on the FTP/SFTP server.
+Max length is 256 charcters.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="userId">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="password">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="ipAddress">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="sFile">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="setEmergencyState">
+ <description>This action sets the license server into emergency state.
+I.e. opens up all licensed features and capacity restrictions.
+Disabling emergency state is done by loading a new license key file.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="TimingUnit2">
+ <description>This MO represents a timing unit2 (reference clock) in the node.
+
+The corresponding Program shall be of LoadModuleLoaderType, SpmFpgaLoader.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of TimingUnit</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the TimingUnit.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="TimingUnit2Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpPolicing">
+ <description>The SccpPolicing MO represents the policing function in CPP.
+
+The originatingMtp3bSpc is a madatory attribute for policing in one local node (i.e. a SRP in one NI).
+For policing between two local nodes (i.e. a SRP between two NIs) the originatingMtp3bSpc can be replaced by the originatingSccpSpId.
+Optional attributes for policing in one local node (i.e a SRP in one NI) are destinationMtp3bSpc, destinationSccpSsn, originatingSccpSsn and policingGlobalTitle.
+For policing between two local nodes (i.e. a SRP between two NIs) the destinationMtp3bSpc can be replaced by the destinationSccpSpId.</description>
+ <attribute name="SccpPolicingId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="originatingMtp3bSpc">
+ <description>The value of the SPC (Signaling Point Code).
+
+Note! If the 'originatingSccpSpId' is specified the 'originatingMtp3bSpc' is invalid.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>16777215</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="destinationMtp3bSpc">
+ <description>The value of the destination SPC (Signaling Point Code).
+
+Note! The default value 0 (zero) means that no SPC is defined.
+Note! If no 'destinationSccpSp' is defined and the value of 'destinationMtp3bSpc' is set to 0 (zero), all Signalling Point Codes (SPC) are valid.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>16777215</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="originatingSccpSpId">
+ <description>The identity of the originating SccpSp MO must be used for policing between local nodes.
+
+Note! If the 'originatingSccpSpId' is specified the 'originatingMtp3bSpc' is invalid.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="originatingSccpSsn">
+ <description>The value of SSN in CgPA (Calling Party Address)
+
+Note! The value 0 (zero) means that all ssN (Sub System Number) are valid.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="destinationSccpSpId">
+ <description>The identity of the destination SccpSp MO can be used for policing between local nodes.
+
+Note! If the 'destinationSccpSpId' is specified the 'destinationMtp3bSpc' is invalid.
+Note! If no destination 'destinationSccpSp' is defined and the value of 'destinationMtp3bSpc' is set to 0, all local nodes are valid.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="destinationSccpSsn">
+ <description>The value of SSN inCdPA (Called Party Address).
+
+Note! The valu 0 (zero) means tha all ssN (Sub System Number) are valid.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="policingGlobalTitle">
+ <description>The Policing Global Title attribute allows to optionally police on Global Title
+
+Default value is considered as no policing Global Title and all GTs are valid.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="GlobalTitleData"/>
+ </dataType>
+ </attribute>
+ <attribute name="discardOrReturnServiceMsg">
+ <description>For a policing case whether to discard or return Service Messages, if the return option is set.</description>
+ <dataType>
+ <enumRef name="DiscardReturnServiceMsg">
+ <defaultValue>DISCARD</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRejectMsg">
+ <description>Performance monitoring counter for the number of rejected messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpAccountingCriteria">
+ <description>The SccpAccountingCriteria MO and the SccpSp MO represents the accounting function in CPP.
+
+Attribute usageType specifies Accounting Remuneration (incoming GT messages) or Verification (outgoing GT messages).
+
+For Remuneration a SccpGlobalTitle MOId in attribute globalTitleId must be defined.
+For Verification a SccpGlobalTitle MOid is defined in attribute globalTitleId, or a SccpEntitySet MOid is defined if accounting shall be made on the resulting new GT.
+
+The attribute ssN is optional .
+The Mtp3bSrs MOid (including an SPC) in attribute pointerId is optional for accounting in one local node (SRP in one NI).
+The SccpSp MOid in attribute pointerId is optional for accounting between two local nodes (SRP between two NIs).
+Attribute countType specifies if Messages och Octets shall be counted.
+Start and stop of accounting and output period for the accounting file is specified in the SccpSp MO.</description>
+ <attribute name="SccpAccountingCriteriaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="usageType">
+ <description>This attribute specifies if the MO is used for renumeration or verification.
+
+0 = Verification Criteria to detect outgoing massages that will be charged in the next relay node.
+
+1 = Renumeration Criteria to detect incoming messages for relaying, that will be charged.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long/>
+ </dataType>
+ </attribute>
+ <attribute name="ssN">
+ <description>Subsystem Number this Accounting Criteria applies to.
+SubSystem Number 0 (zero) means that any SSN in CdPA (Called Party Address) is valid.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="countType">
+ <description>Specifies type of countes that should be activated.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="SccpCountType">
+ <defaultValue>MESSAGES</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="globalTitleId">
+ <description>The identity of the SccpGlobalTitle MO or the SccpEntitySet MO used by this MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMsg">
+ <description>Performance monitoring counter for the number of messages, both incoming and outgoing.
+
+Note! If 'countType' is set to 'OCTETS' this counter is not valid.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOctets">
+ <description>Performance monitoring counter for the number of octets, both incoming and outgoing.
+
+Note! If 'countType' is set to 'MESSAGES this counter is not valid.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pointerId">
+ <description>The pointer is an instance of a Mtp3bSrs MO OR an instance of a SccpSP MO.
+
+Note! If no pointerId is set all Signaling Point Codes (SPC) and all Sccp SP identities are valid.
+Note! It is not possible to submit the Id of the SccpSp that the SccpAccountingCriteria belongs to.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Cbu">
+ <description>This MO models the Cbu (Node Control Board) board in CPP.
+The Cbu board integrates the functionality of TUB, SCB, GPB and ETB (ET-MC1) into one Plug-In Unit.
+
+Note! The 'operationalState' is set to disabled if one of the functional parts is faulty. Even if the Cbu is marked with 'operationalState' DISABLED, parts of the Cbu can still be operational.
+
+Note! A functional part on a Cbu board can only be redundant with the same functional part on another Cbu board and thus not with that functional part implemented on a discrete board. Also note that redundancy is only applicable for the GPB part and the TimingUnit part of the Cbu board..
+
+Note! On the Cbu board it is only possible to configure a maximum of 4 physical path terminations. These can be of type E1PhysPathTerm, J1PhyspathTerm or T1PhyspathTerm. It is not possible to create physical path terminations of different standards on the same board.
+
+Note! The Gpu part of the Cbu board (General Processor Unit) retrieves its 'availabilityStatus' from the PlugInUnit MO, thus not represented on the Cbu MO.
+
+Note! When the ET-MC1 is part of the Cbu board it is only possible to configure 4 physical ports as either E1 (ETSI), J1 (TTC) or T1 (ANSI).
+
+Note! This unit may only be inserted in slot 1 and 24 (or more accurately at APN=1 and 0 in a non-standard subrack). If redundant configuration is needed, two Cbu's must be inserted in the subrack.
+If only one Cbu is used it must be placed in slot 1 (in a non-standard subrack) to be able to read the product information data of the subrack</description>
+ <attribute name="CbuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Provides the possibility to put a user-friendly label on the MO instance.
+
+Note! This attribute cannot be used for uniquely identifing the MO.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>128</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the NCB board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusEt">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.
+The 'availabilityStatusEt' gives the availability status for the ET part of the NCB board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusTu">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.
+The 'availabilityStatusTu' gives the availability status for the Timing Unit part of the NCB board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <relationship name="ManagedElement_to_TransportNetwork">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="TransportNetwork"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Synchronization">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Synchronization"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_SccpSp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="SccpSp"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_UniSaalProfile">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="UniSaalProfile"/>
+ <cardinality>
+ <min>0</min> <max>300</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_UniSaalTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="UniSaalTp"/>
+ <cardinality>
+ <min>0</min> <max>4800</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal0TpVccTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal0TpVccTp"/>
+ <cardinality>
+ <min>0</min> <max>2200</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal5TpVccTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal5TpVccTp"/>
+ <cardinality>
+ <min>0</min> <max>6000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_AtmPort">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="AtmPort"/>
+ <cardinality>
+ <min>0</min> <max>500</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_NniSaalProfile">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="NniSaalProfile"/>
+ <cardinality>
+ <min>0</min> <max>50</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_NniSaalTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="NniSaalTp"/>
+ <cardinality>
+ <min>0</min> <max>600</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_AtmTrafficDescriptor">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="AtmTrafficDescriptor"/>
+ <cardinality>
+ <min>0</min> <max>1000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2PathVccTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2PathVccTp"/>
+ <cardinality>
+ <min>0</min> <max>2000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2RoutingCase">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2RoutingCase"/>
+ <cardinality>
+ <min>0</min> <max>900</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2Sp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2Sp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_AtmCrossConnection">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="AtmCrossConnection"/>
+ <cardinality>
+ <min>0</min> <max>5000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2TpItu">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2TpItu"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2TpAnsi">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2TpAnsi"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal1TpVccTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal1TpVccTp"/>
+ <cardinality>
+ <min>0</min> <max>1000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp3bSpAnsi">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSpAnsi"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp3bSpItu">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSpItu"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp3bSpTtc">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSpTtc"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2ProfileAnsi">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2ProfileAnsi"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2ProfileItu">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2ProfileItu"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2ProfileChina">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2ProfileChina"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2TpChina">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2TpChina"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp3bSpChina">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSpChina"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mspg">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mspg"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_ImaGroup">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="ImaGroup"/>
+ <cardinality>
+ <min>0</min> <max>200</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2QosProfile">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2QosProfile"/>
+ <cardinality>
+ <min>0</min> <max>20</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2QosCodePointProfile">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2QosCodePointProfile"/>
+ <cardinality>
+ <min>0</min> <max>20</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Sctp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Sctp"/>
+ <cardinality>
+ <min>0</min> <max>10</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Subrack_to_Slot">
+ <containment>
+ <parent>
+ <hasClass name="Subrack"/>
+ </parent>
+ <child>
+ <hasClass name="Slot"/>
+ <cardinality>
+ <min>1</min> <max>28</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Slot_to_PlugInUnit">
+ <containment>
+ <parent>
+ <hasClass name="Slot"/>
+ </parent>
+ <child>
+ <hasClass name="PlugInUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Slot_to_ManagedObject">
+ <containment>
+ <parent>
+ <hasClass name="Slot"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedObject"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_ManagedObject">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedObject"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_ManagedObject">
+ <description>This containment relation indicated that any kind of board may be used to specilize PlugInUnit.</description>
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedObject"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Subrack_to_ManagedObject">
+ <containment>
+ <parent>
+ <hasClass name="Subrack"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedObject"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="VpcTp_to_VclTp">
+ <containment>
+ <parent>
+ <hasClass name="VpcTp"/>
+ </parent>
+ <child>
+ <hasClass name="VclTp"/>
+ <cardinality>
+ <min>0</min> <max>5000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_Equipment">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="Equipment"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_IpSystem">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="IpSystem"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_SwManagement">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="SwManagement"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_SwitchFabric">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchFabric"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_ManagedElementData">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedElementData"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_SystemFunctions">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="SystemFunctions"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Equipment_to_Subrack">
+ <containment>
+ <parent>
+ <hasClass name="Equipment"/>
+ </parent>
+ <child>
+ <hasClass name="Subrack"/>
+ <cardinality>
+ <min>0</min> <max>9</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Equipment_to_Jvm">
+ <containment>
+ <parent>
+ <hasClass name="Equipment"/>
+ </parent>
+ <child>
+ <hasClass name="Jvm"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Subrack_to_Fan">
+ <containment>
+ <parent>
+ <hasClass name="Subrack"/>
+ </parent>
+ <child>
+ <hasClass name="Fan"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_LoadModule">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="LoadModule"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpApLocal">
+ <description>The SccpApLocal represents a local SSN, no relation exists to an Mtp3bAp
+
+Of the possible 216 SccpAps allowed on a node, a maximum of 16 are allowed to be local, and a maximum of 200 are allowed to be remote.</description>
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpApLocal"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpSp_to_SccpScrc">
+ <containment>
+ <parent>
+ <hasClass name="SccpSp"/>
+ </parent>
+ <child>
+ <hasClass name="SccpScrc"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpEntitySet">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpEntitySet"/>
+ <cardinality>
+ <min>0</min> <max>2048</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpGlobalTitle">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpGlobalTitle"/>
+ <cardinality>
+ <min>0</min> <max>2048</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpApRemote">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpApRemote"/>
+ <cardinality>
+ <min>0</min> <max>200</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpPolicing">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpPolicing"/>
+ <cardinality>
+ <min>0</min> <max>1024</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpAccountingCriteria">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpAccountingCriteria"/>
+ <cardinality>
+ <min>0</min> <max>100</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Spm_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Spm"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TimingUnit_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="TimingUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm4_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etm4"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm1_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etm1"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc1_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etmc1"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc41_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etmc41"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TimingUnit2_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="TimingUnit2"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm3_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etm3"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Spu_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Spu"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Fan_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Fan"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>1</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm1_to_E1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm1"/>
+ </parent>
+ <child>
+ <hasClass name="E1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc1_to_E1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etmc1"/>
+ </parent>
+ <child>
+ <hasClass name="E1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="E1PhysPathTerm_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="E1PhysPathTerm"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>31</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm1_to_J1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm1"/>
+ </parent>
+ <child>
+ <hasClass name="J1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc1_to_J1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etmc1"/>
+ </parent>
+ <child>
+ <hasClass name="J1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="J1PhysPathTerm_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="J1PhysPathTerm"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="AtmPort_to_VplTp">
+ <containment>
+ <parent>
+ <hasClass name="AtmPort"/>
+ </parent>
+ <child>
+ <hasClass name="VplTp"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_Mtp3bAp">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bAp"/>
+ <cardinality>
+ <min>0</min> <max>510</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_Mtp3bAp">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bAp"/>
+ <cardinality>
+ <min>0</min> <max>510</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_Mtp3bAp">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bAp"/>
+ <cardinality>
+ <min>0</min> <max>510</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpTtc_to_Mtp3bAp">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpTtc"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bAp"/>
+ <cardinality>
+ <min>0</min> <max>510</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_Mtp3bSrs">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSrs"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpTtc_to_Mtp3bSrs">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpTtc"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSrs"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_Mtp3bSrs">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSrs"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSrs_to_Mtp3bSr">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSrs"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSr"/>
+ <cardinality>
+ <min>0</min> <max>5</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_Mtp3bSrs">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSrs"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etm1">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etm1"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Spu">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Spu"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_SwitchCoreUnit">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchCoreUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_GeneralProcessorUnit">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="GeneralProcessorUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etm4">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etm4"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_TimingUnit">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="TimingUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_SwitchExtensionUnit">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchExtensionUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etmc1">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etmc1"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etmc41">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etmc41"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etm3">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etm3"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_TimingUnit2">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="TimingUnit2"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Cbu">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Cbu"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_Mtp3bSls">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_Mtp3bSls">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpTtc_to_Mtp3bSls">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpTtc"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_Mtp3bSls">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_Mtp3bSls_0">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_Mtp3bSls_0">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_Mtp3bSls_0">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpTtc_to_Mtp3bSls_0">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpTtc"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSls_to_Mtp3bSlAnsi">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSls"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSlAnsi"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSls_to_Mtp3bSlItu">
+ <description>Multiplicity: 0..16</description>
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSls"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSlItu"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSls_to_Mtp3bSlTtc">
+ <description>Multiplicity: 0..16</description>
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSls"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSlTtc"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSls_to_Mtp3bSlChina">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSls"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSlChina"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_Ip">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="Ip"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_Ospf">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="Ospf"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_IpAccessAutoConfig">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="IpAccessAutoConfig"/>
+ <cardinality>
+ <min>0</min> <max>32</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_IpAccessHostMsb">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="IpAccessHostMsb"/>
+ <cardinality>
+ <min>0</min> <max>128</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_IpAccessHostGpb">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="IpAccessHostGpb"/>
+ <cardinality>
+ <min>0</min> <max>128</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ip_to_IpAtmLink">
+ <containment>
+ <parent>
+ <hasClass name="Ip"/>
+ </parent>
+ <child>
+ <hasClass name="IpAtmLink"/>
+ <cardinality>
+ <min>0</min> <max>500</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ip_to_EthernetLink">
+ <containment>
+ <parent>
+ <hasClass name="Ip"/>
+ </parent>
+ <child>
+ <hasClass name="EthernetLink"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ip_to_IpRoutingTable">
+ <containment>
+ <parent>
+ <hasClass name="Ip"/>
+ </parent>
+ <child>
+ <hasClass name="IpRoutingTable"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Aal2Sp_to_Aal2Ap">
+ <containment>
+ <parent>
+ <hasClass name="Aal2Sp"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2Ap"/>
+ <cardinality>
+ <min>0</min> <max>850</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Aal2Ap_to_Aal2PathDistributionUnit">
+ <containment>
+ <parent>
+ <hasClass name="Aal2Ap"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2PathDistributionUnit"/>
+ <cardinality>
+ <min>0</min> <max>26</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm1_to_T1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm1"/>
+ </parent>
+ <child>
+ <hasClass name="T1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TimingUnit_to_TuSyncRef">
+ <containment>
+ <parent>
+ <hasClass name="TimingUnit"/>
+ </parent>
+ <child>
+ <hasClass name="TuSyncRef"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TimingUnit2_to_TuSyncRef">
+ <containment>
+ <parent>
+ <hasClass name="TimingUnit2"/>
+ </parent>
+ <child>
+ <hasClass name="TuSyncRef"/>
+ <cardinality>
+ <min>0</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Spu_to_Spm">
+ <containment>
+ <parent>
+ <hasClass name="Spu"/>
+ </parent>
+ <child>
+ <hasClass name="Spm"/>
+ <cardinality>
+ <min>0</min> <max>5</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_ConfigurationVersion">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="ConfigurationVersion"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_UpgradePackage">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="UpgradePackage"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_Repertoire">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="Repertoire"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_PiuType">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="PiuType"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_SwAllocation">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="SwAllocation"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_ReliableProgramUniter">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="ReliableProgramUniter"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ospf_to_OspfInterface">
+ <containment>
+ <parent>
+ <hasClass name="Ospf"/>
+ </parent>
+ <child>
+ <hasClass name="OspfInterface"/>
+ <cardinality>
+ <min>0</min> <max>32</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ospf_to_OspfArea">
+ <containment>
+ <parent>
+ <hasClass name="Ospf"/>
+ </parent>
+ <child>
+ <hasClass name="OspfArea"/>
+ <cardinality>
+ <min>1</min> <max>4</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Cbu_to_GeneralProcessorUnit">
+ <containment>
+ <parent>
+ <hasClass name="Cbu"/>
+ </parent>
+ <child>
+ <hasClass name="GeneralProcessorUnit"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="GeneralProcessorUnit_to_MediumAccessUnit">
+ <containment>
+ <parent>
+ <hasClass name="GeneralProcessorUnit"/>
+ </parent>
+ <child>
+ <hasClass name="MediumAccessUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwitchFabric_to_SwitchModule">
+ <containment>
+ <parent>
+ <hasClass name="SwitchFabric"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchModule"/>
+ <cardinality>
+ <min>0</min> <max>32</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwitchFabric_to_InternalLinkGroup">
+ <containment>
+ <parent>
+ <hasClass name="SwitchFabric"/>
+ </parent>
+ <child>
+ <hasClass name="InternalLinkGroup"/>
+ <cardinality>
+ <min>0</min> <max>31</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="InternalLinkGroup_to_SwitchInternalLink">
+ <containment>
+ <parent>
+ <hasClass name="InternalLinkGroup"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchInternalLink"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm4_to_Os155SpiTtp">
+ <containment>
+ <parent>
+ <hasClass name="Etm4"/>
+ </parent>
+ <child>
+ <hasClass name="Os155SpiTtp"/>
+ <cardinality>
+ <min>0</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="VplTp_to_VpcTp">
+ <containment>
+ <parent>
+ <hasClass name="VplTp"/>
+ </parent>
+ <child>
+ <hasClass name="VpcTp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="E1Ttp_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="E1Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>31</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="T1PhysPathTerm_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="T1PhysPathTerm"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="T1Ttp_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="T1Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_M3uAssociation">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="M3uAssociation"/>
+ <cardinality>
+ <min>0</min> <max>512</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_M3uAssociation">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="M3uAssociation"/>
+ <cardinality>
+ <min>0</min> <max>512</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Vc12Ttp_to_E1Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Vc12Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="E1Ttp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Os155SpiTtp_to_Vc4Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Os155SpiTtp"/>
+ </parent>
+ <child>
+ <hasClass name="Vc4Ttp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Vc4Ttp_to_Vc12Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Vc4Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="Vc12Ttp"/>
+ <cardinality>
+ <min>0</min> <max>63</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc41_to_Os155SpiTtp">
+ <containment>
+ <parent>
+ <hasClass name="Etmc41"/>
+ </parent>
+ <child>
+ <hasClass name="Os155SpiTtp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Os155SpiTtp_to_Sts3CspeTtp">
+ <containment>
+ <parent>
+ <hasClass name="Os155SpiTtp"/>
+ </parent>
+ <child>
+ <hasClass name="Sts3CspeTtp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Os155SpiTtp_to_Sts1SpeTtp">
+ <containment>
+ <parent>
+ <hasClass name="Os155SpiTtp"/>
+ </parent>
+ <child>
+ <hasClass name="Sts1SpeTtp"/>
+ <cardinality>
+ <min>0</min> <max>3</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Cbu_to_Etmc1">
+ <containment>
+ <parent>
+ <hasClass name="Cbu"/>
+ </parent>
+ <child>
+ <hasClass name="Etmc1"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc1_to_T1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etmc1"/>
+ </parent>
+ <child>
+ <hasClass name="T1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_M3uAssociation">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="M3uAssociation"/>
+ <cardinality>
+ <min>0</min> <max>512</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ImaGroup_to_ImaLink">
+ <containment>
+ <parent>
+ <hasClass name="ImaGroup"/>
+ </parent>
+ <child>
+ <hasClass name="ImaLink"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SystemFunctions_to_WebServer">
+ <containment>
+ <parent>
+ <hasClass name="SystemFunctions"/>
+ </parent>
+ <child>
+ <hasClass name="WebServer"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Sts1SpeTtp_to_Vt15Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Sts1SpeTtp"/>
+ </parent>
+ <child>
+ <hasClass name="Vt15Ttp"/>
+ <cardinality>
+ <min>0</min> <max>28</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Vt15Ttp_to_T1Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Vt15Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="T1Ttp"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm3_to_E3PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm3"/>
+ </parent>
+ <child>
+ <hasClass name="E3PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm3_to_T3PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm3"/>
+ </parent>
+ <child>
+ <hasClass name="T3PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SystemFunctions_to_Licensing">
+ <containment>
+ <parent>
+ <hasClass name="SystemFunctions"/>
+ </parent>
+ <child>
+ <hasClass name="Licensing"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Cbu_to_TimingUnit2">
+ <containment>
+ <parent>
+ <hasClass name="Cbu"/>
+ </parent>
+ <child>
+ <hasClass name="TimingUnit2"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+</mim>
+
+</models>
+
diff --git a/lib/xmerl/test/xmerl_SUITE_data/eventp/CelloMOM.stub b/lib/xmerl/test/xmerl_SUITE_data/eventp/CelloMOM.stub
new file mode 100644
index 0000000000..754b1ecded
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/eventp/CelloMOM.stub
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+ Document no: 1551-1/CSX10109
+ Revision: MOM-CELLO_4.3.1
+ Date: 12-17-2003
+ Author: Ake Pappila/Hsiang-Ling Teng
+
+ Generated from UML by uml2xml version 3.0 (based on DTD file rev. F)
+ Rational Rose model used: /vobs/cello/cma/cma_uml/CelloMOM.mdl
+-->
+
+<!DOCTYPE models SYSTEM "mp.dtd">
+
diff --git a/lib/xmerl/test/xmerl_SUITE_data/eventp/CelloMOM.xml b/lib/xmerl/test/xmerl_SUITE_data/eventp/CelloMOM.xml
new file mode 100644
index 0000000000..8f8cf54505
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/eventp/CelloMOM.xml
@@ -0,0 +1,30261 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+ Document no: 1551-1/CSX10109
+ Revision: MOM-CELLO_4.3.1
+ Date: 12-17-2003
+ Author: Ake Pappila/Hsiang-Ling Teng
+
+ Generated from UML by uml2xml version 3.0 (based on DTD file rev. F)
+ Rational Rose model used: /vobs/cello/cma/cma_uml/CelloMOM.mdl
+-->
+
+<!DOCTYPE models SYSTEM "mp.dtd">
+
+<models>
+<mim name="MOM-CELLO_4.3.1-1" version="5" release="1">
+ <exception name="AttributeMissingException">
+ <description>Exception thrown when an attribute is missing during upgrade.</description>
+ </exception>
+
+ <exception name="EnableExistingProgramException">
+ <description>Exception thrown when enabling of existing programs fails.</description>
+ </exception>
+
+ <exception name="ExtraIdentifiersOfNonExistingLoadModulesException">
+ </exception>
+
+ <exception name="FileCopyException">
+ <description>Exception thrown when copying of files fails.</description>
+ </exception>
+
+ <exception name="FileNotExistException">
+ <description>Exception thrown when the specified file does not exist.</description>
+ </exception>
+
+ <exception name="FindAndReplaceException">
+ </exception>
+
+ <exception name="HeapPoolSettingsException">
+ <description>Exception thrown when the heap or pool setting is incorrect.</description>
+ </exception>
+
+ <exception name="AttributeValueOutOfRangeException">
+ <description>Exception thrown when an attribute value is out of range.</description>
+ </exception>
+
+ <exception name="CancelInstallRequestException">
+ <description>Exception thrown when a cancel install equest for some reason fails.</description>
+ </exception>
+
+ <exception name="ChecksumhandlerException">
+ <description>Exception thrown when the control of checksum for loadmodules has been rejaected due to 'null' recieved from resource layer.</description>
+ </exception>
+
+ <exception name="ClearAllPiuTypesReferencedByPlugInUnitException">
+ <description>Exception thrown when its not possible to clear all PiuTypes referenced by PlugInUnit.</description>
+ </exception>
+
+ <exception name="ConditionallyMandatoryAttributeOrElementMissingException">
+ <description>Exception thrown when an conditional mandatory attribute (or element) is missing.</description>
+ </exception>
+
+ <exception name="ConfigurationVersionMO_HandlerException">
+ <description>Exception thrown when the creation of a CV during upgrade fails.</description>
+ </exception>
+
+ <exception name="ControlFileDocumentHandlerException">
+ </exception>
+
+ <exception name="CreateLoadModuleException">
+ <description>Exception thrown when the creation of a load module fails.</description>
+ </exception>
+
+ <exception name="DisableExistingProgramsException">
+ <description>Exception thrown when disabling of existing programs for some reason fails.</description>
+ </exception>
+
+ <exception name="DocumentObjectProxyException">
+ </exception>
+
+ <exception name="ExplicitReplacementInInformationForRPUsException">
+ <description>Exception thrown when replacement of existing RPU information fails.</description>
+ </exception>
+
+ <exception name="InstallOfLoadModulesCancelledException">
+ <description>Exception thrown when the installation of Load Modules is cancelled.</description>
+ </exception>
+
+ <exception name="InstallOfLoadModulesPartlyExcecutedException">
+ <description>Exception thrown when the installment of Load Modules is only partly executed.</description>
+ </exception>
+
+ <exception name="InstallOfLoadModulesRejectedException">
+ <description>Exception thrown when the install of Load Modules is rejected.</description>
+ </exception>
+
+ <exception name="InstallRejectedFTP_ServerNotAccessibleException">
+ <description>Exception thrown when the install is rejected due to FTP server is not accessible.</description>
+ </exception>
+
+ <exception name="InstallRejectedGetLoadModuleFileException">
+ <description>Exception thrown when the install is rejected due to error when trying to retreive Load Module.</description>
+ </exception>
+
+ <exception name="InstallRejectedIP_AddressException">
+ <description>Exception thrown when install is rejected due to erronous IP address.</description>
+ </exception>
+
+ <exception name="InstallRejectedInsufficientDiskSpaceException">
+ <description>Exception thrown when the install is rejected due to insufficient disk space.</description>
+ </exception>
+
+ <exception name="InstallRejectedLoadListFileException">
+ </exception>
+
+ <exception name="InstallRequestException">
+ <description>Exception thrown when the installation of a Load Module fails.</description>
+ </exception>
+
+ <exception name="InsufficientDiskSpaceException">
+ <description>Exception thrown when the disk space is insufficient.</description>
+ </exception>
+
+ <exception name="JvmMO_HandlerException">
+ </exception>
+
+ <exception name="LoadModuleFIlePathLengthOutOfRangeException">
+ <description>Exception thrown when file path for the Load Module is out of length.</description>
+ </exception>
+
+ <exception name="LoadModuleMO_HandlerException">
+ </exception>
+
+ <exception name="ManagedElementDataMO_HandlerException">
+ </exception>
+
+ <exception name="MandatoryElementIsMissingException">
+ </exception>
+
+ <exception name="MergeControlFileException">
+ <description>Exception thrown when the merger of control files fails.</description>
+ </exception>
+
+ <exception name="PIU_MO_HandlerException">
+ </exception>
+
+ <exception name="ParseException">
+ </exception>
+
+ <exception name="ParserFactoryException">
+ </exception>
+
+ <exception name="PiuTypeDefinitionMissingInUpgradeControlFileException">
+ <description>Exception thrown when PiuType definitions is missing in the UCF file.</description>
+ </exception>
+
+ <exception name="PiuTypeMO_HandlerException">
+ </exception>
+
+ <exception name="ProductNumberAndRevisionAlreadyInUseException">
+ <description>Exception thrown when the product number and revision is already used.</description>
+ </exception>
+
+ <exception name="ProgramConfigurationException">
+ </exception>
+
+ <exception name="ReconfigureProgramsException">
+ <description>Exception thrown when reconfiguration of programs fails.</description>
+ </exception>
+
+ <exception name="ReferencedElementMissingException">
+ <description>Exception thrown when the referenced element is missing.</description>
+ </exception>
+
+ <exception name="RepertoireMO_HandlerException">
+ </exception>
+
+ <exception name="ReplaceConfigSupportMOsOpException">
+ </exception>
+
+ <exception name="ReserveLoadModulesException">
+ <description>Exception thrown when reserving a Load Module fails.</description>
+ </exception>
+
+ <exception name="SelectiveInstallFailureException">
+ <description>Exception thrown when a selective install fails.</description>
+ </exception>
+
+ <exception name="SlotMO_HandlerException">
+ </exception>
+
+ <exception name="SwAllocationMO_HandlerException">
+ </exception>
+
+ <exception name="UnexpectedAttributeException">
+ <description>Exception thrown when an unexpected attribute occurs at upgrade.</description>
+ </exception>
+
+ <exception name="UnexpectedAttributeFormatException">
+ <description>Exception thrown when an unexpected format of the attribute occurs.</description>
+ </exception>
+
+ <exception name="UnexpectedElementException">
+ <description>Exception thrown when </description>
+ </exception>
+
+ <exception name="UpgradeControlFileDataException">
+ </exception>
+
+ <exception name="UpgradeControlFileNotFoundException">
+ </exception>
+
+ <exception name="UpgradeControlFileParserException">
+ </exception>
+
+ <exception name="UpgradePackageDeleteException">
+ <description>Exception thrown when its not possible to delete the upgrade package.</description>
+ </exception>
+
+ <exception name="UpgradePackageDeleteNotAllowedException">
+ <description>Exception thrown when its not allowed to delete the upgrade package.</description>
+ </exception>
+
+ <exception name="UpgradePackageDoesNotExistException">
+ <description>Exception thrown when the specified upgrade package does not exist.</description>
+ </exception>
+
+ <exception name="UpgradePackageFileSystemErrorException">
+ <description>Exception thrown when an error in the file system occurs.</description>
+ </exception>
+
+ <exception name="UpgradeRejectedException">
+ <description>Exception thrown when the upgrade is rejected.</description>
+ </exception>
+
+ <exception name="ValidateException">
+ </exception>
+
+ <exception name="VerifyChecksumException">
+ <description>Exception thrown when the checksum is incorrect.</description>
+ </exception>
+
+ <exception name="VerifyCreationOfCVsException">
+ <description>Exception thrown when its not possible to verify the creation of CV's.</description>
+ </exception>
+
+ <exception name="VerifyOperationalPIUsException">
+ </exception>
+
+ <exception name="VerifyRejectedException">
+ </exception>
+
+ <exception name="VerifyRequestException">
+ </exception>
+
+ <exception name="VerifySupportedPIUsException">
+ </exception>
+
+ <exception name="VerifyUpgradeHandlerException">
+ </exception>
+
+ <exception name="VerifyUpgradeWindowException">
+ </exception>
+
+ <exception name="UpgradeLogFileNotAccessibleException">
+ <description>The upgrade trace log file is not accessible i.e. the log file exists but it is not possible to access it with write permission.</description>
+ </exception>
+
+ <exception name="UpgradeControlFileException">
+ <description>The file parser has found that the UpgradeControlFile is incorrect.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="UpgradeNotPossibleException">
+ <description>Before an upgrade is started it was found that the upgrade can not take place. A possible reason is that the upgrade package that is running in the node is not in the upgrade window of this upgrade package. </description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="UpgradeLogFileNotInUseException">
+ <description>The upgrade trace output is currently not directed to a file.
+
+This is a property that can be changed in the trace property file (Trace_01.prop).
+</description>
+ </exception>
+
+ <enum name="UpgradePackageState">
+ <enumMember name="NOT_INSTALLED">
+ <description>The upgrade package is not installed.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="INSTALL_COMPLETED">
+ <description>The upgrade package is completely installed.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="UPGRADE_EXECUTING">
+ <description>Upgrade is executing. </description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="AWAITING_CONFIRMATION">
+ <description>The execution of upgrade needs confirmation before it proceeds.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="ONLY_DELETEABLE">
+ <description>In this state an Upgrade Package can only be deleted. Its actions, when invoked, will throw the exception ActionNotAllowed. </description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="INSTALL_EXECUTING">
+ <description>Installation of the upgrade package is executing.</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="INSTALL_NOT_COMPLETED">
+ <description>The upgrade package is not completely installed i.e. parts of it has been installed. </description>
+ <value>6</value>
+ </enumMember>
+ <enumMember name="UPGRADE_COMPLETED">
+ <description>The upgrade has been successfully executed.</description>
+ <value>7</value>
+ </enumMember>
+ </enum>
+
+ <enum name="UpgradeProgressInformation">
+ <enumMember name="IDLE">
+ <description>No action is in progress. </description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="DOWNLOADING_FILES">
+ <description>Downloading of files (load modules) in progress.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SAVING_CV">
+ <description>Saving a Configuration Version.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="RECONFIGURING_MOS">
+ <description>Operation ReplaceConfigSupportMOs detected in upgrade.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="INITIATING_LOADER_INFO">
+ <description>Trigger Initiate detected in upgrade sequence.</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="PRELOADING">
+ <description>Trigger Preload detected in upgrade sequence.</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="CONVERSION_OF_PERSISTENT_DATA">
+ <value>6</value>
+ </enumMember>
+ <enumMember name="APPLICATION_SPECIFIC_ACTION">
+ <description>'Unique trigger' for an application detected in upgrade sequence.</description>
+ <value>7</value>
+ </enumMember>
+ <enumMember name="SHUTDOWN_WAIT">
+ <value>8</value>
+ </enumMember>
+ <enumMember name="TAKING_NEW_SOFTWARE_INTO_SERVICE">
+ <value>9</value>
+ </enumMember>
+ <enumMember name="FINISH_AND_CLEANING_UP">
+ <description>The error handling is switched back to normal.</description>
+ <value>10</value>
+ </enumMember>
+ <enumMember name="RESTORING_SYSTEM_STATE">
+ <value>11</value>
+ </enumMember>
+ <enumMember name="EXECUTION_FAILED">
+ <description>Indicates that the execution of an install or an upgrade action has failed.</description>
+ <value>12</value>
+ </enumMember>
+ <enumMember name="CANCEL_OF_INSTALLATION_IS_EXECUTING">
+ <description>Indicates that cancellation of an ongoing installation is in progress.</description>
+ <value>13</value>
+ </enumMember>
+ <enumMember name="CANCEL_OF_INSTALLATION_FAILED">
+ <description>Indicates that the execution of a cancel install action failed.</description>
+ <value>14</value>
+ </enumMember>
+ <enumMember name="VERIFICATION_INITIATED">
+ <value>15</value>
+ </enumMember>
+ <enumMember name="VERIFYING_UPGRADE_FROM_VERSION">
+ <value>16</value>
+ </enumMember>
+ <enumMember name="VERIFYING_POSSIBLE_TO_CREATE_REQ_NO_CVS">
+ <value>17</value>
+ </enumMember>
+ <enumMember name="VERIFYING_PIUS_SUPPORTED">
+ <value>18</value>
+ </enumMember>
+ <enumMember name="VERIFYING_CHECKSUM_FOR_LM">
+ <value>19</value>
+ </enumMember>
+ <enumMember name="VERIFYING_PIUS_NOT_FAULTY">
+ <value>20</value>
+ </enumMember>
+ <enumMember name="VERIFICATION_FINISHED">
+ <value>21</value>
+ </enumMember>
+ <enumMember name="VERIFICATION_FAILED">
+ <value>22</value>
+ </enumMember>
+ </enum>
+
+ <enum name="InvokedAction">
+ <enumMember name="VERIFY_UPGRADE">
+ <description>The verifyUpgrade action has been invoked.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="UPGRADE">
+ <description>An upgrade action (one of the variants) has been invoked.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="INSTALL">
+ <description>An install action (one of the variants) has been invoked.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="CANCEL_INSTALL">
+ <description>The cancelInstall action has been invoked.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <struct name="ActionResultData">
+ <structMember name="time">
+ <description>A timestamp.
+
+Format: "Date: 2003-04-24, Time: 20:52:11.182"</description>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ <structMember name="typeOfInvokedAction">
+ <enumRef name="InvokedAction">
+ <defaultValue>VERIFY_UPGRADE</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="info">
+ <enumRef name="Information">
+ <defaultValue>EXECUTED</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="actionId">
+ <description>This id is used to link more than one result to one action</description>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="additionalInfo">
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ </struct>
+
+ <enum name="Information">
+ <enumMember name="EXECUTED">
+ <description>The invoked action has been successfully executed without warnings.One of three possible main results of executed action.
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="UNSPECIFIED">
+ <description>A not specified error/ warning has been detected (see additional info for further details)
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="LM_CHECKSUM_VER_FAILED">
+ <description>A load module checksum verification has failed.
+
+Value valid for type of invoked action:
+INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="NOT_ENOUGH_AVAIL_DISK_SPACE">
+ <description> There is not enough available disk space for the required number of new CVs (configuration versions) to be created automatically during an upgrade.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="MAX_NO_CV_WILL_BE_EXCEEDED">
+ <description>The maximum number of allowed CVs (configuration versions) will be exceeded if the required number of new CVs is created automatically during an upgrade.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="UPGRADE_FROM_CURRENT_UP_NOT_ALLOWED">
+ <description>The Upgrade Window element in the Upgrade Control File does not specify the current Upgrade Package as a valid 'upgrade from' version.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="NON_SUPPORTED_PIU">
+ <description>A non supported Plug In Unit (PIU) has been detected i.e. the PIU in the node is not defined in the Upgrade Control File.
+This is not a fault that prevents an upgrade from being executed.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>6</value>
+ </enumMember>
+ <enumMember name="FAULTY_PIU">
+ <description>A faulty Plug In Unit (PIU) has been detected.
+This is not a fault that prevents an upgrade from being executed.
+
+Value valid for type of invoked action:
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>7</value>
+ </enumMember>
+ <enumMember name="CREATION_OF_CV_FAILED">
+ <description>The auto-creation of an install CV failed.
+
+Value valid for type of invoked action:
+INSTALL
+</description>
+ <value>8</value>
+ </enumMember>
+ <enumMember name="ACTION_NOT_ALLOWED">
+ <description>The requested action is not allowed due to an other action already is in progress for an other UP MO.
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>9</value>
+ </enumMember>
+ <enumMember name="INSTALLATION_MANUALLY_CANCELLED">
+ <description>An ongoing installation has been cancelled (aborted) due to request from client.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>10</value>
+ </enumMember>
+ <enumMember name="FTP_SERVER_NOT_ACCESSIBLE">
+ <description>The FTP server to be used for downloads of load modules is not accessible.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>11</value>
+ </enumMember>
+ <enumMember name="INSUFFICIENT_DISK_SPACE_FOR_LOAD_MODULES">
+ <description>The required disk space for load modules to be installed is insufficient.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>12</value>
+ </enumMember>
+ <enumMember name="FTP_SERVER_IP_ADDRESS_ERROR">
+ <description>Error detected in the IP address of the FTP server.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>13</value>
+ </enumMember>
+ <enumMember name="DELTA_INSTALL_MERGE_ERROR">
+ <description>The install of the delta Upgrade Control File (UCF) failed i.e. the analysis of the delta UCF together with current active UP's UCF failed.
+
+Value valid for type of invoked action:
+INSTALL</description>
+ <value>14</value>
+ </enumMember>
+ <enumMember name="SELECTIVE_INSTALL_ERROR">
+ <description>Error detected during the selection phase of an install.
+
+Value valid for type of invoked action:
+INSTALL
+
+</description>
+ <value>15</value>
+ </enumMember>
+ <enumMember name="EXECUTION_FAILED">
+ <description>The execution of invoked action failed.One of three possible main results of executed action.
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE
+UPGRADE</description>
+ <value>16</value>
+ </enumMember>
+ <enumMember name="EXECUTED_WITH_WARNINGS">
+ <description>The action has been successfully executed but with warnings.One of three possible main results of executed action.
+
+Value valid for type of invoked action:
+INSTALL
+CANCEL_INSTALL
+VERIFY_UPGRADE</description>
+ <value>17</value>
+ </enumMember>
+ </enum>
+
+ <exception name="FtpServerNotAccessibleException">
+ <description>Ftp server is not accessible. This may depend on erroneous IP address, username, password, or that the IP communication with the Ftp server is down, or that the Ftp server itself is malfunctioning. </description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="GetFileException">
+ <description>An error was encountered during FTP get file. A filePath in the upgradeControlFile may be inconsistent with a filepath on the Ftp server. </description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <struct name="PiuTypeProgramConfiguration">
+ <structMember name="tag">
+ <description>The tag is used as a reference between the PiuType MO and the Repertoire MO to find out how to create the program object under a PlugInUnit MO.</description>
+ <string/>
+ </structMember>
+ <structMember name="subParentLDN">
+ <description>Local distinguished name of the program parent from the PlugInUnit.
+
+Example:
+1. "Spu=1,Spm=2" (the program is to be created under: ...PlugInUnit=2,Spu=1,Spm=2")
+2. "" (empty string - the program is to be created directly under the PlugInUnit)</description>
+ <string/>
+ </structMember>
+ <structMember name="programMoTypeName">
+ <description>The name of the Program MO that will be created.</description>
+ <string/>
+ </structMember>
+ <structMember name="loadableProcessorName">
+ <description>The loadableProcessorName is a user friendly name of the processor.</description>
+ <string/>
+ </structMember>
+ </struct>
+
+ <struct name="RepertoireLoadModuleData">
+ <description>This structure contains load module data that belongs to a piu type.
+</description>
+ <structMember name="loadModuleDN">
+ <description>The distinguished name of the load module, which is needed and sufficient to convert the load module to a real object reference.</description>
+ <string/>
+ </structMember>
+ <structMember name="tag">
+ <description>The tag is used as a reference between the PiuType MO and the Repertoire MO to find out how to create the program object under a PlugInUnit MO.</description>
+ <string/>
+ </structMember>
+ </struct>
+
+ <struct name="ConfigurationVersionAttributes">
+ <structMember name="name">
+ <string>
+ </string>
+ </structMember>
+ <structMember name="identity">
+ <string>
+ </string>
+ </structMember>
+ <structMember name="type">
+ <string/>
+ </structMember>
+ <structMember name="upgradePackageId">
+ <string/>
+ </structMember>
+ <structMember name="operatorName">
+ <string>
+ </string>
+ </structMember>
+ <structMember name="operatorComment">
+ <string>
+ </string>
+ </structMember>
+ <structMember name="date">
+ <string/>
+ </structMember>
+ <structMember name="status">
+ <string/>
+ </structMember>
+ </struct>
+
+ <enum name="ConfigurationVersionType">
+ <enumMember name="standard">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="upgrade">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="minimal">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="test">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="autocreate">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="other">
+ <value>5</value>
+ </enumMember>
+ </enum>
+
+ <enum name="LoadModuleLoaderType">
+ <enumMember name="OseLoader">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SpmLoader">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="Jvm">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="WebServer">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="Other">
+ <value>99</value>
+ </enumMember>
+ <enumMember name="SpmFpgaLoader">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="XpLoader">
+ <value>5</value>
+ </enumMember>
+ </enum>
+
+ <enum name="LoadModulePreLoadType">
+ <enumMember name="no">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="must">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="wish">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RPUSwitchOverMode">
+ <description>This attribute can have the following values:
+
+AtPiuFault = Indicates the MP (where the normal RPU is configured) is faulty (HW error). This is the default value.
+
+AtPiuRestart = Indicates the MP (where the normal RPU is configured) is restarted.</description>
+ <enumMember name="AtPiuFault">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="AtPiuRestart">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RPUNormalisationMode">
+ <description>This enumeration can have the following values:
+
+Manual = Indicates that no normalisation is performed by cello until the operator issues a "switch" action.
+
+Automatic = Indicates that Cello performs the normalisation automatically, after the failed RPU is available again. This is the default value.</description>
+ <enumMember name="Manual">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="Automatic">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RPUReplicationMode">
+ <description>This enumaration contains the following values:
+
+Always = Data replication is always performed. This overrides the characteristics set on the each container ( that is associated with the RPU ).
+
+Never = Data replication is never performed. This overrides the characteristics set on the each container ( that is associated with the RPU ).
+
+AtShutdown = Each time the RSH (which handles the RPU) is shut down, a complete snapshot is taken and replicated to the other MP, if necessary. Otherwise, the replication is performed according to the characteristics set on each container ( that is associated with the RPU ).
+
+ApplControlled = The data replication is made according to the characteristics set on each container ( that is associated with the RPU ). This is the default value.</description>
+ <enumMember name="Always">
+ <description>Always = Data replication is always performed. This overrides the characteristics set on the each container ( that is associated with the RPU ).</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="Never">
+ <description>Data replication is never performed. This overrides the characteristics set on the each container ( that is associated with the RPU ).</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="AtShutdown">
+ <description>AtShutdown = Each time the RSH (which handles the RPU) is shut down, a complete snapshot is taken and replicated to the other MP, if necessary. Otherwise, the replication is performed according to the characteristics set on each container ( that is associated with the RPU ).</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="ApplControlled">
+ <description>ApplControlled = The data replication is made according to the characteristics set on each container ( that is associated with the RPU ). This is the default value.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RPUOperationalMode">
+ <description>This enumeration contains the following values:
+
+AsConfigured = The RSHs runs as the RPU is configured.
+SwitchOver = The RSHs has been switched over.
+Unavailable = No RSHs, that uses this RPU, are running.</description>
+ <enumMember name="AsConfigured">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SwitchedOver">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="Unavailable">
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <struct name="PiuTypeMOConfiguration">
+ <structMember name="subParentLDN">
+ <string/>
+ </structMember>
+ <structMember name="moTypeName">
+ <string/>
+ </structMember>
+ <structMember name="identity">
+ <string/>
+ </structMember>
+ </struct>
+
+ <struct name="AirFlowData">
+ <description>Control value for the fan unit. Needed by cooling function.
+</description>
+ <structMember name="normalLowTempAirFlow">
+ <description>Control value for the fan unit running in normal autonomous mode.
+This parameter is the subrack/fanunit airflow value that is required to achieve sufficient cooling at 20 degree
+centigrade or lower ambient temperature of the most demanding plug in unit (PIU) in the subrack. This airflow value
+shall be sufficient (but not unnecessarily large) to secure that no "normal overtemp" fault indication is issued.
+Default values = 250 m3/h. (value &gt;=0)
+</description>
+ <float>
+ <defaultValue>250</defaultValue>
+ </float>
+ </structMember>
+ <structMember name="normalHighTempAirFlow">
+ <description>Control value for the fan unit running in normal autonomous mode. This parameter is the subrack/fanunit airflow
+value that is required to achieve sufficient cooling at 50 degree centigrade ambient temperature of the most
+demanding plug in unit (PIU) in the subrack. This airflow value shall be sufficient (but not unnecessarily large) to
+secure that no "normal overtemp" fault indication is issued.
+Default values = 400 m3/h. (value &gt;=0)</description>
+ <float>
+ <defaultValue>400</defaultValue>
+ </float>
+ </structMember>
+ <structMember name="noiseReducedLowTempAirFlow">
+ <description>Control value for the fan unit running in noise reduction mode. This parameter is the subrack/fanunit airflow value
+that is required to achieve sufficient cooling at 20 degree centigrade or lower ambient temperature of the most
+demanding plug in unit (PIU) in the subrack. This airflow value shall be sufficient (but not unnecessarily large) to
+secure that no "exceptional overtemp" fault indication is issued
+Default values = 250 m3/h. (value &gt;=0)</description>
+ <float>
+ <defaultValue>250</defaultValue>
+ </float>
+ </structMember>
+ <structMember name="noiseReducedHighTempAirFlow">
+ <description>Control value for the fan unit running in noise reduction mode. This parameter is the subrack/fanunit airflow value
+that is required to achieve sufficient cooling at 50 degree centigrade ambient temperature of the most demanding
+plug in unit (PIU) in the subrack. This airflow value shall be sufficient (but not unnecessarily large) to secure
+that no "exceptional overtemp" fault indication is issued.
+Default values = 400 m3/h. (value &gt;=0)</description>
+ <float>
+ <defaultValue>400</defaultValue>
+ </float>
+ </structMember>
+ </struct>
+
+ <exception name="IpAddressException">
+ <description>Erroneous Ip Address Format</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="AueFailureException">
+ <description>An application upgrade engine has reported a failure. </description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="ActionNotAllowedException">
+ <description>The action is not allowed, the UpgradePackage MO is in wrong state.
+
+For example if you try 'upgrade()' before an 'install()' or 'forcedInstall()' has been done.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVFileSystemErrorException">
+ <description>Exception thrown upon file system Error.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVDBErrorException">
+ <description>Data Base Error Exception (error when creating database backup).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVLLPErrorException">
+ <description>LLP Error Exception (error when creating ARMAMENT and LLP.LMID files).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVAlreadyExistsException">
+ <description>The configuration version already exists (e.g. message at create).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVDoesNotExistsException">
+ <description>The configuration version does not exist (e.g. message at setCVAsStartable).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVDeleteNotAllowedException">
+ <description>It is not allowed to delete the configuration version, because it is in use (used as startable or in rollback list).</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVInvalidCVException">
+ <description>The configuration version is not valid (due to missing files).
+
+</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVFormatErrorException">
+ <description>Format Error in given configuration version name.
+
+The following characters are allowed within the name:
+[0-9], [A-Z], [a-z] and '&amp;','%',':','.','_', '-'
+
+Note! For comment and operatorName spaces (' ') are also allowed within the strings.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="CVErrorException">
+ <description>Error Exception.</description>
+ <exceptionParameter name="message">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="InstallException">
+ <description>Indicates that an error in an installation has occurred.</description>
+ <exceptionParameter name="install">
+ <description>The message of the exception.</description>
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="LogActivationException">
+ <description>Exception thrown when a database error occurs.</description>
+ </exception>
+
+ <exception name="InvalidDriveNameException">
+ <description>Exception thrown when an invalid drive name is specified or when a data base error occurs.</description>
+ </exception>
+
+ <exception name="VerifyUpgradeException">
+ </exception>
+
+ <exception name="CVActivityLogFilePathErrorException">
+ <description>Exception thrown when the log file path is wrong.</description>
+ </exception>
+
+ <exception name="CV_MaxNumberOfInstancesException">
+ <description>Exception thrown when max number of CV's in the system has been reached.</description>
+ </exception>
+
+ <exception name="Aal2PathIdNotUniqueException">
+ <exceptionParameter name="message">
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="PathAlreadyRegisteredException">
+ <exceptionParameter name="message">
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="NotInGroupException">
+ </exception>
+
+ <exception name="InvalidReferenceException">
+ </exception>
+
+ <exception name="InvalidPriorityException">
+ <description>Indicates an invalid priority level, i.e. the priority in question is out of the defined range.</description>
+ <exceptionParameter name="invalidPriority">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <struct name="QoSProfileClassA">
+ <description>This struct contains the values applicable for QoS Class A.</description>
+ <structMember name="boundOnProbOfDelay">
+ <description>Represents the upper bound on the probability that the delay in the node exceeds the delay limit given by the attribute "boundOnNodeDelay".
+
+Unit is 1/1000000000.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>500000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnProbOfLoss">
+ <description>Represents the upper bound of the cell loss probability in the current node.
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>500000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnNodeDelay">
+ <description>The upper bound on the delay (delay=queueing and serving of Aal2 packets in an Aal2 mux + delay on ATM layer) through the current node.
+Unit is micro seconds.</description>
+ <long>
+ <range>
+ <min>0</min> <max>10000</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="QoSProfileClassB">
+ <description>This struct contains the values applicable for QoS Class B.</description>
+ <structMember name="boundOnProbOfDelay">
+ <description>Represents the upper bound on the probability that the delay in the node exceeds the delay limit given by the attribute "boundOnNodeDelay".
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>500000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnProbOfLoss">
+ <description>Represents the upper bound of the cell loss probability in the current node.
+
+Unit is 1/1000000000.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>500000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnNodeDelay">
+ <description>The upper bound on the delay (delay=queueing and serving of Aal2 packets in an Aal2 mux + delay on ATM layer) through the current node.
+Unit is micro seconds.</description>
+ <long>
+ <range>
+ <min>0</min> <max>20000</max>
+ </range>
+ <defaultValue>15000</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="QoSProfileClassC">
+ <description>This struct contains the values applicable for QoS Class C.
+
+NOTE: The attribute 'boundONodeDelay' is not applicable for QoS Class C so setting of this attribute will have no effect.</description>
+ <structMember name="boundOnProbOfDelay">
+ <description>Represents the upper bound on the probability that the delay in the node exceeds the delay limit given by the attribute "boundOnNodeDelay".
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>1000000000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnProbOfLoss">
+ <description>Represents the upper bound of the cell loss probability in the current node.
+
+Unit is 1/1000000000.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>1000000000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnNodeDelay">
+ <description>The upper bound on the delay (delay=queueing and serving of Aal2 packets in an Aal2 mux + delay on ATM layer) through the current node.
+Unit is micro seconds.</description>
+ <long>
+ <defaultValue>25000</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="QoSProfileClassD">
+ <description>This struct contains the values applicable for QoS Class D.
+
+NOTE: The attribute 'boundONodeDelay' is not applicable for QoS Class D so setting of this attribute will have no effect.</description>
+ <structMember name="boundOnProbOfDelay">
+ <description>Represents the upper bound on the probability that the delay in the node exceeds the delay limit given by the attribute "boundOnNodeDelay".
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>1</min> <max>1000000000</max>
+ </range>
+ <defaultValue>1000000000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnProbOfLoss">
+ <description>Represents the upper bound of the cell loss probability in the current node.
+
+Unit is 1/1000000000.</description>
+ <long>
+ <range>
+ <min>0</min> <max>1000000000</max>
+ </range>
+ <defaultValue>1000000000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="boundOnNodeDelay">
+ <description>The upper bound on the delay (delay=queueing and serving of Aal2 packets in an Aal2 mux + delay on ATM layer) through the current node.
+Unit is micro seconds.</description>
+ <long>
+ <defaultValue>50000</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="SupportedQoSClasses">
+ <enumMember name="NO_CLASS_SUPPORTED">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="CLASS_A">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="CLASS_B">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="CLASS_A_B">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="CLASS_C">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="CLASS_A_C">
+ <value>5</value>
+ </enumMember>
+ <enumMember name="CLASS_B_C">
+ <value>6</value>
+ </enumMember>
+ <enumMember name="CLASS_A_B_C">
+ <value>7</value>
+ </enumMember>
+ <enumMember name="CLASS_D">
+ <value>8</value>
+ </enumMember>
+ <enumMember name="CLASS_A_D">
+ <value>9</value>
+ </enumMember>
+ <enumMember name="CLASS_B_D">
+ <value>10</value>
+ </enumMember>
+ <enumMember name="CLASS_A_B_D">
+ <value>11</value>
+ </enumMember>
+ <enumMember name="CLASS_C_D">
+ <value>12</value>
+ </enumMember>
+ <enumMember name="CLASS_A_C_D">
+ <value>13</value>
+ </enumMember>
+ <enumMember name="CLASS_B_C_D">
+ <value>14</value>
+ </enumMember>
+ <enumMember name="CLASS_A_B_C_D">
+ <value>15</value>
+ </enumMember>
+ </enum>
+
+ <exception name="IsReservedCanNotSetPathIdException">
+ <description>Exception thrown when an attempt is made to set or change the aal2PathId of an Aal2PathVccTp while its reserved by an other Aal2PathGrp</description>
+ </exception>
+
+ <exception name="IsUnlockedCanNotSetPathOwnerException">
+ <description>Exception thrown when an attempt is made to set or change the aal2PathOwner of an Aal2PathVccTp while its not LOCKED.</description>
+ </exception>
+
+ <enum name="SlotState">
+ <description>
+</description>
+ <enumMember name="free">
+ <description>It is free to be pre-configured with a new PlugInUnit. </description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="used">
+ <description>A PlugInUnit is inserted in the slot or the slot is pre-configured with a PlugInUnit.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="coveredByPiu">
+ <description>Currently not supported.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <struct name="AdminProductData">
+ <structMember name="productNumber">
+ <description>The product number of the product or document.
+
+Examples: ABC 101 001, CXC 123 456, 1/BFD 101 999
+
+In the case of UpgradePackage this is the document number of the upgrade package.</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>24</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="productRevision">
+ <description>The revision of the product number.
+
+Examples: R1, r1a, R1A02, P7B</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>7</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="productName">
+ <description>A user-friendly name of the product.</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>12</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ <structMember name="productInfo">
+ <description>User-friendly information about the product.</description>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ <structMember name="productionDate">
+ <description>The production date can be represented in two ways.
+
+1) The preferable syntax is a four-digit representation of the year, and a two-digit representation of the month and a two-digit representation of the day. The numbers of characters in this case, is eight.
+Example:
+19991231
+
+2) The date can also consist of two digits for the year, followed by the letter W for week and two digits for the number of week. The numbers of characters in this case, is five.
+Example:
+99W12
+</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>8</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </structMember>
+ </struct>
+
+ <struct name="OperProductData">
+ <structMember name="productName">
+ <description>A user-friendly name of the product.
+
+
+
+</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>12</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="productNumber">
+ <description>Unique identity for each product, which is constituted by the Ericsson product number (ABC number).
+
+The maximum number of characters for a product number is 24 including 2 slashes, 2 spaces and 2 characters for origination notation.
+
+Example of product number:
+ABC 101 001
+(1/ABC 101 01/1234)
+123/ABCDE 101 1010/12345
+
+.</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>24</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="productRevision">
+ <description>Indicates the revision state of the product. It consists of a letter R or P, one or two digits and/or one or two letters. The maximum number of characters is four inclusive R or P.
+Example: R1A, R1A02, P7B
+
+A suffix may be added to the revision state. The suffix may consists of one or two digits or one letter.
+
+
+</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>7</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="serialNumber">
+ <description>The serial number consists of 13 alphanumerical characters grouped as 6 plus 7 characters. The first 6 characters are to be used for factory codes and the last 7 characters are used for an individual number or batch number.
+
+</description>
+ <string/>
+ </structMember>
+ <structMember name="productionDate">
+ <description>The production date can be represented in two ways.
+
+1) The preferable syntax is a four-digit representation of the year, and a two-digit representation of the month and a two-digit representation of the day. The numbers of characters in this case, is eight.
+Example:
+19991231
+
+2) The date can also consist of two digits for the year, followed by the letter W for week and two digits for the number of week. The numbers of characters in this case, is five.
+Example:
+99W12
+
+</description>
+ <string>
+ <lengthRange>
+ <min>5</min> <max>8</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ </struct>
+
+ <enum name="LoadClass">
+ <description>Defines the phase in the load and start sequence.
+</description>
+ <enumMember name="coreOs">
+ <value>10</value>
+ </enumMember>
+ <enumMember name="coreDevice">
+ <value>50</value>
+ </enumMember>
+ <enumMember name="loadListProvider">
+ <value>100</value>
+ </enumMember>
+ <enumMember name="coreEarly">
+ <value>200</value>
+ </enumMember>
+ <enumMember name="coreLate">
+ <value>300</value>
+ </enumMember>
+ <enumMember name="networkAndConnectionHandling">
+ <value>400</value>
+ </enumMember>
+ <enumMember name="application">
+ <value>500</value>
+ </enumMember>
+ <enumMember name="upgrade">
+ <value>600</value>
+ </enumMember>
+ </enum>
+
+ <enum name="StartState">
+ <enumMember name="disabled">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="enabled">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SubrackType">
+ <enumMember name="hub">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="device">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="PiuRole">
+ <enumMember name="mp">
+ <description>The board is a Main processor.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="bp">
+ <description>The board is a device board.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="others">
+ <description>The board is not a Main processor or a device board. </description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RestartCause">
+ <description>This attribute indicates the restart cause of plugInUnit. The defined values are:
+1. piuRestartError: restart because of error.
+2. piuRestartUpgrade: restart because of system upgrade.
+</description>
+ <enumMember name="piuRestartUpgrade">
+ <description>This attributes indicates that the Piu restart cause is upgrade.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="piuRestartError">
+ <description>This attributes indicates that the Piu restart cause is error.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="FanState">
+ <description>The Fan can be in one of three controlling state:
+- standalone: not manageable, full speed fans
+- autonomous: manageable, air-flow control
+- noiseReduced: time-limited low speed fan</description>
+ <enumMember name="standalone">
+ <description>It's running on itself, not manageable.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="autonomous">
+ <description>Manageable state.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="noiseReduced">
+ <description>Temporary state with reduced cooling.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SeqRestarts">
+ <enumMember name="RESTARTS_WITH_NO_LIMITS">
+ <description>This attributes indicates unlimited restarts and no faulty marking of the PIU. Used for critical PIU's such as TUBs, SCBs and some ET-boards.
+</description>
+ <value>-1</value>
+ </enumMember>
+ <enumMember name="RESTARTS_WITH_WARM">
+ <description>This attributes indicates the following sequential restarts:
+-warm
+-refresh
+-cold
+-cold with fault marked (not loaded). Alarm sent.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="RESTARTS_WITH_REFRESH">
+ <description>This attributes indicates the following sequential restarts:
+-refresh
+-cold
+-cold with fault marked (not loaded). Alarm sent.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="RESTARTS_WITH_COLD">
+ <description>This attributes indicates the following sequential restarts:
+-cold
+-cold with fault marked (not loaded). Alarm sent.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="RESTARTS_WITH_FAULT_MARKED">
+ <description>This attributes indicates the following sequential restarts:
+-cold with fault marked (not loaded). Alarm sent.</description>
+ <value>0</value>
+ </enumMember>
+ </enum>
+
+ <exception name="RepertoireNotFoundException">
+ <description>This class is an exception class thrown when a equipment specific error occurs.
+</description>
+ </exception>
+
+ <exception name="SwAllocationNotFoundException">
+ <description>This class is an exception class thrown when a equipment specific error occurs.
+</description>
+ </exception>
+
+ <exception name="WebServerPathConfigurationException">
+ <description>This class is an exception class thrown when failed to configure the webserver root path
+</description>
+ </exception>
+
+ <exception name="FroLocationFailedException">
+ </exception>
+
+ <exception name="FroShutdownException">
+ </exception>
+
+ <exception name="NotUniqueLineNoException">
+ </exception>
+
+ <exception name="WrongPhysPathTermTypeException">
+ </exception>
+
+ <enum name="OperState">
+ <enumMember name="disabled">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="enabled">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AdmState">
+ <enumMember name="locked">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="unlocked">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="shuttingDown">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <exception name="OccupiedException">
+ </exception>
+
+ <exception name="NotReservedException">
+ </exception>
+
+ <exception name="NotSupportedException">
+ </exception>
+
+ <enum name="SilPortState">
+ <description>Indication of Switch Internal Link port status.</description>
+ <enumMember name="portActive">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="portPassive">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="portNotConnected">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="portLocked">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="portNotInstalled">
+ <value>5</value>
+ </enumMember>
+ </enum>
+
+ <exception name="InvalidIndexException">
+ <description>Index specified is invalid, i.e. it is out of the range of valid indices.</description>
+ <exceptionParameter name="invalidIndex">
+ <description>The exception message.</description>
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="TransactionException">
+ </exception>
+
+ <exception name="UndeletableMoException">
+ <description>Exception thrown when MO is not possible to delete.</description>
+ </exception>
+
+ <exception name="FroNotAccessibleException">
+ <description>Exception that is thrown when a FRO (Facade Resource Object in the resource layer) cannot be accessed.</description>
+ </exception>
+
+ <exception name="FroRequestFailedException">
+ <description>Exception that is thrown when the result of a request to a FRO (Facade Resource Object in the resource layer) is not ok.</description>
+ </exception>
+
+ <exception name="MoReservedByOtherUserException">
+ <description>Exception thrown when the MO is already reserved by another user (MO).</description>
+ </exception>
+
+ <exception name="MoHasChildrenException">
+ <description>Exception class thrown when an MO is requested to be deleted, but the MO has children, which must be deleted first.</description>
+ </exception>
+
+ <exception name="MoReservedNotDeletableException">
+ <description>Exception thrown when trying to delete an MO that is reserved by another MO (user).</description>
+ </exception>
+
+ <exception name="MaxNumberExceededException">
+ <description>Exception thrown when the maximum number of childrens for an MO is exceeded.</description>
+ </exception>
+
+ <exception name="AttrValueNotUniqueException">
+ <description>Exception thrown when a value of an attribute is not unique.</description>
+ </exception>
+
+ <exception name="EquipException">
+ </exception>
+
+ <exception name="IpFormatException">
+ </exception>
+
+ <exception name="IpException">
+ </exception>
+
+ <exception name="TransactionRequiredException">
+ <description>Exception class thrown when an MO is accessed outside a transaction but the access method requires a transaction.</description>
+ </exception>
+
+ <exception name="ValueOutOfRangeException">
+ <description>Exception thrown when an MO attribute is requested to be set, but the requested value is not accepted.</description>
+ </exception>
+
+ <exception name="WrongAttributeTypeException">
+ <description>Exception thrown when an MO attribute is requested to be set, but the requested value is of the wrong type. </description>
+ </exception>
+
+ <exception name="NotHandledAttributeTypeException">
+ <description>Exception class thrown when an attribute of not handled type is requested. </description>
+ </exception>
+
+ <exception name="NoSuchFieldException">
+ <description>Exception class thrown when a Struct is accessed but the reqested Struct element is not found. </description>
+ </exception>
+
+ <exception name="MoCanNotBeCreatedException">
+ </exception>
+
+ <exception name="NoSuchAttributeException">
+ <description>Exception thrown when an MO attribute is requested to be accessed but the access
+method for the is not defined (the attribute can not be accessed)</description>
+ </exception>
+
+ <exception name="MoCardinalityViolationException">
+ <description>Exception class thrown when the creation of an MO fails due to child - parent
+cardinality violation. The cardinality is specified in the MIM. </description>
+ </exception>
+
+ <exception name="IllegalParentException">
+ <description>Exception thrown when the parent of the MO is of the wrong type.</description>
+ </exception>
+
+ <exception name="AttrNotSettableAtCreateException">
+ <description>Exception thrown when a create is ordered with
+attribute values that are not settable at create.</description>
+ </exception>
+
+ <exception name="AttrMissingAtCreateException">
+ <description>Exception thrown when an attribute that is mandatory at create is missing.</description>
+ </exception>
+
+ <exception name="MoNameAlreadyTakenException">
+ <description>Exception thrown when an MO is created and the distinguished name of the MO is already in use.</description>
+ </exception>
+
+ <exception name="IllegalArgumentTypeException">
+ <description>Exception thrown if the argument supplied is of the wrong type, for example in an action.</description>
+ </exception>
+
+ <exception name="IllegalAttributeValueException">
+ <description>Exception thrown if the value of the attribute is not valid.</description>
+ </exception>
+
+ <enum name="RestartRank">
+ <enumMember name="RESTART_WARM">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="RESTART_REFRESH">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="RESTART_COLD">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AvailabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <enumMember name="IN_TEST">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="FAILED">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="POWER_OFF">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="OFF_LINE">
+ <value>8</value>
+ </enumMember>
+ <enumMember name="OFF_DUTY">
+ <value>16</value>
+ </enumMember>
+ <enumMember name="DEGRADED">
+ <value>64</value>
+ </enumMember>
+ <enumMember name="NOT_INSTALLED">
+ <value>128</value>
+ </enumMember>
+ <enumMember name="LOG_FULL">
+ <value>256</value>
+ </enumMember>
+ <enumMember name="DEPENDENCY_LOCKED">
+ <value>544</value>
+ </enumMember>
+ <enumMember name="DEPENDENCY_FAILED">
+ <value>1056</value>
+ </enumMember>
+ <enumMember name="DEPENDENCY_SHUTTINGDOWN">
+ <value>2080</value>
+ </enumMember>
+ <enumMember name="NO_STATUS">
+ <value>0</value>
+ </enumMember>
+ </enum>
+
+ <exception name="InvalidMoReferenceException">
+ <description>Exception thrown when the submitted MO reference is invalid.</description>
+ </exception>
+
+ <exception name="FroNotLockedException">
+ <description>Exception thrown when a fRo cannot be accessed.</description>
+ </exception>
+
+ <exception name="GeneralErrorException">
+ <description>Exception thrown by an MO when there is a general error.</description>
+ </exception>
+
+ <exception name="IdentityNotAllowedException">
+ <description>Exception thrown when an identity (LDN) specified at create is not allowed.</description>
+ </exception>
+
+ <exception name="IllegalMoTypeException">
+ <description>Exception thrown when a reference to an MO is of a unexpected/wrong MO type.</description>
+ </exception>
+
+ <exception name="ImpossibleCollectAtmInfoException">
+ <description>Exception thrown when gathering of ATM info fails.</description>
+ </exception>
+
+ <exception name="MoCanNotBeDeletedException">
+ <description>Exception thrown when its not possible to delete an MO.</description>
+ </exception>
+
+ <exception name="MoNotPossibleToReserveException">
+ <description>Exception thrown when by an MO if its not possible to reserve the MO.</description>
+ </exception>
+
+ <exception name="MoNotReservedByUserException">
+ <description>Exception thrown when a user tries to release an MO that is not reserved by this user.</description>
+ </exception>
+
+ <exception name="NoDiskException">
+ <description>Exception thrown when there is no hard disk.</description>
+ </exception>
+
+ <exception name="RemovalFailedException">
+ <description>Exception thrown when an element cannot be removed from a sequence.</description>
+ </exception>
+
+ <exception name="RestartRejectedException">
+ <description>Exception thrown when restart of the PlugInUnit is not allowed.</description>
+ </exception>
+
+ <enum name="SyncMode">
+ <description>The Sync Mode Operation of the node.</description>
+ <enumMember name="NOT_USED">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="CDMA">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="WCDMA">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp2ProfileDataAnsi">
+ <structMember name="suermT">
+ <description>SUERM parameter T.
+Measured in SU units.</description>
+ <long>
+ <range>
+ <min>1</min> <max>511</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermD">
+ <description>SUREM parameter D.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>256</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermN">
+ <description>SUERM parameter N.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>16</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tin">
+ <description>Normal AERM threshold, Tin. Number of signal errors that cause abortion of a normal proving peroid.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tie">
+ <description>Emergency AERM threshold, Tie. Number of signal units errors that cause abortion of an emergency proving period.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="provings">
+ <description>Proving abort limit. Number of consecutive aborted proving periods that will cause a return to the Out Of Service state.
+
+Measurement units are the number of proving periods.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Maximum time to stay in Aligned Ready state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>12900</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Maximum time to stay in Not Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>32700</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Maximum time to stay in Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>11500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4n">
+ <description>Length of the normal proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>4000</max>
+ </range>
+ <defaultValue>2300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4e">
+ <description>Length of the emergengcy proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>4000</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Time between sending Status Indication "B" while in the Congested state.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Maximum time a remote site may remain in the congestated state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>8100</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT7">
+ <description>Maximum time to wait for an expected acknowledgement of an MSU before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="bitRate">
+ <description>The speed of the link. Only supported values are 64 and 56 kbit/s.
+0 = 64 kbit/s.
+1 = 56 kbit/s.
+
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="errorCorrection">
+ <description>The error correction algorithm to use. Only Basic Error Correction (BEC) is supported.
+0 = BEC
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet1">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 1 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet2">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 2 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet3">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 3 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>90</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement1">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 1 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement2">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 2 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement3">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 3 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel1">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 1 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel2">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 2 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel3">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 3 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n1Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n2Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp2ProfileDataItu">
+ <structMember name="suermT">
+ <description>SUERM parameter T.
+Measured in SU units.</description>
+ <long>
+ <range>
+ <min>1</min> <max>64</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermD">
+ <description>SUREM parameter D.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>256</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermN">
+ <description>SUERM parameter N.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>16</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tin">
+ <description>Normal AERM threshold, Tin. Number of signal errors that cause abortion of a normal proving peroid.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tie">
+ <description>Emergency AERM threshold, Tie. Number of signal units errors that cause abortion of an emergency proving period.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="provings">
+ <description>Proving abort limit. Number of consecutive aborted proving periods that will cause a return to the Out Of Service state.
+
+Measurement units are the number of proving periods.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Maximum time to stay in Aligned Ready state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>65500</max>
+ </range>
+ <defaultValue>40000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Maximum time to stay in Not Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>262000</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Maximum time to stay in Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4n">
+ <description>Length of the normal proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>7500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4e">
+ <description>Length of the emergengcy proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Time between sending Status Indication "B" while in the Congested state.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Maximum time a remote site may remain in the congestated state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>8100</max>
+ </range>
+ <defaultValue>3000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT7">
+ <description>Maximum time to wait for an expected acknowledgement of an MSU before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="bitRate">
+ <description>The speed of the link. Only supported values are 64 and 56 kbit/s.
+0 = 64 kbit/s.
+1 = 56 kbit/s.
+
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="errorCorrection">
+ <description>The error correction algorithm to use. Only Basic Error Correction (BEC) is supported.
+0 = BEC
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet1">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 1 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet2">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 2 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet3">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 3 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>90</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement1">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 1 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement2">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 2 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement3">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 3 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel1">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 1 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel2">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 2 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel3">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 3 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n1Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n2Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp2ProfileDataChina">
+ <structMember name="bitRate">
+ <description>The speed of the link. Only supported values are 64 and 56 kbit/s.
+0 = 64 kbit/s.
+1 = 56 kbit/s.
+
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="errorCorrection">
+ <description>The error correction algorithm to use. Only Basic Error Correction (BEC) is supported.
+0 = BEC</description>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="provings">
+ <description>Proving abort limit. Number of consecutive aborted proving periods that will cause a return to the Out Of Service state.
+
+Measurement units are the number of proving periods.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermD">
+ <description>SUERM parameter D.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>256</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermN">
+ <description>SUERM parameter N.
+Measurement units are in SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>256</max>
+ </range>
+ <defaultValue>16</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="suermT">
+ <description>SUERM parameter T.
+Measured in SU units.</description>
+ <long>
+ <range>
+ <min>1</min> <max>64</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tie">
+ <description>Emergency AERM threshold, Tie. Number of signal units errors that cause abortion of an emergency proving period.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Maximum time to stay in Aligned Ready state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>65500</max>
+ </range>
+ <defaultValue>45000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Maximum time to stay in Not Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>262000</max>
+ </range>
+ <defaultValue>132000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Maximum time to stay in Aligned state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4e">
+ <description>Length of the emergengcy proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4n">
+ <description>Length of the normal proving period.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>16300</max>
+ </range>
+ <defaultValue>8200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Time between sending Status Indication "B" while in the Congested state.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Maximum time a remote site may remain in the congestated state before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>8100</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT7">
+ <description>Maximum time to wait for an expected acknowledgement of an MSU before signalling link failure.
+
+Measurement units are milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>2000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="tin">
+ <description>Normal AERM threshold, Tin. Number of signal errors that cause abortion of a normal proving peroid.
+
+Measurement units are SUs.</description>
+ <long>
+ <range>
+ <min>1</min> <max>7</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet1">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 1 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet2">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 2 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet3">
+ <description>Percentage of the Transmit Buffer that will cause MTP2 to signal congestion for prio 3 messages towards client.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>90</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement1">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 1 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement2">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 2 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement3">
+ <description>Percentage of the Transmit Buffer that ceases congestion for prio 3 messages.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel1">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 1 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel2">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 2 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionDiscardLevel3">
+ <description>Percentage of the Transmit Buffer where messages sent to MTP2 from client with priority less than 3 is discarded by MTP2.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n1Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="n2Onset">
+ <description>Number of MSUs in ReTransmit Buffer before onset of preventive retransmission in PCR.
+NOTE: Only valid if errorCorrection==SCC_MTP2_ERROR_CORRECTION_PCR.
+This value is ignored otherwise.</description>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="EmergencyStatus">
+ <description>This enumeration specifies the different stages of the emergency state.</description>
+ <enumMember name="NEVER_USED">
+ <description>Emergency state has not been activated since installation of license key file.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ACTIVE">
+ <description>All capacity restrictions removed and all features enabled. The maximum time in this state is 7 days.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="USE_DEGRADED">
+ <description>A new license key file has to be istalled in order not to jopardize future use and performance.
+The maximum time in this state is 7 days.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="ACTIVE_AGAIN">
+ <description>All features enabled again for a maximum period of 7 days then a new license key file has to be installed in order to be able to use this node.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="USE_DISABLED">
+ <description>Use of the node is no longer allowed since no new license key file has been installed.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <struct name="EmergencyInfo">
+ <description>This attribute provides information about the current EmergencyState.
+
+Note: for the states NEVER_USED and USE_DISABLED the return value for time is insignificant.</description>
+ <structMember name="state">
+ <description>The current emergency state of the license server.</description>
+ <enumRef name="EmergencyStatus">
+ <defaultValue>NEVER_USED</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="time">
+ <description>This attribute holds information on the time elapsed in this state.
+
+Note: The time out values for the states ALL_OPEN, DEGADED and PROLONGED is 7 days. The unit for this attribute is seconds.
+1 day = 86400 seconds
+7 days = 604800 seconds.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="NodeRestartType">
+ <enumMember name="WARM_AT_PIU_RESTART">
+ <description>Warm node restart at restart of the last PIU.</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="COLD_AT_PIU_RESTART">
+ <description>Cold node restart at restart of the last PIU.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="WARM_AT_PIU_FAULT">
+ <description>Warm node restart at fault mark of the last PIU.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="COLD_AT_PIU_FAULT">
+ <description>Cold node restart at fault mark of the last PIU.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <struct name="UniSaalProfileData">
+ <structMember name="maxPD">
+ <description>Maximum number of SD PDUs before a poll is sent.
+
+maxPD &lt; initialCredit</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>25</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxStat">
+ <description>Maximum number, odd integer value, of list elements placed in a STAT PDU.
+
+Note: The maxStat attribute is dependent on the AAL5 maximum SDU size defined in the Aal5TpVccTp MO. The maxStat times 4 (octets) plus additional 12 octets (for header) must not exceed the AAL5 maximum SDU size (lower of the two directions, fromUserMaxSduSize and toUserMaxSduSize).
+The consistency control is not performed until the UniSaalTp MO is created since there is no relation between the UniSaalProfile MO and the Aal5TpVccTp MO.</description>
+ <long>
+ <range>
+ <min>3</min> <max>1001</max>
+ </range>
+ <defaultValue>67</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="initialCredit">
+ <description>Initial number of credits.
+
+Note: For 64 kbit/s use 30.
+
+Note! The value for initialCredit must be larger than the value of maxPD.
+</description>
+ <long>
+ <range>
+ <min>10</min> <max>1000</max>
+ </range>
+ <defaultValue>250</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerKeepAlive">
+ <description>Timer to be used during a period of no outstanding acknowledgements or new data pending receipt of credit. At timeout the peer is polled to see if it is alive. The timer determines the interval between polls in transient phase. This timer should be greater than the roundtripdelay and also greater than timerpoll. Time unit = milliseconds.
+</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerNoResponse">
+ <description>Timer to determine the maximum time interval during which at least one STAT PDU reception is expected as a response to a poll. This timer should be equal to timerKeepAlive+roundtripdelay. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>7000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerIdle">
+ <description>Timer running when there are no PDUs to transmit and there are no outstanding acknowledgements or data pending for credit. When this timer is running, no POLL PDUs are sent. This timer should be significantly greater than timerKeepAlive value. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>1000</min> <max>600000</max>
+ </range>
+ <defaultValue>15000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerCC">
+ <description>Timer determining the time between re-transmission of PDUs: BGN, END, ER, RS. Should be slightly more than the roundtripdelay. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerPoll">
+ <description>Timer that specifies the maximum time between sending of POLL PDUs to the peer receiver during other traffic (active phase). Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>750</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxCC">
+ <description>Maximum number of re-transmissions of PDUs: BGN, END, ER, RS. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionOnSet">
+ <description>Attribute specifying the percentage of the buffer that must be filled in order to cause congestion. Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion level is used to take care of messages that were sent before the users stopped sending.
+
+This attribute should follow the rule 0 &lt;= congestationAbatement &lt; congestationOnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionAbatement">
+ <description>Attribute specifying the percentage of the buffer for which congestion is stopped. If the congestionAbatement level is lesser but almost equal to congestionOnSet, congestion alarms might be raised and ceased very often.
+
+This attribute should follow the rule 0 &lt;= congestationAbatement &lt; congestationOnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="NniSaalProfileData">
+ <description>Struct holding the values for an NniSaalProfile.
+
+NOTE: Congestition Level 1 - 3 is supported.</description>
+ <structMember name="timerPoll">
+ <description>Timer that specifies the maximum time between sending of POLL PDUs to the peer receiver during other traffic (active phase). Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxCC">
+ <description>Maximum number of re-transmissions of PDUs: BGN, END, ER, RS.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxPD">
+ <description>Maximum number of SD PDUs before a poll is sent.
+
+maxPD &lt; initialCredit</description>
+ <long>
+ <range>
+ <min>0</min> <max>10000</max>
+ </range>
+ <defaultValue>25</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxStat">
+ <description>Maximum number, odd integer value, of list elements placed in a STAT PDU.
+
+Note: The maxStat attribute is controlled by the AAL5 maximum SDU size defined in the Aal5TpVccTp MO. The maxStat times 4 (octets) plus additional 12 octets (for header) must not exceed the AAL5 maximum SDU size (lower of the two directions, fromUserMaxSduSize and toUserMaxSduSize).
+
+The consistency control is not performed until the NniSaalTp MO is created since there is no relation between the NniSaalProfile MO and the Aal5TpVccTp MO.</description>
+ <long>
+ <range>
+ <min>3</min> <max>1001</max>
+ </range>
+ <defaultValue>67</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="initialCredit">
+ <description>Initial number of credits.
+
+Note: For 64 kbit/s use 30.
+
+Note! The value for initialCredit must be larger than the value of maxPD.</description>
+ <long>
+ <range>
+ <min>10</min> <max>1000</max>
+ </range>
+ <defaultValue>250</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerKeepAlive">
+ <description>Timer to be used during a period of no outstanding acknowledgements or new data pending receipt of credit. At timeout the peer is polled to see if it is alive. The timer determines the interval between polls in transient phase. This timer should be greater than the roundtripdelay and also greater than timerpoll. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerNoResponse">
+ <description>Timer to determine the maximum time interval during which at least one STAT PDU reception is expected as a response to a poll.This timer should be equal to timerKeepAlive+roundtripdelay. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerIdle">
+ <description>Timer running when there are no PDUs to transmit and there are no outstanding acknowledgements or data pending for credit. When this timer is running, no POLL PDUs are sent. This timer should be significantly greater than timerKeepAlive value. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerCC">
+ <description>Timer determining the time between re-transmission of PDUs: BGN, END, ER, RS. Time unit = milliseconds.
+Should be more than the roundtrip delay.</description>
+ <long>
+ <range>
+ <min>10</min> <max>10000</max>
+ </range>
+ <defaultValue>200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="mps">
+ <description>Management Proving Status which is used to decide if proving is done or not during SAAL connection setup.
+</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionLevel1OnSet">
+ <description>Attribute specifying the percentage of the buffer that must be filled in order to cause congestion.
+Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion
+level is used to take care of messages that were sent before the users stopped sending.
+
+Attribute specifying the percentage of the buffer that must be filled in order to cause congestion.
+Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion
+level is used to take care of messages that were sent before the users stopped sending.
+
+This attribute should follow the rule 0 &lt;= congestationLevel1OnSet &lt;= congestationLevel2OnSet &lt;= congestationLevel3OnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>70</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionLevel2OnSet">
+ <description>Attribute specifying the percentage of the buffer that must be filled in order to cause congestion.
+Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion
+level is used to take care of messages that were sent before the users stopped sending.
+
+This attribute should follow the rule 0 &lt;= congestationLevel1OnSet &lt;= congestationLevel2OnSet &lt;= congestationLevel3OnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionLevel3OnSet">
+ <description>Attribute specifying the percentage of the buffer that must be filled in order to cause congestion.
+Congestion is notified to the users of this protocol layer. The part of the buffer above the congestion
+level is used to take care of messages that were sent before the users stopped sending.
+
+This attribute should follow the rule 0 &lt;= congestationLevel1OnSet &lt;= congestationLevel2OnSet &lt;= congestationLevel3OnSet &lt;= 100.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>90</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="congestionLevel1Abatement">
+ <description>Attribute specifying the percentage of the buffer for which congestionLevel1 is stopped. If the congestionAbatement level is lesser but almost equal to congestionOnSet, congestion alarms might be raised and ceased very often.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="nrOfPDUsDuringProving">
+ <description>The length of proving in terms of number of transmitted PDUs (n1).
+noOfPDUsDuringProving x T3 &lt; T2
+
+For the TTC standard the only allowed value is 0 (which means no proving).</description>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="maxNRP">
+ <description>State variable which defines max number of retransmissions of PDUs during proving to consider proving successful.
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerNoCredit">
+ <description>Maximum time of no credit. If the timer expires, the assured data transfer mode is released.</description>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerRepeatSrec">
+ <description>Timer which is set whenever a report of SSCOP recovery is received from the SSCF. If the timer is running when another report of recovery is received, the assured data transfer mode is released. If the timer expires, nothing is done. Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>0</min> <max>86400000</max>
+ </range>
+ <defaultValue>3600000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Timer between the link release action and the next link re-establish action during the alignment. At expiry of timer T1, a new attempt to setup assured data transfer mode to the peer is done. Time unit = milliseconds.
+</description>
+ <long>
+ <range>
+ <min>10</min> <max>100000</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Total time that SSCF will attempt alignment. At expiry of timer T2, the alignment procedure will be interrupted.
+ Time unit = milliseconds.
+</description>
+ <long>
+ <range>
+ <min>10</min> <max>200000</max>
+ </range>
+ <defaultValue>30000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Time between proving PDUs. The timer is set such that loading of the signalling link is approximately 50% of its nominal rate.
+Time unit = milliseconds.</description>
+ <long>
+ <range>
+ <min>5</min> <max>1000</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <exception name="ListOfTimeSlotsNotUniqueException">
+ <description>Exception thrown when a time slot appears more than once in the time slot list.</description>
+ </exception>
+
+ <enum name="RefActivity">
+ <description>RefActivity can have the following values:
+
+inactive = Synchronization reference is currently not used in system clock generation.
+active = Synchronization is used in system clock generation.
+</description>
+ <enumMember name="inactive">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="active">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RefState">
+ <description>RefState can have the following values:
+failed = synchronization reference is not capable to perform its required tasks.
+degraded = capability of synchronization reference to perform its required tasks is degraded e.g. because of signal level degradation. This value is only applicable for traffic carrying (ET physical path termination) synchronization references. Note: attribute degradationIsFault controls whether synchronization reference degradation is interpreted as a synchronization reference fault or not.
+lossOfTracking = system clock regulation algorithm on TU board can not follow the 8kHz synchronization reference signal either because of the poor quality of the signal or because of a HW fault at TU board. If all synchronization references repeatedly end up to state lossOfTracking, fault is likely in TU HW.
+ok = synchronization reference is capable of performing its required tasks.
+</description>
+ <enumMember name="failed">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="degraded">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="lossOfTracking">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="ok">
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="FaultCriteria">
+ <description>FaultCriteria can have the following values:
+degrNotFault = synchronization reference degradation is NOT interpreted as a synchronization reference fault.
+degrIsFault = synchronization reference degradation is interpreted as a synchronization reference fault.</description>
+ <enumMember name="degrNotFault">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="degrIsFault">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="ClockState">
+ <description>ClockState can have the following values:
+startUp =
+locked = system clock signal on Timing Unit is locked: a synchronization reference is used in the system clock generation, clock accuracy is 50 ppb or better.
+holdOver = system clock signal on Timing Unit is hold-over: no synchronization reference is used in system clock generation, clock accuracy is 50 ppb or better.
+freeRunning = system clock signal on Timing Unit is free running: no synchronization reference is used in system clock generation, clock accuracy is 4.6 ppm or better.
+failed = system clock signal on Timing Unit is failed: fault in system clock generation function, no quarantee of clock accuracy level.
+not Applicable = system clock signal on Timing Unit is not applicable: TU board not present.</description>
+ <enumMember name="unknownMode">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="startupMode">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="lockedMode">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="holdOverMode">
+ <value>3</value>
+ </enumMember>
+ <enumMember name="freeRunningMode">
+ <value>4</value>
+ </enumMember>
+ <enumMember name="failedMode">
+ <value>5</value>
+ </enumMember>
+ <enumMember name="lossOfTrackingMode">
+ <value>6</value>
+ </enumMember>
+ <enumMember name="notApplicable">
+ <value>7</value>
+ </enumMember>
+ </enum>
+
+ <exception name="AlreadyRegisteredException">
+ <description>Exception thrown when an object is already registered.</description>
+ </exception>
+
+ <exception name="MaxNoOfRefRegisteredException">
+ <description>Exception thrown when the maximum number of references is reached.</description>
+ </exception>
+
+ <exception name="PriorityAlreadyInUseException">
+ <description>Exception thrown when a priority is already in use.</description>
+ </exception>
+
+ <exception name="PriorityOutOfRangeException">
+ <description>Exception thrown when the priority is out of range.</description>
+ </exception>
+
+ <exception name="NotPermittedException">
+ <description>Exception thrown when an reference is not valid, null or of incorrect type.</description>
+ </exception>
+
+ <exception name="NotRegisteredException">
+ <description>Exception thrown when trying to de-register an object that is not registered in the database.</description>
+ </exception>
+
+ <enum name="SystemClockRedundancy">
+ <enumMember name="SYSTEM_CLOCK_USERS_USE_PLANE_A">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SYSTEM_CLOCK_USERS_USE_PLANE_B">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SYSTEM_CLOCK_USERS_USE_PLANE_A_AND_B">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <exception name="NotUniqueFroIdException">
+ <description>Exception thrown when a fro Id is not unique.</description>
+ </exception>
+
+ <enum name="ActiveSwitchPlane">
+ <enumMember name="switchPlaneA">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="switchPlaneB">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="switchPlaneBoth">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SwitchReliableGroup">
+ <description>A predefined group consisting of working links and their corresponding protecting links. These links form the n+m link redundancy. </description>
+ <enumMember name="physicalLinkStatusWorking">
+ <description>Defines physical link status.
+</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="physicalLinkStatusProtecting">
+ <description>Defines physical link status.
+</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="physicalLinkStatusUndefined">
+ <description>Defines physical link status.
+</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <struct name="GlobalTitleData">
+ <structMember name="indicator">
+ <description>Global title indicator should have following values for both ITU and TTC:
+
+The values for the GT Indicator
+
+Value Comment
+
+0 No new global title
+2 TT only
+3 TT-NP-ES
+4 TT-NP-ES-NOA
+
+Explanation:
+
+TT = translation type
+NP = numbering plan
+ES = encoding scheme
+NOA = nature of address indication</description>
+ <long>
+ <range>
+ <min>0</min> <max>4</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="natureOfAddress">
+ <description>Indicates number type, i.e. national or international number.
+Coding of the Nature Address:
+
+0 = "unknown"
+1 = "Subscriber number"
+2 = "Reserved for national use"
+3 = "National significant number"
+4 = "International number"</description>
+ <long>
+ <range>
+ <min>0</min> <max>4</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="numberingPlan">
+ <description>Indicates which numbering plan that is used.
+
+Coding of the Numbering Plan:
+
+0 = "Unknown"
+1 = "ISDN/Telephony Numbering Plan"
+3 = "Data Numbering Plan"
+4 = "Telex Numbering Plan"
+5 = "Maritime Mobile Numbering Plan"
+6 = "Land Mobile Numbering Plan"
+7 = "ISDN/Mobile Numbering Plan"
+</description>
+ <long>
+ <range>
+ <min>0</min> <max>7</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="translationType">
+ <description>Used to direct the message to the appropriate Global Title translation function.</description>
+ <long>
+ <range>
+ <min>0</min> <max>254</max>
+ </range>
+ </long>
+ </structMember>
+ <structMember name="addressInformation">
+ <description>Digit string of 1-37 digits, where each digit is 0-9, and B, C. B and C are for Code 11 and Code 12.
+The addressInformation may also contain wild card symbols: "*" or "?". Wild cards are only allowed for defining Global Title Translations, they are not allowed for specifying SCCP SAPs (built with SPC and Global Title or SPC + SSN + Global Title).</description>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>37</max>
+ </lengthRange>
+ </string>
+ </structMember>
+ <structMember name="encodingScheme">
+ <description>Indicates if the number of address signals are an odd or even number, and is coded as follows:
+
+0 = "Unknown"
+1 = "BCD, odd number of digits"
+2 = "BCD, even number of digits"
+
+Other values in the encoding scheme will result in the error "Wrong Nature Of Address", (Routing failure reason=No translation for an address of such nature).</description>
+ <long>
+ <range>
+ <min>0</min> <max>2</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="SharingMode">
+ <enumMember name="loadShare">
+ <description>The when sharing mode is set to loadShare the SCCP traffic is load shared between the two entities (access points).</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="dupliDominant">
+ <description>When the sharing mode is set to dupliDominant the second entity (access point) is a backup for the first entity.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="EncodingScheme">
+ <description>Possible values for number signalling.</description>
+ <enumMember name="UNKNOWN">
+ <description>Unkown encoding scheme.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ODD_NUMBER">
+ <description>BCD, odd number of digits.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="EVEN_NUMBER">
+ <description>BCD, even number of digits.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="GlobalTitleIndicator">
+ <description>Global title indicator values for China, ITU, TTC and ANSI.
+
+Note: China, ITU and TCC will use TT_ONLY, TT_NP_ES, TT_NP_ES_NOA, NOA_ONLY.
+
+ANSI will use:
+ANSI_TT_NP_ES = 5
+ANSI_TT_ONLY = 6
+</description>
+ <enumMember name="TT_ONLY">
+ <description>Translation Type only.
+
+Only valid for China, ITU and TTC.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="TT_NP_ES">
+ <description>Translation Type, Numbering Plan and Encoding Scheme.
+
+Only valid for China, ITU and TTC.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="TT_NP_ES_NOA">
+ <description>Translation Type, Numbering Plan, Encoding Scheme, and Nature Of Address indication.
+
+Only valid for China, ITU and TTC.</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="NOA_ONLY">
+ <description>Nature of Address indicator only.
+
+Only valid for China, ITU and TTC.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="ANSI_TT_NP_ES">
+ <description>Translation Type, Numbering Plan and Encoding Scheme.
+
+Only valid for ANSI.
+</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="ANSI_TT_ONLY">
+ <description>Translation Type only.
+
+Only valid for ANSI.
+</description>
+ <value>6</value>
+ </enumMember>
+ </enum>
+
+ <enum name="NatureOfAddress">
+ <description>Phone number types.</description>
+ <enumMember name="UNKNOWN">
+ <description>Unknown number type.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SN">
+ <description>Subscriber number type.
+</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="RN">
+ <description>Reserved for national use, number type.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="NSN">
+ <description>National Significant Number type.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="IN">
+ <description>International number type.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <enum name="NumberingPlan">
+ <description>Numbering plans.</description>
+ <enumMember name="UNKNOWN">
+ <description>Unknown numbering plan.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="TELEPHONY">
+ <description>ISDN/Telephony numbering plan.
+</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="DATA">
+ <description>Data numbering plan.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="TELEX">
+ <description>Telex numbering plan.
+</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="MOBILE_MARITIME">
+ <description>Maritime mobile numering plan.
+</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="MOBILE_LAND">
+ <description>Land mobile numbering plan.
+</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="MOBILE">
+ <description>ISDN/Mobile numbering plan.</description>
+ <value>6</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SccpCountType">
+ <enumMember name="MESSAGES">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="OCTETS">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Scmg">
+ <structMember name="sendSST">
+ <description>Controls when to send SST (SCCP Subsystem Test message).
+
+0 = Wait for tStatInfo timer to expire once after MTP_RESUME before sending SST.
+1 = Send SST immediately after MTP_RESUME, then start tStatInfo timer.</description>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="sendSSA">
+ <description>Controls when to send SSA (SCCP Subsystem Allowed message).
+
+0 = Do not send SSA when client attaches, wait until SST is received. (default for ANSI/CHINA/ITU/TTC)
+1 = Send SSA immediately when client attaches.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="sendSSP">
+ <description>Controls whether to send SSP (SCCP Subsystem Prohibited message).
+
+0 = Do not send SSP when client detaches. (default for TTC)
+1 = Send SSP immediately when client detaches. (default for ANSI/CHINA/ITU)</description>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="useSST">
+ <description>Controls whether to send SST messages or not (SCCP Subsystem Test message).
+
+0 = Send SST as indicated by sendSST. (default for ANSI/CHINA/ITU)
+1 = (not used)
+2 = (not used)
+3 = Do not initiate SST messages at all, ie. do not start timer tStatInfo nor send any SST at MTP_RESUME. (default for TTC)</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="allowRemoteBroadcast">
+ <description>Controls the remote broadcast.
+
+0 = allow remote broadcast. (default for ANSI/CHINA/ITU/TTC)
+1 = do not allow remote broadcast</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="initiateTimerTcon">
+ <description>Controls whether to initiate hardcoded congestion timer or not.
+
+0 = start timer when SSC is received. (default for CHINA/ITU/TTC)
+1 = do not start timer
+
+Note! This attribute is not valid for the ANSI standard.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="DiscardReturnServiceMsg">
+ <enumMember name="DISCARD">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="RETURN">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <exception name="WrongUserTypeException">
+ </exception>
+
+ <exception name="UsageNotPermittedException">
+ </exception>
+
+ <enum name="J1Type">
+ <description>J1Type can have the following values:
+J1_G = 0 according to TTC JT-G703/G704
+J1_I = 1 according to TCC JT-I431</description>
+ <enumMember name="j1_G">
+ <description>J1 according to TTC JT-G703/G704</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="j1_I">
+ <description>J1 according to TCC JT-I431</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="StandardMode">
+ <description>Indicates what standard the MAO is operating to.</description>
+ <enumMember name="TTC">
+ <description>The standard mode is Telecommunication Technology Committee (TTC).</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="ANSI">
+ <description>The standard mode ANSI.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ETSI">
+ <description>The standard mode is ETSI.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="MuxMode">
+ <description>Indicates what multiplexing is being used.</description>
+ <enumMember name="STANDBY">
+ <description>Standby for protection.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="E1_J1_T1_LEVEL">
+ <description>Multiplexing terminated at the E1/J1/T1 level.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="VC4_STS3CSPE_LEVEL">
+ <description>Multiplexing terminated at the VC-4/STS3CSPE level.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Os155LoopBack">
+ <description>The loopback method available for use by the Os155SpiTtp MO.</description>
+ <enumMember name="NONE">
+ <description>No loopback in use.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="LINE">
+ <description>Loopingback using line.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="SwitchModes">
+ <description>The switch modes.</description>
+ <enumMember name="AUTOMATIC">
+ <description>Automatic switching.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="LOCKED">
+ <description>Locked for swtiching.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <exception name="FailedResourceException">
+ </exception>
+
+ <exception name="LockedResourceException">
+ </exception>
+
+ <exception name="UnknownReasonException">
+ </exception>
+
+ <exception name="AlreadyLockedException">
+ </exception>
+
+ <exception name="IncorrectOsi155SpiIdException">
+ </exception>
+
+ <enum name="PathTraceFormat">
+ <description>Path Trace Formats.</description>
+ <enumMember name="ITU_T_G707">
+ <description>16 byte path trace format according to ITU-T G707 table 4.</description>
+ <value>16</value>
+ </enumMember>
+ <enumMember name="GR_253_CORE">
+ <description>64 byte path trace format according to section 3.3.2.3, Telecordia GR-253-CORE.</description>
+ <value>64</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Crc4Mode">
+ <description>Cyclical Redundancy Checks 4 modes.</description>
+ <enumMember name="OFF">
+ <description>CRC 4 is off.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ON">
+ <description>CRC 4 is on.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="AUTOMATIC">
+ <description>CRC 4 is automatic.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="IdlePattern">
+ <description>Idle patterns.</description>
+ <enumMember name="A_LAW">
+ <description>A law idle pattern.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="U_LAW">
+ <description>Micro law idle pattern.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="UNDEFINED">
+ <description>Undefined idle pattern.</description>
+ <value>0</value>
+ </enumMember>
+ </enum>
+
+ <enum name="LoopbackState">
+ <description>The possible loopback states for E1/J1/T1/E3/T3PhysPathTerm MOs.</description>
+ <enumMember name="none">
+ <description>This is the normal state, no loop back is preformed (and ordinary traffic is running).</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="line">
+ <description>The phyiscal path is looped on the line side, the external incoming path is looped back to the external outgoing path.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="system">
+ <description>The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="TransmissionMode">
+ <description>L stands for long haul interface and S stands for short haul interface.
+The subsequent figure specifies the cable distance in feets.</description>
+ <enumMember name="L_6000">
+ <description>Long Haul 6000 ft, -0 dB</description>
+ <value>8</value>
+ </enumMember>
+ <enumMember name="L_4000">
+ <description>Long Haul 4000 ft, -7 dB</description>
+ <value>7</value>
+ </enumMember>
+ <enumMember name="L_2000">
+ <description>Long Haul 2000 ft, -15 dB</description>
+ <value>6</value>
+ </enumMember>
+ <enumMember name="L_0">
+ <description>Long Haul 0 ft, -22 dB</description>
+ <value>5</value>
+ </enumMember>
+ <enumMember name="S_133">
+ <description>Short Haul 0..133 ft</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="S_266">
+ <description>Short Haul 134..266 ft</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="S_399">
+ <description>Short Haul 267..399 ft</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="S_533">
+ <description>Short Haul 400..533 ft</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="S_655">
+ <description>Short Haul 534..655 ft</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp3bSpItuPriorityData">
+ <description>Priority attributes for MTP3b SP of the ITU standard.</description>
+ <structMember name="prioSlt">
+ <description>The prioSlt attribute sets the priority for the
+ Signalling Link Test Message and Acknowledge (SLTM / SLTA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCo">
+ <description>The prioCo attribute sets the priority for the ChangeOver Order and Acknowledge (COO/COA) or eXtended Change over Order and Acknowledge (XCO/XCA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet)
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCb">
+ <description>The prioCb attribute sets the priority for the
+ Change Back Declaration and Acknowledge (CBD / CBA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioEc">
+ <description>The prioEc attribute sets the priority for the
+Emergency Change over Order and Acknowledge (ECO / ECA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRst">
+ <description>The prioRst attribute sets the priority for the
+signalling Route Set Test (RST) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTra">
+ <description>The prioTra attribute sets the priority for the
+Traffic Restart Allowed signal (TRA) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioUpu">
+ <description>The prioUpu attribute sets the priority for the
+ User Part Unavailable (UPU) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioLink">
+ <description>The prioLink attribute sets the priority for link related messages when issued by the MTP3b itself. The messages are :
+
+Link INhibit (LIN), Link UNinhibit (LUN),
+Link Inhibit Denied (LID),
+Link Inhibit Acknowledge (LIA),
+Link Uninhibit Acknowledge (LUA),
+Link Forced Uninhibit (LFU),
+Link Local inhibit Test (LLT) and
+Link Remote inhibit Test (LRT)
+
+When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp3bSpItuTimerData">
+ <description>ITU timers for MTP3bSpItu. Timervalues in 1/10 s (deciseconds).</description>
+ <structMember name="timerT1">
+ <description>Delay to avoid message mis-sequencing on changeover.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Timer for waiting for a COO or a COA.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Delay to avoid message mis-sequencing on a time controlled diversion change back.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4">
+ <description>Timer for waiting for CBA, first attempt.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Timer for waiting for CBA, second attempt
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Timer for delay to avoid message mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT8">
+ <description>Timer for delay to prohibit sending of TFP messages via the response method. This is a STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT10">
+ <description>Timer for waiting to repeat sending of RST periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT12">
+ <description>Waiting for uninhibit acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT13">
+ <description>Timer for waiting for force uninhibit.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT14">
+ <description>Timer for waiting for inhibition acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT17">
+ <description>Delay to avoid oscillation of initial alignment failure and link restart.
+
+The value for this timer should be less than the value for timerT2.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTBsnt">
+ <description>Waiting for BSNT value from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTRetrieval">
+ <description>Timer for waiting for completion of buffer retrieval from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTStart">
+ <description>Timer for retransmission of DL_START_req if no answer received. Started when timerT17 expires. (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTc">
+ <description>Controlling the period a route set is considered congested when a Transfer Controlled message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT18">
+ <description>Supervision timer for the first phase of a restarting STP. This is an STP specific parameter, which is ignored when configured as an endpoint.
+
+The value for this timer should be less than the value for timerT2.
+
+Unit: deciseconds (1/10 second).
+</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>550</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT19">
+ <description>Controlling the response of the receipt of a traffic restart message from an adjacent node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>680</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT20">
+ <description>Overall MTP restart timer at the restarting MTP.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT21">
+ <description>Overall MTP restart timer at an adjacent signalling point to a restarting MTP.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>640</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT22">
+ <description>Local inhibit test timer.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT23">
+ <description>Remote inhibit test timer.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSlta">
+ <description>Supervision timer for SLTA message (time within SLTA should arrive).
+
+Timer T1 in ITU Q.707 standard.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSltm">
+ <description>Timer for sending SLTM periodically.
+
+Timer T2 in ITU Q.707 standard.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTack">
+ <description>Timer used for message acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaPeriodicAudit">
+ <description>Timer used for audit procedure.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT1">
+ <description>Delay to avoid mis-sequencing of messages when an association fails.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT3">
+ <description>Delay to avoid mis-sequencing of messages when an association becomes active.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT6">
+ <description>Delay to avoid mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT8">
+ <description>Delay to prohibit sending of DUNA messages via the response method.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT40">
+ <description>Delay to avoid message mis-sequencing on controlled/forced rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT41">
+ <description>Timer controlloing the traffic activation delay during restart phase.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT42">
+ <description>The forever interval period for trying association after an unsiccessfull trial.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTc">
+ <description>Timer controlling the period a route set is considered congested when a SCON message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT15">
+ <description>Timer waiting to start signaling route set congestiontest. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test".
+
+Guiding value 20 - 30.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT16">
+ <description>Timer waiting for route set congestion status update. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test"
+
+Guiding value 14 - 22.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>14</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTDlack">
+ <description>Timer pending an acknowledge from the network layer for a DL_ACK_REQ.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTassocack">
+ <description>Timer used for SCTP_ASSOCIATE_REQ message acknowledgement. This is the maximum time to wait for the SCTP_COMMUP_IND mesage before considering it to be an error.
+It should be longer than the time a message spends to reach the most distant destination, be processed and returned.</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="CongestLevel">
+ <description>The supported congestion levels.</description>
+ <enumMember name="level_0">
+ <description>No Congestion.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="level_1">
+ <description>Congestion level low.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="level_2">
+ <description>Congestion level medium.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="level_3">
+ <description>Congestion level high.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <exception name="ActivationFailedException">
+ </exception>
+
+ <exception name="NoAvailRouteException">
+ </exception>
+
+ <enum name="Mtp3bCongestLevel">
+ <enumMember name="notCongested">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="congested">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bNetworkInd">
+ <description>Indicates which type of geographical network, e.g. national, international, etc..
+
+Note: Not applicable for TTC.</description>
+ <enumMember name="INTERNATIONAL_NETWORK">
+ <description>International Network.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SPARE">
+ <description>Spare (for international use only).</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="NATIONAL_NETWORK">
+ <description>National network.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="RESERVED_FOR_NATIONAL_USE">
+ <description>Reserved for national use.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bTfrHandling">
+ <description>Indicates how a TransFer Restricted (TFR) signal is handled.</description>
+ <enumMember name="HANDLE_AS_TFA">
+ <description>Treat the TransFer Restricted (FTR) signal as a TransFer Allowed (TFA) signal.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="IGNORED">
+ <description>Ignore the TransFer Restricted (TFR) signal.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="HANDLE_BY_STANDARD">
+ <description>Handle the incoming TRF messages according to the standard.</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bSioSpareBitsUse">
+ <description>Indicates whether the two spare bits in the Service Information Octet (SIO) should be treated as spare or for indicating a priority level. </description>
+ <enumMember name="SPARE">
+ <description>The two spare bits in the SIO are treated as spare.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="PRIO">
+ <description>The two spare bits in the SIO are to be used for indicating a priority level.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bItuVersion">
+ <description>Indicates which version of the ITU standard.</description>
+ <enumMember name="ITU_T_88">
+ <description>ITU-T -88.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ITU_T_03_93">
+ <description>ITU-T 03/93.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="ITU_T_07_96">
+ <description>ITU-T 07/96</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp3bSpAnsiTimerData">
+ <description>ANSI timers for MTP3bSpAnsi. Timervalues in 1/10 s (deciseconds).</description>
+ <structMember name="timerT1">
+ <description>Delay to avoid message mis-sequencing on changeover.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Timer for waiting for a COO or a COA.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Delay to avoid message mis-sequencing on a time controlled diversion change back.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4">
+ <description>Timer for waiting for CBA, first attempt.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Timer for waiting for CBA, second attempt
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Timer for delay to avoid message mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT8">
+ <description>Timer for delay to prohibit sending of TFP messages via the response method. This is a STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT10">
+ <description>Timer for waiting to repeat sending of RST periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT12">
+ <description>Waiting for uninhibit acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT13">
+ <description>Timer for waiting for force uninhibit.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT14">
+ <description>Timer for waiting for inhibition acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT15">
+ <description>Timer waiting to start signaling route set congestiontest. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test".
+
+Guiding value 20 - 30.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT16">
+ <description>Timer waiting for route set congestion status update. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test"
+
+Guiding value 14 - 22.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>14</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT17">
+ <description>Delay to avoid oscillation of initial alignment failure and link restart.
+
+The value for this timer should be less than the value for timerT2.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTBsnt">
+ <description>Waiting for BSNT value from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTRetrieval">
+ <description>Timer for waiting for completion of buffer retrieval from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTStart">
+ <description>Timer for retransmission of DL_START_req if no answer received. Started when timerT17 expires. (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTc">
+ <description>Controlling the period a route set is considered congested when a Transfer Controlled message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT30">
+ <description>Timer to limit sending of TFPs and TFRs in response to unexpected TRA and TRW. This timer is specific for STP functionality and is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT25">
+ <description>Delay extension timer invoked on reciept of a Traffic Restart Waiting message from an adjacent SP which is restarting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT26">
+ <description>Controlling the periodic resend of Traffic Restart Waiting messages during restart of the local node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>120</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT27">
+ <description>Timer enforcing a minimum node unavailablility period during MTP restart.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT28">
+ <description>Delay timer controlling a timed reaction of the restart of an adjacent node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT29">
+ <description>Timer controlling the response of the receipt of Traffic Restart messages from an adjacent node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT20">
+ <description>Controlling the periodic resend of Local Inhibit Change Message.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT21">
+ <description>Controlling the periodic resend of Remote Inhibit Test Message.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT22">
+ <description>Delay on commencement of MTP Restart to allow the node to rebuild an accurate routing table based on messages for adjacent nodes.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT23">
+ <description>Supervision timer for routing updates on MTP Restart.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>40</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT31">
+ <description>Timer controlling the detection of false link congestion.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTDlack">
+ <description>Timer pending an acknowledge from the network layer for a DL_ACK_REQ.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSltm">
+ <description>Timer for sending SLTM periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSlta">
+ <description>Supervision timer for SLTA message (time within SLTA should arrive).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTack">
+ <description>Timer used for message acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaPeriodicAudit">
+ <description>Timer used for audit procedure.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT1">
+ <description>Delay to avoid mis-sequencing of messages when an association fails.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT3">
+ <description>Delay to avoid mis-sequencing of messages when an association becomes active.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT6">
+ <description>Delay to avoid mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT8">
+ <description>Delay to prohibit sending of DUNA messages via the response method.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT40">
+ <description>Delay to avoid message mis-sequencing on controlled/forced rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT41">
+ <description>Timer controlloing the traffic activation delay during restart phase.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT42">
+ <description>The forever interval period for trying association after an unsiccessfull trial.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTc">
+ <description>Timer controlling the period a route set is considered congested when a SCON message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTassocack">
+ <description>Timer used for SCTP_ASSOCIATE_REQ message acknowledgement. This is the maximum time to wait for the SCTP_COMMUP_IND mesage before considering it to be an error.
+It should be longer than the time a message spends to reach the most distant destination, be processed and returned.</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp3bSpTtcTimerData">
+ <description>TTC timers for MTP3bSpTtc. Timervalues in 1/10 s (deciseconds).</description>
+ <structMember name="timerT1">
+ <description>Delay to avoid message mis-sequencing on changeover.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Timer for waiting for a COO or a COA.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Delay to avoid message mis-sequencing on a time controlled diversion change back.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4">
+ <description>Timer for waiting for CBA, first attempt.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Timer for delay to avoid message mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT8">
+ <description>Timer for delay to prohibit sending of TFP messages via the response method. This is a STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT10">
+ <description>Timer for waiting to repeat sending of RST periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT17">
+ <description>Delay to avoid oscillation of initial alignment failure and link restart.
+
+The value for this timer should be less than the value for timerT2.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSrt">
+ <description>Timer pending a Signalling Route Test Acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTBsnt">
+ <description>Waiting for BSNT value from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTRetrieval">
+ <description>Timer for waiting for completion of buffer retrieval from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTStart">
+ <description>Timer for retransmission of DL_START_req if no answer received. Started when timerT17 expires. (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTc">
+ <description>Controlling the period a route set is considered congested when a Transfer Controlled message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT15">
+ <description>Timer waiting to start signaling route set congestiontest. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test".
+
+Guiding value 20 - 30.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT16">
+ <description>Timer waiting for route set congestion status update. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test"
+
+Guiding value 14 - 22.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>14</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTDlack">
+ <description>Timer pending an acknowledge from the network layer for a DL_ACK_REQ.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp3bSpAnsiPriorityData">
+ <description>Priority attributes for MTP3b SP of the ANSI standard.</description>
+ <structMember name="prioSlt">
+ <description>The prioSlt attribute sets the priority for the
+ Signalling Link Test Message and Acknowledge (SLTM / SLTA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCo">
+ <description>The prioCo attribute sets the priority for the ChangeOver Order and Acknowledge (COO/COA) or eXtended Change over Order and Acknowledge (XCO/XCA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet)
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCb">
+ <description>The prioCb attribute sets the priority for the
+ Change Back Declaration and Acknowledge (CBD / CBA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioEc">
+ <description>The prioEc attribute sets the priority for the
+Emergency Change over Order and Acknowledge (ECO / ECA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRst">
+ <description>The prioRst attribute sets the priority for the
+signalling Route Set Test (RST) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTra">
+ <description>The prioTra attribute sets the priority for the
+Traffic Restart Allowed signal (TRA) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioUpu">
+ <description>The prioUpu attribute sets the priority for the
+ User Part Unavailable (UPU) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioLink">
+ <description>The prioLink attribute sets the priority for link related messages when issued by the MTP3b itself. The messages are :
+
+Link INhibit (LIN), Link UNinhibit (LUN),
+Link Inhibit Denied (LID),
+Link Inhibit Acknowledge (LIA),
+Link Uninhibit Acknowledge (LUA),
+Link Forced Uninhibit (LFU),
+Link Local inhibit Test (LLT) and
+Link Remote inhibit Test (LRT)
+
+When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ </struct>
+
+ <struct name="Mtp3bSpTtcPriorityData">
+ <description>Priority attributes for MTP3b SP of the TTC standard.</description>
+ <structMember name="prioCo">
+ <description>The prioCo attribute sets the priority for the ChangeOver Order and Acknowledge (COO/COA) or eXtended Change over Order and Acknowledge (XCO/XCA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet)
+.</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCb">
+ <description>The prioCb attribute sets the priority for the
+ Change Back Declaration and Acknowledge (CBD / CBA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioEc">
+ <description>The prioEc attribute sets the priority for the
+Emergency Change over Order and Acknowledge (ECO / ECA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRst">
+ <description>The prioRst attribute sets the priority for the
+signalling Route Set Test (RST) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTfa">
+ <description>The prioTfa attribute sets the priority for the Transfer Allowed, TFA, messages.
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRt">
+ <description>The priority indicator used for indicating message priority for signalling route test messages (SRT/SRA).
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTfc">
+ <description>The priority indicator used for indicating the message prioirity for TFC.
+</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ </struct>
+
+ <enum name="Mtp3bSpPriorityLevel">
+ <description>Indicates the priority level for MTP 3.</description>
+ <enumMember name="LOWEST">
+ <description>Lowest priority setting.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="LOW">
+ <description>Low priority setting.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="HIGH">
+ <description>High priority setting.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="HIGHEST">
+ <description>Highest priority setting.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp3bSpChinaTimerData">
+ <description>China timers for MTP3bSpChina. Timervalues in 1/10 s (deciseconds).</description>
+ <structMember name="timerSlta">
+ <description>Supervision timer for SLTA message (time within SLTA should arrive).
+
+Timer T1 in ITU Q.707 standard.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerSltm">
+ <description>Timer for sending SLTM periodically.
+
+Timer T2 in ITU Q.707 standard.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT1">
+ <description>Delay to avoid message mis-sequencing on changeover.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT10">
+ <description>Timer for waiting to repeat sending of RST periodically.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>400</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT12">
+ <description>Waiting for uninhibit acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT13">
+ <description>Timer for waiting for force uninhibit.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT14">
+ <description>Timer for waiting for inhibition acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT17">
+ <description>Delay to avoid oscillation of initial alignment failure and link restart.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT18">
+ <description>Supervision timer for the first phase of a restarting STP. This is an STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).
+</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT19">
+ <description>Controlling the response of the receipt of a traffic restart message from an adjacent node.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>40</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT2">
+ <description>Timer for waiting for a COO or a COA.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT20">
+ <description>Overall MTP restart timer at the restarting MTP.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>40</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT21">
+ <description>Overall MTP restart timer at an adjacent signalling point to a restarting MTP.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT22">
+ <description>Local inhibit test timer.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT23">
+ <description>Remote inhibit test timer.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2500</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT3">
+ <description>Delay to avoid message mis-sequencing on a time controlled diversion change back.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT4">
+ <description>Timer for waiting for CBA, first attempt.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT5">
+ <description>Timer for waiting for CBA, second attempt
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT6">
+ <description>Timer for delay to avoid message mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>9</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT8">
+ <description>Timer for delay to prohibit sending of TFP messages via the response method. This is a STP specific parameter, which is ignored when configured as an endpoint.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTBsnt">
+ <description>Waiting for BSNT value from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTc">
+ <description>Controlling the period a route set is considered congested when a Transfer Controlled message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTRetrieval">
+ <description>Timer for waiting for completion of buffer retrieval from MTP-2 or SAAL (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTStart">
+ <description>Timer for retransmission of DL_START_req if no answer received. Started when timerT17 expires. (not standard timer).
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>1200</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTack">
+ <description>Timer used for message acknowledgement.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaPeriodicAudit">
+ <description>Timer used for audit procedure.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT1">
+ <description>Delay to avoid mis-sequencing of messages when an association fails.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT3">
+ <description>Delay to avoid mis-sequencing of messages when an association becomes active.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT6">
+ <description>Delay to avoid mis-sequencing on controlled rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT8">
+ <description>Delay to prohibit sending of DUNA messages via the response method.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT40">
+ <description>Delay to avoid message mis-sequencing on controlled/forced rerouting.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT41">
+ <description>Timer controlloing the traffic activation delay during restart phase.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaT42">
+ <description>The forever interval period for trying association after an unsiccessfull trial.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTc">
+ <description>Timer controlling the period a route set is considered congested when a SCON message has been received.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT15">
+ <description>Timer waiting to start signaling route set congestiontest. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test".
+
+Guiding value 20 - 30.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerT16">
+ <description>Timer waiting for route set congestion status update. Used only if the Route Set
+Congestion Test Selectoption is set to "Use Route Set Congestion test"
+
+Guiding value 14 - 22.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>14</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerTDlack">
+ <description>Timer pending an acknowledge from the network layer for a DL_ACK_REQ.
+
+Unit: deciseconds (1/10 second).</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="timerM3uaTassocack">
+ <description>Timer used for SCTP_ASSOCIATE_REQ message acknowledgement. This is the maximum time to wait for the SCTP_COMMUP_IND mesage before considering it to be an error.
+It should be longer than the time a message spends to reach the most distant destination, be processed and returned.</description>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>20</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <enum name="Mtp3bNetworkIndTtc">
+ <description>Indicates which type of geographical network, e.g. national, international, etc..
+
+Note: Only for TTC.</description>
+ <enumMember name="NATIONAL_NETWORK">
+ <description>National network.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SPARE">
+ <description>Spare (for international use only).</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="INTERNATIONAL_NETWORK">
+ <description>International Network.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="SPARE_1">
+ <description>Spare.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bUsageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).</description>
+ <enumMember name="IDLE">
+ <description>idle, the Mtp3bSl carries no traffic.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="ACTIVE">
+ <description>active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="BUSY">
+ <description>busy, the Mtp3bSl is working but is congested (traffic is routed on other links).</description>
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Mtp3bProceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized</description>
+ <enumMember name="NOT_INITIALIZED">
+ <description>0 - not initialized.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="INITIALIZED">
+ <description>1 - initialized.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="NodeBehaviourType">
+ <description>The nodeBehaviorType attribute represents the MTP3b node type.</description>
+ <enumMember name="SEP">
+ <description>Signaling End Point.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="SEP_STP">
+ <description>Signalling Transfer and End Point, i.e the signalling point is of both type Signalling End Point (SEP) and Signalling Transfer Point (STP).</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="SGW_STP_SEP">
+ <description>Signaling GateWay, Signaling End Point and Signalling Transfer Point, i.e the signalling point is of both type Signalling Transfer Point (STP), Signaling End Point (SEP) and Signaling GateWay (SGW).</description>
+ <value>5</value>
+ </enumMember>
+ </enum>
+
+ <struct name="Mtp3bSpChinaPriorityData">
+ <description>Priority attributes for MTP3b SP of the China standard.</description>
+ <structMember name="prioSlt">
+ <description>The prioSlt attribute sets the priority for the
+ Signalling Link Test Message and Acknowledge (SLTM / SLTA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCo">
+ <description>The prioCo attribute sets the priority for the ChangeOver Order and Acknowledge (COO/COA) or eXtended Change over Order and Acknowledge (XCO/XCA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet)
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioCb">
+ <description>The prioCb attribute sets the priority for the
+ Change Back Declaration and Acknowledge (CBD / CBA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioEc">
+ <description>The prioEc attribute sets the priority for the
+Emergency Change over Order and Acknowledge (ECO / ECA) messages when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioRst">
+ <description>The prioRst attribute sets the priority for the
+signalling Route Set Test (RST) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioTra">
+ <description>The prioTra attribute sets the priority for the
+Traffic Restart Allowed signal (TRA) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioUpu">
+ <description>The prioUpu attribute sets the priority for the
+ User Part Unavailable (UPU) message when issued by the MTP3b itself. When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ <structMember name="prioLink">
+ <description>The prioLink attribute sets the priority for link related messages when issued by the MTP3b itself. The messages are :
+
+Link INhibit (LIN), Link UNinhibit (LUN),
+Link Inhibit Denied (LID),
+Link Inhibit Acknowledge (LIA),
+Link Uninhibit Acknowledge (LUA),
+Link Forced Uninhibit (LFU),
+Link Local inhibit Test (LLT) and
+Link Remote inhibit Test (LRT)
+
+When a message is transferred from the MTP3b the message priority uses the two spare bits in the SIO (Service Information Octet).
+
+lowest:0
+low:1
+high:2
+highest:3</description>
+ <enumRef name="Mtp3bSpPriorityLevel">
+ <defaultValue>HIGHEST</defaultValue>
+ </enumRef>
+ </structMember>
+ </struct>
+
+ <enum name="Mtp3bRouteType">
+ <description>The type of Signalling Route.</description>
+ <enumMember name="TDM_ATM">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="IP">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="HomingState">
+ <enumMember name="SINGLE_HOMED_1">
+ <description>Single-homed with ipAddress1.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SINGLE_HOMED_2">
+ <description>Single-homed with ipAddress2.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="MULTI_HOMED">
+ <description>Multihomed association with ipAddress1 and
+ipAddress2
+</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RouteState">
+ <description>The state of the signaling route.</description>
+ <enumMember name="NOT_BLOCKED">
+ <description>The signaling route is not blocked.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="BLOCKED">
+ <description>The signaling route is blocked.</description>
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="WorkingMode">
+ <enumMember name="hostMode">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="routerMode">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="OspfMetricType">
+ <description>Open Shortest Path First metric type.</description>
+ <enumMember name="comparableCost">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="nonComparable">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="RouteType">
+ <description>The types of the routes found in the IP routing table.</description>
+ <enumMember name="INET_RTPROTO_OTHER">
+ <description>The source of information is unknown.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="INET_RTPROTO_LOCAL">
+ <description>Route created from local configuration data (both static and interface routes).
+Each interface created gets an entry in the routing table of the RO.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="INET_RTPROTO_NETMGMT">
+ <description>Route added by SNMP.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="INET_RTPROTO_OSPF">
+ <description>Route added by OSPF.</description>
+ <value>13</value>
+ </enumMember>
+ <enumMember name="INET_RTPROTR_ICMP">
+ <description>Route added by ICMP redirect message.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <exception name="RouteNotFoundException">
+ <description>Invalid IP route has been given as a parameter to an action.</description>
+ <exceptionParameter name="routeNotFound">
+ <description>Exception message.</description>
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <exception name="InvalidRouteException">
+ <description>Invalid IP route has been given as a parameter to an action.</description>
+ <exceptionParameter name="invalidRoute">
+ <dataType>
+ <string/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+ <enum name="MauDuplexMode">
+ <enumMember name="HALF_DUPLEX">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="FULL_DUPLEX">
+ <value>1</value>
+ </enumMember>
+ </enum>
+
+ <enum name="ControllerMode">
+ <description>The controller mode of a physical interface.</description>
+ <enumMember name="CONTROLLER_E1">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="CONTROLLER_T1">
+ <value>2</value>
+ </enumMember>
+ <enumMember name="CONTROLLER_J1">
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <struct name="OspfAreaRange">
+ <description>ipAddress - the subnet address of the range.
+subnetMask - IP subnet mask of the range to be added.
+advertise - indicates whether the area range should be advertised into OSPF.
+</description>
+ <structMember name="ipAddress">
+ <string/>
+ </structMember>
+ <structMember name="subnetMask">
+ <description>Note! The subnet has to be contigious. That is, has the LSB set to 0 (zero).
+
+Example:
+
+255.255.255.X
+
+Contiguous subnet mask:
+11111111.11111111.11111111.11111110 (X = 254)
+11111111.11111111.11111111.11111100 (X = 252)
+
+Not-contiguous subnet mask:
+11111111.11111111.11111111.11111010 (X = 250)
+</description>
+ <string/>
+ </structMember>
+ <structMember name="advertise">
+ <boolean/>
+ </structMember>
+ </struct>
+
+ <struct name="RoutingTableEntry">
+ <description>IP routing table entry.</description>
+ <structMember name="destinationIpAddr">
+ <description>The destination IP address.</description>
+ <string/>
+ </structMember>
+ <structMember name="destinationNetworkMask">
+ <description>The destination IP network mask.</description>
+ <string/>
+ </structMember>
+ <structMember name="nextHopIpAddr">
+ <description>The next hop IP address.</description>
+ <string/>
+ </structMember>
+ <structMember name="routeMetric">
+ <description>The route metric.</description>
+ <long/>
+ </structMember>
+ <structMember name="routeType">
+ <description>The route type.</description>
+ <enumRef name="RouteType">
+ </enumRef>
+ </structMember>
+ <structMember name="interfaceName">
+ <description>The interface name.</description>
+ <string/>
+ </structMember>
+ <structMember name="redistribute">
+ <description>Indicates if the route should be redistributed.</description>
+ <boolean/>
+ </structMember>
+ <structMember name="active">
+ <description>Indicates if the route is active.</description>
+ <boolean/>
+ </structMember>
+ </struct>
+
+ <enum name="AutoConfigurationMode">
+ <description>Denotes whether the autoConfiguration mode for the IpAccessHost is turned on or off.</description>
+ <enumMember name="ON">
+ <value>1</value>
+ </enumMember>
+ <enumMember name="OFF">
+ <value>2</value>
+ </enumMember>
+ </enum>
+
+ <enum name="Aal5TpSelectionModes">
+ <description>In case 'NO_PREFERENCE', 'LOCAL_MP_SELECT_VCC_AT_LINK_UP', LOCAL_MP_PEER_SELECTION_VCC' or 'LOCAL_MP_ACTIVE_RESELECTION' is selected the IpAtmLink MO will prefer Aal5TpVccTp on local MP (i.e. Aal5TpVccTp executing on the same MP as the IpAtmLink), but other Aal5TpVccTp will be accepted if needed.
+
+In case 'ONLY_LOCAL_MP' is selected, the ipAtmLink (Inet Link) will consider Aal5TpVccTp residing on other MPs as a malfunction and discard the usage of them. No InvArp sending will be performed on them and all incomming trafic on them will be discarded. If no local Aal5TpVccTp exists the operational state of the link will be changed to disabled.</description>
+ <enumMember name="NO_PREFERENCE">
+ <value>0</value>
+ </enumMember>
+ <enumMember name="LOCAL_MP_SELECT_VCC_AT_LINK_UP">
+ <description>Prefer termination on local MP, select Vcc when link goes up.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="LOCAL_MP_PEER_SELECTION_VCC">
+ <description>Prefer termination on local MP, follow peer selection of Vcc.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="LOCAL_MP_ACTIVE_RESELECTION">
+ <description>Prefer termination on local MP, active reselection to new Aal5TpVccTp as soon as a better choice exists.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="ONLY_LOCAL_MP">
+ <description>Restricted to local MP, follow peer selection if termination is on local MP.
+</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AlarmReport">
+ <description>Alarm report for the Virtual path connection termination point.
+RDI - Remote defect indication
+LOC - Loss of continuity
+AIS - Alarm indication signal</description>
+ <enumMember name="ALARM_LOC">
+ <description>For alarms of type Loss of continuity.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="ALARM_LOC_RDI">
+ <description>For alarms of type Loss of continuity and Remote defect indication.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="ALARM_AIS_LOC">
+ <description>For alarms of type Alarm indication signal and Loss of continuity.</description>
+ <value>6</value>
+ </enumMember>
+ <enumMember name="ALARM_AIS_RDI_LOC">
+ <description>For alarms of type Alarm indication signal, Remote defect indication and Loss of continuity.</description>
+ <value>7</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AtmCounterMode">
+ <enumMember name="PM_MODE_OFF">
+ <description>Performance monitoring is turned off. PM counters give irrelevant values.</description>
+ <value>0</value>
+ </enumMember>
+ <enumMember name="PM_MODE_ONLYCOUNT">
+ <description>Performance monitoring counters are active
+</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="PM_MODE_FPM">
+ <description>FPM, Forward Performance Monitoring activated.
+
+Performance monitoring counters are active
+</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="PM_MODE_BR">
+ <description>Backward reporting, BR, cells are generated.
+
+Performance monitoring counters are active
+</description>
+ <value>4</value>
+ </enumMember>
+ <enumMember name="PM_MODE_FPM_BR">
+ <description>FPM, Forward Performance Monitoring activated.
+
+Backward reporting, BR, cells are generated.
+
+Performance monitoring counters are active
+</description>
+ <value>6</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AtmNomPmBlkSize">
+ <description>Nominal performance monitoring, PM, blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.</description>
+ <enumMember name="NOM_PM_BLKSIZE_2_7">
+ <description>Nominal performance monitoring, PM, block size, 2e7 (2 to the power of 7).</description>
+ <value>128</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_8">
+ <description>Nominal performance monitoring, PM, block size, 2e8 (2 to the power of 8).</description>
+ <value>256</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_9">
+ <description>Nominal performance monitoring, PM, block size, 2e9 (2 to the power of 9).</description>
+ <value>512</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_10">
+ <description>Nominal performance monitoring, PM, block size, 2e10 (2 to the power of 10).</description>
+ <value>1024</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_11">
+ <description>Nominal performance monitoring, PM, block size, 2e11 (2 to the power of 11).</description>
+ <value>2048</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_12">
+ <description>Nominal performance monitoring, PM, block size, 2e12 (2 to the power of 12).</description>
+ <value>4096</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_13">
+ <description>Nominal performance monitoring, PM, block size, 2e13 (2 to the power of 13).</description>
+ <value>8192</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_14">
+ <description>Nominal performance monitoring, PM, block size, 2e14 (2 to the power of 14).</description>
+ <value>16384</value>
+ </enumMember>
+ <enumMember name="NOM_PM_BLKSIZE_2_15">
+ <description>Nominal performance monitoring, PM, block size, 2e15 (2 to the power of 15).</description>
+ <value>32768</value>
+ </enumMember>
+ </enum>
+
+ <enum name="ServiceCategory">
+ <enumMember name="SERVICE_CATEGORY_CBR">
+ <description>Service category Constant Bit rate, CBR.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="SERVICE_CATEGORY_UBR">
+ <description>Service category Unspecified Bit rate, UBR.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="SERVICE_CATEGORY_UBR_PLUS">
+ <description>Service category Unspecified Bit rate+, UBR+. UBR+ guarantees a certain bandwidth. If higher bandwidth is used it will be handled as UBR.</description>
+ <value>3</value>
+ </enumMember>
+ </enum>
+
+ <enum name="AtmQos">
+ <description>ATM's Quality of Service classes.
+
+The ATM layer system provides four QoS classes, numbered 1 to 4, where CLASS_ONE gives the best QoS in regards to Cell Loss Ratio &lt;CLR&gt; and Cell Delay Variation &lt;CDV&gt; and CLASS_FOUR doesn't give any QoS guarantees. CLASS_ONE and CLASS_TWO are the only classes applicable for real time traffic.</description>
+ <enumMember name="CLASS_ONE">
+ <description>CDV &lt; 1 ms (milliseconds), CLR &lt; 10e-8. Typically used by timing unit.</description>
+ <value>1</value>
+ </enumMember>
+ <enumMember name="CLASS_TWO">
+ <description>CDV &lt; 1 ms, CLR &lt; 10e-7. Typically used for speech.</description>
+ <value>2</value>
+ </enumMember>
+ <enumMember name="CLASS_THREE">
+ <description>CLR &lt; 10e-5. Typically used for signalling.</description>
+ <value>3</value>
+ </enumMember>
+ <enumMember name="CLASS_FOUR">
+ <description>Typically used for IP.</description>
+ <value>4</value>
+ </enumMember>
+ </enum>
+
+ <struct name="ValueOfUnex">
+ <description>The attributes in this struct represents the ATM header, (vpi, vci, pti), of the last recieved unexpected cell.</description>
+ <structMember name="vpi">
+ <description>The ATM header vpi.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="vci">
+ <description>The ATM header vci.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ <structMember name="pti">
+ <description>The ATM header pti.</description>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </structMember>
+ </struct>
+
+ <class name="TransportNetwork">
+ <description>This MO structures the transport network of the managed element. It is created automatically and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, TransportNetwork=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="TransportNetworkId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="getAal5ForNniSaal">
+ <description>This action returns a sequnce of Aal5TpVccTp MOs that is unreserved and executes on an MP.
+
+Also the following condition has to be fullfilled:
+
+MinAal5Sdu = min (fromUserMaxSduSize, toUserMaxSduSize)
+
+roundedDownSdu = (MinAal5Sdu - (MinAal5Sdu modulo 4) +4)
+
+roundedDownSdu &gt; low boundry for maxSduSize (in NniSaalTp)
+
+Note that the values for fromUserMaxSduSize and toUserMaxSduSize is the actual values set in the Aal5TpVccTp MO.
+Also note that the attributes minAal5Sdu and roundedDownSdu is used internaly in this action.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ </action>
+ <action name="getAal5ForUniSaal">
+ <description>This action returns a sequnce of Aal5TpVccTp MOs that is unreserved and executes on an MP.
+
+Also the following condition has to be fullfilled:
+
+MinAal5Sdu = min (fromUserMaxSduSize, toUserMaxSduSize)
+
+roundedDownSdu = (MinAal5Sdu - (MinAal5Sdu modulo 4) +4)
+
+roundedDownSdu &gt; low boundry for maxSduSize (in UniSaalTp)
+
+Note that the values for fromUserMaxSduSize and toUserMaxSduSize is the actual values set in the Aal5TpVccTp MO.
+Also note that the attributes minAal5Sdu and roundedDownSdu is used internaly in this action.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ </action>
+ <action name="getAal2PathForAal2Pdu">
+ <description>This action returns a sequence of all unreserved Aal2PathVccTp's that have an Aal2PathId that has not been
+used by another Aal2PathDistributionUnit under the same parent (Aal2Ap).
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ <parameter name="aal2Ap">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="getRpuForAal2Pdu">
+ <description>This action returns a sequence of all ReliableProgramUniters that has not reached the maximun number of possible reservations
+and has not already been used by other Aal2PathDistributionUnit MO's (if exists) under the same parent (Aal2Ap MO).
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ <parameter name="aal2Ap">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="getUnreservedPluginUnits">
+ <description>This action returns a sequence of PlugInUnits that is unreserved.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ </action>
+ <action name="getDs0BundlesForMtp2">
+ <description>This action returns a sequence of Ds0Bundle MOs that is unreserved and only has one (1) timeSlot set in the listOfTimeSlots.
+The attribute tdmMode in these Ds0Bundles must be enabled.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="Slot">
+ <description>The Slot MO is used to represent a slot in a subrack. A slot can hold a plug-in-unit, a board, (represented by PlugInUnit MOs).
+
+The number of slots in a subrack is specified when defining the subrack.
+
+The system will automatically create the right number of Slot MOs in the subrack at creation of the Subrack MO.
+This MO cannot be deleted by an operator.
+
+The local distinguished names of this MO's are select with identity Slot=1 in the leftmost slot with incremental numbering towards the right in the subrack.. </description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>A user friendly name associated to the managed object
+
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="slotState">
+ <description>Gives the state of the slot.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="SlotState">
+ <defaultValue>free</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="slotNumber">
+ <description>The number of the position from the left side, starting from 1.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long/>
+ </dataType>
+ </attribute>
+ <attribute name="SlotId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="productData">
+ <description>This product data describes the plug-in-unit that is presently inserted. The information is only available when slotState = used.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <structRef name="OperProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="upgradeGroupId">
+ <description>The upgradeGroupId is able to group a number of PIUs, all in the group can be upgraded at the same time.
+
+If upgradeGroupTypeName is "", this attribute is not used.
+</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="upgradeGroupTypeName">
+ <description>The upgradeGroupTypeName, together with the upgradeGroupId, define an upgrade group.
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ManagedObject">
+ <description>The Managed Object MO is not part of the model. It is only used to have valid reference types for certain attributes. </description>
+ <attribute name="ManagedObjectId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="getType">
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="getId">
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="getParent">
+ <returnType>
+ <moRef name="ManagedObject"/>
+ </returnType>
+ </action>
+ <action name="getChildren">
+ <returnType>
+ <long/>
+ </returnType>
+ </action>
+ <action name="getFullDistinguishedName">
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="delete">
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="MoHasChildrenException"/>
+ <raisesException name="MoReservedByOtherUserException"/>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ <raisesException name="UndeletableMoException"/>
+ <raisesException name="TransactionRequiredException"/>
+ </action>
+ <action name="getLocalDistinguishedName">
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="create">
+ <returnType>
+ <moRef name="ManagedObject"/>
+ </returnType>
+ <raisesException name="MoNameAlreadyTakenException"/>
+ <raisesException name="AttrMissingAtCreateException"/>
+ <raisesException name="AttrNotSettableAtCreateException"/>
+ <raisesException name="IllegalParentException"/>
+ <raisesException name="MoCardinalityViolationException"/>
+ <raisesException name="NoSuchAttributeException"/>
+ <raisesException name="MoCanNotBeCreatedException"/>
+ <raisesException name="NoSuchFieldException"/>
+ <raisesException name="NotHandledAttributeTypeException"/>
+ <raisesException name="WrongAttributeTypeException"/>
+ <raisesException name="ValueOutOfRangeException"/>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ <raisesException name="TransactionRequiredException"/>
+ <raisesException name="IpException"/>
+ <raisesException name="IpFormatException"/>
+ <raisesException name="EquipException"/>
+ <raisesException name="AttrValueNotUniqueException"/>
+ <raisesException name="MaxNumberExceededException"/>
+ <raisesException name="MoReservedNotDeletableException"/>
+ </action>
+ </class>
+
+ <class name="VclTp">
+ <description>This MO is used to represent the termination of an external VC link in the node.
+
+Note that a maximum of 10 000 MO of this kind may be configured in a node.
+
+Note! The performance monitoring counters in the VclTp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="externalVci">
+ <description>Virtual Channel Idenitifier, VCI, value for this Virtual Channel Link, VCL.
+
+Range: 32 - 65535.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>32</min> <max>65535</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="atmTrafficDescriptorId">
+ <description>Reference to the AtmTrafficDescriptor profile.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="AtmTrafficDescriptor"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>User that have reserved this VclTp.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the VclTp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmReceivedAtmCells">
+ <description>Performance monitoring counter for number of received ATM cells.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTransmittedAtmCells">
+ <description>Performance monitoring counter for number of transmitted ATM cells.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the VclTp.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="VclTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="eteLoopBack">
+ <description>Used by VclTp to inforce a Virtual Channel end-to-end loopback.
+false=Failed, true=Succeded.
+
+Note! This action requires a transaction.
+
+</description>
+ <returnType>
+ <boolean/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="ManagedElement">
+ <description>The Managed Element MO is the top MO in the MOM. A management application will communicate with the Managed Element MO for the purpose of monitoring it and controlling it.
+
+The ManagedElement MO is automatically created and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="site">
+ <description>This attribute gives information about geographical location (e.g. place name).</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>255</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="logicalName">
+ <description>This attribute gives a logical name of a site.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>255</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productType">
+ <description>This attribute describes the product type and is always set to the value "Node".</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>Node</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productName">
+ <description>This attribute describes the implemented functionality. </description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>12</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productNumber">
+ <description>This attribute uniquely identifies the product (e.g. ROF123).</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>24</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productRevision">
+ <description>This attribute identifies the version of the product (e.g. R2A).</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>7</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ManagedElementId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>Restart the node with an unconditional reload.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="restartRank">
+ <in/>
+ <dataType>
+ <enumRef name="RestartRank">
+ </enumRef>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="Equipment">
+ <description>This Managed Object is used as a structural element for the network element, i.e. it only acts as a container for other MO:s. This MO structures the equipment of the network element.
+
+The local distinguished name of this MO is ManagedElement=1, Equipment=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="EquipmentId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Subrack">
+ <description>This MO is used to represent a subrack.
+</description>
+ <attribute name="userLabel">
+ <description>A free tag that a user can associated to the this managed object. The value has no relevance for the managed system.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="switchModule">
+ <description>A reference to a SwitchModule ManagedObject, from which the SwitchModule number can be retrived. That number describes how the subrack is connected to the node, i.e. how the subrack�s cables are connected to the hub subrack. (The hub subrack has switch module number �0�).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="SwitchModule"/>
+ </dataType>
+ </attribute>
+ <attribute name="subrackType">
+ <description>There can only be one hub subrack in the node. The hub subrack is used to control switching and synchronization for the complete node.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="SubrackType">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="productType">
+ <description>This attribute describes the product type and is always set to the value "HW".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>"HW"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeProductData">
+ <description>This product data describes the subrack that is configured to be installed.
+
+</description>
+ <mandatory/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="subrackPosition">
+ <description>The position of this subrack within a cabinet.
+The purpose of this attribute is to help an operator locate the source of an error by letting the system put this
+information in alarms. The system does not use this information in any other way i.e. it does not affect the
+operation of the system.
+The subrack position is an integer (1-n) stating the cabinet Id, starting from the left and a letter (A-Z) stating
+the Subrack vertical position starting from the ground, e.g. 5C.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="cabinetPosition">
+ <description>The position of the cabinet (within a group of other cabinets) in which this subrack is placed.
+The purpose of this attribute is to help an operator locate the source of an error by letting the system put this information in alarms. The system does not use this information in any other way i.e. it does not affect the operation of the system.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SubrackId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="numberOfSlots">
+ <description>Defines the number of slot in the subrack. The default value is 28.
+
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>28</max>
+ </range>
+ <defaultValue>28</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalProductData">
+ <description>The operational product data describes the subrack that is actually installed.
+
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <structRef name="OperProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>A reference to the SwAllocation MO that has reserved this Subrack for Fan MO upgrades..
+The attribute is set/cleared by internal actions.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <action name="removeSlots">
+ <description>Removes the given number of Slot MOs from the model. The Slots with the highest slotNumber are removed. After the action no Slot will have apn = 0.
+The attribute numberOfSlots will be udated.
+
+If there is a child MO the action will fail and the MOHasChildrenException is thrown.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="numberOfSlotsToRemove">
+ <description>The number of slots to remove.</description>
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="LoadModule">
+ <description>This MO is used to represent software installed in the file system.
+
+LoadModule MO can represent files with executable code, files with text information
+(COI) or directories in Cello file system.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.
+
+Note! In order for a program to be reliable the following conditions must be fulfilled:
+
+1. The attribute 'loaderType' must be set to 'OseLoader'.
+2. The attribute 'oseProgramLoadClass' must be set to a value &gt; 100.
+3. The program must execute on a MP (Main Processor).
+
+</description>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productData">
+ <description>Product information data.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="loadModuleFilePath">
+ <description>The path to this load module in the file system, including the file name.
+
+Example: /c/load_modules/CXC112874R1A01
+where /c/load_modules/ is the directory and CXC112874R1A01 is the file name.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="loaderType">
+ <description>The type of the program loader.
+
+Note! This corresponds to LoaderName in the Upgrade Control File (UCF).</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="LoadModuleLoaderType">
+ <defaultValue>OseLoader</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="otherLoaderName">
+ <description>This attribute must have a value if the loaderType attribute equals other.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="preLoad">
+ <description>A recommendation to the system to (if possible) cache this load module close to where its program(s) execute(s), e.g. in a flash file system. The purpose of this attribute is to enable faster loading at restart of programs referring to this load module.
+
+
+
+
+</description>
+ <dataType>
+ <enumRef name="LoadModulePreLoadType">
+ <defaultValue>no</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="fileFormat">
+ <description>The file format (RPDOUT, html, java, fpga, ...).</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="oseProgramLoadClass">
+ <description>Specifies in which load phase programs of this load module should be started.
+
+Note: If the LoadModule is a java archive file (.jar) it will be loaded in the load phase of the java machine rather than according to its own oseProgramLoadClass.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="LoadClass">
+ <defaultValue>application</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reliableProgramLabel">
+ <description>Reliable program identity.
+Compare this to the reliableProgramLabel in ReliableProgramUniter MO.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="isDirectory">
+ <description>Indicates if the load module is a file or directory.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="oseProgramPoolSize">
+ <description>This attribute sets the size of the program pool size. In the referenced loadModule there is
+possible to set this value at create.
+This value will then be fetched by program and used at create if no value is submitted at
+create of the program Mo.
+The referenced load module has a default size defined at compile time which is used if no
+value is submitted at create of loadModule or the program Mo.
+
+Note! The value of this attribute is overwritten during Software Upgrade.
+
+Unit is byte.
+
+</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="oseProgramHeapSize">
+ <description>This attribute sets the size of the program heap size. In the referenced loadModule there is possible to set this value at create. This value will then be fetched by program and used at create if no value is submitted at create of the program Mo.
+The referenced load module has a default size defined at compile time which is used if no value is submitted at create of loadModule or the program Mo.
+
+Note! The value of this attribute is overwritten during Software Upgrade.
+
+Unit is byte.
+
+</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="programMustBeSingleton">
+ <description>Indicator whether the (OSE) program must be a singleton or not.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="moppletEntries">
+ <description>Contains all class that are to be initialised and started when the JVM restarts.
+Technical note: The class name must specify the full package and class name in standard Java syntax, e.g. "se.ericsson.cello.X" ; must implement the se.ericsson.cello.moframework.Mopplet interface and be found in this LoadModule.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <string>
+ <defaultValue/>
+ </string>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="LoadModuleId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByUpgradePackage">
+ <description>Indicates whether this MO has been reserved by the UpgradePackage MO or not.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Synchronization">
+ <description>This MO is used to administer synchronization references for the network synchronization function and to view the system clock state of Timing Unit boards.
+
+Synchronization can have 0 to 8 relations to other MOs. The only valid MOs where relations can exist are E1Physpathterm, J1Physpathterm, T1Physpathterm, Os155SpiTtp, TU Synchronization Reference, and ManagedObject (for the non-Cello RXI820 MO) MOs. Note that maximum number of relations to these MOs is 8 all together.
+
+The synchronization MO is automatically created and cannot be deleted.
+
+Note: An external ManagedObject that wishes to be connected to the Synchronization MO must implement the following interface se.ericsson.cello.equipment.SyncReservable!
+
+The local distinguished name of this MO is ManagedElement=1,TransportNetwork=1,Synchronization=1
+
+.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="degradationIsFault">
+ <description>Controls whether synchronization reference degradation (e.g. signal level degradation) is interpreted as a synchronization reference fault or not. Attribute value is only applicable for traffic carrying synchronization references</description>
+ <dataType>
+ <enumRef name="FaultCriteria">
+ <defaultValue>degrNotFault</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="systemClockA">
+ <description>State of system clock signal on Timing Unit A.
+Note that system clock generated by TU A (TU in slot 4) has higher priority than TU B (TU in slot 5) system clock, i.e. each device board uses system clocks according to this priority order.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="ClockState">
+ <defaultValue>unknownMode</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="systemClockB">
+ <description>State of system clock signal on Timing Unit B. Note that system clock generated by TU A (TU in slot 4) has higher priority than TU B (TU in slot 5) system clock, i.e. each device board uses system clocks according to this priority order.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="ClockState">
+ <defaultValue>unknownMode</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="syncReference">
+ <description>Set of synchronization reference physical resources. An MO reference to an TU synchronization reference MO implementation.
+A synchronization reference in added to the system by using action AddSyncRefResource.
+Note: if this attributes has value "Non-existing MO reference" then all the respective attributes of type sequence of 8 are not applicable.
+
+Note: The length of this sequence is always 8.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ <length>8</length>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="syncRefPriority">
+ <description>Synchronization reference priority.
+1 represents the highest and 8 the lowest priority. Every synchronization reference must have unique priority value. Value 0 means not applicable, that no synchronization with this priority is defined.
+This attribute is mandatory when adding a synchronization reference to the system (by using action addSyncRefResource).
+A priority value can be changed with the changeSyncRefPriority action provided that the priority is not already assigned to some other SyncRefResource.
+
+Note: The length of this sequence is always 8.</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long>
+ <range>
+ <min>0</min> <max>8</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ <length>8</length>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="syncRefActivity">
+ <description>Set of synchronization reference activity attributes.
+
+Note: The length of this sequence is always 8.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <enumRef name="RefActivity">
+ <defaultValue>inactive</defaultValue>
+ </enumRef>
+ <length>8</length>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="syncRefStatus">
+ <description>Set of synchronization reference status attributes.
+
+Note: The length of this sequence is always 8.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <enumRef name="RefState">
+ <defaultValue>failed</defaultValue>
+ </enumRef>
+ <length>8</length>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SynchronizationId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="systemClockRedundancy">
+ <description>Indicates if the node is redundant from Network Synchronization functions point of view.</description>
+ <dataType>
+ <enumRef name="SystemClockRedundancy">
+ <defaultValue>SYSTEM_CLOCK_USERS_USE_PLANE_A</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <action name="addSyncRefResource">
+ <description>This action adds one synchronization reference to the system. As a result of successful action, one set of attributes (attributes of type sequence of 8) is added to Synchronization MO.
+Parameters:
+syncReference: Managed object implementation, to which a mo-reference is to be added. See description of attribute SyncReference.
+syncPriority: Priority of synchronization reference. Each synchronization reference must have unique priority value, this must be checked by synchronization MO.
+
+Description of exceptions:
+- AlreadyRegistered: this reference is already registered
+- MaxNoOfRefRegistered: maximum number (8) of synchronization references already present
+- PriorityAlreadyInUse: syncPriority is identical with an existing synchronization reference priority
+- PriorityOutOfRange: invalid syncPriority value
+- InvalidMoReference: invalid syncReference for registration as a synchronization reference (invalid MO type)
+- NotPermitted: syncReference does not allow SyncReserve to be performed
+
+Note: An external ManagedObject that wishes to be connected to the Synchronization MO must implement the following interface se.ericsson.cello.equipment.SyncReservable!
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="syncReference">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <parameter name="syncPriority">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="AlreadyRegisteredException"/>
+ <raisesException name="MaxNoOfRefRegisteredException"/>
+ <raisesException name="PriorityAlreadyInUseException"/>
+ <raisesException name="PriorityOutOfRangeException"/>
+ <raisesException name="InvalidMoReferenceException"/>
+ <raisesException name="NotPermittedException"/>
+ </action>
+ <action name="removeSyncRefResource">
+ <description>This action removes one synchronization reference that has previously been added.
+(In future releases, this action should include a check whether the synchronization reference to be removed is the only existing synchronization reference. In that case, the user is asked for a confirmation to remove the last synchronization reference.)
+Parameters:
+syncReference: Managed object implementation, to which a mo-reference currently exists, but is now to be removed. See description of attribute SyncReference.
+
+Description of exceptions:
+- NotRegistered: synchronization reference is not registered
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="syncReference">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <raisesException name="NotRegisteredException"/>
+ </action>
+ <action name="changeSyncRefPriority">
+ <description>This action changes the synchronization priority of one previously registered synchronization reference resource.
+Parameters:
+syncReference: Managed object implementation, for which the synchronization priority is to be changed. See description of attribute syncReference.
+syncPriority: The new priority of synchronization reference. Each synchronization reference must have unique priority value, this must be checked by synchronization MO.
+
+Description of exceptions:
+- PriorityAlreadyInUse: syncPriority is identical with an existing synchronization reference priority
+- PriorityOutOfRange: invalid syncPriority value
+- NotRegistered: synchronization reference is not registered
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="syncReference">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <parameter name="syncPriority">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="PriorityAlreadyInUseException"/>
+ <raisesException name="PriorityOutOfRangeException"/>
+ <raisesException name="NotRegisteredException"/>
+ </action>
+ <action name="resetLossOfTracking">
+ <description>This action resets the detected Loss of Tracking error condition of one synchronization reference. After reset the synchronization reference is usable again.
+Parameters:
+syncReference: Specifies the synchronization reference for which the Loss of Tracking status is to be reset.
+
+Description of exceptions:
+- NotRegistered: synchronization reference is not registered
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="syncReference">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <raisesException name="NotRegisteredException"/>
+ </action>
+ </class>
+
+ <class name="SccpApLocal">
+ <description>This Managed Object represents an SCCP Local Access Point. An SCCP AP instance is a logical point in the SCCP network at which an SCCP user can access the services provided by the SCCP and the SCCP can deliver its services to the SCCP user. The SCCP Access Point is identified by a SubSystem Number (SSN).
+
+A local SccpAp represents an access point in the own node.
+
+The performance monitoring counters found in SccpApLocal MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a shutdown request from the CLI (Cluster Interface).</description>
+ <attribute name="SccpApLocalId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SCCP AP. The operability of the SCCP AP is described by this attribute which has two possible values:
+
+Disabled: The SCCP AP is totally inoperable and unable to provide the service to the user.
+
+Enabled: The SCCP AP is partly or fully operable and available for use.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="ssN">
+ <description>The sub system number, SSN, of the SCCP Access Point. Note that this has to be a unique number.
+
+If the SccpAp is local then the SSN has to be unique among all other SccpAp MOs under the same SccpSp MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxConn">
+ <description>The maxConn attribute specifies the max number of connections allowed for this SCCP Access Point. It is only valid for local SCCP Access Points.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>524288</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="useS1">
+ <description>Controls adding of OPC from routing label to Calling Party Address if absent.
+
+False = Do not add OPC to Calling Part Address.
+True = Add OPC to Calling Part Address.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpSp">
+ <description>The Signalling Connection Control Part, SCCP, Signalling Point, SP, MO is the placeholder for all SCCP related managed objects.
+
+Startime for accounting is set by attributes accountDateFileOutput and accountTimeFileOutput.
+The attribute accountPeriodFileOutput sets period for the accounting record to be stored on the /c file system.
+The accounting is stopped by setting the accountPeriodFileOutput to zero (0).
+NOTE: The SRP function and SccpAccountingCriteria MO's should only be created for one signalling stack, i.e one PIU.
+
+Note! The guiding values that can be found for some attributes is to be regarded as a recommendation for these attributes.
+Depending on the size of the network, traffic load, use and so forth it might be neccesary to set values for these attributes outside the guiding values.</description>
+ <attribute name="SccpSpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SCCP SP. The operability of the SCCP SP is described by this attribute which has two possible values:
+
+Disabled: The SCCP SP is totally inoperable and unable to provide the service to the user (e.g. if the processor is not usable).
+
+Enabled: The SCCP SP is partly or fully operable and available for use.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtp3bSpId">
+ <description>The identity of the L3 Signaling Point used by this MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="prioSST">
+ <description>This attribute sets the priority for the Subsystem Test message when issued by the SCCP itself. When a message is transferred from the SCCP the message priority uses the two spare bits in the SIO.
+Coding of the message priority:
+0 Lowest priority
+1
+2
+3 Highest priority</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="prioIT">
+ <description>This attribute sets the priority for the Inactivity Test message when issued by the SCCP itself. When a message is transferred from the SCCP the message priority uses the two spare bits in the SIO.
+Coding of the message priority:
+0 Lowest priority
+1
+2
+3 Highest priority</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="prioRLSD">
+ <description>This attribute sets the priority for the connection release message when issued by the SCCP itself. When a message is transferred from the SCCP the message priority uses the two spare bits in the SIO.
+Coding of the message priority:
+0 Lowest priority
+1
+2
+3 Highest priority</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="prioGeneral">
+ <description>This attribute sets the priority for all the other messages which are issued by the SCCP itself. When a message is transferred from the SCCP the message priority uses the two spare bits in the SIO.
+
+Coding of the message priority:
+
+0 Lowest priority
+1
+2
+3 Highest priority</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="accountDateFileOutput">
+ <description>Date for accounting file output.
+Format in ASCI-code: yyyymmdd
+yyyy = 0000-9999
+mm = 01-12
+dd = 01-31
+
+Note! This is the start date for the output.</description>
+ <dataType>
+ <string>
+ <defaultValue>"00000000"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="accountTimeFileOutput">
+ <description>Time for accounting file output.
+Format in ASCI-code: hhmm
+hh = 00-23
+mm = 00-59</description>
+ <dataType>
+ <string>
+ <defaultValue>"0000"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="accountPeriodFileOutput">
+ <description>Period for accounting file output.
+Format: number of half hour.
+Range = 0, 1, 2, 4, 6, 8, 12, 16, 24, 48
+
+Note! if set to 0 (zero) the output will be stopped.</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="upperConnThres">
+ <description>The upper connection threshold allow the user to specify the level at which the upper connection threshold notification is triggered. The thresholds must be given as a percentage of the maximum number of connection resources made available for the entire SCCP.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>80</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="lowerConnThres">
+ <description>The lower connection threshold allow the user to specify the level at which the lower connection threshold notification is triggered. The thresholds must be given as a percentage of the maximum number of connection resources made available for the entire SCCP. The value must be less then UpperConnThres.
+
+The maximum value is less or equal to the upper connection threshold</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="swapUDTPointer">
+ <description>There are two ways to construct a UDTS from a UDT, the XUDTS will be constructed in the same way. One way is to only swap the pointers to �Called Party Address� and �Calling Party Address� in a UDT message when constructing a UDTS. The other way is to swap data. How this is done in the SCCP is configurable. The coding and interpretation is as follows:
+0, swap data ��Called party Address� will be sent before �Calling party Address�
+1, swap pointers��Called party Address� will be sent after �Calling party Address�.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hopCounterSclc">
+ <description>The SCLC hop counter is a parameter that is decremented for each performed GT translation for SCLC messages on the way to the end destination. If decrementing the counter results in the value of zero in a non-end destination node, the SCCP initiates the appropriate error procedure.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>15</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hopCounterScoc">
+ <description>The SCOC hop counter is a parameter that is decremented for each performed GT translation for SCOC messages on the way to the end destination. If decrementing the counter results in the value of zero in no end destination node, the SCCP initiates the appropriate error procedure.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>15</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tconnEst">
+ <description>Connection establishment control timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 600 - 1200, Default 600
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>600</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tIas">
+ <description>Send inactivity control timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 3000-6000
+Default 3000</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>3000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tIar">
+ <description>Receive inactivity control timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 6600-12600
+Default 6600</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>6600</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tRel">
+ <description>Connection release timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 100-200
+Default 100</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>100</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tCong">
+ <description>Congestion timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 10-2550
+Default 300</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tStatInfo">
+ <description>Subsystem Status Test timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 10-2550
+Default 300</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>300</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tconnResp">
+ <description>Connection response waiting timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 100-200
+Default 150</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>150</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tReass">
+ <description>Reassembly timer.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 100-200
+Default 150</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>150</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tGuard">
+ <description>Guard timer for program restart not applicable for this CPP version. Instead a restart counter is used to improve restart performance.
+
+Unit: deciseconds (0.1 seconds).
+
+Guiding values;
+Range 13800-15000 (23-25 minutes)
+Default 1380 (23 minutes)
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>13800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="smiValue">
+ <description>The SMI (Subsystem Multiplicity Indicator) is always ignored for incoming messages. This SCCP can however be configured to insert a specific SMI value in outgoing messages. The coding and interpretation is as follows:
+
+Coding Comment
+ 0 | Affected Subsystem multiplicity unknown.
+ 1 | Affected Subsystem is solitary.
+ 2 | Affected Subsystem is duplicated.
+ 3 | Spare.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="useSCMG">
+ <description>The use of SCMG functions.
+
+SST = SCCP Subsystem Test message.
+SSA = SCCP Subsystem Allowed message.
+SSP = SCCP Subsystem Prohibited message.
+SSC = SCCP Subsystem Congested message.
+
+The attributes contained in the struct is:
+initiateTimerTcon,
+allowRemoteBroadcast,
+useSST,
+useSSP,
+sendSSA,
+sendSST
+
+</description>
+ <dataType>
+ <structRef name="Scmg"/>
+ </dataType>
+ </attribute>
+ <attribute name="maxRelayedConn">
+ <description>Connection Oriented SCCP Signaling Relay Point (SRP-CO) and Maximum number of Relayed Connections is not used in this CPP version.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>524288</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUDTSent">
+ <description>Performance monitoring counter for number of sent UDT's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUDTRec">
+ <description>Performance monitoring counter for number of received UDT's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUDTSSent">
+ <description>Performance monitoring counter for number of sent UDTS's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUDTSRec">
+ <description>Performance monitoring counter for number of received UDTS's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfXUDTSent">
+ <description>Performance monitoring counter for number of sent XUDT's.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfXUDTRec">
+ <description>Performance management counter for number of received XUDT's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfXUDTSSent">
+ <description>Performance monitoring counter for number of sent XUDTS's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfXUDTSRec">
+ <description>Performance monitoring counter for number of received XUDTS's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCRSent">
+ <description>Performance monitoring counter for number of sent CR's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCRRec">
+ <description>Performance monitoring counter for number of received CR's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDT1Sent">
+ <description>Performance monitoring counter for number of sent DT1's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDT1Rec">
+ <description>Performance monitoring counter for number of received DT1's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfERRSent">
+ <description>Performance monitoring counter for number of sent ERR's.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfERRRec">
+ <description>Performance monitoring counter for number of received ERR's.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSubsysAllowedSent">
+ <description>Performance monitoring counter for number of sent SSA's, subsystem allowed.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCREFRecFromNL">
+ <description>Performance monitoring counter for number of CREF messages received from NL.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCREFSentToNL">
+ <description>Performance monitoring counter for number of CREF messages sent to NL.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRLSDRecFromNL">
+ <description>Performance monitoring counter for number of RLSD messages received from NL.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRLSDSentToNL">
+ <description>Performance monitoring counter for number of RLSD messages sent to NL.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfConInUseExceedHighWaterMark">
+ <description>Performance monitoring counter for number of connections in use that has exceeded the high watermark threshold.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfConInUseReceededLowWaterMark">
+ <description>Performance monitoring counter for number of connections in use that has receded the low watermark threshold.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLUDTRec">
+ <description>Performance monitoring counter for number of received LUDT messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLUDTSSent">
+ <description>Performance monitoring counter for number of sent LUDTS messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpScrc">
+ <description>The Signalling Connection Control Part Routing Control (SCCP SCRC) MO holds information about the SCCP routing control.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SccpScrcId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailure">
+ <description>Performance monitoring counter for number of routing failures.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfConnectFailure">
+ <description>Performance monitoring counter for number of connect failures.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfHopCounterViolation">
+ <description>Performance monitoring counter for number of Hop counter violations.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailNoTransAddrOfSuchNature">
+ <description>Performance monitoring counter for number of routing failures due to no translation for Nature of Address field.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailNoTransSpecificAddr">
+ <description>Performance monitoring counter for number of routing failures due to no translation of specific address.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailurePointCodeUnAvail">
+ <description>Performance monitoring counter for number of routing failures due to destination point code not available.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailNetworkCongest">
+ <description>Performance monitoring counter for number of routing failures due to network congestion.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailSubsysUnavail">
+ <description>Performance monitoring counter for number of routing failures due to destination subsystem unavailable.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailReasonUnknown">
+ <description>Performance monitoring counter for number of routing failures due to unknown reason.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRoutingFailUnequippedSubsys">
+ <description>Performance monitoring counter for number of routing failures due to unequipped subsystem.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Program">
+ <description>The Program MO represent the executable software on the target hardware.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.
+
+Note! Some programs are not possible to restart or can take part in an RPU. For more information please refer to the LoadModule MO.
+
+</description>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="loadModule">
+ <description>This attribute gives information about which load module the program is instantiated from.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="LoadModule"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute shows whether the program has normal performance capability or not.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="startState">
+ <description>This attribute shows whether the program is permitted to enter operational state enabled or not after a PIU restart. The default state is disabled in order to avoid that an operating program and a new version of the same program have its startState enabled at the same time.
+
+It is used on all types of node restarts and restart of PlugInUnit with restartCause = piuRestartUpgrade.</description>
+ <dataType>
+ <enumRef name="StartState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="heapSize">
+ <description>This attribute sets the size of the program heap size.
+
+The value in the referenced LoadModule is fetched by program and used at create if no value is submitted at create of the program MO.
+
+The referenced load module has a default size defined at compile time wich is used if no value is submitted at create of loadModule or the program Mo.
+
+Note! The value of this attribute is overwritten during Software Upgrade.
+
+Note: If the program is a child to a Fan Mo this attribute is irrelevant.
+
+Note: Setting of this attribute will have no effect until the program is restarted.</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="poolSize">
+ <description>This attribute sets the size of the program pool size. In the referenced LoadModule there is possible to set this value at create.
+
+The value in the referenced LoadModule is fetched by program and used at create if no value is submitted at create of the program MO.
+
+The referenced load module has a default size defined at compile time wich is used if no value is submitted at create of
+LoadModule or the Program Mo.
+
+Note! The value of this attribute is overwritten during Software Upgrade.
+
+Only working for MP-Program
+
+Unit is bytes.
+
+Note: If the program is a child to a Fan Mo this attribute is irrelevant.
+
+Note: Setting of this attribute will not have any effect until the program is restarted.
+
+</description>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="restartTimer">
+ <description>This type specifies the time that a program have to execute without faults, until the restart counter is reset. The time value is interpreted as seconds.
+
+restartTimer= -1 : Forever, implies that the restart counter is only reset when the PIU is restarted.
+
+Note: If the program is a child to a Fan Mo this attribute is irrelevant.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>-1</min>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="restartCounterLimit">
+ <description>This attribute specifies the number of times that a program can restart, without escalation to a PIU restart. The possible values are:
+
+restartCounterLimit = -1 : Unlimited, means never restart PIU, regardless of the number of times the specific program restarts.
+
+Note: If the program is a child to a Fan Mo this attribute is irrelevant.
+
+Note! The value 3 means 3 restarts, hot, warm and finally as a last resort PIU restart.
+
+Note! The program escalates to a PIU restart when the number of restarts reaches the value set for this attribute.
+I.e. if for example the value is set to 5, escalation to PIU restart will occur at the fifth restart.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>-1</min>
+ </range>
+ <defaultValue>3</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ProgramId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>Request to restart the program.
+Only valid for MP programs.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="UniSaalProfile">
+ <description>The UniSaal Profile MO represent and keeps attribute values used by one or more UNI SAAL termination point MOs.</description>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="UniSaalTp"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <description>See structure UniSaalProfileData</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="UniSaalProfileData"/>
+ </dataType>
+ </attribute>
+ <attribute name="UniSaalProfileId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="UniSaalTp">
+ <description>The MO represents an access point for a user where a UNI SAAL connection is terminated. The access point depends
+on an AAL5 connection termination located on the same processor.
+
+UniSaalTp can only terminate on a Mp processor.
+
+Note! The performance monitoring counters found in NniSaalTp MO is set to zero when the Mo and its RO is created.
+These counters are not reset unless there occurs a fault situation that demands a restart and recreation of the ROs.
+Also note that some of these counters are reset based on other conditions. For more details please refer to the
+descriptions of the performance monitoring counters in this MO.</description>
+ <attribute name="UniSaalTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the UniSaalTp MO.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="uniSaalProfileId">
+ <description>Reference to a UniSaalProfile MO.
+
+The maxStat attribute defined in the UniSaalProfile MO is dependent on the AAL5 SDU size defined in the Aal5TpVccTp MO. See the description of the maxStat attribute in the UniSaalProfile MO.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="UniSaalProfile"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpId">
+ <description>Reference to an Aal5TpVccTpMo.
+
+Note: The Aal5 termination point must terminate on a main processor, MP.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Aal5TpVccTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="maxSduSize">
+ <description>Maximum SAAL SDU size. The attribute is dependent on the AAL5 maximum SDU size defined in the Aal5TpVccTp MO. The 'maxSduSize' may not exceed the AAL5 maximum SDU size (the lower of the two directions, fromUserMaxSduSize and toUserMaxSduSize).
+
+Example: If 'fromUserMaxSduSize' is set to 256 and 'toUserMaxSduSize' is set to 512 in the Aal5TpVccTp MO, the ' maxSduSize' in the UniSaalTp MO may not exceed 252.
+
+(i.e. maxSduSize &lt;= the aal5MaxSduSize - 4 bytes)
+
+Note! When setting the value of 'maxSduSize' the 4 bytes used by the SAAL layer for the SAAL header has to be considered.
+
+Note! The upper limit of 2044 (2048 including the SAAL header) is due to limitations on the AAL5 layer.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>128</min> <max>2044</max>
+ </range>
+ <defaultValue>128</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSentSDUs">
+ <description>Number of successfully sent SDUs.
+Counts the number of successfully sent messages to the
+application using SAAL. Reset when the link goes InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReceivedSDUs">
+ <description>Number of successfully received SDUs.
+Counts the number of successfully received messages from
+ the application using SAAL. Reset when the link goes
+ InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLinkInServiceTime">
+ <description>The accumulated time (in seconds) the signalling link has
+ been in service (in assured data transfer mode) since it was created. If the link is down the value 0 is returned.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAllSLFailures">
+ <description>Number of all Signalling Link failures.
+Is a total sum of the error counters:
+ - Number of protocol errors
+ - Number of unsuccessfully retransmissions
+ - Number of NoResponses
+ - Number of other errors</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNoResponses">
+ <description>Number of no response. This counter is increased when SSCOP (Service Specific Connection Oriented Protocol)
+send an MaaError with error code P.
+For details refer to ITU-T Q.2110 - B-ISDN AATM Adaptation Layer - Service Specific Connection Oriented Protocol (SSCOP); (7/94).
+Counts the number of no responses detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalCongestions">
+ <description>Number of local congestions.
+This counter is increased when the sum of SAAL send and retransmission buffers are filled to more than 90%.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRemoteCongestions">
+ <description>Number of remote congestions.
+This counter is increased when the remote side gives SAAL no credit. Reset when the link goes InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSequenceDataLosses">
+ <description>Number of sequences data loss.
+Counts the number of SD loss detected the last 30 minutes</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfProtocolErrors">
+ <description>Number of unsolicited or inappropriate PDUs. This counter is increased when SSCOP (Service Specific Connection Oriented Protocol)
+send an MaaError with error code Q.
+For details refer to ITU-T Q.2110 - B-ISDN AATM Adaptation Layer - Service Specific Connection Oriented Protocol (SSCOP); (7/94).
+Counts the number of protocol errors detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccReTransmissions">
+ <description>Number of unsuccessful retransmissions.
+Counts the number of unsuccessfully retransmissions detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOtherErrors">
+ <description>Number of other list element errors. This counter is increased when SSCOP (Service Specific Connection Oriented Protocol)
+send an MaaError with error code Q-U.
+For details refer to ITU-T Q.2110 - B-ISDN AATM Adaptation Layer - Service Specific Connection Oriented Protocol (SSCOP); (7/94).
+Counts the number of other errors detected the last 30 minutes. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="E1PhysPathTerm">
+ <description>This MO represents an E1 (i.e. 2 Mbit/s) physical interface in the node. The E1PhysPathTerm MO does not define which type of traffic (TDM or ATM) that the interface should support.
+Please refer to the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+Note! The performance monitoring counters in the E1PhysPathTerm MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>8</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>This attribute describes the current Loopback State of this physical path termination.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance Monitoring counter for ES, Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="E1PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="crc4Mode">
+ <description>Indicates what Cyclical Redundancy Check 4 Mode that is being used.</description>
+ <dataType>
+ <enumRef name="Crc4Mode">
+ <defaultValue>AUTOMATIC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="idlePattern">
+ <description>The idle pattern.
+
+NOTE: Going from A_LAW or U_LAW to UNDEFINED is always allowed but setting up one ET board with
+both U_LAW and A_LAW is not allowed.
+E.g. If you want to change from A_LAW to U_LAW on one ET board you have to change idlePattern
+on each physical port belonging to the board to UNDEFINED first.
+A_LAW -&gt; UNDEFINED -&gt; U_LAW or U_LAW -&gt; UNDEFINED -&gt; A_LAW</description>
+ <dataType>
+ <enumRef name="IdlePattern">
+ <defaultValue>UNDEFINED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="degDegThr">
+ <description>The threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+This is a percentage value.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="degDegM">
+ <description>How many bad seconds in a row that causes a Degraded Signal alarm.
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="J1PhysPathTerm">
+ <description>This MO represents an J1 (i.e. 1.5 Mbit/s) physical interface in the node. The J1PhysPathTerm MO does not define which type of traffic (TDM or ATM) that the interface should support.
+Please refer to the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+The performance monitoring counters in the J1PhysPathTerm MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <attribute name="J1PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>8</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="physicalLineType">
+ <description>Supported interfaces is defined in J1Types</description>
+ <dataType>
+ <enumRef name="J1Type">
+ <defaultValue>j1_G</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="degThreshold">
+ <description>Maximum allowed BER(Bit Error Rate). Degraded signal (DEG) if BER &gt; degThreshold. The attribute gives a maximum BER of 10e-X, where X ranges from 5 to 9 (default 6)
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>3</min> <max>9</max>
+ </range>
+ <defaultValue>6</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>Possible values
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+system - The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter for Errored Seconds, ES.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Severly Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="idlePattern">
+ <description>The idle pattern.
+
+NOTE: Going from A_LAW or U_LAW to UNDEFINED is always allowed but setting up one ET board with
+both U_LAW and A_LAW is not allowed.
+E.g. If you want to change from A_LAW to U_LAW on one ET board you have to change idlePattern
+on each physical port belonging to the board to UNDEFINED first.
+A_LAW -&gt; UNDEFINED -&gt; U_LAW or U_LAW -&gt; UNDEFINED -&gt; A_LAW</description>
+ <dataType>
+ <enumRef name="IdlePattern">
+ <defaultValue>UNDEFINED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal0TpVccTp">
+ <description>This MO is used to represent the point in the node where an AAL0 connection is terminated. At this point the user exchange SDUs with its peer at the remote end of the AAL0 connection.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time
+of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0.
+
+</description>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="processorId">
+ <description>This attribute specifies on what processor the termination point resides. It could either be a board processor or main processor (MO type PlugInUnit), or a SP processor (MO type Spm).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational State reflects the operational state of the end points and the belonging node connections.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpId">
+ <description>The virtual channel to which this MO is termination.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="Aal0TpVccTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuitiy checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second.
+
+Activates VC end to end continuityCheck according to ITU.T rec I.610.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlkSize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>PM mode is set to indicate type of performance monitoring mode (i.e. activation of bidirectional PM measurements).
+
+</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for forwarded lost cells.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forwarded missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forwarded errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal5TpVccTp">
+ <description>This MO is used to represent the point in the node where an AAL5 connection is terminated. At this point the user exchanges SDUs with its peer at the remote end of the AAL5 connection.
+
+Note! The 'mtuSize' on the IpAtmLink MO does not include 8 bytes required for the LLC/SNAP header and this should be taken into consideration when setting the SduSize on the Aal5TpVccTp MO.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time
+of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0..</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="processorId">
+ <description>This attribute specifies on what processor the protocol is terminated. It could either be a board processor or main processor (PlugInUnit) or a SP processor (Spm).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpId">
+ <description>The virtual channel to which this MO is termination.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational State reflects the operational state of the end points and the belonging node connections.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="fromUserMaxSduSize">
+ <description>The maximum SDU size in number of octets received from the user (called maxIngressSduSize in the FRO domain).
+
+The allowed range is dependent on the processorType.
+SP: LowestMaxSduSize =1, HighestMaxSduSize=1600
+BP: LowestMaxSduSize =1, HighestMaxSduSize=1600
+MP:LowestMaxSduSize =1, HighestMaxSduSize=2048</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2048</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="toUserMaxSduSize">
+ <description>The maximum SDU size in number of octets sent to the user (called maxEgressSduSize in the FRO domain). This attribute is controlled by the processor type.
+
+The allowed range is dependent on the processorType.
+SP: LowestMaxSduSize =1, HighestMaxSduSize=1600
+BP: LowestMaxSduSize =1, HighestMaxSduSize=1600
+MP:LowestMaxSduSize =1, HighestMaxSduSize=2048</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2048</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The attribute is set by the action reserve from a user of Aal5TpVccTp. It could either be a Cello user like IpAtmLink/UniSaalTp or a node application.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="Aal5TpVccTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuitiy checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second. Continuity check both enables generation of CC cells as well as detection of LOC
+</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlkSize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.
+</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>PM mode is set to indicate type of performance monitoring mode (i.e. activation of bidirectional PM measurements).
+
+</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for number of lost forward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="AtmPort">
+ <description>The AtmPort MO is used to configure a physical port for ATM traffic.
+ATM can be transported accross the physical layer in three distinct and different ways:
+
+- Normal mode
+
+An AtmPort MO is created with a reference to physical layer object (any of E1PhysPathTerm,
+J1PhysPathTerm, T1PhysPathTerm, E3PhysPathTerm, T3PhysPathTerm, Sts3CspeTtp, E1Ttp, T1Ttp or Vc4Ttp).
+The payload of that physical layer object is used to transport the ATM traffic.
+
+- Fractional ATM mode
+
+An AtmPort MO is created with a reference to a Ds0Bundle object. The Ds0Bundle specifies
+in this case the timeslots on the physical layer (any of E1PhysPathTerm,J1PhysPathTerm,
+T1PhysPathTerm, T1Ttp or E1Ttp) that should be used for ATM traffic. The remaining timeslots
+are not used at all.
+I.e. when fractional ATM is used only one Ds0Bundle can exist as a child to a physical port MO.
+
+- IMA mode
+
+In IMA mode, a number of physical ports are grouped together to form one "virtual" physical
+ATM pipe. In this mode the AtmPort MO is created with a reference to an IMAGroup MO.
+Please refer to the ImaGroup MO for further details.
+
+Note! The performance monitoring counters in the AtmPort MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again..
+
+
+</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="AtmPortId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the ATM port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the AtmPort.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmTransmittedAtmCells">
+ <description>Performance monitoring counter for number of transmitted ATM cells through the ATM port. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmReceivedAtmCells">
+ <description>Performance monitoring counter for number of received ATM cells through the ATM port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="valueOfLastCellWithUnexp">
+ <description>This attribute returns the ATM header, (vpi, vci, pti), of the last received unexpected cell.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <structRef name="ValueOfUnex"/>
+ </dataType>
+ </attribute>
+ <attribute name="uses">
+ <description>Reference to the physical port, IMA Group or Ds0Bundle used by the ATM port.
+
+The possible MOs are:
+E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E3PhysPathTerm, T3PhysPathTerm, Sts3CspeTtp, Sts1SpeTtp, Vc4Ttp, E1Ttp, T1Ttp, Ds0Bundle and ImaGroup.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmSecondsWithUnexp">
+ <description>Performance monitoring counter for errored seconds with discarded cells due to protocol errors (unexpected, UNEX, events).
+
+I.610: With protcol errors is meant the reception of cells with either a non-standardized or a non-currently allocated header value.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hecCorrectionMode">
+ <description>Header Error Correction.
+
+This attribute specifies if the AtmPort should detect and correct single bit errors or detect multiple bit errors in the ATM header.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bAp">
+ <description>This MO represents an MTP3b Access Point (in a remote node). An MTP3b AP is a logical point in the MTP network at which an
+MTP3b user can access the services provided by MTP3b and the MTP3b can deliver its services to the MTP3b user.
+
+The performance monitoring counters found in Mtp3Ap MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetId">
+ <description>The routeSetId attribute points out the MTP3b Signalling Route Set (SRS) to which the Mtp3bAp MO is connected. </description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Mtp3bSrs"/>
+ </dataType>
+ </attribute>
+ <attribute name="serviceInd">
+ <description>The serviceInd attribute (Service Indicator, SI) is used by traffic handling functions to perform message distribution.
+Only SI=3 for SCCP usage and SI=12 for Q.2630.1 usage and SI=14 for GCP (H.248) usage have any meaning in this case.
+
+Full range of values for attribute SI:
+0 = Signalling network management messages
+1 = Signalling network testing &amp; maintenance regular messages
+2 = Signalling network testing &amp; maintenance special messages*
+3 = SCCP
+4 = Telephone User Part (TUP)
+5 = ISDN User Part (ISUP)
+6 = Data User Part, call and circuit related messages
+7 = Data User Part, facility registration and cancellation messages
+8 = MTP Testing User Part
+9 = Broadband ISDN User Part
+10 = Satellite ISDN User Part
+11 = Spare
+12 = Q.2630.1
+13 = Spare
+14 = H.248
+15 = Spare
+
+Note! The serviceIndicator has to be unique for each Mtp3bAp witin the same Mtp3bSrs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute determines the operational status of the MTP3b AP .
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp3bApId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUserPartUnavailRec">
+ <description>A performance management counter for number of received User Part Unavailable messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAdjacentSPNotAccessible">
+ <description>Performance management counter for number of Adjacent SP's that are not accessible via direct links.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="NniSaalProfile">
+ <description>The NniSaal Profile MO represents and keeps attribute values used by one or more NNI SAAL termination point MOs.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of NniSaalTp�s that have reserved this NniSaalProfile.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="NniSaalTp"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <description>See structure NniSaalProfileData.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="NniSaalProfileData"/>
+ </dataType>
+ </attribute>
+ <attribute name="NniSaalProfileId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="NniSaalTp">
+ <description>The MO represents an access point for a user where a NNI SAAL connection is terminated. The access point depends
+on an AAL5 connection termination located on the same processor.
+
+NniSaalTp can only terminate on a Mp processor.
+
+Note! The performance monitoring counters found in NniSaalTp MO is set to zero when the Mo and its RO is created.
+These counters are not reset unless there occurs a fault situation that demands a restart and recreation of the ROs.
+Also note that some of these counters are reset based on other conditions. For more details please refer to the
+descriptions of the performance monitoring counters in this MO.</description>
+ <attribute name="NniSaalTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the NniSaalTp MO.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="nniSaalProfileId">
+ <description>Reference to a NniSaalProfile MO.
+
+The maxStat attribute defined in the NniSaalProfile MO is controlled by the AAL5 SDU size defined in the Aal5TpVccTp MO. See the description of the maxStat attribute in the NniSaalProfile MO.
+
+Note! The consistency check of the attributes in the two MOs mentioned above could not be performed until the NniSaalTp MO was created since there is no direct relation between the objects. It is therefore the responsibility of NniSaalTp to verify the consistency.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="NniSaalProfile"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpId">
+ <description>Reference to a Aal5TpVccTp MO.
+
+Note: The Aal5 termination point must terminate on a main processor, MP.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Aal5TpVccTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="maxSduSize">
+ <description>Maximum SAAL SDU size. The attribute is dependent on the AAL5 maximum SDU size defined in the Aal5TpVccTp MO. The 'maxSduSize' may not exceed the AAL5 maximum SDU size (the lower of the two directions, fromUserMaxSduSize and toUserMaxSduSize).
+
+Example: If 'fromUserMaxSduSize' is set to 256 and 'toUserMaxSduSize' is set to 512 in the Aal5TpVccTp MO, the ' maxSduSize' in the NniSaalTp MO may not exceed 252.
+
+(i.e. maxSduSize &lt;= the aal5MaxSduSize - 4 bytes)
+
+Note! When setting the value of 'maxSduSize' the 4 bytes used by the SAAL layer for the SAAL header has to be considered.
+
+Note! The upper limit of 2044 (2048 including the SAAL header) is due to limitations on the AAL5 layer.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>128</min> <max>2044</max>
+ </range>
+ <defaultValue>128</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSentSDUs">
+ <description>Number of successfully sent SDUs.
+Counts the number of successfully sent messages to the
+application using SAAL. Reset when the link goes InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReceivedSDUs">
+ <description>Number of successfully received SDUs.
+Counts the number of successfully received messages from
+ the application using SAAL. Reset when the link goes
+ InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLinkInServiceTime">
+ <description>The accumulated time (in seconds) the signalling link has
+ been in service (in assured data transfer mode) since it was created. If the link is down the value 0 is returned.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAllSLFailures">
+ <description>Number of all Signalling Link failures.
+Is a total sum of the error counters:
+ - Number of protocol errors
+ - Number of unsuccessfully retransmissions
+ - Number of NoResponses
+ - Number of other errors</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNoResponses">
+ <description>Number of no response.
+Counts the number of no responses detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalCongestions">
+ <description>Number of local congestions.
+This counter is increased when the sum of SAAL send and retransmission buffers are filled to more than the congestionOnSet attribute is configured to..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRemoteCongestions">
+ <description>Number of remote congestions.
+This counter is increased when the remote side gives SAAL no credit. Reset when the link goes InService or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAlignmentFailures">
+ <description>Number of alignment or proving failures. This counter is
+increased when "alignment not successful".
+The counter is reset when the link is created or the counter "overflows".</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSequenceDataLosses">
+ <description>Number of sequences data loss.
+Counts the number of SD loss detected the last 30 minutes</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfProtocolErrors">
+ <description>Number of unsolicited or inappropriate PDUs.
+Counts the number of protocol errors detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccReTransmissions">
+ <description>Number of unsuccessful retransmissions.
+Counts the number of unsuccessfully retransmissions detected the last 30 minutes.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOtherErrors">
+ <description>Number of other list element errors.
+Counts the number of other errors detected the last 30 minutes. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="AtmTrafficDescriptor">
+ <description>This MO specifies traffic and QoS parameters for virtual channel connections.
+
+The attributes can only be set in certain combinations:
+
+CBR:
+ingressAtmQos /egressAtmQos:
+1, 2
+
+ingressAtmPcr /egressAtmPcr:
+mandatory (must be specified)
+
+ingressAtmMcr /egressAtmMcr:
+optional (not used, any value submitted will be ignored)
+
+UBR+:
+ingressAtmQos /egressAtmQos:
+3
+
+ingressAtmPcr /egressAtmPcr:
+optional (if shaping is used the desired rate is specified, 0 means no shaping)
+
+ingressAtmMcr /egressAtmMcr:
+mandatory (must be specified)
+
+UBR:
+ingressAtmQos /egressAtmQos:
+4
+
+ingressAtmPcr /egressAtmPcr:
+optional (not used, any value submitted will be ignored)
+
+ingressAtmMcr /egressAtmMcr:
+optional (not used, any value submitted will be ignored)
+
+Note that the VP sub layer only supports ServiceCategory = CBR and QoS = 1.
+
+Note! The performance monitoring counters in the AtmTrafficDescriptor MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <attribute name="AtmTrafficDescriptorId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>This MO's user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ingressAtmPcr">
+ <description>Ingress ATM Peak cell rate (cells/s).
+
+Only positive values are allowed. This attribute is only mandatory when serviceCategory is CBR or UBR_PLUS.
+
+Note! When 'serviceCategory' is set to UBR this attribute has no relevance and the value submitted is ignored by the system.
+
+Note! When 'serviceCategory' is set to UBR+ the value 0 (zero) means that shaping is not used. A value larger than the minimum desired cell rate enables shaping to the rate specified.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ingressAtmQos">
+ <description>Ingress ATM quality of service.
+
+This attribute can be set to Class 1 and 2 if attribute serviceCategory is set to CBR.
+
+This attribute can be set to Class 3 if attribute serviceCategory is set to UBR+.
+
+This attribute can be set to Class 4 if attribute serviceCategory is set to UBR.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="AtmQos">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="egressAtmPcr">
+ <description>Egress ATM Peak cell rate (cells/s).
+
+Only positive values allowed.
+
+This attribute is only mandatory when serviceCategory is CBR or UBR_PLUS.
+
+Note! When 'serviceCategory' is set to UBR this attribute has no relevance and the value submitted is ignored by the system.
+
+Note! When 'serviceCategory' is set to UBR+ the value 0 (zero) means that shaping is not used. A value larger than the minimum desired cell rate enables shaping to the rate specified.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="egressAtmQos">
+ <description>Egress ATM quality of service.
+
+This attribute can be set to Class 1 and 2 if attribute serviceCategory is set to CBR.
+
+This attribute can be set to Class 3 if attribute serviceCategory is set to UBR+.
+
+This attribute can be set to Class 4 if attribute serviceCategory is set to UBR.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="AtmQos">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Sequence of Users that are using this AtmTrafficDescriptor.
+
+
+</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="egressAtmMcr">
+ <description>Egress ATM minimum desired cell rate.
+
+Only positive values allowed. The attribute is only mandatory when serviceCategory is UBR+.
+
+Note! When 'serviceCategory' is set to CBR or UBR this attribute has no relevance and the value submitted is ignored by the system.
+
+Note! This attribute cannot have a value larger than for 'egressAtmPcr'.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ingressAtmMcr">
+ <description>Ingress minimum desired cell rate (cells/s).
+
+Only positive vaues allowed. This attribute is mandatory only when serviceCategory is UBR+.
+
+Note! When 'serviceCategory' is set to CBR or UBR this attribute has no relevance and the value submitted is ignored by the system.
+
+Note! This attribute cannot have a value larger than for 'ingressAtmPcr'.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="serviceCategory">
+ <description>The service category.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="ServiceCategory">
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSrs">
+ <description>This MO represents/models a MTP3b Signalling Route Set.
+
+The performance monitoring counters found in Mtp3Srs MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).</description>
+ <attribute name="Mtp3bSrsId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Mtp3bSrs MO.
+
+There are two possible states for the operationalState attribute:
+
+- enabled, the MO is partly or fully operational.
+- disabled, the MO is not operational.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The attribute is set by the local action Reserve.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="autoReroute">
+ <description>This flag indicates Whether automatic rerouting is performed(true) or not(false), between IP and ATM/TDM
+routes when configuration is made. If set to 'false', it has to be done manually, for ex. by management actions(orders).
+
+Note! The attribute 'autoReroute' will always be set to 'false' regardless of value submitted. This attribute is to be removed in coming releases.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </attribute>
+ <attribute name="destPointCode">
+ <description>The destPointCode attribute (destination point code, DPC) represents the point code of this Mtp3b SRS MO.
+The Destination Point Code in a Route Set has to be unique within each Signaling Point.
+
+Note! The format of destPointCode must correspond to the signallingPointCode format in the Mtp3bSp, i.e. ITU, ANSI, TTC or China.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16777215</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="congestedLevel">
+ <description>There are two possible states for the congestedLevel attribute:
+
+- notCongested, no change in congestion level.
+- congested, change in congestion level has occurred.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bCongestLevel">
+ <defaultValue>notCongested</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDiscardedMsgFromBroadToNarrow">
+ <description>Performance management counter for number of messages discarded from broadband to narrowband.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTransferControlledRec">
+ <description>Performance monitoring counter for number of received Transfer Control (TFC) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTransferProhibitedRec">
+ <description>Performance monitoring counter for number of received Transfer Prohibited (TFP) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTransferAllowedRec">
+ <description>Performance monitoring counter for number of received Transfer Allowed (TFA) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="routeSetTestAnyRoute">
+ <description>The route set test is only available for the Japanese Mtp3b, TTC.
+
+See JT-Q.707 for details.
+
+The test selects a route in the route set and tests it.
+
+Possible return codes are:
+
+0 : successful test
+48 : unsuccessful test
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ </action>
+ <action name="routeSetTestSpecificRoute">
+ <description>The route set test is only available for the Japanese Mtp3b, TTC.
+
+See JT-Q.707 for details.
+
+The test tests the specified route.
+
+Possible return codes are:
+
+0 : successful test
+48 : unsuccessful test
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <parameter name="routeId">
+ <in/>
+ <dataType>
+ <moRef name="Mtp3bSr"/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="PlugInUnit">
+ <description>This MO is used to represent a plug-in-unit, that is a board inserted in a slot in a subrack.
+
+Note! Before deleting the PlugInUnit MO, administrativeState must be set to locked.</description>
+ <attribute name="PlugInUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>A free tag that a user can associated to the this managed object. The value has no relevance for the managed system.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the PlugInUnit.
+
+The possibility to rollback the setting of this attribute is limited.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state is set to 'enabled' when the plug-in-unit has loaded and started its 'Basic' load module.</description>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="productType">
+ <description>This attribute describes the product type and is always set to the value "HW".</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>"HW"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="piuType">
+ <description>A reference to an available PiuType at create of a PIU.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PiuType"/>
+ </dataType>
+ </attribute>
+ <attribute name="piuGroupNumber">
+ <description>Indicates which restart group the plug-in unit belongs to.
+Such a group consists of a number of plug-in units where at least one must be enabled (working) or performing recovery. When all plug-in units in a group are out of function, the node is restarted.
+
+Must have a positive value.
+
+Zero indicates no group.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>65536</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. It is a bit mapped CORBA long, where one or more of the bits may be set. If none of the bits are set then the availability status is considered to be undefined.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of managed objects depending on PlugInUnit</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmProcessorLoad">
+ <description>The measurement is done over 100 ms, and returns the sum of load on processes up to, and including process priority 23. The sum is expressed in %
+
+Supported on MP, BP and SP boards.
+
+In case of SP boards the returned processor load is the load of the BP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="allowedSeqRestarts">
+ <description>The number of automatic (do not require intervention from a human operator) sequential restarts that are allowed for a PIU. When this number of automatic restarts has been exceeded, the automatic restarting halts and the PIU is faulty marked.
+
+The time limit between two restarts is 5 minutes. This means that if the time between two restarts
+is less then 5 minutes the restarts are counted, otherwise the restart counter is reset.
+
+For example, 3 means 3 restarts with time limit &lt; 5 minutes are accepted but when the 4:th occurs within 5 minutes the board is considered faulty and an alarm is generated.</description>
+ <dataType>
+ <enumRef name="SeqRestarts">
+ <defaultValue>RESTARTS_WITH_WARM</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>
+Note! The restartCause can have the following values:
+1 = restart error
+2 = restart upgrade
+
+Note! The restartCause piuRestartUpgrade overrides the restartRank value and gives mainly restartRank=warm (or restartRank=refresh in some upgrade situations.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="restartRank">
+ <in/>
+ <dataType>
+ <enumRef name="RestartRank">
+ </enumRef>
+ </dataType>
+ </parameter>
+ <parameter name="restartCause">
+ <in/>
+ <dataType>
+ <enumRef name="RestartCause">
+ </enumRef>
+ </dataType>
+ </parameter>
+ <raisesException name="ValueOutOfRangeException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="Mtp3bSls">
+ <description>This MO represents the SS7 Signalling Link Set as defined in Recommendation Q.704 Ver. 3, April 28 1992 (ITU) T1.111-1996 (ANSI), JT-Q.704 Ver. 3, April 28 1992 (TTC) or GF001-9001 1990 (China).
+
+It provides information about a set of signalling links between an OPC/Adjacent PC pair. A link set is constructed from between 1 to16 Signalling Links (for China, Itu, Ttc and the ANSI standard), all of which have the same two end points (signalling points) as the Signalling Link Set. A Signalling LInk Set may be part of many routes.</description>
+ <attribute name="Mtp3bSlsId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Use label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MTP3B SLS.
+
+The operability of the MTP3B SLS is described by the operationalState attribute which has two possible values:
+
+- Enabled: The MTP3B SLS is partly or fully operable and available for use. At least one of the belonging links (SL) is enabled.
+- Disabled: The MTP3B SLS is totally inoperable and unable to provide service to the user.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>The usageState reflects the usage state of the links in the link set. There are three possible values:
+
+- Active: At least one of the belonging SLs of the SLS is Active and no link is Busy.
+- Busy: If one of the belonging links is Busy.
+- Idle: All SLs of the SLS are Unavailable.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="periodicLinkTestFlag">
+ <description>The periodicLinkTestFlag indicates if periodic sending of SLTM/SLTA messages are used or not. The SLTM message will be sent on every link which is "aligned" at an interval of (SLTM timer). The answer, SLTA is supposed to arrive within (SLTA timer). If this doesn�t happen, or if the received SLTA doesn�t match the sent SLTM a second SLTM will be sent. If this SLTM also fail then the link will be considered 'out-of-service' and a restart of that link will begin.
+
+ANSI: true is default.
+ITU: true is default.
+China: true is default.
+TTC: false is default.
+
+Note that TTC does not use this feature.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="mtp3bSrsId">
+ <description>The mtp3bSrsId attribute points out the corresponding MTP3b Signalling Route Set MO (adjacentDPC).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Mtp3bSrs"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp3bSr"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="deactivateLinkSet">
+ <description>This action deactivates a link set, which means the containing signalling links are taken out of service.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ <action name="activateLinkSet">
+ <description>A linkset containing signalling links which are all out of service, is called a deactivated linkset. In order to start up the signalling links and get them into service, there is an Activate Link Set action, or rather, there are two similar actions for activation of a link set.
+
+If the action fails to activate a link the ActivationFailed exception is raised.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ <action name="emergencyActivateLinkSet">
+ <description>This action activates the signalling link with emergency alignment.
+It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="Mtp3bSr">
+ <description>This MO represents a MTP3b Signalling Route. A Signalling Route is used to convey MTP3b User messages from a origin SP to a destination SP (Signalling Point). This MO is multiple instansiated and is contained in the MO MTP3b Signalling Route Set. A Signalling Route is from a network point of view the sequence of link sets from a originating signalling point to a destination signalling point.
+
+Note! At least one signalling route in the signalling route set must have priority = 1.
+If lower priorities are defined the next level must be priority=2. (e.g. routes with priority =1 and =3 in a route set will not work).
+
+Note! Signalling Routes belonging to the same route set with the same priority must have the same type of bearer (Broad Band or Narrow Band).</description>
+ <attribute name="Mtp3bSrId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="linkSetM3uId">
+ <description>The MTP3b Signalling Link Set (MTP3bSls) or M3uAssociation to which the MTP3bSr MO is connected.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state notification.There are two possible states for the operationalState attribute:
+- enabled, possible to perform operations on the MTP3b SR.
+- disabled, not possible to perform operations on the MTP3b SR.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+-active, route is active.
+-busy, route is congested.
+-idle, route not in use.
+
+(idle=0, active=1, busy=2)
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="priority">
+ <description>The priority of the alternative route. The traffic is directed to the highest priority route(s) available in the route set. If more than one route has the same priority within a route set then loadsharing is permitted between these routes.
+The value 1 is considered as the highest priority.</description>
+ <mandatory/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>5</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routeType">
+ <description>The type of the route.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bRouteType">
+ <defaultValue>TDM_ATM</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="RouteBlockingState">
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="RouteState">
+ <defaultValue>NOT_BLOCKED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSecondsAccumulatedRouteUnavailable">
+ <description>The number of seconds (accumulated) route unavailable.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="blockSignalingRoute">
+ <description>This action blocks the Signaling Route.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="deBlockSignalingRoute">
+ <description>This action deblocks the Signaling Route.
+
+Note! This action requires antransaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="IpSystem">
+ <description>The IP System MO constitutes the top structure level for IP related MOs in a Cello node.
+
+The IpSystem MO is automatically created and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, IpSystem=1.
+</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>An operator defined label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="IpSystemId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="ping">
+ <description>Ping - used to call a host or router to find out if it is present in the network. The following input parameter is used by the Ping action:
+The domain name or IP address to the host that shall be called.
+
+The following parameter is returned:
+Ping result: 'IP address/domain name' - is alive or no answer.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <string/>
+ </returnType>
+ <parameter name="host">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="traceRoute">
+ <description>Trace route - used to get information about the route through the IP network that is used for a destination with a specific IP address.
+
+The following input parameter is used by the trace route action:
+The domain name or IP address to a host that shall be trace-routed.
+
+The following parameter is returned:
+Trace result - list of IP addresses/domain names or path not found.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <string/>
+ </returnType>
+ <parameter name="host">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="IpAtmLink">
+ <description>This MO represents an Internet Protocol over ATM link. LLC/SNAP encapsulated packets over Atm Adaptation Layer 5, AAL5, ATM PVCs are used.
+
+Note: The performance monitoring counters in the IpAtmLink MO has a "Wrap-around time" of approximately 2 hours.
+
+Note! When setting the 'fromUserMaxSduSize' and 'toUserMaxSduSize' on the Aal5TpVccTp MO the defined SduSize should be 8 bytes larger then the 'mtuSize' on the IpAtmLink.
+
+Note! Only Aal5TpVccTp's that terminates on an MP (Main Processor) may be used when setting up IpAtmLink's.</description>
+ <attribute name="IpAtmLinkId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>The User Label attribute gives the operator the possibility to label the links.
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the IP over ATM link is dependent of the operational states of the underlying AAL5 termination points that are used to transport IP datagrams. If at least one operational AAL5 termination point (MO: AAL5 TP VCC TP) exists, the operational state of the IP over ATM Link is set to "ENABLED"</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. It is a bit mapped CORBA long, where one or more of the bits may be set. If none of the bits are set then the availability status is considered to be undefined.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>If set, indicates that this IpAtmLink is reserved by the OspfInterface represented by this attribute.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="OspfInterface"/>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="subnetMask">
+ <description>The attribute subnetMask states the subnet mask of the IP over ATM link (point to point link).
+
+The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.
+For a point to point link, the subnetmask 255.255.255.252 is very likely.
+
+Note! The subnet mask has to be contiguos. That is, it has the LSB's set to 0 (zero).
+
+Example:
+
+255.255.255.X
+
+Contiguous subnet mask:
+11111111.11111111.11111111.11111110 (X = 254)
+11111111.11111111.11111111.11111100 (X = 252)
+
+Not-contiguous subnet mask:
+11111111.11111111.11111111.11111010 (X = 250)
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="mtuSize">
+ <description>The attribute mtuSize states the maximum IP datagram size that may be sent on the IP over ATM link in bytes, without fragmentation. Recommended MTU size is 1500 bytes to prevent IP fragmentation.
+
+Note that the size of the IP datagram does not include the 8 Bytes added for the LLC/SNAP header before putting the IP datagram in AAL5 SDU.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>576</min> <max>2040</max>
+ </range>
+ <defaultValue>1500</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="metric">
+ <description>The attribute metric states the metric "cost" of the IP over ATM link. The metric value is calculated as 10^8 /link bit speed.
+
+For example:
+Metric for 10 Mbps Ethernet = 10^8/10^7 = 10
+Metric for 100 Mbps Ethernet = 10^8/10^8 = 1</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>32767</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="monitor">
+ <description>This attribute indicates whether InvATMARP monitor is turned on or off.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="monitorInterval">
+ <description>The interval between sending monitor packets.
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>60</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="monitorRetries">
+ <description>The number of retries when sending monitor packets.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="interfaceName">
+ <description>The interface name.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpSelectionMode">
+ <description>The selection mode for the Aal5TpVccTp's used by the IpAtmLink MO. Determines how the IpAtmLink MO selects the Aal5 termination points used.
+
+In case 'NO_PREFERENCE', 'LOCAL_MP_SELECT_VCC_AT_LINK_UP', LOCAL_MP_PEER_SELECTION_VCC' or 'LOCAL_MP_ACTIVE_RESELECTION' is selected the IpAtmLink MO will prefer Aal5TpVccTp on local MP (i.e. Aal5TpVccTp MOs executing on the same MP as the IpAtmLink), but other Aal5TpVccTp will be accepted if needed.
+
+In case 'ONLY_LOCAL_MP' is selected, the ipAtmLink (Inet Link) will consider Aal5TpVccTp residing on other MPs as a malfunction and discard the usage of them. No InvArp sending will be performed on them and all incomming trafic on them will be discarded. If no local Aal5TpVccTp exists the operational state of the link will be changed to disabled.
+
+ </description>
+ <dataType>
+ <enumRef name="Aal5TpSelectionModes">
+ <defaultValue>NO_PREFERENCE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Aal5TpVccTpIdList">
+ <description>References to MOs of type Aal5TpVccTp representing the underlying AAL5 termination points (of a AAL5 PVC:s) for the IP over Atm link.
+
+The operator gives a list of relative distinguished names of the Aal5TpVccTp MO's to be used by the IP over ATM link.
+An Aal5TpVccTp MO may only be specified once in the list.
+
+To change in the set of Aal5TpVccTp MO's related to the IP over ATM link the link has to be deleted and then created with the desired set of AAL5 TP.
+
+Note! Only Aal5TpVccTp's that terminates on an MP (Main Processor) may be used when setting up IpAtmLink's.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal5TpVccTp"/>
+ <length>4</length>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInUcastPkts">
+ <description>Performance monitoring counter for the number of input unicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInNUcastPkts">
+ <description>Performance monitoring counter for the number of input broadcast/multicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutUcastPkts">
+ <description>Performance monitoring counter for the number of out unicast packets deliverred to higher layer</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutNUcastPkts">
+ <description>Performance monitoring counter for the number of output broadcast/multicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInErrors">
+ <description>Performance monitoring counter for the number of input packets discarded due to any error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInDiscards">
+ <description>Performance monitoring counter for the number of input packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfifOutDiscards">
+ <description>Performance monitoring counter for the number of outbound packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="assignIpAddress">
+ <description>This action sets the IP address and the subnet mask.
+
+The changing of the IP address with the operation assignIpAddress, it might cause an interruption of the communication between the node and the network management tool. If an incorrect or erroneous IP address is configured, the communication with the node might be lost until the node is restarted or the IP address is changed to the correct value.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddress">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="subnetMask">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="EthernetLink">
+ <description>The Ethernet Link MO represents the Internet Protocol over Ethernet link. There is only one Ethernet link MO per Cello node.
+
+The changing of the IP address with operation assignIpAddress might cause interruption of the communication if the network management tool is connected via the ethernet link.
+
+Note: The EthernetLink MO can not be deleted!
+
+Note: The performance monitoring counters in the EthernetLink MO has a "Wrap-around time" of approximately 2 hours.
+</description>
+ <attribute name="userLabel">
+ <description>The User Label attribute gives the operator the possibility to label the links.
+
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress">
+ <description>The attribute ipAddress states the IP address of the Ethernet link, it is also the IP address for the O&amp;M host..
+
+The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.
+It must not be a broadcast or multicast address.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="subnetMask">
+ <description>The attribute subnetMask states the subnet mask of the Ethernet link.
+
+The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.
+
+Note! The subnet mask has to contiguos. That is, it has the LSB set to 0 (zero).
+
+Example:
+
+255.255.255.X
+
+Contiguous subnet mask:
+11111111.11111111.11111111.11111110 (X = 254)
+11111111.11111111.11111111.11111100 (X = 252)
+
+Not-contiguous subnet mask:
+11111111.11111111.11111111.11111010 (X = 250)
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="broadcastAddress">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <mandatory/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="mtuSize">
+ <description>The IP layer expects the Ethernet link to have an MTU size (maximum Ethernet frame size without fragmentization) of 1500 bytes.
+
+The value is always the default value.
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1500</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="metric">
+ <description>The attribute metric states the metric of the Ethernet link. The metric value is calculated as 10^8/link bit speed.
+
+For example:
+Metric for 10 Mbps Ethernet = 10^8/10^7 = 10
+Metric for 100 Mbps Ethernet = 10^8/10^8 = 1</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>32767</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Ethernet link is dependent of the operational states of the underlying MAU:s that represents the Ethernet transceiver function. If at least one operational MAU exists, the operational state of the Ethernet Link is set to "ENABLED"</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="interfaceName">
+ <description>The interface name.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="macAddress">
+ <description>The mac address is persistently stored in flash prom on the MP where the IP stack resides. It is stored there at manufacturing. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ <length>6</length>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>If set, indicates that this EthernetLink is reserved by the OspfInterface MAO represented by this attribute.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="OspfInterface"/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="EthernetLinkId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInUcastPkts">
+ <description>Performance monitoring counter for the number of input unicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInNUcastPkts">
+ <description>Performance monitoring counter for the number of input broadcast/multicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutUcastPkts">
+ <description>Performance monitoring counter for the number of out unicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInErrors">
+ <description>Performance monitoring counter for the number of input packets discarded due to any error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInDiscards">
+ <description>Performance monitoring counter for the number of input packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutNUcastPkts">
+ <description>Performance monitoring counter for the number of output broadcast/multicast packets deliverred to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfifOutDiscards">
+ <description>Performance monitoring counter for the number of outbound packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="assignIpAddress">
+ <description>This action sets the IP address and the subnet mask.
+
+The changing of the IP address with the operation assignIpAddress,
+causes an interruption of the communication between the node and
+the network management tool. If an incorrect or erroneous IP address
+is configured, the communication with the node might be lost until
+the node is restarted or the IP address is changed to the correct
+value.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddress">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="subnetMask">
+ <description>The input format used by the operator is four fields of digits, separated by a dot. Each field consists of three digits.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="IpRoutingTable">
+ <description>This MO holds the IP routing table.
+
+The IpRoutingTable MO is automatically created when the Ip MO is created.
+The IpRoutingTable MO can not be created manually.
+The IpRoutingTable MO can not be deleted.
+</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="indexOfDeletableStaticRoutes">
+ <description>This attribute gives the indexes for the static routes that are possible to delete by the operator.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="IpRoutingTableId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="addStaticRoute">
+ <description>Used to add a new static route to the routing table. It can be
+indicated if the static route should be redistributed by OSPF.
+When adding a static route with an ipaddress, which is not a subnet
+address, the ipaddress is recalculated to the corresponding subnet
+address, based on the ipaddress and the subnet mask. So when looking
+for this route using the action 'getRoutingTableEntry' it is in fact
+the recalculated ipaddress, that is displayed and not the ip address
+entered with addStaticRoute. This is an automatic correction.
+
+Note! If an attempt is made to add a static route with hopIpAddress starting with 0.0 an exception will be thrown.
+
+Note! This action requires a transaction.
+
+
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddress">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="subnetMask">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="hopIpAddress">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="routeMetric">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="redistribute">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="listRoutes">
+ <description>List routes actions is used to list all routes in the routing table. It requires no input parameters.
+
+The output is a formatted string, indicating the number of routes in the table followed by route information for each of these routes.
+
+The number of routes in the table is found at the very start of the returned string. Immediately following this is the information on each route in the list in turn. The route information for each route begins with a new line character ("\n") and is followed by the following data items (in the order written below), which are separated from each other by a SPACE character:
+
+- Destination IP address
+- Destination Network mask
+- Next hop IP address/Interface index of connected networks in dot-decimal format
+- Route metric
+- Route type
+- Interface name
+- Redistribute
+- Active
+
+Note that the next hop ipaddress is not an ipaddress per se, it is the subnet on wich the host/router to route to resides.
+
+Below is an example list of routes that could be returned from this action:
+
+"\n123.123.123.123 234.234.234.234 0.0.0.7 10 13 LE0 FALSE active\n122.122.122.122 233.233.233.233 0.0.0.6 2 8 LE0 TRUE active\n132.132.132.132 243.243.243.243. 0.0.0.7 9 13 LE0 TRUE inactive"
+
+In this case, there are three routes in the routing table. The first route has destination IP address of 123.123.123.123, the second route has it set to 122.122.122.122, while finally the third has it set to 132.132.132.132.
+
+NOTE that the route types can be of the following types:
+
+INET_RTPROTO_OTHER 1
+INET_RTPROTO_LOCAL 2
+INET_RTPROTO_NETMGMT 3
+INET_RTPROTO_ICMP 4
+INET_RTPROTO_OSPF 13
+
+The types listed above also denote the origin of the routing entry.
+
+Note! This action does not require a transaction.
+</description>
+ <returnType>
+ <string/>
+ </returnType>
+ </action>
+ <action name="getRoutingTableEntry">
+ <description>Returns a RoutingTableEntry according to the specified index.
+
+Should be used with action 'numberOfRoutes' within a transaction. To refresh the routing table stored in the MO, invoke the action 'numberOfRoutes'.
+
+Precondition: 0 &lt;= index &lt;= numberOfRoutes() - 1
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <structRef name="RoutingTableEntry"/>
+ </returnType>
+ <parameter name="index">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidIndexException"/>
+ </action>
+ <action name="numberOfRoutes">
+ <description>Returns the number of entries in the routing table.
+
+Each time this action is invoked, the MO retrieves routing table information from the resource layer and then builds a new array of RoutingTable structs to store this information.
+
+This action along with getRoutingTableEntry(), which allows one to iterate through the array stored in the MO, should be used together with a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ </action>
+ <action name="deleteStaticRoute">
+ <description>Removes the RoutingTableEntry submitted as a parameter from the Routing Table, if it is found in the table.
+
+Note that only static roues, previously added, can be deleted with this action.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="routingTableEntry">
+ <in/>
+ <dataType>
+ <structRef name="RoutingTableEntry"/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Ip">
+ <description>The Ip MO represents the IP protocol layer with IP forwarding functionality.
+
+Note: The performance monitoring counters in the Ip MO has a "Wrap-around time" of approximately 2 hours.
+
+</description>
+ <attribute name="IpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="workingMode">
+ <description>The workingMode of the IP MO controls if the IP stack in the node will work as a combined host/router (routerMode) or only as a host (hostMode).</description>
+ <mandatory/>
+ <dataType>
+ <enumRef name="WorkingMode">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="retransInterval">
+ <description>The retransmission interval. The units are seconds.
+Must be a value &gt; 0.</description>
+ <dataType>
+ <long>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="noOfRetrans">
+ <description>The number of retransmissions.
+Must be a value &gt; 0.</description>
+ <dataType>
+ <long>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="dnsServer">
+ <description>The Domain Name Server IP address.
+
+The IP address must be a Unicast IP address.
+</description>
+ <dataType>
+ <string>
+ <defaultValue>"127.0.0.1"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="isRecursiveSearch">
+ <description>Holds information about how the DNS client wants the DNS server do the search for the IP address in the network . It can be either Recursive search or Non-recursive search.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="isSubDomainName">
+ <description>Holds information about whether to use subsets of the fully qualified domain name to reach the simple domain name. It can be either Use subsets of domain name or Not use subsets of domain name.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="isDefDomainName">
+ <description>Holds information about whether the default domain name is present. It can be Present or Not present.
+
+</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="defDomainName">
+ <description>Contains default domain name.
+If 'isDefDomainName' is set to 'true' the domain name found in this attribute is used by the DNS resolver and there is no need to submit the complete domain name. If the domain name is for example 'ws5741.uab.ericsson.se' then the default domain name would be '.uab.ericsson.se'. If 'isDefDomainName' is set to true the there is no need for using '.uab.ericsson.se'. If set to false then the complete domain name has to be used.
+A valid domain name consists of 1 or more labels separated by dots (".").
+Valid characters for a label shall be limited to letters 'a' - 'z', 'A' - 'Z', digits '0' - '9', the character '-' ("dash").
+Character case shall be preserved. Labels shall start with a letter. Total length of a label shall not exceed 255 characters.
+
+Note! The first and last character in the domain name has to be within the following alphabet: letters 'a' - 'z', 'A' - 'Z' and digits '0' - '9'. For more information refer to RFC 952 and 1101.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the IP MO is ENABLED if at least one link is operational.
+
+Shows whether the MO is OK (enabled) or failed (disabled). The values are set by the system.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="numberOfLinks">
+ <description>Represents the number of interfaces (Ethernet and IP over
+ATM links) which has registered to the IP MO.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>If set, indicates that this Ip is reserved by the Ospf represented by this attribute.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Ospf"/>
+ </dataType>
+ </attribute>
+ <attribute name="useHostFile">
+ <description>Indicates if the hosts file should be used or not. The hostFile is used by the resolver and
+chosen as a source of information before querying a DNS server.
+
+true - use the host file.
+false - do not use the host file.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="dscp">
+ <description>The DiffServ CodePoint.
+The code point values are used by DiffServ enabled hosts and router to identify different service levels.
+When set, the DSCPs are mapped to PHBs (Per Hop Behaviours) by forwarding devices along the path
+between the source and destination. PHBs dictates how each packet will be handled i.e. what type of
+service that is applied to the packet when it is forwarded.
+
+Note! Only traffic originated from the node is tagged with the dscp value. The Cello router does not implement functionality for handling different service levels when routing IP traffic.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>63</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="icmpRedirect">
+ <description>Indicates if ICMP redirects is sent out or not.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="udpChecksumState">
+ <description>Enable/Disable generation of UDP checksum.
+0 = disabled
+1 = enabled
+
+The UDP checksum is used for verifying that the UDP header has not been damaged during transmit.</description>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="connectionAttemptTimer">
+ <description>The time that elapses before a connection (TCP) attempt times out.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <defaultValue>75</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxRetransmissionAttempts">
+ <description>The maximum number of retransmission attempts before a TCP connection is dropped.
+The default value is 10 attempts, which is around 5 minutes.
+Setting this attribute value to -1 means infinity, and TCP will never give up in trying
+to establish a connection.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>-1</min>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpInReceives">
+ <description>Performance monitoring counter for total number of datagrams received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfHdrErrors">
+ <description>Performance monitoring counter for the number of datagrams discarded due to format error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpAddrErrors">
+ <description>Performance monitoring counter for the number of datagrams discarded due to misdelivery.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpForwDatagrams">
+ <description>Performance monitoring counter for the number of datagrams forwarded.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpInDiscards">
+ <description>Performance monitoring counter for the number of datagrams dascarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpOutDiscards">
+ <description>Performance monitoring counter for the number of datagrams discarded due to lack of resources.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpReasmReqds">
+ <description>Performance monitoring counter for the number of fragments received needing reassembly.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIpReasmOKs">
+ <description>Performance monitoring counter for the number of datagrams successfully reassembled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpEntitySet">
+ <description>This MO represents an SCCP EntitySet which is made of one SCCP Entity. An SCCP Entity is a local MTP-SAP + a DPC + possibly an SSN, i.e an SCCP EntitySet identifies the set of access points that result from a global title translation. An SCCP EntitySet may also be made of two SCCP Entities of the same type (if an SSN is present in one SCCP Entity, then an SSN shall also be present in the other). In the latter case the two SCCP entities may be considered either as a "primary" SCCP Entity and a "backup" SCCP Entity (dupli-dominant mode) or may be interpreted as two equal SCCP entities that can be used for outgoing loadsharing purpose. In this implementation they can only be considered as "primary" and "backup".The Routing Indicator (RI) in the Called Party Address is normally not set by the SCCP for outgoing messages and should therefore be set by the user. This means that if the user has set "Route on SSN" this will be the case after the GTT also even if the set consist of MTP-3b Access Points. However, if the set consists of SCCP Access Points the RI is implicitly set to "Route on SSN" by SCCP.
+
+DPC Destination Point Code
+GTT Global Title Translation
+MTP Message Transfer Part
+SAP Signalling Access Point
+SSN Subsystem Number
+
+Note: the SccpEntitySet MO depends either on MAOs of type SccpApLocal OR SccpApRemote, not on a mixture of these MAO types.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="routeIds">
+ <description>The Entity Set routeId is an array of maximum two instances of Sccp ApLocal MO's OR two instances of SccpApRemote MO's OR two instances of Mtp3bAp MO's OR one instance of SccpSP MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ <length>2</length>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="sharingMode">
+ <description>The sharingMode attribute controls the distribution of SCCP traffic over the entities (Access Points) in the set.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="SharingMode">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="newSubSystemNumber">
+ <description>The new sub system number attribute is only valid if the Mtp3b Access Points are used in the set. In that case the SSN attribute allows to optionally set the subsystem number in the Called Party Address as a result of a Global Title Translation. If the set consists of SCCP Access Points the subsystem number in the Called Party Address is always implicitly set to the SCCP Access Point SAP (SSN) as a result of a Global Title Translation.
+This attribute is controlled by the type of AP(s) that the EntitySet refers to.
+
+The default value 0 means no new subsystem number.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>254</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="newGlobalTitle">
+ <description>The New Global Title attribute allows to optionally replace the global title in the Called Party Address as a result of a Global Title Translation (GTT). If the GT resulting from a GTT is different from the GT previously included in the Called Party Address, the newly produced GT replaces the existing one. The gtIndicator attribute is read-only and is derived from the combination of Nature Of Address, the Translation Type and Numbering Plan used.
+
+Default value is considered as no new Global Title.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="GlobalTitleData"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SccpEntitySetId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpGlobalTitle">
+ <description>The SCCP Global Title MO represents a combination of a global title translator and a global title rule. If no Destination Point Code (DPC) is present in the Called Party Address, a Global Title (GT) is needed. Then a global title must be present in the Called Party Address, otherwise a routing error occurs. A global title translator is selected by SCCP based on a combination of the values of the Nature Of Address (NA), the translation type (TT), and the Numbering Plan (NP) if available, in this MO matched with the same information in the Called Party Address provided by an SCCP user. A global title translation rule is selected by SCCP by matching the Global Title Address Information and possibly the Encoding Scheme in this MO, with the same information in the Called Party Address provided by an SCCP user. A global title translation rule points to the SCCP Entity Set resulting from the global title translation (GTT).
+The translation results in a DPC and possibly a new Sub System Number (SSN) or GT or both (decided by the SCCP Entity Set it refers to). If the GT and/or SSN resulting from a GTT is different from the GT and/or SSN previously included in the Called Party Address, the newly produced GT and/or SSN replaces the existing one.
+
+GT - Global Title
+SCCP - Signalling Connection Control Part
+SSN - Sub System Number
+DPC - Destination Point Code
+TT - Translation Type
+GTT - Global Title Translation</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="gtIndicator">
+ <description>Global title indicator for China, ITU, TTC and ANSI.
+
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="GlobalTitleIndicator">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="natureOfAddress">
+ <description>Indicates number type, i.e. national or international number.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NatureOfAddress">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="numberingPlan">
+ <description>Indicates which numbering plan that is used.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NumberingPlan">
+ <defaultValue>UNKNOWN</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="translationType">
+ <description>Used to direct the message to the appropriate Global Title translation function.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>254</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="addressInformation">
+ <description>Digit string of 1-37 digits, where each digit is 0-9, and "B", "C". "B" and "C" are for Code 11 and Code 12.
+The addressInformation may also contain wild card symbols: "*" or "?". Wild cards are only allowed for defining Global Title Translations, they are not allowed for specifying SCCP SAPs (built with SPC and Global Title or SPC + SSN + Global Title).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>37</max>
+ </lengthRange>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="encodingScheme">
+ <description>Indicates if the number of address signals are an odd or even number.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="EncodingScheme">
+ <defaultValue>UNKNOWN</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="sccpEntitySetId">
+ <description>The sccpEntitySetId attribute points out the corresponding SccpEntitySet MO.
+
+Note! This attribute is only optional if this MO is used by Policing. In all other cases it has to be set.</description>
+ <noNotification/>
+ <dataType>
+ <moRef name="SccpEntitySet"/>
+ </dataType>
+ </attribute>
+ <attribute name="SccpGlobalTitleId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2PathVccTp">
+ <description>This MO is used to represent an AAL2 Path, i.e. an ATM VC connection that carries multiplexed AAL2 links.
+
+VCC TP - Virtual Channel Connection Termination Point.
+
+The total number of Aal2PathVccTps associated to an Aal2Ap, by connecting them to Aal2PathDistributionUnits under that Aal2Ap, must not exceed 632.
+
+The total number of Aal2PathVccTps associated to a ReliableProgramUniter, by connecting them to Aal2PathDistributionUnits associated to the ReliableProgramUniter, must not exceed 280.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0.
+</description>
+ <attribute name="Aal2PathVccTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpId">
+ <description>Reference to the VclTp to be used by this Aal2PathVccTp.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the termination point. </description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of the termination point.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving Aal2PathDistribution MO.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of Aal2PathVccTp.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuitiy checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second.
+
+Activates VC end to end continuityCheck according to ITU.T rec I.610.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>PM mode is set to indicate type of performance monitoring mode (ie. activation of bidirectional PM measurements).
+
+</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlocksize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="timerCu">
+ <description>Timer that assures that CPS-packets with one or more octets already packed in the ATM cell wait at most the duration of timerCu before being scheduled for transmission.
+
+Units for timerCu is 10 to the power of -4 seconds. This value can be set in steps of 10 to the power of -4.
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aal2PathId">
+ <description>This attribute is used to identify the path in the Q.2630.1 protocol.
+
+The pathId value must be unique within all Aal2PathDistributionUnits under the same Aal2Ap
+
+All integers &gt; 0 are allowed (not 0).
+
+The Aal2PathId is used by the Aal2 connection control function in two Aal2 nodes to uniquely identify an AAL2 path between the two nodes. This means that the value of the attribute Aal2PathId for an Aal2 path must be the same in each of the two nodes.
+
+In order to set this attribute, the Aal2PathVccTp may not be reserved. If an attempt is made, an "IsReservedCanNotSetPathId" exception is thrown.
+
+Note! Setting of this attribute will not have any effect until 'actionAddPath' in Aal2PathDistributionUnit MO' is called adding this MO to the list of Aal2PathVccTp MO's.</description>
+ <mandatory/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2147483647</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aal2PathOwner">
+ <description>This attribute indicates whether this Aal2 Path VCC Termination Point is considered the owner of the Aal2 Path in order to decide channel selection procedure in the Q.2630.1 protocol.
+
+Note! In order to set this attribute, the Aal2PathVccTp may not be reserved. If an attempt is made, an "IsReservedCanNotSetPathId" exception is thrown.
+
+Note! The administrativeState has to be LOCKED when this attribute is set, if not the "IsUnlockedCanNotSetPathOwner" exception is thrown.
+
+Note! Setting of this attribute will not have any effect until 'actionAddPath' in Aal2PathDistributionUnit MO' is called adding this MO to the list of Aal2PathVccTp MO's.</description>
+ <mandatory/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="aal2QoSProfileId">
+ <description>The identity of the QosProfile used by the Aal2PathVccTp.</description>
+ <mandatory/>
+ <dataType>
+ <moRef name="Aal2QosProfile"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal2QoSAvailableProfiles">
+ <description>This attribute specifies which QoSClass that can be supported by this Aal2Path.
+</description>
+ <dataType>
+ <enumRef name="SupportedQoSClasses">
+ <defaultValue>CLASS_A_B_C_D</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for forwarded lost cells.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forwarded missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forwarded errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2RoutingCase">
+ <description>This MO represents a AAL2 routing case which points out an AAL2 access point. </description>
+ <attribute name="Aal2RoutingCaseId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>For free use</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="routeList">
+ <description>An array of alternative routes identified by the concerned Aal2Ap MOs. A routeList can have 0 to 5 Aal2Aps.
+The Aal2Ap must be unique.
+Note! if this attribute is set, the routePriorityList also must be se with the same number of values ( if the routeList
+contains 3 routes, the routePriorityList must contain 3 prioritys).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2Ap"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="routePriorityList">
+ <description>A list of all the Aal2Ap priorities.
+The priority values can be in the range 1 to 5, one beeing the highest priority.
+The Aal2Aps can have the same priorities.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <long>
+ <range>
+ <min>0</min> <max>5</max>
+ </range>
+ </long>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="numberDirection">
+ <description>Defines the possible set of AAL type 2 Service Endpoint Addresses (A2EA) that match the routing case.
+
+The number direction of a routing case shall be interpreted as all AAL type 2 Service Endpoint Addresses
+starting with the string of numbers defined in the number direction. For example, the AAL2 End System
+Addresses "12340" and "123400" will both match the number direction "1234".
+
+The AAL2 routing function uses a longest match comparison to select between routing cases with overlapping
+number directions. For example, given two routing cases A with the number direction "1234" and B with the number
+direction "12345" the AAL2 End System Address "12345" will be routed using routing case B, whereas the AAL
+type 2 Service Endpoint Addresses "12344" and "12346" will be routed using routing case A.
+
+NOTE: It is not allowed to use leading zeros when configuring this attribute.
+
+NOTE: It is not possible to replace an existing routing case by creating routing cases with number directions that
+completely overlap the number direction of the existing routing case.
+
+NOTE: It is not possible to create two routing cases with the exact same number directions in a node.
+
+NOTE: It is possible to create one or more routing cases with number directions that partially overlap the number
+direction of an existing routing case.
+
+Length range 1..15
+Alphabet: "0123456789"
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>15</max>
+ </lengthRange>
+ </string>
+ </dataType>
+ </attribute>
+ <action name="addAal2ApToRc">
+ <description>Adds the identified (and existing) Aal2Ap MO to the routeList. This action should also be used when changing the priority for an existing Aal2Ap MO. When submitting an existing Aal2Ap MO with a new priority the routing list will be updated with the new priority for the specified Aal2Ap MO.
+
+Note! In order to be able to update the priority for a routing entry, the routing entry first has to be deleted and then submitted with the new priority.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="priority">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="route">
+ <in/>
+ <dataType>
+ <moRef name="Aal2Ap"/>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidPriorityException"/>
+ <raisesException name="IllegalArgumentTypeException"/>
+ <raisesException name="IllegalAttributeValueException"/>
+ </action>
+ <action name="removeAal2ApFromRc">
+ <description>Removes the identified Aal2Ap MO from the routeList.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="route">
+ <in/>
+ <dataType>
+ <moRef name="Aal2Ap"/>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalAttributeValueException"/>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ </class>
+
+ <class name="Aal2Sp">
+ <description>The Aal2Sp (AAL2 Signalling Point) MO is used to represent the AAL type 2 Service Endpoint Address of the node in the AAL2 network.
+There is one and only one instance of this MO in the ATM NE system.</description>
+ <attribute name="userLabel">
+ <description>For free use</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="a2ea">
+ <description>An E.164 format number that specifies the AAL type 2 Service Endpoint Address of the node.
+
+Length Range: 1..15
+Alphabet: "0123456789"
+
+Note! It is not allowed to use leading zeros when configuring this attribute.</description>
+ <mandatory/>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>1</min> <max>15</max>
+ </lengthRange>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Aal2SpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnsuccessfulConnsInternal">
+ <description>Performance monitoring counter for the number of unsuccessful attempts to establish connections due to node internal problems.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2Ap">
+ <description>This MO represents a AAL2 Access Point signalling function associated with a single AAL2 signalling relationship to a remote peer AAL2 acess point signalling function. An AAL2 access point is either a high rate access point that uses MTP-3B for signalling or a low rate access point that uses UNI-SAAL for signalling.
+
+Aal2Ap - Aal2 Access Point
+
+Note! The performance monitoring counters in the AalAp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="Aal2ApId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Free for use</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>This attribute holds a list of the reserving MOs.
+</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of the AAL2 AP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the Aal2Ap.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="timerErq">
+ <description>Q.2630.2 establishment request timer. Unit is milli seconds.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>5000</min> <max>30000</max>
+ </range>
+ <defaultValue>5000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="timerRel">
+ <description>Q.2630.2 release request timer. Unit is milli seconds.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>2000</min> <max>60000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="sigLinkId">
+ <description>Reference to a UniSaalTp or Mtp3bAp MO that provides a signalling link for the Aal2Ap.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="secondarySigLinkId">
+ <description>Reference to a secondary signalling link MO of type UniSaalTp. This attribute can only be set when sigLinkId is of type UniSaalTp.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>The physical location of an AP (Access Point) LR/HR (Low Rate/ High Rate) program represented by a reference to a RPU (ReliableProgramUniter) MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal2QoSCodePointProfileId">
+ <description>The identity of the QoSCodePointProfile used by this MO.</description>
+ <dataType>
+ <moRef name="Aal2QosCodePointProfile"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmExisOrigConns">
+ <description>Performance monitoring counter pmExisOrigConns.
+Number of existing connections for the AP originating in this node.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nrOfConfiguredAal2Paths">
+ <description>The total number of Aal2PathVccTp MOs configured on this Aal2 Ap.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nrOfUnavailableAal2Paths">
+ <description>The total number of unavailable Aal2PathVccTp's on this Aal2 Ap, i.e. the number of Aal2PathVccTp MOs connectected to this Aal2Ap with 'administrativeState' LOCKED.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmExisTermConns">
+ <description>Performance monitoring counter pmExisTermConns.
+Number of existing connections for the AP terminating in this node.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmExisTransConns">
+ <description>Performance monitoring counter pmExisTransConns.
+Number of existing connections for the AP transiting in this node.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSuccOutConnsRemote">
+ <description>Performance monitoring counter pmSuccOutConnsRemote.
+Number of successful establishment of outgoing connections on this AP</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSuccInConnsRemote">
+ <description>Performance monitoring counter pmSuccInConnsRemote.
+Number of successful establishment of incoming connections on this AP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnSuccInConnsRemote">
+ <description>Performance monitoring counter pmUnSuccInConnsRemote.
+
+Number of unsuccessful establishment of incoming connections on this AP caused by reject from beyond this node.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnSuccOutConnsRemote">
+ <description>Performance monitoring counter pmUnSuccOutConnsRemote.
+
+Number of unsuccessful establishment of outgoing connections on this AP caused by reject from remote side, reset from remote side, no reply or signalling link failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnSuccInConnsLocal">
+ <description>Performance monitoring counter pmUnSuccInConnsLocal.
+Number of unsuccessful attempts to allocate Common Part Sublayer, CPS, resources during establishment of incoming connections on this AP caused by Channel Identifier, CID, and/or bandwidth collision or mismatch of Call Admission Control, CAC, between peers.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnSuccOutConnsLocal">
+ <description>Performance monitoring counter pmUnSuccOutConnsLocal.
+
+Number of unsuccessful attempts to allocate CPS resources during establishment of outgoing connections on this AP. Caused by rejects in CAC (Connections Admission Control).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnRecMessages">
+ <description>Performance monitoring counter pmUnRecMessages.
+
+Number of received unrecognized Q.2630.1 messages on this AP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUnRecParams">
+ <description>Performance monitoring counter pmUnRecParams.
+
+Number of received Q.2630.1 messages with unrecognized parameters on this AP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etm1">
+ <description>This MO represents the hardware of the ET-M1 board type. It only represents the ET specific hardware, while the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-M1 board contains 8 physical ports that can be configured as either E1 (ETSI), J1 (TTC) or T1(ANSI). The board does not allow for a mix of E1, J1 and T1 ports, thus all configured ports on the board must be configured to the same standard.
+
+Each of the ports on the ET-M1 board can be used to carry either ATM traffic or circuit orientated (Nx64 Kbits/s connections) traffic.
+
+Each port can support up to 30 ATM VC connections. Two of these connections are reserved for AAL2 paths, and therefore two AAL2 multiplexers per port are available.
+
+Each port can support up to 2 VP connections.
+
+The ET-M1 board supports 1 bidirectional F4/F5 PM flow per port.
+
+Other restrictions:
+- All ports (configured for ATM) on the board must have the same value for the hecCorrection attribute (ATM Port MO).
+- It is possible to configure UBR+ traffic, but there is no guarantee on the minimum cell rate.
+- VP shaping is not supported (it is recommended to configure at most one VP per physical port).
+- VC shaping is not supported with an exception for AAL2 path traffic. This is shaped to the peak bandwidth on the VC connection.
+- When using the Etm1 board the performance monitoring counters in the transmit direction found on the AtmPort MO does not show the following cells: CC cells and OAM FPM cells.
+
+Note! IMA is not applicable for the ETM1 board.
+
+Note! When using fractional atm, timeslot 1 must be a part of the fraction.
+
+Note! ETM1 does not support EPD and PPD
+
+Note! ETM1 does not have a proper buffer management. Thus fairness of UBR+ traffic can not be guaranteed and shaping on UBR+ traffic is not possible.
+
+Note! The number of VCC TP+VPC TP with performance monitoring enabled (i.e. PM mode &lt;&gt; off) is restricted to 1 per port.
+</description>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the Etm1 board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Etm1Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="TuSyncRef">
+ <description>This MO is used to administer synchronization reference (a synchronization input with support for 2MHz and 10MHz signals) on Timing Unit board.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of TU synchronization reference</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>Administrative state of TU synchronization reference</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the TuSyncRef.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>When the TU synchronization reference is registered in the system as an usable synchronization reference, this MO reference is set by using "local" operation syncReserve(). When synchronization reference is de registered, "local" operation syncRelease is used. Note that the only valid user of these operations is Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ <attribute name="TuSyncRefId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Spm">
+ <description>The Special purpose Processor Module MO, Spm, represents one of the Special Purpose Processors and its connected hardware. This object is used for SW management and restart. Hardware failure indications are sent to Spu.
+
+Note! If the board is of type SPB1 the maximum number of Spm MO's that is possible to create under the Spu MO is 3.
+If the board is of type SPB2 the maximum number of Spm MO's that is possible to create under the Spu MO is 5.</description>
+ <attribute name="SpmId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SPM</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="switchModuleNumber">
+ <description>Switch Module Number</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="asciPortNumber">
+ <description>ASCI Port Number</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="executionResourceNumber">
+ <description>The identity of the SPM on the Special purpose Processor Unit (SPU).
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="runningResourceIdList">
+ <description>The list of identities of running Spm's
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="installedResourceIdList">
+ <description>The list of identities of installed Spm's in the system.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="spLinkName">
+ <description>The uniqe name of the link between the SP and BP.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>Restarts the SP.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Spu">
+ <description>The Special purpose Processor Unit MO, Spu, represents the board specific HW on SPB. This objects collects HW failure indications on the board and issues/ceases alarms.</description>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SPB board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="spLinkName">
+ <description>The special purpose processor link name.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SpuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="restart">
+ <description>Restarts all SPs on the board (but not the BP).
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="AtmCrossConnection">
+ <description>This MO is used to represent the point-to-point ATM cross-connect relationship between two VCL termination points.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state for the cross connection.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpAId">
+ <description>Identifies the VclTp managed object involved in the A side of the cross connection (which consists of an A and B side).
+
+Must not be the same as vclTpBId.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpBId">
+ <description>Identifies the VclTp managed object involved in the B side of the cross connection (which consists of an A and B side).
+
+Must not be the same as vclTpAId.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="AtmCrossConnectionId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ConfigurationVersion">
+ <description>The Configuration Version, CV, is an MO managing all on disk saved node configuration. This MO keeps all administrative data about the CV's including path and file-names of the configuration files. There may be more than one CV on the disk but only one is used at the time. A CV is always based on one Upgrade Package.
+
+The local distinguished name of this MO is ManagedElement=1, SwManagement=1, ConfigurationVersion=1.</description>
+ <systemCreated/>
+ <attribute name="ConfigurationVersionId">
+ <description>Configuration version MO's id.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="storedConfigurationVersions">
+ <description>List of stored configuration versions in the node.
+
+Stored in and read from the file system.
+
+List of stored configuration versions (CV) in the node.
+
+The list is a sequence of CVs.
+Each CV is presented as structure. A CV structure has following fields:
+ 1. Name
+ 2. Identity
+ 3. Type
+ 4. UpgradePackageId
+ 5. Operator name
+ 6. Comment
+ 7. Date
+ 8. Status
+
+The CV list is formatted as a sequence of ConfigurationVersionAttributes.
+Each struct contains one CV.
+
+The following characters are allowed within the struct members below.
+
+[0-9], [A-Z], [a-z] and '&amp;' , '%' , ':' , '.' , '_' , '-'
+
+Note! For comment and operatorName spaces (' ') are also allowed within the strings.
+
+Struct element description :
+-Name is in string format, max length is 40.
+-Identity is in string format, max length is 40.
+-Type is in string format, max length is 40.
+-UpgradePackageId is in string format, max length is 40.
+-Operator name is in string format, max length is 40.
+-Comment is in string format, max length is 40.
+-Date is in string format, max length is 40. Format for date is: weekday month date hour:min:seconds year.
+-Status is in string format, max length is 40.
+
+Note! The identity can not be the same as name. Identity should contain the product identity.
+
+
+</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <structRef name="ConfigurationVersionAttributes"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="currentLoadedConfigurationVersion">
+ <description>The name of the current loaded configuration version.
+
+Stored in and read from the file system.
+
+This is the configuration version that the system started with, i.e. the configuration version that was startable at the last node restart. </description>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="startableConfigurationVersion">
+ <description>The name of the configuration version that will be used at next node restart.
+
+Stored in and read from the file system.
+
+This attribute is set by the action "setStartable( name of cv)".
+Also set at rollback by the system. The first CV in the rollback list is then used.</description>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="rollbackList">
+ <description>A list of configuration versions to rollback to (configuration version name).
+
+The configuration version on the first line is used at the next rollback. That line is then automatically removed from the rollback list.
+
+This attribute is modified by actions setFirstRollbackList() and removeFromRollbackList()</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="currentUpgradePackage">
+ <description>A reference to current executing upgrade package.</description>
+ <readOnly/>
+ <dataType>
+ <moRef name="UpgradePackage"/>
+ </dataType>
+ </attribute>
+ <attribute name="autoCreatedCVIsTurnedOn">
+ <description>Flag that indicates that a configuration version will be created automatically once a day.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="timeForAutoCreatedCV">
+ <description>Time for the automatic creation of configuration versions once a day.
+
+The string must be specified as "HH:MM" to be accepted at set.
+
+See also Class Attribute autoCreatedCVIsTurnedOn.
+The time is UTC time.
+
+Note! If changing the clock on the node, this attribute must be set or
+the JVM MP must be reastarted.
+
+
+</description>
+ <dataType>
+ <string>
+ <defaultValue>"04:00"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="rollbackOn">
+ <description>Flag that indicates if rollback is enabled or not.
+When true the system will automatically set the rollback counter. In case of cyclic restarts a rollback will be issued after x restarts. x is defined by the rollbackInitCounterValue.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rollbackInitTimerValue">
+ <description>Used by the system when rollback is switched on (autoRollbackOn=true). After the given time the node is considered not in a cyclic restart mode. The rollback counter will then be reset to its initial value (rollbackInitCounterValue).
+
+Timer value in minutes.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>10000</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="rollbackInitCounterValue">
+ <description>Initial value for the rollback counter. Used when rollback is switched on (autoRollbackOn=true).
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>10000</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="commandlogStatus">
+ <description>An attribute to indicate status of command log.
+It can be ON/OFF(true/false). </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="executingCv">
+ <description>The name of the executing Configuration Version, CV.
+
+Same as 'currentLoadedConfigurationVersion' after a node restart, changed to the value of lastCreatedCv when a CV is created.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="lastCreatedCv">
+ <description>The name of the last created Configuration Version, CV.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <action name="setStartable">
+ <description>The CV given will be the one used at the normal node restarts. Only A CV with status = OK can be set as startable.
+
+This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="create">
+ <description>A new CV directory will be created. A DB backup from the current RAM CV,
+an ARMAMENT file and the file LLP:LMid is created at the directory. The current
+command log file is copied to the CV directory first, then it removes the file from
+the current directory.
+
+Note: The file cmdlog.properties under /c/ will not be saved to the CV.
+
+The following characters are allowed in the Strings:
+
+[0-9], [A-Z], [a-z] and '&amp;' , '%' , ':' , '.' , '_' , '-'
+
+Note! For comment and operatorName spaces (' ') are also allowed within the strings
+
+-configurationVersionName is in string format, max length is 40 characters.
+-identity is in string format, max length is 40 characters.
+-operatorName is in string format, max length is 40 characters.
+-comment is in string format, max length is 40 characters.
+
+This action does not require a transaction.
+
+Note! The configurationVersionName and identity can not be the same. The identity should be the product identity.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <description>One ASCII text string. It must be possible to create a directory with string. Do not use string "autocreated1" and "autocreated2" as cv name. They are used by the system.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="identity">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="type">
+ <description>Type of the configuration version [ standard | test | other ].</description>
+ <in/>
+ <dataType>
+ <enumRef name="ConfigurationVersionType">
+ <defaultValue>other</defaultValue>
+ </enumRef>
+ </dataType>
+ </parameter>
+ <parameter name="operatorName">
+ <description>The operator's name.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="comment">
+ <description>The operator's comment.</description>
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <raisesException name="ValueOutOfRangeException"/>
+ </action>
+ <action name="delete">
+ <description>Delete a configuration version (CV) permanently.
+
+If CV is referenced in the startable or in the rollback list, the action is not performed (an exception is thrown instead).
+
+Note! The latest created CV is not deletable until a node restart is performed or a new CV is created. Also note that a CV is not possible to delete when it has one of the folowing properties:
+- "loaded"
+- "startable"
+- The CV is found in the "rollbacklist"
+
+This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="removeFromRollbackList">
+ <description>Removes a Configuration Version (CV) from the rollback list.
+
+This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="setFirstRollbackList">
+ <description>Adds a Configuration Version (CV) first in the rollback list. This will cause the node to chose this CV at the next rollback. A CV with status NOK, can't be put in the rollback list.
+
+This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="configurationVersionName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="activateCommandLog">
+ <description>This action activates the log.
+
+The inparameter is the drive name (where the command log file should be stored).
+
+Default command log is drive /c/.
+
+Note! Invoking this action affects the attribute'commandLogStatus'.
+
+Note! This action does not require a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="cmdlogdriveName">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidDriveNameException"/>
+ <raisesException name="LogActivationException"/>
+ </action>
+ <action name="deactivateCommandLog">
+ <description>This action deactivates the logging of configuration commands.
+
+Please note that uncommited data will be lost.
+
+Note! Invoking this action affects the attribute'commandLogStatus'.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="LogActivationException"/>
+ </action>
+ </class>
+
+ <class name="SwManagement">
+ <description>This MO is used as a structural element for the SW managed object. The MO structures the software resources of the node.
+
+Note that the SwManagement MO is automatically created and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, SwManagement=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SwManagementId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="normalizeRPU">
+ <description>This action will normalize all RPUs in the node.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="UpgradePackage">
+ <description>The UpgradePackage, UP, represents an upgrade package as stored in the node file system and as stored on the ftp server that it is/shall be fetched from.
+
+There may be more than one UP at the same time on the disk. One UP represents the running system issue in the node. That one is pointed out by the Configuration Version MO.
+
+The actions on an UpgradePackage MO, are actions that can be called to take that particular UpgradePackage into operation on the node.
+
+The deletion of the Upgrade Package on disk is performed when the associated Upgrade Package MO is deleted. The Upgrade Package's unique LoadModule MOs and files are deleted. ConfigurationVersions in otherReferringCVs are deleted.
+
+
+The UP MO refers to all load modules used in the UP. One load module may by used in more than one UP.
+
+Note at the start-up of the system/database/loading of a Configuration Version, special Upgrade Package MOs are created to represent Upgrade Packages that are stored on the disk but do not have an MO in the current Configuration Version. These special Upgrade Package MOs have are in the "onlyDeletable" state. In this state, the MO will throw ActionNotAllowedException on all its actions!
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.</description>
+ <attribute name="UpgradePackageId">
+ <description>The identity of the MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free of use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="loadModuleList">
+ <description>List of references to load modules that belong to this upgrade package.
+
+The list will be null until a successful install has been performed.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="LoadModule"/>
+ <nonUnique/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="upgradeControlFilePath">
+ <description>Path to the .xml file on the node once it has been fetched from the FTP server.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="state">
+ <description>Contains the state of this upgrade package.
+
+The management system and/or operator need to act on some changes in the state attribute.
+
+This attribute is used to accept/reject and modify behavior of actions. For example action 'upgrade' is not allowed in state notInstalled. Furthermore, action 'upgrade' does not behave the same if state == 'Installed' compared to if state == 'executingUpgrade' or 'awaitingConfirm'.
+
+To continue and conclude the upgrade sequence when in state == 'awaitingConfirm', action 'confirmUpgrade()' must be called. In this state it is also advisable to check attribute 'confirmationDeadline' to see how much time it is left before automatic rollback is done.
+
+Upgrade Package MOs that are stored on disk but do not have an MO in the current Configuration Version are in state "onlyDeletable". An MO in this state will throw the exception ActionNotAllowedException on all its actions.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <enumRef name="UpgradePackageState">
+ <defaultValue>NOT_INSTALLED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="progressHeader">
+ <description>Header enum describing the current progress indication.
+Note that this is only progress information, that should be shown to a human operator, because some operations may take time.
+
+Changes in the progress header NEVER entails that the operator or management system need to perform any particular actions. </description>
+ <readOnly/>
+ <dataType>
+ <enumRef name="UpgradeProgressInformation">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="progressTotal">
+ <description>
+This notification attribute is used to indicate progress for different steps in the upgrade sequence. The value gives the total number of steps that is to be performed in current step.
+
+This attribute is changed whenever 'progressHeader' is changed and indicates a maximum count for the progress of the progress counter. What items that are counted is specific for each case. For some cases, the counter is not yet implemented. In these cases, the progressTotal is set to zero (0) when the progressHeader is set.
+
+</description>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="progressCount">
+ <description>This attribute is used to indicate progress for different steps in the upgrade sequence. The value is separated in increments from 0 to progressTotal.
+
+The value of progressCount never exceeds the value of 'progressTotal'.
+
+For some cases, the counter is not yet implemented. In these cases, the progressCount is set to zero (0) when the progressHeader is set.</description>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeData">
+ <description>Contains product data for this upgrade package. This information is extracted from the upgrade control file. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="confirmationDeadline">
+ <description>This attribute contains the deadline date and time for an operator confirmation. If the deadline is not met, then an automatic rollback to a previous configuration is issued by the system.
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ftpServerIpAddress">
+ <description>Ip address to the ftp server where the upgrade package is stored.
+
+The input format used by the operator is four fields of digits, separated by a dot.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="upFilePathOnFtpServer">
+ <description>File path on the FTP server to the upgrade control file. </description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="user">
+ <description>User id. to be used for logging in to the FTP server.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>anonymous</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="password">
+ <description>Password to the FTP server. This attribute is only supplied at create and is not readable.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>anonymous</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="upgradePackageDocumentId">
+ <description>The document number and revision of the uppgrade package where the white spaces has been removed and underscore between the document number and revision has been inserted e.g. 19089-CSX10901/1_A.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="deletePreventingCVs">
+ <description>The list containing the names of the Configuration Versions that stop the Upgrade Package MO from being deleted.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="otherReferringCVs">
+ <description>The list of names of Configuration Versions that refer to the Upgarde Package MO, but do not affect the deletable status of the Upgrade Package MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="isDeletable">
+ <description>Indicates if the Upgrade Package MO can be deleted.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="basedOnUpgradePackages">
+ <description>This attribute is only valid for Upgrade Packages of type Delta.It contains the merge history of this upgrade package.
+
+Example: [Product Data for normal UP (non Delta UP), Product Data for Delta UP1, Product Data for Delta UP2]. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <structRef name="AdminProductData"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="upCompatibilityIndex">
+ <description>This attribute states a compatibility index.
+
+If specified, it may be used when verifying that an upgrade 'from' state is valid for this Upgrade Package.
+
+Note: It is only used when the Upgrade Control File element upgrade window contains this type of information.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="cppUpVersion">
+ <description>This attribute states the CPP upgrade package version of this Upgrade Package</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="actionResult">
+ <description>The attribute contains the result from the latest four invoked actions.
+
+This attribute is only valid for actions::
+- install (all variants)
+- cancelInstall
+- verifyUpgrade
+- upgrade (all variants, Note that the attribute is only valid when the verification phase discovers that upgrade is not possible').</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <structRef name="ActionResultData"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="install">
+ <description>Load modules defined in the Upgrade Package Control file will only be downloaded to the node if the Load Module MO representing the load module file doesn't already exist.
+The result of this action is indicated in the attribute ActionResult. In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'.Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action will be removed in a later version.
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="FtpServerNotAccessibleException"/>
+ <raisesException name="GetFileException"/>
+ <raisesException name="IpAddressException"/>
+ <raisesException name="UpgradeControlFileException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="verifyUpgrade">
+ <description>Verifies that an upgrade is possible.
+
+The operation is not blocked while the verification is executing i.e. after basic controls the operation initiates the verification and returns 'void'.
+
+The progress of this action is indicated in the attribute ProgressHeader.The result of this action is indicated in the attribute ActionResult.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note: This action does not require a transaction.
+
+
+
+</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="VerifyUpgradeException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="upgrade">
+ <description>Upgrades the node. The operation is not blocked while upgrade is executing i.e. after basic controls the operation initiates the upgrade and returns 'void'.
+
+Before the real upgrade is started a verification phase is executed.
+
+The progress of this action is indicated in the attribute ProgressHeader.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+The result of this action is only indicated in attribute ActionResult in case the verification phase discovers that upgrade is not possible.
+
+Note: This action does not require a transaction.
+
+</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="UpgradeNotPossibleException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="rebootNodeUpgrade">
+ <description>The same as upgrade except that the hard upgrade sequence is always chosen.
+
+It could be helpful to use this method if the application has start- or upgrade- synchronization problems when using a soft upgrade sequence.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+The result of this action is only indicated in attribute ActionResult in case the verification phase discovers that upgrade is not possible.
+
+Note: This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="UpgradeNotPossibleException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="confirmUpgrade">
+ <description>The operator invokes this method when the trial period is over.
+The operation is not blocked while upgrade is executing i.e. after basic controls the operation initiates the upgrade and returns 'void'.In case the upgrade fails after 'void' has been returned the attribute ProgressHeader will be set to 'UpgradeExecutionFailed'.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="UpgradeNotPossibleException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="cancelUpgrade">
+ <description>Cancels an executing upgrade or an upgrade that is awaiting confirm.
+
+Note: This action performs a node restart so that the CV pointed out in the ConfigurationVersion MO is rolled back.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="forcedInstall">
+ <description>All load modules defined in the Upgrade Package Control file will be downloaded to the node even if the Load Module MO representing the load module already exists i.e. existing load module files are replaced.
+The result of this action is indicated in the attribute ActionResult.In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'.Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action will be removed in a later version.
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="FtpServerNotAccessibleException"/>
+ <raisesException name="GetFileException"/>
+ <raisesException name="IpAddressException"/>
+ <raisesException name="UpgradeControlFileException"/>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="nonBlockingInstall">
+ <description>Load modules defined in the Upgrade Package Control file will only be downloaded to the node if the Load Module MO representing the load module doesn't already exist.
+
+This action is non-blocking i.e. the action initiates the installation and returns 'void' immediately without waiting for the installation to be completed.
+
+In case the installation fails after 'void' has been returned, this will be indicated by change of the value of attribute 'ProgressHeader' to 'ExecutionFailed'. Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action does not require a transaction.
+</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="nonBlockingForcedInstall">
+ <description>All load modules defined in the Upgrade Package Control file will be downloaded to the node even if the Load Module MO representing the load module already exists i.e. existing load module files are replaced.
+This action is non-blocking i.e. the action initiates the installation and returns 'void' immediately without waiting for the installation to be completed.
+The result of this action is indicated in the attribute ActionResult.In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'. Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="nonBlockingSelectiveForcedInstall">
+ <description>This action only installs the load modules that are required in this node i.e. the load modules required after successful execution of action upgrade on this upgrade package.
+
+A load module is considered to be required if one of the following criteria is fulfilled:
+a) The load module is included in a Repertoire MO where the Repertoire MO is connected to a SwAllocation MO and the SwAllocation MO is connected to a Slot MO, a Fan MO, a Jvm MO, a Webserver MO or an applicable type of application MO.
+b) The load module is of type 'other'.
+
+All required load modules will be downloaded to the node even if the Load Module MO representing the load module already exists i.e. existing load module files are replaced.
+
+This operation is non-blocking i.e. the action initiates the installation and returns "void" immediately without waiting for the installation to be completed.
+The result of this action is indicated in the attribute ActionResult.In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'. Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.
+
+Note. The behaviour described for this action is also obtained for the other installation actions if the Upgrade Control File indicates that the upgrade package is of type selective (which is recommended).
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="nonBlockingSelectiveInstall">
+ <description>This action only installs the load modules defined in the Upgrade Package Control file that are required in this node i.e. the load modules required after successful execution of action upgrade on this upgrade package.
+
+A load module is considered to be required if one of the following criteria is fulfilled:
+a) The load module is included in a Repertoire MO where the Repertoire MO is connected to a SwAllocation MO and the SwAllocation MO is connected to a Slot MO, a Fan MO, a Jvm MO, a Webserver MO or an applicable type of application MO.
+b) The load module is of type 'other'.
+
+Returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute
+actionResult.
+
+The required load modules will only be downloaded to the node if the Load Module MO representing the load module doesn't already exist.
+
+This action is non-blocking i.e. the action initiates the installation and returns 'void' immediately without waiting for the installation to be completed.
+
+The result of this action is indicated in the attribute ActionResult. In case the installation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'InstallationExecutionFailed'. Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at installation failure.long
+
+Note. The behaviour described for this action is also obtained for the other installation actions if the Upgrade Control File indicates that the upgrade package is of type selective (which is recommended).
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ <raisesException name="InstallException"/>
+ </action>
+ <action name="cancelInstall">
+ <description>This action interrupts an ongoing installation of an upgrade package.
+
+Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at execution of this action.
+
+This action is non-blocking i.e. the action initiates the cancel of the installation and returns 'void' immediately without waiting for the cancellation to be completed.
+
+During execution of this action the value of attribute 'ProgressHeader' is set to 'CancelOfInstallationIsExecuting'.
+
+In case the cancellation fails after 'void' has been returned this will be indicated by change of the value of attribute 'ProgressHeader' to 'CancelOfInstallationFailed'.
+
+Note! This action does not require a transaction.
+
+This action interrupts an ongoing installation of an upgrade package.
+Already downloaded load modules (the downloaded file and the Load Module MO representing it) are not removed at execution of this action.
+This action is non-blocking i.e. the action initiates the cancel of the installation and returns 'void' immediately without waiting for the cancellation to be completed.
+During execution of this action the value of attribute 'ProgressHeader' is set to 'CancelOfInstallationIsExecuting'.The result of this action is indicated in the attribute ActionResult.In case the cancellation fails after 'void' has been returned the attribute 'ProgressHeader' is set to 'CancelOfInstallationFailed'.
+
+This action returns an actionID (created by the server). This actionID shall be used to locate the result of the action in attribute actionResult.
+
+Note! This action does not require a transaction. </description>
+ <returnType>
+ <long/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ <action name="clearUpgradeLogFile">
+ <description>Is used to clear the contents of current upgrade log file.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="UpgradeLogFileNotInUseException"/>
+ <raisesException name="UpgradeLogFileNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="Repertoire">
+ <description>The Repertoire is an abstraction of a functionality represented by a plug in unit type (PiuType MO) and one or more load modules (LoadModule MO). The repertoire also provides rules for PiuType/ Load Module combinations valid for a specific function where one function can be provided by one or many PiuType-Load Module combinations.
+These rules are used to load the correct software (Load Modules) to a PlugInUnit. This could be used as operator configuration support and/or in situations where automatic re-configuration is required (hot repair).
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade is recommended to create them.</description>
+ <attribute name="userLabel">
+ <description>A user friendly name associated to the managed object. </description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="name">
+ <description>A function friendly name associated to the repertoire. The value must be unique with respect to all repertoires with the same install state.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="info">
+ <description>Information regarding the function.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="piuTypeList">
+ <description>A list containing all PiuType references that has been added to this repertoire.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="PiuType"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="RepertoireId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving SwAllocation MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="SwAllocation"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="OspfInterface">
+ <description>The OSPF Interface MO represents an interface that is used by the OSPF protocol to communicate with a neighbour node. By connecting an OSPF interface to a Link MO that Link is defined as a link to be used by OSPF.
+
+Each OspfInterface MO must always be connected to a OspfArea MO.
+</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ospfAreaRelated">
+ <description>The identity of the OspfArea connected to this OspfInterface. The default value is the default OspfArea MO.</description>
+ <dataType>
+ <moRef name="OspfArea"/>
+ </dataType>
+ </attribute>
+ <attribute name="lsaTransmissionInterval">
+ <description>The time, in seconds, between LSA re-transmissions over the interface - default value 5 seconds.</description>
+ <dataType>
+ <long>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="helloInterval">
+ <description>The time, in seconds, between sending OSPF Hello-packets over the interface. Default value 10 seconds.
+
+Note! Must be a positive value.</description>
+ <dataType>
+ <long>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routerDeadInterval">
+ <description>The time, in seconds, after which a neighbor router is declared dead when not heard from.
+</description>
+ <dataType>
+ <long>
+ <defaultValue>40</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="interfaceTransitDelay">
+ <description>Estimated delay, in seconds, for the transmission of a link state update package over the interface.
+</description>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="interfacePriority">
+ <description>The interface priority. Each router is configured with a priority configured from 0 - 255 where 0 is the lowest priority and 255 the highest.
+
+Note! Must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="relatedLink">
+ <description>Each OSPF interface is connected to one IP link.
+The relatedLink can be either an IpAtmLink or an EthernetLink MO
+reference.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="OspfInterfaceId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOspfIfEvents">
+ <description>Performance monitoring counter for the number of times this OSPF interface has changed its state or an error has occured.
+
+See RFC 1850.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Ospf">
+ <description>The Ospf MO represents an instance of the Open Shortest Path First (OSPF) routing protocol running in a Cello node.
+
+When the Ospf MO is created a default OspfArea MO is also created. This OspfArea has the areaId 000.000.000.000.
+
+The attribute range0 in the default OspfArea will contain the following values:
+advertise = false
+ipAddress = 000.000.000.000
+subnetMask = 000.000.000.000
+</description>
+ <attribute name="OspfId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ospfRouterId">
+ <description>The ospfRouterId attribute is in the form of an IP address.
+In order to able to set ospfRouterId the attribute
+administrativeState has to be set to locked. The ospfRouterId
+is uniquely identifying the router in the Autonomous System. By
+convention to ensure uniqueness, this should be configured to the
+value of one of the routers IP interface addresses.</description>
+ <mandatory/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="ospfASBdrRtrStatus">
+ <description>The ospfASBdrRtrStatus attribute controls, whether this router is configured as an Autonomous System border router (Routers connected to multiple areas are called area border routers). The attribute must be set to 'True' if the user wants to configure static routes, which should be distributed to other OSPF routes as external routes. Configuration of static routes is the same as adding and deleting static routes to the IpRoutingTable Mo.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MO.
+The operationalState can only be enabled when the IP MO is in workingMode routerMode.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the MO.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="ospfAreaBdrRtrStatus">
+ <description>Area border router flag - indicates whether the router is acting as an area border router or not.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="ipMo">
+ <description>The name of the Ip MO that the Ospf MO is to use</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ip"/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. It is a bit mapped CORBA long, where one or more of the bits may be set. If none of the bits are set then the availability status is considered to be undefined.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOspfOriginateNewLsas">
+ <description>The number of new link-state advertisments that have been originated. This number is incremented each time the router originates a new LSA.
+
+For more detailed information, see RFC 1850.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOspfRxNewLsas">
+ <description>The number of link-state advertisments received determined to be new instantiations. This number does not include newer instantiations of self-originated link-state advertisments.
+
+For more detailed information, see RFC 1850.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="recoverTopoDb">
+ <description>Indicates whether the topology database is to be recovered from the database at restart.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="topoDbStoreInterv">
+ <description>The interval, in seconds, with which the topology database will be stored.</description>
+ <dataType>
+ <long>
+ <defaultValue>60</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="OspfArea">
+ <description>An OSPF autonomous system is divided into OSPF areas. The OSPF Area MO represents such OSPF areas.
+
+A default OspfArea MO is automatically created when the Ospf MO is created.
+It has the identity = 1, so LDN of this MO will be
+ManagedElement=1,IpSystem=1,Ospf=1,OspfArea=1.
+
+Note! A maximum of 4 OspfAreas can be configured each with a maximum of 8 interfaces.</description>
+ <attribute name="OspfAreaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="stubArea">
+ <description>Indicates whether the OSPF area is a stub area or not.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="importExternalLsa">
+ <description>Indicates whether importing Autonomous System external LSA's is supported.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="sendAreaSummary">
+ <description>Import Area summary - indicates whether the router will originate and propagate summary LSAs into a stub-area.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="stubAreaMetric">
+ <description>Cost for default route that the router advertises into the area if the area is a stub area and the router is an area border router. By default set to the least metric among the interfaces to other areas.</description>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="stubAreaMetricType">
+ <description>Stub Area metric type.
+
+RFC 1850 (OSPF V2 MIB):
+
+comparableCost (external type 1)
+nonComparable (external type 2)</description>
+ <dataType>
+ <enumRef name="OspfMetricType">
+ <defaultValue>comparableCost</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="areaLsaChecksum">
+ <description>Area Lsa checksum - 32-bit unsigned sum of the link-state advertisements LS check sums contained in this area's link-state database.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="areaId">
+ <description>The OSPF area identity in form of an IP address. This areId uniquely identifies the area.
+AreaId 0.0.0.0 is used for the OSPF backbone.
+Range: 000.000.000.000 to 255.255.255.255.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="range0">
+ <description>OspfArea IP address range zero (0).</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="OspfAreaRange"/>
+ </dataType>
+ </attribute>
+ <attribute name="range1">
+ <description>OspfArea IP address range one (1).</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="OspfAreaRange"/>
+ </dataType>
+ </attribute>
+ <attribute name="range2">
+ <description>OspfArea IP address range two (2).</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="OspfAreaRange"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOspfSpfRuns">
+ <description>The number of times that the intra-area route table has been calculated using this area's link-state database. This is typically done using Dijkstra's algorithm.
+
+For more detailed information, see RFC 1850.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving OspfInterface MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="OspfInterface"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="addAreaRange">
+ <description>Add aggregation range. Used to add a range of IP addresses to an OSPF area.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="range">
+ <description>The area range aggregation.</description>
+ <in/>
+ <dataType>
+ <structRef name="OspfAreaRange"/>
+ </dataType>
+ </parameter>
+ <parameter name="rangeIndex">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="AttrMissingAtCreateException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="NoSuchFieldException"/>
+ <raisesException name="ValueOutOfRangeException"/>
+ <raisesException name="WrongAttributeTypeException"/>
+ </action>
+ <action name="deleteAreaRange">
+ <description>Delete an IP address range. Used to remove a range of IP addresses from an OSPF area.
+
+Input is the area aggregation range index.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="rangeIndex">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroNotAccessibleException"/>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="ValueOutOfRangeException"/>
+ </action>
+ </class>
+
+ <class name="SwitchCoreUnit">
+ <description>The Switch Core Unit MO, SCU, represents the board specific HW on the SCB. This object collects HW failure on the board and sends alarms. It is also used for configuration of board specific FW.
+This board can only be fitted in slot 1 and 28 in a standards subrack.
+The board has a number of switch internal link ports.</description>
+ <notificationTypes>alarm</notificationTypes>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeStateSili">
+ <description>The administrative state of the switch internal link ports on the switch board. The attribute refers to all ports (locking will lock all ports, unlocking unlock all ports).
+SILI -switch internal link interface.
+</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSil">
+ <description>Operational state indicates the the traffic handling capability of all ports as a group on the board, i.e it is enabled if one or more of the eight ports is enabled. The purpose of this attribute is only for test.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSync">
+ <description>Operational State for network synchronization distribution.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSil">
+ <description>The availability status of the switch internal link (SIL) ports..
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSync">
+ <description>Availability state for network synchronization distribution.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="SwitchCoreUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>A list of the reserving MO's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="silPorts">
+ <description>The attribute provides a list of port numbers.
+The port number is between 0-7 and is used to read state of the switch internal port.
+See action getSilPortState, getOperState and getAvailState.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="getSilPortState">
+ <description>Returns status of the switch internal link port, which is the same as the LEDs on the unit.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <enumRef name="SilPortState">
+ </enumRef>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getSilOperState">
+ <description>Returns operational status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <enumRef name="OperState">
+ </enumRef>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getSilAvailState">
+ <description>Returns availability status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="GeneralProcessorUnit">
+ <description>The General purpose Processor Unit MO, GPU, represents the board specific HW on the GPB; hard disk, ethernet and serial port etc.
+
+Note! The 'availabilityStatus' for the GeneralProcessorUnit MO is retreived from the PlugInUnit MO.</description>
+ <attribute name="GeneralProcessorUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Indicates if the function provided by the managed object is capable of performing its normal functions or not.
+
+Note! The value for operationalState is retrived from the GeneralProcessorUnit's parent, i.e. the PlugInUnit.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumeDSize">
+ <description>The total size in bytes of the D volume.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumeDFreespace">
+ <description>The amount in bytes of freespace available on the D volume.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumePSize">
+ <description>The total size in bytes of the P volume.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumePFreespace">
+ <description>The amount in bytes of freespace available on the P volume.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds the identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Jvm">
+ <description>The JVM MO is used to represent the Java Virtual Machine. This object is used for configuration JVM parameters, including SW management of Java class libraries used in the machine.
+
+The local distinguished name of this MO is ManagedElement=1, Equipment=1, JVM=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="classpath">
+ <description>Current classpath, the JVM is using</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="admClasspath">
+ <description>New classpath that will be activated at next restart of JVM. The classpath has a directory, which contains the load module, i.e. the classpath references the load module.</description>
+ <dataType>
+ <sequence>
+ <moRef name="LoadModule"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="freeMemory">
+ <description>Free memory in the java machine, in bytes.
+
+NOTE: Before this value is read from the system the action 'garbageCollect' is invoked.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="totalMemory">
+ <description>Total amount of memory allocated to the java machine, in bytes.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="mopplets">
+ <description>Contains all classes that are to be initilised and started when the JVM restarts.
+
+Technical note: The specified classes must implement the se.ericsson.cello.moframework.Mopplet interface and be found in a jar/zip-file pointed out by the classpath.
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="main">
+ <description>Defines the start class name.
+e.g. "se.ericsson.cello.oms.Oms"</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="options">
+ <description>Current options:
+ -D&lt;property&gt;=&lt;value&gt; Set a system property value. Commonly java.class.path
+-Xms&lt;size&gt; Specify the size, in bytes, of the memory allocation pool.
+-Xss&lt;size&gt; Set thread stack size in bytes.
+-Xverify:[all | remote | none] Verify classes according to the suboption.
+ -Xverify:all verifies all classes.
+ -Xverify:remote verifies remote classes only.
+ -Xverify:none turns off class verification.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="JvmId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="properties">
+ <description>Determines the current system properties.
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="reliableProgramUniter">
+ <description>A reference to the ReliableProgramUniter that refers to the programs in the which the JVM executes.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="admMain">
+ <description>New start class that will be activated at next restart of the JVM.
+e.g. "se.ericsson.cello.oms.Oms"</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="admOptions">
+ <description>This attribute is used when setting one or more administrative options.
+
+A set option is operational after the next Java Machine restart.
+
+See also attribute 'options'
+
+One or more options can be set, one option in each string of the
+sequence according to description below:
+
+Current options:
+ -D&lt;property&gt;=&lt;value&gt; Set a system property value. Commonly java.class.path
+-Xms&lt;size&gt; Specify the size, in bytes, of the memory allocation pool.
+-Xss&lt;size&gt; Set thread stack size in bytes.
+-Xverify:[all | remote | none] Verify classes according to the suboption.
+ -Xverify:all verifies all classes.
+ -Xverify:remote verifies remote classes only.
+ -Xverify:none turns off class verification.</description>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySwAllocation">
+ <description>This attribute holds the identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="SwAllocation"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="garbageCollect">
+ <description>Runs the garbage collector.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="setProperty">
+ <description>Sets a system property (i.e. propertys in the operating system).
+Note! The valeus set with this action is not saved in the database.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="name">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="value">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="restart">
+ <description>Restart of executing JVM instance.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="SwitchFabric">
+ <description>This MO represents the switch of a Cello node. It is used for general switch configuration.
+
+The system creates automatically one instance of this MO at restart.
+
+Today, only a maximum of 32 Switch Modules MOs and 2 SwitchInternalLinks MOs per InternalLinkGroup MOs are allowed in a Cello node. However, in theory the switch addressing space in the system allows up to 256 SwitchModules MOs. This would then mean there are 255 InternalLinkGroup MOs, each of which is allowed 256 SwitchInternalLink MOs by the addressing.
+
+The local distinguished name of this MO is ManagedElement=1, SwitchFabric=1.
+
+</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SwitchFabricId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SwitchModule">
+ <description>This MO represents two switch planes of one sub-rack, i.e. either the main switch or an external switch.
+
+Note! In a non-redundant system the administrativeStateSwitchPlaneA/B has to be set to locked for the non-present plane. </description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="switchModuleNumber">
+ <description>Indicates the number of the switch module, SMN.
+
+switchModuleNumber &amp;gt;= 0
+
+The main switch module, with one or two TimingUnits, is given SMN = 0. SMN for extension switch modules depends on the port pair that the extension switch module is connected to in the main switch module.
+
+The SMN is calculated according to the following formula:
+
+Switch module number [1..255] = int (APN/2)*8 + ISL-port in main [1..8]
+
+APN - ASCC port number
+ISL - inter-switch link</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="secondSmnEvaluation">
+ <description>secondSmnEvaluation - There are two cables that
+are relevant for Switch Module Number (smn) numbering
+If the cabling is wrong secondSmnEvaluation
+will show the second opinion about smn.
+Under normal conditions secondSmnEvaluation = smn.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the switch module.
+
+Note! When setting the 'administrativeState' to shutting down a notification about that the state has changed to 'locked' will be sent towards the operator. There is however no guarantee that this operation has been succesful despite the notification and state change due to limitations in the resource layer
+</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeStateSwitchPlaneA">
+ <description>The administrative state of switch plane A.
+It is not allowed to lock both switch plane A and B.
+
+Note! When setting the 'administrativeState' to shutting down a notification about that the state has changed to 'locked' will be sent towards the operator. There is however no guarantee that this operation has been succesful despite the notification and state change due to limitations in the resource layer</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeStateSwitchPlaneB">
+ <description>The administrative state of switch plane B.
+It is not allowed to lock both switch plane A and B.
+
+Note! When setting the 'administrativeState' to shutting down a notification about that the state has changed to 'locked' will be sent towards the operator. There is however no guarantee that this operation has been succesful despite the notification and state change due to limitations in the resource layer</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Switch Module. At least one of switch plane is enabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSwitchPlaneA">
+ <description>The operational state of Switch Module plane A. The state is disabled if any switch ports is faulty. But switch may still be used.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSwitchPlaneB">
+ <description>The operational state of Switch Module plane B. The state is disabled if any switch ports is faulty. But switch may still be used.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the Switch Module.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSwitchPlaneA">
+ <description>The availability status of the Switch Plane A.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSwitchPlaneB">
+ <description>The availability status of the Switch Plane B.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="activeSwitchPlane">
+ <description>The active switch plane: A, B. During multiple faults, both plan A and B may be used.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="ActiveSwitchPlane">
+ <defaultValue>switchPlaneA</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SwitchModuleId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="InternalLinkGroup">
+ <description>The Internal Link Group MO represents all switch internal links connecting the main switch to an external switch.
+
+Switch internal links are automatically grouped in Reliable Groups for redundancy.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="switchModuleNumber1">
+ <description>Reference to the SwitchModule MO that is interconnected by the link in the InternalLinkGroup.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="SwitchModule"/>
+ </dataType>
+ </attribute>
+ <attribute name="switchModuleNumber2">
+ <description>Reference to the SwitchModule MO that is interconnected by the link in the InternalLinkGroup.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="SwitchModule"/>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative status of internal link group.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational status of internal link group.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="InternalLinkGroupId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="getRlgLinks">
+ <description>Returns a list of resource instance identities of the switch internal links in the specified Reliable Group.
+
+The existing Reliable Groups are listed with action getReliableLinkGroups.
+
+Note! This action is transactional.</description>
+ <returnType>
+ <sequence>
+ <longlong/>
+ </sequence>
+ </returnType>
+ <parameter name="rlgNumber">
+ <description>Reliable link group number.</description>
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getLinkStatus">
+ <description>Returns the status of the specified switch internal link, within the specified Reliable Group.
+
+Note! This action is transactional.</description>
+ <returnType>
+ <enumRef name="SwitchReliableGroup">
+ </enumRef>
+ </returnType>
+ <parameter name="instanceId">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="rlgNumber">
+ <description>Reliable link group number.</description>
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getReliableLinkGroups">
+ <description>Returns a sequence of Reliable Group numbers.
+
+Each Reliable Group is identified by a unique number which can be used to read out the identities of the switch internal links that are allocated to the Reliable Group. This is done with action getRlgLinks.
+
+The allocation of switch internal links to Reliable Groups is automatic.
+
+Note! This action is transactional.
+</description>
+ <returnType>
+ <sequence>
+ <long/>
+ </sequence>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="SwitchInternalLink">
+ <description>This MO represents a link interconnecting the from either a SCB or SXB port on the main switch to a SCB on an external switch.
+
+The main switch is located in the hub subrack.
+
+The SCB is represented by the SwitchCoreUnit MO, while the SXB is represented by the SwitchExtensionUnit MO.
+
+Switch internal links are automatically grouped in Reliable Groups for redundancy.</description>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SwitchInternalLinkId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnit1">
+ <description>The reference of one connection point for a SwitchCoreUnit or SwitchExtensionUnit.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnit2">
+ <description>The reference of one connection point for a SwitchCoreUnit or SwitchExtensionUnit.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="siliport1">
+ <description>Switch internal port number on PlugInUnit1.
+
+Note!
+On a standard SCB/SXB board, the ports are labeled from the bottom to the top.
+
+Port nr -&gt; label:
+ '0' 'D'
+ '1' 'C'
+ '2' 'B'
+ '3' 'A'
+
+Also note that his mapping will change when adding/removing a board.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="siliport2">
+ <description>Switch internal port number on PlugInUnit2.
+
+Note!
+On a standard SCB/SXB board, the ports are labeled from the bottom to the top.
+
+Port nr -&gt; label:
+ '0' 'D'
+ '1' 'C'
+ '2' 'B'
+ '3' 'A'
+
+Also note that his mapping will change when adding/removing a board.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of switch internal link.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateTraffic">
+ <description>The operational state of switch internal link. There is no traffic if the link is disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusTraffic">
+ <description>The availabilityl status of switch internal link.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSync">
+ <description>The operational state of sync link. There is no clock distribution if the link is disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSync">
+ <description>The availability state of sync link.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etm4">
+ <description>This MO represents the hardware of the ET-M4 board type. It only represents the ET specific hardware, while the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-M4 board contains 2 physical ports that can be configured as either STM1(ETSI/TTC) or OC3C (ANSI). The board supports unchannelised ATM access (i.e. it maps ATMs cells directly into an SDH VC4 container).
+
+The board supports up to 1800 ATM VC connections.
+The number of terminated VPs are limited to 48/board.
+The board supports up to 750 VC UBR+ connections.
+
+The ET-M4 board contains 128 AAL2 multiplexers.
+The ET-M4 board supports up to 256 bidirectional F4/F5 PM flow per port.
+
+Note! IMA is not applicable for the ETM4 board.
+
+Note! The number of VCC TP+VPC TP with performance monitoring enabled (i.e. PM mode &lt;&gt; off) is restricted to 256 per board.
+
+Note! When using the Etm4 board the performance monitoring counters in the transmit direction found on the AtmPort MO does not show the following cells: CC cells and OAM FPM cells.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the hardware ETM4. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Etm4Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="VpcTp">
+ <description>Virtual path connection termination point, VpcTp, is used to represent the point where the VPC and associated overhead (F4 OAM cells) are terminated/originated.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time
+of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="VpcTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the VpcTp</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuity checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second. Continuity check both enables generation of CC cells as well as detection of LOC</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>PM mode is set to indicate type of performance monitoring mode (i.e. activation of bidirectional PM measurements).
+
+</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlkSize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.
+</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for number of lost forward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <action name="eteLoopBack">
+ <description>This action performs VC end to end loopback from this VpcTp.
+false=Failed, true=Succeded
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <boolean/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="VplTp">
+ <description>This MO is used to represent the termination of a VP link.
+
+Note that a maximum of 999 MO's of this type may be configured.
+
+Note! For information on how many VplTp's that can be configured under the AtmPort MO please refer to the board that is parent to the termination reserved by the AtmPort MO.
+
+The performance monitoring counters in the VplTp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large to fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="userLabel">
+ <description>This MOs user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="atmTrafficDescriptor">
+ <description>Reference to the Atm Traffic Descriptor.</description>
+ <mandatory/>
+ <dataType>
+ <moRef name="AtmTrafficDescriptor"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the VplTp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="externalVpi">
+ <description>This is the virtual path identifier for the external ATM cells.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmReceivedAtmCells">
+ <description>Performance monitoring counter for number of received ATM cells for the VplTp.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTransmittedAtmCells">
+ <description>Performance monitoring counter for number of transmitted ATM cells.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="VplTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="TimingUnit">
+ <description>This MO represents a timing unit (reference clock) in the node.
+
+The corresponding Program shall be of LoadModuleLoaderType, SpmFpgaLoader.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of TimingUnit</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the TimingUnit.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="TimingUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="PiuType">
+ <description>The PiuType is an MO that holds product information about a PlugInUnit and the execution resources of the PlugInUnit. It is created/deleted during a software upgrade.
+The PiuType is used when creating execution MOs connected to a PlugInUnit and when allocating software to this resource.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.
+
+
+</description>
+ <attribute name="userLabel">
+ <description>A user friendly name associated to the managed object. </description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="productData">
+ <description>The productData describes the product number, short product revision, product name and product information of the PlugInUnit. The production date is not used.
+
+Trailing letters in the revision is recommended to be excluded in the PiuType. Example: R2B will be R2 without trailing letter, R2B/3 must be R2B/3 in the PiuType, R2B/A should be R2 in the PiuType.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="AdminProductData"/>
+ </dataType>
+ </attribute>
+ <attribute name="boardWidth">
+ <description>The width of the PlugInUnit board in steps of 5 mm.
+A PlugInUnit can use/cover more than the slot that it occupies.
+
+Example: boardWidth=3 corresponds to 3*5 = 15 mm.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long/>
+ </dataType>
+ </attribute>
+ <attribute name="airFlowData">
+ <description>Control value m3/h for the fan unit. Needed by cooling function.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="AirFlowData"/>
+ </dataType>
+ </attribute>
+ <attribute name="PiuTypeId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="role">
+ <description>The value will be MP if a board has the role of a Main processor.
+The value will be BP if a board has the role of a device board
+Otherwise the value will be OTHERS.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="PiuRole">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity's of the reserving MO's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="numberOfMoConfigurations">
+ <description>Returns the number of entries in the PIUTypeConfigurationArray.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ </action>
+ <action name="getMoConfiguration">
+ <description>Returns a struct of a specific MoConfiguration at a given index.
+The moConfiguration holds information about how to create the
+subordinate objects for a specific piu type.
+
+Precondition: 0 &lt;= index &lt;= numberOfMoConfigurations() - 1
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <structRef name="PiuTypeMOConfiguration"/>
+ </returnType>
+ <parameter name="index">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidIndexException"/>
+ </action>
+ </class>
+
+ <class name="SwAllocation">
+ <description>This MO is primarily used to handle data for automatic configuration of load modules. Automatic in the meaning that the system selects the appropriate load module and revision. A SWA may be related to a slot, indicating that a specific functionality is requested at this location. The SWA is manually created by the operator.
+
+The SWA object is related to (one or more) repertoires, which hold information on possible PIU-type/revisions and load module combinations.
+
+In some cases (e.g multi-purpose boards, boards with processor/FPGA-pools) it may not be possible to completely configure the PIU without instructions from the operator (e.g which load module runs on which processor/FPGA). In these cases a specialization of the SWA has to be designed in such a way that it can be manually configured.
+
+When a SwAllocation MO depends on a ManagedObject MO, this ManagedObject actually represents a RBS Fan.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade is recommended to create them.</description>
+ <attribute name="userLabel">
+ <description>Free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="role">
+ <description>The role of a slot/PIU. The role must be unique with respect to other SwAllocations in the node.
+
+This is a preparation to introduce predefined SwAllocation in future upgrade packages.</description>
+ <mandatory/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="repertoireList">
+ <description>A list of references to repertoires.</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Repertoire"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="slotList">
+ <description>A list of references to mainly slots in a subrack, e.g. Slot or Fan MO. It may also refer to other objects handling auxiliary units, e.g. RBS Fan.</description>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SwAllocationId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="addRepertoire">
+ <description>Adds the specifed repertoire to this list.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aRepertoire">
+ <in/>
+ <dataType>
+ <moRef name="Repertoire"/>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ <action name="deleteRepertoire">
+ <description>Removes the first occurrence of the specified repertoire from this list.
+
+Notw! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aRepertoire">
+ <in/>
+ <dataType>
+ <moRef name="Repertoire"/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="addSlot">
+ <description>Adds the specified Slot to the slotList.
+The slot can only be of type Slot MO, Fan MO, WebServer MO, JVM MO or an applicable type of application MO (e.g. for "RBS Fans").
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aSlot">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ <action name="deleteSlot">
+ <description>Removes the first occurrence of the specified slot from this list.
+The slot can only be of type Slot MO, Fan MO, WebServer MO or an
+applicable type of application MO (e.g. for "RBS Fans").
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aSlot">
+ <in/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="deleteAllRepertoires">
+ <description>Removes all repertoires from this list and sets its size to zero.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="deleteAllSlots">
+ <description>Removes all slots from this list and sets its size to zero.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="addSlots">
+ <description>Adds the specified Slot to the slotList.
+The slot can only be of type Slot MO, Fan MO, WebServer MO, JVM MO or an applicable type of application MO (e.g. for "RBS Fans").
+If the slot exists in the list, the object is ignored.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="managedObjects">
+ <in/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ <action name="addRepertoires">
+ <description>Adds the specifed repertoire to this list.
+
+If the repertoires exist in the list the repertoire is ignored.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="repertoire">
+ <in/>
+ <dataType>
+ <sequence>
+ <moRef name="Repertoire"/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="IllegalArgumentTypeException"/>
+ </action>
+ </class>
+
+ <class name="MediumAccessUnit">
+ <description>The Medium Access Unit (MAU) MO represents the Ethernet transceiver function on a General Processor Board (GPB).
+
+Note! Ethernet links which are modelled by a MediumAccessUnit MO are used for O&amp;M IP traffic only. MediumAccessUnit MOs must not be configured under a GeneralProcessorUnit MO which have a IpAccessHostGpb referring to it.
+
+Note! This object is known in standards as "MediumAttachmentUnit".
+</description>
+ <attribute name="userLabel">
+ <description>Label for free use.
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Description of operational state which has an enumerated datatype</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="MediumAccessUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="connectorLabel">
+ <description>This attribute is used by a management system to show the label on the port the connector is attached to.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>Eth</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDot3StatsLateCollisions">
+ <description>Performance management counter for the number of times that a collision was detected on the interface after the minimum length of a frame.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDot3StatsFCSErrors">
+ <description>Performance management counter for the number of frames that did not pass the FCS check.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="linkSpeed">
+ <description>The Link Speed, measurment unit is Mb/s..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="duplexMode">
+ <description>The duplex mode used.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="MauDuplexMode">
+ <defaultValue>FULL_DUPLEX</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ReliableProgramUniter">
+ <description>A Reliable Program Uniter (RPU) is a controlling and addressing entity providing one common addressing unit for two Reliable Programs. Or more correctly for parts of two Reliable Programs, each part is called a Resource Suite Handler (RSH). The RSH is implemented and owned by the application. It is not a function or a concept within Cello.
+
+MOs of this type are created automatically during system upgrade.
+MOs of this type are possible to create manually but a system upgrade
+is recommended to create them.</description>
+ <attribute name="userLabel">
+ <description>For free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reliableProgramLabel">
+ <description>Reliable Program Label.
+Compare this to the reliableProgramLabel in LoadModule MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="admActiveSlot">
+ <description>Reference to slot, contains the running "Normal" relation to a slot. If the reference is set to the passive slot, the passive slot will be cleared and only one relation will be set.</description>
+ <mandatory/>
+ <dataType>
+ <moRef name="Slot"/>
+ </dataType>
+ </attribute>
+ <attribute name="admPassiveSlot">
+ <description>Reference to slot, contains the running "Stand-by" relation to a slot. If the reference is set to the active slot or a null value, the passive slot will be cleared. </description>
+ <dataType>
+ <moRef name="Slot"/>
+ </dataType>
+ </attribute>
+ <attribute name="switchOver">
+ <description>This attribute controls when to switchover the RPU, if a certain type error situation occurs.</description>
+ <dataType>
+ <enumRef name="RPUSwitchOverMode">
+ <defaultValue>AtPiuFault</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="normalisation">
+ <description>This attribute controls when to switch back the RPU, after error recovery has been done.</description>
+ <dataType>
+ <enumRef name="RPUNormalisationMode">
+ <defaultValue>Automatic</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="replication">
+ <description>This attribute indicates that which level of data replication that is associated with the RPU.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="RPUReplicationMode">
+ <defaultValue>ApplControlled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalMode">
+ <description>This attribute indicates if the RSH execution mode (active/passive) in the two Reliable Program, matches the normal/stand-by relations set on the corresponding RPU.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="RPUOperationalMode">
+ <defaultValue>Unavailable</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="ReliableProgramUniterId">
+ <mandatory/>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="switch">
+ <description>This action will force the two corresponding RSHs to change their execution mode (active/passive). It will lead either to a switchover or to a switchback, depending of what value the operational Mode attribute is showing.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="ActionNotAllowedException"/>
+ </action>
+ </class>
+
+ <class name="ManagedElementData">
+ <description>This object contains attributes and actions on Cello node-level.
+
+The ManagedElementData MO is automatically created and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, ManagedElementData=1.</description>
+ <systemCreated/>
+ <attribute name="ManagedElementDataId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfigurationAllowed">
+ <description>This attribute specifies if the system is allowed to auto create detected objects. Note that slots will always be auto created.
+
+Note! When setting this attribute from true to false the system creates a new CV.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="documentServerAddress">
+ <description>The base URL for the documentation server (ALEX). The attribute is read by Element Management application to find the documentation server in the network.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="logonServerAddress">
+ <description>A list of node names or IP addresses of the single logon servers (SLSs). The list uses commas to seperate the single logon server addresses, e.g. "https://SLS1,https://SLS2,https://SLS3", these addresses consists of the URLs to the concerned SLS servers. The attribute is read by Element Management application to find the single logon server in the network.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="dhcpServerAddresses">
+ <description>IP addresses to the DHCP server, used by the DHCP Relay Agent.
+
+Default is an empty array.
+
+Adding and removing addresses is done through the actions addDhcpServerAddress() and removeDhcpServerAddress().
+
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <string>
+ <defaultValue>empty</defaultValue>
+ </string>
+ <length>10</length>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="performanceDataPath">
+ <description>This attribute is used by the internal performance management service
+to know where to store it's data files. The attribute is the name of
+a path in the node.
+
+Example: /c/public_html/cello/XML_files/</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ntpServerAddressPrimary">
+ <description>This is the IP address to the NTP server</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ntpServiceActivePrimary">
+ <description>This is a boolean that controls if the node should poll the primary NTP server for information.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="ntpMinPollPrimary">
+ <description>This value states the minimum interval (in seconds) for polling the primary NTP server.
+
+Note! This value has to be &gt; 0.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>16</min> <max>131072</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ntpMaxPollPrimary">
+ <description>This value states the maximum interval (in seconds) for polling the primary NTP server.
+
+Note! This value has to be &gt; 0.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>16</min> <max>131072</max>
+ </range>
+ <defaultValue>1024</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ntpBurstFlagPrimary">
+ <description>This is the burst flag used towards the primary NTP server.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="ntpServerAddressSecondary">
+ <description>This is an alternative IP address to a NTP server</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ntpServiceActiveSecondary">
+ <description>This is a boolean that controls if the node should poll the secondary NTP server for information.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="ntpMinPollSecondary">
+ <description>This value states the minimum interval (in seconds) for polling the secondary NTP server.
+
+Note! This value has to be &gt; 0.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>16</min> <max>131072</max>
+ </range>
+ <defaultValue>64</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ntpMaxPollSecondary">
+ <description>This value states the maximum interval (in seconds) for polling the secondary NTP server.
+
+Note! This value has to be &gt; 0.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>16</min> <max>131072</max>
+ </range>
+ <defaultValue>1024</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ntpBurstFlagSecondary">
+ <description>This is the burst flag used towards the secondary NTP server.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="nodeUTCTime">
+ <description>This attribute specifies the UTC time used in the node. The attribute value is milliseconds since epoch (January 1, 1970, 00:00:00 GMT).
+The value may only be set while ntpServiceActive both for primary and secondary is false.</description>
+ <dataType>
+ <longlong>
+ <defaultValue>0</defaultValue>
+ </longlong>
+ </dataType>
+ </attribute>
+ <attribute name="nodeLocalTimeZone">
+ <description>This value states in what time zone the node is located. This attribute is needed by management application to convert UTC time from a log or NTP service to local time.
+It will not change the real time clock on the node.
+
+The timeZone is represented by three characters, example GMT.
+
+Available options are:
+
+TimeZone ID Offset
+GMT (Greenwich Mean Time) 0
+UTC (Coordinated Universal Time) 0
+ECT ( Central European Standard Time) + 1
+EET (Eastern European Time) + 2
+ART (Eastern European Time) + 2
+EAT (Eastern African Time) + 3
+MET (Iran Time) + 3.5
+NET (Armenia Time) + 4
+PLT (Pakistan Time) + 5
+IST (India Standard Time) + 5.5
+BST (Bangladesh Time) + 6
+VST (Indochina Time) + 7
+CTT (China Standard Time) + 8
+JST (Japan Standard Time) + 9
+CST (Central Standard Time) + 9.5
+EST (Eastern Standard Time) + 10
+AET (Eastern Standard Time) + 10
+SST (Solomon Is. Time) + 11
+NST (New Zealand Standard Time) + 12
+CAT (Central Alaska Time) - 1
+AGT (Argentina Time) - 3
+BET (Brazil Time) - 3
+CNT (Newfoundland Standard Time) - 3.5
+PRT (Atlantic Standard Time) - 4
+IET (Eastern Standard Time) - 5
+ACT (Central Standard Time) - 6
+PNT (Mountain Standard Time) - 7
+MST (Mountain Standard Time) - 7
+PST (Pacific Standard Time) - 8
+AST (Alaska Standard Time) - 9
+HST (Hawaii Standard Time) - 10
+MIT (West Saoma Time) - 11
+--
+
+Reference: http://www.greenwichmeantime.com
+</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="daylightSavingTime">
+ <description>This attribute states weather daylight saving time is used on this node. It is used to by the management application and will not change the real time clock on the node.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumeCSize">
+ <description>The total size of the C volume on the Cello node in bytes. The C volume may be replicated on several hard disks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="hdVolumeCFreespace">
+ <description>The number of bytes of free space available on the C volume. The C volume may be replicated on several hard disks in a Cello node.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nodeUniqueID">
+ <description>This is a unique node identity to be set only in the factory.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="swServerUrlList">
+ <description>A list of URLs of external server for downloading of software. A comma-separated list or URLs, complete with path and name of property file.
+
+Note: For downloading of software for system upgrade, see attribute ftpServerIpAddress in MO UpdradePackage.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="piuGroupEscalationType">
+ <description>The type of node restart when it is a problem with the last PIU in a PIU group.</description>
+ <dataType>
+ <enumRef name="NodeRestartType">
+ <defaultValue>WARM_AT_PIU_RESTART</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="syncModeOperation">
+ <description>The sync mode operation of the node. Note that this attribute is only relevant when the node contains CBU board. For all other cases the value shall be set to NOT_USED.</description>
+ <dataType>
+ <enumRef name="SyncMode">
+ <defaultValue>NOT_USED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <action name="createNtpPrimary">
+ <description>This action creates the primary Network Time Protocol. There can only exist one primary and one secondary ntp.
+
+Once the ntp is created it is possible to change the attributes, i.e ip address, burst flag, max- and min poll and which is the active one.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ntpServerAddressPrimary">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpMinPollPrimary">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpMaxPollPrimary">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpBurstFlagPrimary">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpServiceActivePrimary">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="createNtpSecondary">
+ <description>This action creates the secondary/alterative Network Time Protocol.
+There can only exist one primary and one secondary ntp.
+
+Once the ntp is created it is possible to change the attributes, i.e ip address, burst flag, max- and min poll and which is the active one.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ntpServerAddressSecondary">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpMinPollSecondary">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpMaxPollSecondary">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpBurstFlagSecondary">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ <parameter name="ntpServiceActiveSecondary">
+ <in/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="deleteNtpPrimary">
+ <description>This action deletes the primary NTP.
+
+An exception will be thrown if the primary attributes are accessed (set and get).
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="deleteNtpSecondary">
+ <description>This action deletes the secondary NTP.
+
+An exception will be thrown if the secondary attributes are accessed (set and get).
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="addDhcpServerAddress">
+ <description>Takes an array of Ip addresses (Strings), and adds them to the list held by the Dhcp Relay Agent fRO.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddressArray">
+ <description>Elements are assumed to have the format of a String with 4 fields of numerics, each field separated with a dot. E.g. 123.322.34.123. An empty array or empty string in first element is not allowed. Max 10 elements.</description>
+ <in/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="removeDhcpServerAddress">
+ <description>Takes an array of Ip addresses (Strings), and removes them from the list held by the Dhcp Relay Agent fRO.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="ipAddressArray">
+ <description>Elements are assumed to have the format of a String with 4 fields of numerics, each field separated with a dot. E.g. 123.322.34.123. An empty array or empty string in first element is not allowed. Max 10 elements.</description>
+ <in/>
+ <dataType>
+ <sequence>
+ <string/>
+ </sequence>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="setNodeUniqueId">
+ <description>Used for setting the nodeUniqueId attribute. This method should only be used in the factory, i.e. it is not for general use by the operator.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="nodeUniqueId">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="SwitchExtensionUnit">
+ <description>This MO represents the Switch Extension Unit, SXU, board. The board may only be inserted in slot 2-27 (in a standard subrack).
+If redundant links are used, two boards must be inserted next to each other.
+The board has a number of switch internal link ports.</description>
+ <attribute name="SwitchExtensionUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>This attribute is used to hold a user friendly name of the object if needed.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeStateSil">
+ <description>The administrative state of switch internal link ports on the switch board.
+The attribute refers to all ports (locking will lock all ports, unlocking will unlock all ports).
+SIL- switch internal link.
+
+</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>unlocked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSil">
+ <description>Operational State for all ports. Operational state is enabled if one of the eight ports is enabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalStateSync">
+ <description>Operational State for network synchronization distribution</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSil">
+ <description>The availability state of switch internal link (sil) ports.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusSync">
+ <description>The availability state of the sync link.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The attribute is set by the action Reserve.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="SilPorts">
+ <description>The attribute provides a list of port numbers.
+The port number is between 0-7 and is used to read state of the switch internal port.
+Se action getSilPortState, getSilOperState and getSilAvailState.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <long/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="getSilPortState">
+ <description>Returns status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <enumRef name="SilPortState">
+ </enumRef>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getSilOperState">
+ <description>Returns operational status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <enumRef name="OperState">
+ </enumRef>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="getSilAvailState">
+ <description>Returns availability status of the switch internal link port.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <long/>
+ </returnType>
+ <parameter name="portNr">
+ <in/>
+ <dataType>
+ <long/>
+ </dataType>
+ </parameter>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Aal2PathDistributionUnit">
+ <description>This MO is used to represent an AAL2 Path Distribution Unit. Such a unit handles a set of Aal2PathVccTps that belong to the same Aal2 AP and that are handled by the same Path Resource Handling Program.
+This Path Resource Handling Program is referenced by the rpuId attribute.</description>
+ <attribute name="Aal2PathDistributionUnitId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>The physical location of a CPS RC (Common Part Sub-Layer Resource Control) program represented by a reference to a ReliableProgramUniter.
+
+Note that one ReliableProgramUniter MO may only be referenced once under one Aal2Ap. That means all Aal2PathDistributionUnits must reference different ReliableProgramUniter MO's.
+
+Two Aal2PathDistributionUnits under different Aal2Ap's may however reference the same ReliableProgramUniter MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal2PathVccTpList">
+ <description>List of references to Aal2PathVccTp MO:s.
+Note that setting of this attribute removes the current list of Aal2PathVccTp's.
+Each reference must be unique among all paths within all Aal2PathDistributionUnit's belonging to the same Aal2Ap.</description>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2PathVccTp"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <action name="addPath">
+ <description>This action adds a list of Aal2PathVccTps to an Aal2PathDistributionUnit.
+
+If the data contains a reference to a non existing path, the exception InvalidReference is raised.
+
+If the path list contains a path that has a non-unique aal2PathId value, then the exception Aal2PathIdNotUnique is raised. The pathId value must be unique within all Aal2PathDistributionUnits under the same Aal2Ap.
+
+If the path list contains a path that already belongs to a Aal2PathDistributionUnit, then the exception PathAlreadyRegistered is raised.
+
+Note! Adding one or more Aal2PathVccTps using this action updates the attribute 'Aal2PathVccTpList'.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aal2PathVccTpId">
+ <in/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2PathVccTp"/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="InvalidReferenceException"/>
+ <raisesException name="Aal2PathIdNotUniqueException"/>
+ <raisesException name="PathAlreadyRegisteredException"/>
+ </action>
+ <action name="removePath">
+ <description>This action removes a list (sequence) of AAL2 path's from the Aal2PathDistributionUnit.
+
+If the path list contains a path that is not in this Aal2PathDistributionUnit, the exception NotInGroup is raised.
+
+Note! Removing one or more Aal2PathVccTps using this action updates the attribute 'Aal2PathVccTpList'.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="aal2PathList">
+ <in/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2PathVccTp"/>
+ </sequence>
+ </dataType>
+ </parameter>
+ <raisesException name="NotInGroupException"/>
+ </action>
+ </class>
+
+ <class name="Fan">
+ <description>The Fan is used for cooling the Cello-subrack and is connected to one or two
+SCU (switch core board). This MO is used for controlling and sending alarm from
+the Fan.
+
+Note, either the fan can be supplied by Cello and Fan MO is used, or alternatively the fan can supplied by a source external to Cello and therefore a ManagedObject MO is used to represent the fan.
+
+</description>
+ <attribute name="FanId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>user label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrativeState of Fan MO.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="connectedToScu">
+ <description>A Fan must always be connected to a Switch Core unit that mediates the communication with a main processor.
+
+In this attribute it is possible to see which SwichCoreUnit that the fan is connected to.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="SwitchCoreUnit"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state is set to 'enabled' when the Fan has loaded and started its load module.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="piuType">
+ <description>A reference to an available PiuType at create of a Fan.
+</description>
+ <mandatory/>
+ <dataType>
+ <moRef name="PiuType"/>
+ </dataType>
+ </attribute>
+ <attribute name="controllingState">
+ <description>The application that controls the Fan has three main states:
+- standalone: running on itself, not manageable
+- autonomous: manageable state
+- noiseReduced: temporary state with reduced cooling
+
+NOTE: This attribute is not supported in CPP 4.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="FanState">
+ <defaultValue>standalone</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="hdlcAddress">
+ <description>The physical address of the RS-485 communication link.
+Incorrect setting of the address can cause collision with other connected auxiliary units or lost connection. The default value should be suitable for most configurations.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <action name="restartFan">
+ <description>A restart will cause the Fan to be initiated, re-booted and all load modules to be reloaded from persistent memory. This is also known as a forced reload.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="restartCause">
+ <in/>
+ <dataType>
+ <enumRef name="RestartCause">
+ </enumRef>
+ </dataType>
+ </parameter>
+ <raisesException name="EquipException"/>
+ <raisesException name="ValueOutOfRangeException"/>
+ </action>
+ </class>
+
+ <class name="Mtp2TpItu">
+ <description>This MO represents a MTP2 Termination Point for the ITU standard, as defined in Recommendation Q.703 07/96.
+
+The performance monitoring counters found in Mtp2Itu MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a hardware fault, aal1 server/adm restart or node restart.
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard
+which is NOT the ITU standard.
+
+NOTE: There is a restriction of a maximum of 32 Mtp2Tp's per MP.</description>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2TpItuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MTP2 Signalling Terminal.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtp2ProfileItuId">
+ <description>Reference to a Mtp2ProfileItu MO.
+
+Note: The bitRate can not be changed.</description>
+ <mandatory/>
+ <noNotification/>
+ <dataType>
+ <moRef name="Mtp2ProfileItu"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReTransmittedOctets">
+ <description>Number of re-transmitted octets.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNacks">
+ <description>Number of negative acknowledgements received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuReceivedInError">
+ <description>Number of signal units received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfStartedRBCongestion">
+ <description>Number of started local RB congestions.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSendBufferOctets">
+ <description>Number of octets in send buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLocalSIBTime">
+ <description>Total time in local SIB (Sending).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRemoteSIBTime">
+ <description>Total time in remote SIB (Receiving).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFTransmitted">
+ <description>Number of SIO &amp; SIF octets transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The attribute is set by the list of reserving MO's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Mtp3bSlItu"/>
+ </dataType>
+ </attribute>
+ <attribute name="ds0BundleId">
+ <description>The Ds0Bundle MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ds0Bundle"/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnitId">
+ <description>The PlugInUnit MO that this MO references.
+It indicates on which processor the Termination Point will be.
+
+Note: The PlugInUnit must be of type GPB.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PlugInUnit"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUTransmitted">
+ <description>Number of MSUs transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFReceived">
+ <description>Number of SIO and SIF octets received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUReceived">
+ <description>Number of MSUs received..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp2TpAnsi">
+ <description>This MO represents a MTP2 Termination Point for the ANSI standard , as defined in T1.111-1996.
+
+The performance monitoring counters found in Mtp2Ansi MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a hardware fault, aal1 server/adm restart or node restart.
+
+NOTE: This MO cannot in anyway be related (either contained by or dependent on) an MO that belongs to a
+standard which is NOT the ANSI standard.
+
+NOTE: There is a restriction of a maximum of 32 Mtp2Tp's per MP.</description>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2TpAnsiId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MTP2 Signalling Terminal.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtp2ProfileAnsiId">
+ <description>Reference to a Mtp2ProfileAnsi MO.
+
+Note: The bitRate can not be changed.</description>
+ <mandatory/>
+ <noNotification/>
+ <dataType>
+ <moRef name="Mtp2ProfileAnsi"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReTransmittedOctets">
+ <description>Number of re-transmitted octets.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNacks">
+ <description>Number of negative acknowledgements received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuReceivedInError">
+ <description>Number of signal units received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfStartedRBCongestion">
+ <description>Number of started local RB congestions.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSendBufferOctets">
+ <description>Number of octets in send buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLocalSIBTime">
+ <description>Total time in local SIB (Sending).
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRemoteSIBTime">
+ <description>Total time in remote SIB (Receiving).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFTransmitted">
+ <description>Number of SIO &amp; SIF octets transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUReceived">
+ <description>Number of MSUs received..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Mtp3bSlAnsi"/>
+ </dataType>
+ </attribute>
+ <attribute name="ds0BundleId">
+ <description>The Ds0Bundle MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ds0Bundle"/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnitId">
+ <description>The PlugInUnit MO that this MO references.
+It indicates on which processor the Termination Point will be.
+
+Note: The PlugInUnit must be of type GPB.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PlugInUnit"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUTransmitted">
+ <description>Number of MSUs transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFReceived">
+ <description>Number of SIO and SIF octets received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Ds0Bundle">
+ <description>The Ds0Bundle, Digital Signalling Level 0, MO represents a number of timeslots on a physical port.
+Any of E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E1Ttp or T1Ttp.
+The Ds0Bundle can be used in three different ways:
+
+- Fractional ATM
+
+Please refer to the AtmPort MO for details. Note that the TdmMode attribute
+must be disabled.
+
+-Circuit emulation
+
+Please refer to Aal1VccTp MO for details. Note that the TdmMode attribute
+must be disabled. Note that only 4 Ds0Bundle's per port can be configured
+when running circuit emulation.
+
+- TDM Switching
+
+The Ds0Bundle is reserved for switching node internal Ds0 connections. In
+this mode, the tdmMode attribute should be enabled.
+
+
+</description>
+ <attribute name="Ds0BundleId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availabiltity status of Ds0Bundle.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of Ds0Bundle.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="listOfTimeSlots">
+ <description>The list gives the time slots (within ATM traffic fraction) that are to be allocated to the Ds0Bundle.
+
+When a Ds0Bundle is contained by a E1PhysPathTerm the slots that can be placed in this list are 1 to 31.
+When a Ds0Bundle is contained by a J1PhysPathTerm then the slots that can be placed in this list are 1 to 24.
+When a Ds0Bundle is contained by a T1PhysPathTerm then the slots that can be placed in this list are 1 to 24.
+When a Ds0Bundle is contained by a E1Ttp the slots that can be placed in this list are 1 to 31.
+
+Note: the same timeslot cannot appear more than once in the list! If a E1/J/T1PhysPathTerm contains more than
+one Ds0Bundle, then the Ds0Bundles listOfTimeSlots must be mutually exclusive (i.e. slots in one list cannot be used in another list).
+
+Note! If the Ds0Bundle is used for carrying SS7 traffic, the listOfTimeSlots can only contain 1 (one) time slot.
+In this case that is if the Ds0Bundle is reserved by an Mtp2TpAnsi, Mtp2TpItu or Mtp2TpChina.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <sequence>
+ <long>
+ <range>
+ <min>0</min> <max>31</max>
+ </range>
+ </long>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="tdmMode">
+ <description>The state of tdmMode (Time Division Multiplexing), can be disabled/enabled.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal1TpVccTp">
+ <description>The Aal1TpVccTp MO represents the Aal1 interworking function in a circuit emulation. The object refers to a Ds0Bundle which represents one end of the circuit emulation, and a VclTp which represents the other end.
+
+Note! The performance monitoring counters in this MO is set to 0 when counterMode is set to PM_MODE_ON.
+In PM_MODE_OFF no information at all is retrived. So any value for pm-monitoring is measured from the time
+of setting counterMode to PM_MODE_ON.
+At node restart these performance monitoring counters is reset to 0.</description>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ds0BundleId">
+ <description>The Ds0Bundle MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ds0Bundle"/>
+ </dataType>
+ </attribute>
+ <attribute name="partialFill">
+ <description>Indicates how many bytes are filled in each ATM cell. The value 47 indicates that the partial filled cells is not used, i.e. all the cells are filled completely.
+
+Partial filling of cells in used in circuit emulation. It is used to reduce packetisation delay. Refer to the ATM Forum specifications for more details.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>23</min> <max>47</max>
+ </range>
+ <defaultValue>47</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="cdvt">
+ <description>Specifies the cell delay variation tolerance. Refer to ATM Forum specifications for more details.
+
+Unit is micro seconds.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>100</min> <max>4000</max>
+ </range>
+ <defaultValue>1000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of Aal1TpVccTp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="continuityCheck">
+ <description>Continuitiy checking means that a cell is sent downstream when no user cell has been sent for a period of nominally 1 second.
+
+Activates VC end to end continuityCheck according to ITU.T rec I.610.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="counterMode">
+ <description>Controls the activation of PM counters and F5 PM flow on the VC connection.</description>
+ <dataType>
+ <enumRef name="AtmCounterMode">
+ <defaultValue>PM_MODE_OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="nomPmBlockSize">
+ <description>Nominal performance monitoring (PM) blocksize. The minimum number of ATM cells to send before sending a Forward Performance Monitoring, FPM, cell.</description>
+ <dataType>
+ <enumRef name="AtmNomPmBlkSize">
+ <defaultValue>NOM_PM_BLKSIZE_2_10</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwLostCells">
+ <description>Performance monitoring counter for forwarded lost cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwMissinsCells">
+ <description>Performance monitoring counter for number of forwarded missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmFwErrBlocks">
+ <description>Performance monitoring counter for number of forwarded errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostFpmCells">
+ <description>Performance monitoring counter for number of lost Forward Performance Monitoring, FPM cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwLostCells">
+ <description>Performance monitoring counter for number of lost backward cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwMissinsCells">
+ <description>Performance monitoring counter for number of backward missinserted cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmBwErrBlocks">
+ <description>Performance monitoring counter for number of backward errored blocks.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmLostBrCells">
+ <description>Performance monitoring counter for number of lost Backward Reporting, BR, cells.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="Aal1TpVccTpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="vclTpId">
+ <description>The VclTp MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="VclTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="alarmReport">
+ <description>Attribute to decide what type of alarms to be reported.</description>
+ <dataType>
+ <enumRef name="AlarmReport">
+ <defaultValue>ALARM_LOC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSpAnsi">
+ <description>Mtp3b Signalling Point for the ANSI standard.
+
+This MO represents/models the MTP3b Signaling Point characteristics/functions according to the Ansi standard.
+A signaling point is a logical node in the signaling network. The combination of signaling points and their interconnecting
+signaling links form the SS No. 7 signaling network. The signaling point represented by this object is a Local Signaling Point.
+
+The performance monitoring counters found in Mtp3SpAnsi MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: IT IS NOT POSSIBLE TO CREATE SIGNALLING POINTS OF DIFFERENT STANDARDS!
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the ANSI standard.
+
+NOTE: The combination of network indicator (networkInd) and Signalling Point Code (signallingPointCode) has to be unique for each Signalling Point.
+
+NOTE: A maximum of 15 instances of this MO can be created on (referencing) the same PlugInUnit.
+
+NOTE: The maximum number of Signalling Points that can be created in a CPP based node is 24.
+
+NOTE: Deleting a singel L3 Signal Point is not possible, if it necessary to delete a Signal Point then all Signal Points has to be deleted. This also has to be done whitin the same transaction.
+
+NOTE: Any object created under a certain SP (Signaling Point) cannot refer to an object created under another SP. Nor can it refer to an object created under another SP.</description>
+ <attribute name="Mtp3bSpAnsiId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>Holds a reference to the Reliable Program Uniter.
+The RPU is at the server.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="networkInd">
+ <description>The network indicator, NI, is used for discrimination of messages between functionally different networks.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bNetworkInd">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signallingPointCode">
+ <description>The signallingPointCode (Local Point Code) attribute (SPC) is used together with the network indicator (NI, networkInd attribute) to uniquely identify the MTP Signalling Point, SP.
+SP = NI-SPC.
+Size (2 exp 24)-1 (16777215).
+The SignallingPointCode (SPC) is normally grouped together as three numbers wich correspond to network identifier, network cluster, network cluster member. The three numbers are coded as 8-8-8 bits in the total SPC. To enter the SPC-value, you have to convert the 3 numbers to their binary code and then convert the whole 24-bit patterna as an integer. Sometimes the SPC is used as a whole uniqe number (no internal structure).
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16777215</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="testPatternSltm">
+ <description>The testPatternSltm attribute represents a string testpattern in the Signalling Link Test Message.
+
+Minimum string length 2 characters, maximum 30 characters. Allowed characters are 0-9, A-F.
+Only even number of characters is allowed.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>2</min> <max>30</max>
+ </lengthRange>
+ <defaultValue>"A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="nodeBehaviour">
+ <description>The nodeBehaviour attribute represents the MTP3b node type.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NodeBehaviourType">
+ <defaultValue>SEP</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeReroutBuf">
+ <description>The maxSizeReroutBuf attribute represents the maximum size (in kB) of the rerouting buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeChangeBuf">
+ <description>The maxSizeChangeBuf attribute represents the maximum size (in kB) of the changeover buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="transFrHandler">
+ <description>Determines how a TransFer Restricted signal (TFR) should be treated.
+</description>
+ <dataType>
+ <enumRef name="Mtp3bTfrHandling">
+ <defaultValue>IGNORED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="sioSpare">
+ <description>The sioSpare2 attribute determines if the two spare bits in the SIO (Service Information Octet) should be treated as spare.</description>
+ <dataType>
+ <enumRef name="Mtp3bSioSpareBitsUse">
+ <defaultValue>PRIO</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="m3uaNoOfAttempsOfDauds">
+ <description>For M3UA, number of attempts to send the DAUD message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="noOfAttempsOfAssociationEstablishment">
+ <description>Number of attempts to send the SCTP_ASSOCIATE_REQ message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>65535</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="statusIndInterval">
+ <description>The statusIndInterval attribute sets the interval for sending MTP-STATUS indication, i.e. send indication every Nth message .</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="resendTfcInterval">
+ <description>Send TFC back to originating signalling point code for every n:th message when
+the destination is congested. Set to 0 will suppress sending of TFC.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="sendSltmBefLink">
+ <description>The sendSltmBefLink attribute determines if the SLTM (Signalling Link Test Message) should be sent and a SLTA received before the link is considered to be in service.
+
+Note! It is not recommended nor is it in accordance with standard to set the value of this attribute to 'false' </description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="spPriority">
+ <description>Struct containing the ANSI priority attributes.
+</description>
+ <dataType>
+ <structRef name="Mtp3bSpAnsiPriorityData"/>
+ </dataType>
+ </attribute>
+ <attribute name="noOfCongestLevelForNI">
+ <description>Defines the number of congestion levels for NI.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetCongestTestFlag">
+ <description>Selection of which procedure to use during congestion handling if the national option with priorities is used.
+
+0, use TcTimer as described by the TTC standard.
+1, use Route Set Congestion Test as described by the ANSI, ITU and China Standard.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute reflects the operational status of the MTP3b SP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="spTimer">
+ <description>Struct containing ANSI specific timer data.</description>
+ <dataType>
+ <structRef name="Mtp3bSpAnsiTimerData"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's. Can be of type SccpSp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfForcedRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed forced rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfControlledRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed controlled rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfEmergencyChangeOverRec">
+ <description>Performance management counter for number of received emergency changeOver orders (ECO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeOverRec">
+ <description>Performance counter for number of changeOver order messages (COO/XCO) received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeBackDeclRec">
+ <description>Performance management counter for number of received change Back Declarations (CBD) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTAFirstTimeOutRec">
+ <description>Performance management counter for number of SLTA first time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTASecondTimeOutRec">
+ <description>Performance management counter for number of SLTA second time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUPMsgDiscardedDueToRoutingErr">
+ <description>Performance monitoring counter for number of UP (user part) messages (MTP_TRANSFER_req) discarded due to routing error.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCASent">
+ <description>Performance management counter for number of sent COA/XCA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECOSent">
+ <description>Performance management counter for number of sent ECO messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECASent">
+ <description>Performance management counter for number of sent ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCARec">
+ <description>Performance management counter for number of received COA/XCA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBARec">
+ <description>Performance management counter for number of received CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECARec">
+ <description>Performance management counter for number of received ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRARec">
+ <description>Performance management counter for number of received TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRASent">
+ <description>Performance management counter for number of sent TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTimerT21WasStarted">
+ <description>Performance monitoring counter for number of times the timer T21 was started (i.e. how many times the remote inhibit test message has been sent).
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBASent">
+ <description>Performance management counter for number of sent CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessForcedRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed forced reroutings.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessControlledRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed controlled reroutings.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocEstablish">
+ <description>Performance management counter for number of successful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocEstablish">
+ <description>Performance management counter for number of unsuccessful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpCommunicationErr">
+ <description>Performance management counter for number of SCTP communication error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpSendFailure">
+ <description>Performance management counter for number of SCTP send failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpBufOverflow">
+ <description>Performance management counter for number of SCTP stop sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpResumeSending">
+ <description>Performance management counter for number of SCTP resume sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpNetworkStatusChange">
+ <description>Performance management counter for number of SCTP network status change.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpAssociationRestart">
+ <description>Performance management counter for number of SCTP association restart.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocAbort">
+ <description>The number of successful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocShutDown">
+ <description>The number of succesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocAbort">
+ <description>The number of unsuccessful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocShutDown">
+ <description>The number of unsuccesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIncomingAssocEstabRequestInStateDownWhenStateEstabIsBlocked">
+ <description>The number of incoming request for association establishment when state on the association is 'DOWN' and establishment of associations is blocked. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocEstabReached">
+ <description>The number of times that the max limit for trying to establish an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocActivReached">
+ <description>The number of times that the max limit for trying to activate an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLowerPrioMsgDiscarded">
+ <description>The number of messages with low priority that has been discarded.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSpItu">
+ <description>Mtp3b Signalling Point for the ITU standard.
+
+This MO represents/models the MTP3b Signaling Point characteristics/functions according to the ITU standard.
+A signaling point is a logical node in the signaling network. The combination of signaling points and their interconnecting
+signaling links form the SS No. 7 signaling network. The signaling point represented by this object is a Local Signaling Point.
+
+The performance monitoring counters found in Mtp3SpItu MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: IT IS NOT POSSIBLE TO CREATE SIGNALLING POINTS OF DIFFERENT STANDARDS!
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the ITU standard.
+
+NOTE: The combination of network indicator (networkInd) and Signalling Point Code (signallingPointCode) has to be unique for each Signalling Point.
+
+NOTE: A maximum of 15 instances of this MO can be created on (referencing) the same PlugInUnit.
+
+NOTE: The maximum number of Signalling Points that can be created in a CPP based node is 24.
+
+NOTE: Deleting a singel L3 Signal Point is not possible, if it necessary to delete a Signal Point then all Signal Points has to be deleted. This also has to be done whitin the same transaction.
+
+NOTE: Any object created under a certain SP (Signaling Point) cannot refer to an object created under another SP. Nor can it refer to an object created under another SP.
+
+NOTE: The value of the attribute 'version' is valid for all SPs (Mtp3bSpItu MOs) and the value of the last created or changed SP will be used for all SPs.</description>
+ <attribute name="Mtp3bSpItuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="networkInd">
+ <description>The networkInd attribute (NI) is used by signalling message handling functions in MTP3b
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bNetworkInd">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signallingPointCode">
+ <description>The signallingPointCode (Local Point Code) attribute (SPC) is used together with the network indicator (NI, networkInd attribute) to uniquely identify the MTP Signalling Point, SP.
+SP = NI-SPC.
+Size (2 exp 14)-1 (16383).
+The SignallingPointCode (SPC) is normally used as a whole unique number (no internal structure). But sometimes the SPC is grouped together as three numbers which corresponds to zone, area/network, signalling point. If this is the case the three numbers are coded as 3-8-3 bits in the total SPC. To enter the SPC-value then you have to convert the three numbers to their binary code and then convert the whole 14-bit pattern as an integer.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16383</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="version">
+ <description>This attribute shows what MTP3b ITU standard the system follows. With ITU, it is possible using this attribute to set which of the ITU standard versions that shall be followed.
+
+Note! Setting of another value than 'ITU_T_07_96' at create will have no effect. The Signaling Point will always be created with the value 'ITU_T_07_96'.
+
+Note! It is not possible to hav signaling points with different versions in the node so setting of this attribute will effect all signaling points. The value for the last created or changed signaling point will be used for all signaling points.</description>
+ <dataType>
+ <enumRef name="Mtp3bItuVersion">
+ <defaultValue>ITU_T_07_96</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="nodeBehaviour">
+ <description>The nodeBehaviour attribute represents the MTP3b node type.
+
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NodeBehaviourType">
+ <defaultValue>SEP</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="noOfCongestLevelForNI">
+ <description>Defines the number of congestion levels for NI.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetCongestTestFlag">
+ <description>Selection of which procedure to use during congestion handling if the national option with priorities is used.
+
+0, use TcTimer as described by the TTC standard.
+1, use Route Set Congestion Test as described by the ANSI, ITU and China Standard.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="resendTfcInterval">
+ <description>Send TFC back to originating signalling point code for every n:th message when
+the destination is congested. Set to 0 will suppress sending of TFC.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeReroutBuf">
+ <description>The maxSizeReroutBuf attribute represents the maximum size (in kB) of the rerouting buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeChangeBuf">
+ <description>The maxSizeChangeBuf attribute represents the maximum size (in kB) of the changeover buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="transFrHandler">
+ <description>Determines if a TransFer Restricted signal (TFR) should be treated as a TFA (TransFer Allowed signal) or be ignored.
+</description>
+ <dataType>
+ <enumRef name="Mtp3bTfrHandling">
+ <defaultValue>IGNORED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="sioSpare">
+ <description>The sioSpare2 attribute determines if the two spare bits in the SIO (Service Information Octet) should be treated as spare.</description>
+ <dataType>
+ <enumRef name="Mtp3bSioSpareBitsUse">
+ <defaultValue>PRIO</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="statusIndInterval">
+ <description>The statusIndInterval attribute sets the interval for sending MTP-STATUS indication, i.e. send indication every Nth message .</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="sendSltmBefLink">
+ <description>The sendSltmBefLink attribute determines if the SLTM (Signalling Link Test Message) should be sent and a SLTA received before the link is considered to be in service.
+
+Note! It is not recommended nor is it in accordance with standard to set the value of this attribute to 'false' </description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="testPatternSltm">
+ <description>The testPatternSltm attribute represents a string testpattern in the Signalling Link Test Message.
+
+Minimum string length 2 characters, maximum 30 characters. Allowed characters are 0-9, A-F.
+Only even number of characters is allowed.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>2</min> <max>30</max>
+ </lengthRange>
+ <defaultValue>"A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="spPriority">
+ <description>Struct containing the priority attributes.
+</description>
+ <dataType>
+ <structRef name="Mtp3bSpItuPriorityData"/>
+ </dataType>
+ </attribute>
+ <attribute name="spTimer">
+ <description>Struct containing ITU specific timer attributes</description>
+ <dataType>
+ <structRef name="Mtp3bSpItuTimerData"/>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>Holds a reference to the Reliable Program Uniter.
+The RPU is at the server.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute reflects the operational status of the MTP3b SP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="m3uaNoOfAttempsOfDauds">
+ <description>For M3UA, number of attempts to send the DAUD message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="noOfAttempsOfAssociationEstablishment">
+ <description>Number of attempts to send the SCTP_ASSOCIATE_REQ message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>65535</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's. Can be of type SccpSp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfForcedRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed forced rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfControlledRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed controlled rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfEmergencyChangeOverRec">
+ <description>Performance management counter for number of received emergency changeOver orders (ECO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeOverRec">
+ <description>Performance counter for number of changeOver order messages (COO/XCO) received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeBackDeclRec">
+ <description>Performance management counter for number of received change Back Declarations (CBD) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTAFirstTimeOutRec">
+ <description>Performance management counter for number of SLTA first time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTASecondTimeOutRec">
+ <description>Performance management counter for number of SLTA second time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUPMsgDiscardedDueToRoutingErr">
+ <description>Performance monitoring counter for number of UP (user part) messages (MTP_TRANSFER_req) discarded due to routing error.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCASent">
+ <description>Performance management counter for number of sent COA/XCA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECOSent">
+ <description>Performance management counter for number of sent ECO messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECASent">
+ <description>Performance management counter for number of sent ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCARec">
+ <description>Performance management counter for number of received COA/XCA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBARec">
+ <description>Performance management counter for number of received CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECARec">
+ <description>Performance management counter for number of received ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRARec">
+ <description>Performance management counter for number of received TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRASent">
+ <description>Performance management counter for number of sent TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTimerT21WasStarted">
+ <description>Performance monitoring counter for number of times the timer T21 was started (i.e. adjacent SP restarted).
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBASent">
+ <description>Performance management counter for number of sent CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessForcedRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed forced reroutings.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessControlledRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed controlled reroutings.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocEstablish">
+ <description>Performance management counter for number of successful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocEstablish">
+ <description>Performance management counter for number of unsuccessful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpCommunicationErr">
+ <description>Performance management counter for number of SCTP communication error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpSendFailure">
+ <description>Performance management counter for number of SCTP send failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpBufOverflow">
+ <description>Performance management counter for number of SCTP stop sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpResumeSending">
+ <description>Performance management counter for number of SCTP resume sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpNetworkStatusChange">
+ <description>Performance management counter for number of SCTP network status change.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpAssociationRestart">
+ <description>Performance management counter for number of SCTP association restart.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocAbort">
+ <description>The number of successful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocShutDown">
+ <description>The number of succesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocAbort">
+ <description>The number of unsuccessful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocShutDown">
+ <description>The number of unsuccesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIncomingAssocEstabRequestInStateDownWhenStateEstabIsBlocked">
+ <description>The number of incoming request for association establishment when state on the association is 'DOWN' and establishment of associations is blocked. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocEstabReached">
+ <description>The number of times that the max limit for trying to establish an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocActivReached">
+ <description>The number of times that the max limit for trying to activate an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLowerPrioMsgDiscarded">
+ <description>The number of messages with low priority that has been discarded.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSpTtc">
+ <description>Mtp3b Signalling Point for the TTC standard.
+
+This MO represents/models the MTP3b Signaling Point characteristics/functions according to the TTC standard.
+A signaling point is a logical node in the signaling network. The combination of signaling points and their interconnecting
+signaling links form the SS No. 7 signaling network. The signaling point represented by this object is a Local Signaling Point.
+
+The performance monitoring counters found in Mtp3SpTtc MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a
+standard which is NOT the TTC standard.
+
+NOTE: IT IS NOT POSSIBLE TO CREATE SIGNALLING POINTS OF DIFFERENT STANDARDS!
+
+NOTE: The combination of network indicator (networkInd) and Signalling Point Code (signallingPointCode) has to be unique for each Signalling Point.
+
+NOTE: A maximum of 15 instances of this MO can be created on (referencing) the same PlugInUnit.
+
+NOTE: The maximum number of Signalling Points that can be created in a CPP based node is 24.
+
+NOTE: Deleting a singel L3 Signal Point is not possible, if it necessary to delete a Signal Point then all Signal Points has to be deleted. This also has to be done whitin the same transaction.
+
+NOTE: Any object created under a certain SP (Signaling Point) cannot refer to an object created under another SP. Nor can it refer to an object created under another SP.</description>
+ <attribute name="Mtp3bSpTtcId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="networkInd">
+ <description>The networkInd attribute (NI) is used by signalling message handling functions in MTP3b.
+
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bNetworkIndTtc">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signallingPointCode">
+ <description>The signallingPointCode (Local Point Code) attribute (SPC) is used together with the network indicator (NI, networkInd attribute) to uniquely identify the MTP Signalling Point, SP.
+SP = NI-SPC.
+Size (2 exp 16)-1 (65535).
+The SignallingPointCode (SPC) is always used as a whole unique number (no internal structure).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nodeBehaviour">
+ <description>The nodeBehaviour attribute represents the MTP3b node type.
+
+Note! Only SEP and STP is supported for the Ttc standard.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NodeBehaviourType">
+ <defaultValue>SEP</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetCongestTestFlag">
+ <description>Selection of which procedure to use during congestion handling if the national option with priorities is used.
+
+0, use TcTimer as described by the TTC standard.
+1, use Route Set Congestion Test as described by the ANSI, ITU and China Standard.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="resendTfcInterval">
+ <description>Send TFC back to originating signalling point code for every n:th message when
+the destination is congested. Set to 0 will suppress sending of TFC.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeReroutBuf">
+ <description>The maxSizeReroutBuf attribute represents the maximum size (in kB) of the rerouting buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeChangeBuf">
+ <description>The maxSizeChangeBuf attribute represents the maximum size (in kB) of the changeover buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="statusIndInterval">
+ <description>The statusIndInterval attribute sets the interval for sending MTP-STATUS indication, i.e. send indication every Nth message .</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="testPatternSltm">
+ <description>The testPatternSltm attribute represents a string testpattern in the Signalling Link Test Message.
+
+String length 4 characters. Allowed characters are 0-9, A-F.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>4</min> <max>4</max>
+ </lengthRange>
+ <defaultValue>"7711"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="spPriority">
+ <description>Struct containing the TTC priority attributes.
+</description>
+ <dataType>
+ <structRef name="Mtp3bSpTtcPriorityData"/>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>Holds a reference to the Reliable Program Uniter.
+The RPU is at the server.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="spTimer">
+ <description>Struct containing TTC timer attributes.</description>
+ <noNotification/>
+ <dataType>
+ <structRef name="Mtp3bSpTtcTimerData"/>
+ </dataType>
+ </attribute>
+ <attribute name="noOfCongestLevelForNI">
+ <description>Defines the number of congestion levels for NI.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute reflects the operational status of the MTP3b SP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's. Can be of type SccpSp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfForcedRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed forced rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfControlledRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed controlled rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfEmergencyChangeOverRec">
+ <description>Performance management counter for number of received emergency changeOver orders (ECO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeOverRec">
+ <description>Performance counter for number of changeOver order messages (COO/XCO) received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeBackDeclRec">
+ <description>Performance management counter for number of received change Back Declarations (CBD) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTAFirstTimeOutRec">
+ <description>Performance management counter for number of SLTA first time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTASecondTimeOutRec">
+ <description>Performance management counter for number of SLTA second time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUPMsgDiscardedDueToRoutingErr">
+ <description>Performance monitoring counter for number of UP (user part) messages (MTP_TRANSFER_req) discarded due to routing error.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCASent">
+ <description>Performance management counter for number of sent COA/XCA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECOSent">
+ <description>Performance management counter for number of sent ECO messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECASent">
+ <description>Performance management counter for number of sent ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCARec">
+ <description>Performance management counter for number of received COA/XCA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBARec">
+ <description>Performance management counter for number of received CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECARec">
+ <description>Performance management counter for number of received ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRARec">
+ <description>Performance management counter for number of received TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRASent">
+ <description>Performance management counter for number of sent TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBASent">
+ <description>Performance management counter for number of sent CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessForcedRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed forced reroutings.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessControlledRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed controlled reroutings.
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocEstablish">
+ <description>Performance management counter for number of successful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocEstablish">
+ <description>Performance management counter for number of unsuccessful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpCommunicationErr">
+ <description>Performance management counter for number of SCTP communication error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpSendFailure">
+ <description>Performance management counter for number of SCTP send failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpBufOverflow">
+ <description>Performance management counter for number of SCTP stop sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpResumeSending">
+ <description>Performance management counter for number of SCTP resume sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpNetworkStatusChange">
+ <description>Performance management counter for number of SCTP network status change.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpAssociationRestart">
+ <description>Performance management counter for number of SCTP association restart.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSlAnsi">
+ <description>This MO represents an MTP3b Signalling Link for the ANSI standard. It represents the termination of the signalling link within the signalling point as defined in T1.111-1996.
+
+The total amount of links between any two specific nodes in the network shall not be more than 80 independent on how many linksets that are defined between the two nodes. The signalLinkCode for a link must be unique between the nodes, independent on which linkSet the link belongs to. A maximum of five linksets with a maximum of 16 links in each linkset can be configured. A maximum of 16 links between two adjacent nodes can be configured.
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the ANSI standard.
+
+The performance monitoring counters found in Mtp3SlAnsi MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).</description>
+ <attribute name="Mtp3bSlAnsiId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute reflects the operational status of the Mtp3bSlAnsi.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="tpId">
+ <description>The tpId attribute points out the termination point of the lower layer protocol.
+
+For narrowband this signalling link will be connected to an MTP L2 termination point (Mtp2Tp MO). And for broadband it will be connected to a NNI SAAL termination point (NniSaalTp Mo).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="linkState">
+ <description>The link state of the Mtp3bSlAnsi.
+
+The link state is a bit map which contains a combination of the following values: (in hexadecimal format)
+
+0x00 Available
+0x01 Failed
+0x02 Remotely blocked
+0x04 Locally blocked
+0x08 Remotely inhibited
+0x10 Locally inhibited
+0x20 Deactivated</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signLinkCode">
+ <description>The signalling link code, SLC, used for this link.
+The signLinkCode for a link must be unique between the nodes,
+independent on in which linkSet the link belongs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="proceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bProceduralState">
+ <defaultValue>NOT_INITIALIZED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkCongestLevel">
+ <description>The congestion level of the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="CongestLevel">
+ <defaultValue>level_0</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartLink">
+ <description>Controls if the Mtp3bSL should be activated at create.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALINServiceInd">
+ <description>Performance management counter for number of received link-in-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALOUTInd">
+ <description>Performance management counter for number of received link-out-of-service indications.
+
+Note! This counter is incremented every time a link out of service indication is received for the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOOXCOSent">
+ <description>Performance management counter for number of sent change over order (COO/XCO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBDSent">
+ <description>Performance management counter for number of sent CBD messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestRec">
+ <description>Performance monitoring counter for number of local link congestion primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestCeaseRec">
+ <description>Performance monitoring counter for number of local link congestion ceased primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSURec">
+ <description>Performance monitoring counter for number of received MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUSent">
+ <description>Performance monitoring counter for number of sent MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="deactivate">
+ <description>This action deactivates the signalling link.
+ It will also set autoStartLink = false.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="activate">
+ <description>This action activates the signalling link with normal alignment. It will also set autoStartLink = true.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="emergencyActivate">
+ <description>This action activates the signalling link with emergency alignment.
+ It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="localInhibit">
+ <description>This action inhibits the Mtp3bSlAnsi. Signalling link management inhibiting is requested by management when it becomes necessary, e.g for maintenance or testing purposes to make or keep a signalling link unavailable to User Part-generated signalling traffic.
+Inhibiting of a signalling link may be requested by management function at either end of the link. The request is granted, provided that the inhibiting action does not cause any previously accessible destinations to become inaccessible at either end of the signalling link. The request may also be refused under certain circumstances such as congestion.
+Exception FroRequestFailed if it was not possible to inhibit.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="localUninhibit">
+ <description>This action uninhibits the Mtp3bSlAnsi.
+
+Exception FrorequestFailed if it was not possible to uninhibit.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Mtp3bSlItu">
+ <description>This MO represents an MTP3b Signalling Link for the ITU standard. It represents the termination of the signalling link within the signalling point as defined in Q.704 and Q.2210 (07/96).
+
+The total amount of links between any two specific nodes in the network shall not be more than 16, independent on how many linksets that are defined between the two nodes. The signalLinkCode for a link must be unique between the nodes, independent on which linkSet the link belongs to.
+
+The performance monitoring counters found in Mtp3SlItu MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the ITU standard.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="tpId">
+ <description>The tpId attribute points out the termination point of the lower layer protocol.
+
+For narrowband this signalling link will be connected to an MTP L2 termination point (Mtp2Tp MO). And for broadband it will be connected to a NNI SAAL termination point (NniSaalTp Mo).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute reflects the operational status of the Mtp3bSl.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkState">
+ <description>The link state of the Mtp3bSl.
+
+The link state is a bit map which contains a combination of the following values: (in hexadecimal format)
+
+0x00 Available
+0x01 Failed
+0x02 Remotely blocked
+0x04 Locally blocked
+0x08 Remotely inhibited
+0x10 Locally inhibited
+0x20 Deactivated</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signLinkCode">
+ <description>The signalling link code, SLC, used for this link.
+The signLinkCode for a link must be unique between the nodes,
+independent on in which linkSet the link belongs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="proceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bProceduralState">
+ <defaultValue>NOT_INITIALIZED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkCongestLevel">
+ <description>The congestion level of the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="CongestLevel">
+ <defaultValue>level_0</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartLink">
+ <description>Controls if the Mtp3b Signalling Link should be activated at create.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="prioBeforeSio">
+ <description>This Boolean tells if the message priority shall be inserted in an octet before the Service Indicator Octet (SIO).
+
+ITU default is false.
+</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALINServiceInd">
+ <description>Performance management counter for number of received link-in-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALOUTInd">
+ <description>Performance management counter for number of received link-out-of-service indications.
+
+Note! This counter is incremented every time a link out of service indication is received for the link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOOXCOSent">
+ <description>Performance management counter for number of sent change over order (COO/XCO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBDSent">
+ <description>Performance management counter for number of sent CBD messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestRec">
+ <description>Performance monitoring counter for number of local link congestion primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestCeaseRec">
+ <description>Performance monitoring counter for number of local link congestion ceased primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSURec">
+ <description>Performance monitoring counter for number of received MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUSent">
+ <description>Performance monitoring counter for number of sent MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp3bSlItuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="localInhibit">
+ <description>This action inhibits the Mtp3bSlItu. Signalling link management inhibiting is requested by management when it becomes necessary, e.g for maintenance or testing purposes to make or keep a signalling link unavailable to User Part-generated signalling traffic.
+Inhibiting of a signalling link may be requested by management function at either end of the link. The request is granted, provided that the inhibiting action does not cause any previously accessible destinations to become inaccessible at either end of the signalling link. The request may also be refused under certain circumstances such as congestion.
+Exception FroRequestFailed if it was not possible to inhibit.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="localUninhibit">
+ <description>This action uninhibits the Mtp3bSlItu.
+
+Exception FrorequestFailed if it was not possible to uninhibit.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="deactivate">
+ <description>This action deactivates the Mtp3bSl.
+It will also set autoStartLink = false.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="activate">
+ <description>This action activates the Mtp3bSl with normal alignment. It will also set autoStartLink = true.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="emergencyActivate">
+ <description>This action activates the Mtp3bSl with emergency alignment.
+It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="Mtp3bSlTtc">
+ <description>This MO represents an MTP3b Signalling Link for the TTC standard. It represents the termination of the signalling link within the signalling point as defined in JT-Q.704 Ver. 3, April 28 1992 and JT-Q.2210 Ver.1 April 24 1996.
+
+The total amount of links between any two specific nodes in the network shall not be more than 16, independent on how many linksets that are defined between the two nodes. The signalLinkCode for a link must be unique between the nodes, independent on which linkSet the link belongs to.
+
+The performance monitoring counters found in Mtp3SlTtc MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the TTC standard.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="tpId">
+ <description>The tpId attribute points out the termination point of the lower layer protocol. Only BroadBand is supported for TTC. The MO will be connected to a NNI SAAL termination point (NniSaalTp Mo).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute reflects the operational status of the Mtp3bSl.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkState">
+ <description>The link state of the Mtp3bSl.
+
+The link state is a bit map which contains a combination of the following values: (in hexadecimal format)
+
+0x00 Available
+0x01 Failed
+0x02 Remotely blocked
+0x04 Locally blocked
+0x08 Remotely inhibited
+0x10 Locally inhibited
+0x20 Deactivated</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signLinkCode">
+ <description>The signalling link code, SLC, used for this link.
+The code have to be uniqe in this signal link set, i.e the signallingLinkCode for
+all the Mtp3bSl that belongs to the same Mtp3bSls must be unique(mutual exclusive). </description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="proceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bProceduralState">
+ <defaultValue>NOT_INITIALIZED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkCongestLevel">
+ <description>The congestion level of the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="CongestLevel">
+ <defaultValue>level_0</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartLink">
+ <description>Controls if the Mtp3b Signalling Link should be activated at create.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="prioBeforeSio">
+ <description>This Boolean tells if the message priority shall be inserted in an octet before the Service Indicator Octet (SIO).
+
+</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALINServiceInd">
+ <description>Performance management counter for number of received link-in-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALOUTInd">
+ <description>Performance management counter for number of received link-out-of-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOOXCOSent">
+ <description>Performance management counter for number of sent change over order (COO/XCO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBDSent">
+ <description>Performance management counter for number of sent CBD messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestRec">
+ <description>Performance monitoring counter for number of local link congestion primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestCeaseRec">
+ <description>Performance monitoring counter for number of local link congestion ceased primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSURec">
+ <description>Performance monitoring counter for number of received MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUSent">
+ <description>Performance monitoring counter for number of sent MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp3bSlTtcId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <action name="deactivate">
+ <description>This action deactivates the Mtp3bSl.
+It will also set autoStartLink = false.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ <action name="activate">
+ <description>This action activates the signalling link with normal alignment. It will also set autoStartLink = true.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ <action name="emergencyActivate">
+ <description>This action activates the signalling link with emergency alignment.
+It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ <raisesException name="FroNotAccessibleException"/>
+ </action>
+ </class>
+
+ <class name="Mtp2ProfileAnsi">
+ <description>The MTP 2 Profile MO represents and keeps attribute values used by one or more MTP 2 ANSI termination point MOs.</description>
+ <attribute name="userLabel">
+ <description>This MOs user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2ProfileAnsiId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <description>Struct containing profile data.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="Mtp2ProfileDataAnsi"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of Mtp2TpAnsi MOs that have reserved this Mtp2TpProfileAnsi MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp2TpAnsi"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp2ProfileItu">
+ <description>The MTP 2 Profile MO represents and keeps attribute values used by one or more MTP 2 ITU termination point MOs.</description>
+ <attribute name="userLabel">
+ <description>The MOs user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2ProfileItuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <description>Struct containing profile data.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="Mtp2ProfileDataItu"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of Mtp2TpItu MOs that have reserved this Mtp2TpProfileItu MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp2TpItu"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="E1Ttp">
+ <description>This MO represents a channelised E1 interface in the node. The E1Ttp (Trail Termination Point) MO
+does not define which type of traffic (TDM or ATM) that the interface should support. Please refer to
+the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+The performance monitoring counters in the E1Ttp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! This MO is automatically created as a consequence of creating an Os155SpiTtpMo
+Please refer to the Os155SpiTtpMo for more details.
+
+</description>
+ <systemCreated/>
+ <attribute name="degDegThr">
+ <description>The threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+This is a percentage value.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="degDegM">
+ <description>How many bad seconds in a row that causes a Degraded Signal alarm.
+
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="crc4Mode">
+ <description>Indicates what Cyclical Redundancy Check 4 Mode that is being used.</description>
+ <dataType>
+ <enumRef name="Crc4Mode">
+ <defaultValue>AUTOMATIC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="idlePattern">
+ <description>The idle pattern.
+
+NOTE: Going from A_LAW or U_LAW to UNDEFINED is always allowed but setting up one ET board with
+both U_LAW and A_LAW is not allowed.
+E.g. If you want to change from A_LAW to U_LAW on one ET board you have to change idlePattern
+on each physical port belonging to the board to UNDEFINED first.
+A_LAW -&gt; UNDEFINED -&gt; U_LAW or U_LAW -&gt; UNDEFINED -&gt; A_LAW</description>
+ <dataType>
+ <enumRef name="IdlePattern">
+ <defaultValue>UNDEFINED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter of Errored Seconds (ES).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Severely Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="E1TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identityof the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Vc4Ttp">
+ <description>This MO is automatically created as a consequence of creating an Os155SpiTtp object if any of the following conditions are true:
+a) standardmode = ETSI or
+b) standardmode = TTC and muxmode = VC4_STS3CSPE_LEVEL.
+
+It represents the termination of the SDH VC-4 path layer. The VC-4 can either be used for channelised access, in which case VC-12 MOs are created as children to the Vc4Ttp MO, or be used to carry ATM traffic, in which case there is a relationship between the AtmPort MO and the Vc4Ttp MO.
+
+Note! The performance monitoring counters in the Vc4TtpMO is set to 0 (zero) at start or restart of the node.
+When the value is to large to fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <systemCreated/>
+ <attribute name="pathTraceFormat">
+ <description>Indicates the format of the expectedPathtrace and transmittedPathtrace attributes. The format may be in 16 or 64 characters. Usually 16 is used for ETSI and 64 for ANSI/TTC.
+
+ITU_T_G707=16
+GR_253_CORE=64
+
+Note that the 16 characters format requires the operator to specify 15 characters where no character contains the null character (the 16th character is added automatically).
+
+Note that the 64 characters format requires the operator to specify 62 ASCII characters all different from null followed by CR/LF.</description>
+ <dataType>
+ <enumRef name="PathTraceFormat">
+ <defaultValue>ITU_T_G707</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="transmittedPathTrace">
+ <description>The transmitted path trace.
+Can be defined in two formats. The format may be in 16 or 64 characters. Usually 16 is used for ETSI and 64 for ANSI/TTC.
+
+Note: The string must be of 15 or 62 characters length, or empty string ("").
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="expectedPathTrace">
+ <description>Expected path trace.
+
+The string can be of 15 or 62 characters length, or empty string ("").
+
+Note: An empty string for this attribute means that the detection of Trace Identifier Mismatch (TIM) should be disabled. This attribute is set to empty string every time attribute pathTraceFormat is set.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="timConsequentAction">
+ <description>Trace Identifier Mismatch (TIM) consequent action, i.e. for generation of Alarm Indication Signal (AIS) downstream and Remote Defect Indication (RDI) upstream as a consequence of the TIM detection.
+
+True - enabled.
+False - disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="vcDegThreshold">
+ <description>This threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+The attribute value is in unit of % (percent).</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="vcDegM">
+ <description>Indicates how many bad seconds in a row that causes a Degraded Signal alarm.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="auAisReporting">
+ <description>AU AIS reporting.
+
+True - enable reporting.
+False - disable reporting.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="vcRdiReporting">
+ <description>VC RDI reporting.
+
+True - enable reporting.
+False - disable reporting.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmVcEs">
+ <description>Performance monitoring counter for Virtual Container 4, VC4, Errored Seconds, ES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmVcSes">
+ <description>Performance monitoring counter for Virtual Container 4, VC4, Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="Vc4TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Os155SpiTtp">
+ <description>This MO represents the physical interface and the termination of the SDH Regenerator and Multiplexer Section Layers.
+
+When creating the Os155SpiTtp a number of additional objects will be created. Depending on the values of standardmode and muxmode different objects will be created as described below:
+
+muxmode = standby
+standardmode = ETSI, TTC, ANSI
+No objects under the Os155SpiTtp is created.
+
+muxmode = VC4_STS3CSPE_LEVEL
+standardmode = ETSI, TTC
+A Vc4 MO is created under the Os155SpiTtp MO.
+
+muxmode = VC4_STS3CSPE_LEVEL
+standardmode = ANSI
+A Sts3CspeTtp MO is created under the Os155SpiTtp MO.
+
+The following two configurations is only applicable for the ET-MC41 board.
+
+muxmode = E1_J1_T1_LEVEL
+standardmode = ETSI
+A Vc4 MO, 63 Vc12Ttp MO's and 63 E1Ttp MO's is created under the Os155SpiTtp MO
+
+muxmode = E1_J1_T1_LEVEL
+standardmode = ANSI
+3 Sts1CspeTtp MO's, 3*28 Vt15Ttp MO's and 3*28 TiTtp MO's is created under the Os155SpiTtp MO.
+
+The performance monitoring counters in the Os155SpiTtp MO is set to 0 (zero) at start or restart of the node.
+When the value is too large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! If the Os155SpiTtp is configured as part of an Mspg protection group and is configured as standby, muxMode set to standby, no children's to this MO will be created.</description>
+ <attribute name="Os155SpiTtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual line number.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="standardMode">
+ <description>The standard that this MO is operating to.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="StandardMode">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="muxMode">
+ <description>The level at which the STM-1/OC3 signal is demultiplexed.
+
+If parent is of type Etmc41, the valid muxMode is STANDBY or E1_J1_T1_LEVEL.
+If parent is of type Etm4, the valid muxMode is STANDBY or VC4_STS3CSPE_LEVEL.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="MuxMode">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="msDegThreshold">
+ <description>MS - multiplexer section.
+
+The threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+This is a percentage value.
+
+Note: When operating to the ANSI standard, this attribute has no meaning.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="msDegM">
+ <description>MS - multiplexer section.
+
+How many bad seconds in a row that causes a Degraded Signal alarm.
+
+Note: When operating to the ANSI standard, this attribute has no meaning.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="msRdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="msAisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="loopBack">
+ <description>Enables or disables line loopback, i.e. the received signal is returned in the transmitted direction.
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="Os155LoopBack">
+ <defaultValue>NONE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmMsEs">
+ <description>Performance monitoring counter for Multiplexer Section, MS, Errored Seconds, ES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmMsSes">
+ <description>Performance monitoring counter for Multiplexer Section, MS, Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Vc12Ttp">
+ <description>This MO is automatically created when the configuring the Os155SpiTtp. It represents the termination of the SDH VC-12 path layer.
+
+Note: This MO is only valid when the ETSI standard is in use.
+
+The performance monitoring counters in the Vc12TtpMO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <systemCreated/>
+ <attribute name="Vc12TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="transmittedPathTrace">
+ <description>The transmitted path trace.
+
+Note: when 16 byte tracing is used, only 15 bytes should be used in the set action for this attribute.
+
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="expectedPathTrace">
+ <description>Expected path trace.
+
+Note: when 16 byte tracing is used, only 15 bytes should be used in the set action for this attribute.
+
+Note: An empty string for this attribute means that the detection of Trace Identifier Mismatch (TIM) should be disabled.
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="timConsequentAction">
+ <description>Trace Identifier Mismatch (TIM) consequent action, i.e. for generation of Alarm Indication Signal (AIS) downstream and Remote Defect Indication (RDI) upstream as a consequence of the TIM detection.
+
+True - enabled.
+False - disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="vcDegThreshold">
+ <description>This threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+The attribute value is in unit of % (percent).</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="vcDegM">
+ <description>Indicates how many bad seconds in a row that causes a Degraded Signal alarm.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tuAisReporting">
+ <description>Timing Unit Alarm Indication Signal (TU AIS) reporting.
+
+True - enable reporting.
+False - disable reporting.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="vcRdiReporting">
+ <description>VC RDI reporting.
+
+True - enable reporting.
+False - disable reporting.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmVcEs">
+ <description>Performance monitoring counter for Virtual Container 12, VC12, Errored Seconds, ES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmVcSes">
+ <description>Performance monitoring counter for Virtual Container 12, VC12, Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etmc1">
+ <description>This MO represents the hardware of the ET-MC1 board type. It only represents the ET specific hardware, the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-MC1 board contains 8 phyiscal ports that can be configured as either E1 (ETSI), J1 (TTC) or T1(ANSI). The board does not allow for a mix of E1, J1 and T1 ports, thus all configured ports on the board must be configured to the same standard.
+
+Each port on the ET-MC1 board can be used to carry either ATM traffic or circuit orientated (Nx64 Kbits/s connections) traffic.
+
+Each port can support up to 30 ATM VC connections. Two of these connections are reserved for AAL2 paths, and therefore two AAL2 multiplexers per port are available.
+
+Each port can support up to 2 VP connections.
+
+The ET-MC1 port supports one bidirectional F4/F5 PM flow per port.
+
+At the VP/VC endpoints, the Lost FPM/BR cells counters are not available.
+
+Note! The ETMC1 supports IMA.
+
+For more details on restrictions please refer to 155 17-21/CSX 101 09 Uen.
+
+Note! When the Etmc1 is part of the Cbu it is only possible to configure 4 physical ports of type E1, J1 or T1 on the Etmc1 board.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the ETMC1 board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Etmc1Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etmc41">
+ <description>This MO represents the hardware of the ET-MC41 board type. It only represents the ET specific hardware, while the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-MC41 board contains a 155 Mbits/s physical optical port. The board can be configured as a E1 channelised board providing 63 logical E1 interfaces.
+
+Each E1 logical channel on the ET-MC41 can be used to carry either ATM traffic or circuit oriented (Nx64 kbit/s) traffic.
+
+Each E1 logical channel can support up to 30 ATM VC connections. Two of these connections are reserved for aal2 paths, and therefore two AAL2 multiplexers per E1/DS1/J1 channel are available.
+
+Each E1/DS1/J1 channel can suport up to 2 VP connections.
+
+The ET-MC41 board support one biderectional F4/F5 PM flow per E1 channel.
+
+Note! The ETMC41 supports IMA. However the E1 ports being part of the same IMA group can not be selected randomly.
+
+Note! The number of VCC TP+VPC TP with performance monitoring enabled (i.e. PM mode &lt;&gt; off) is restricted to 1 / port
+
+For more details on restrictions please refer to 155 17-21/CSX 101 09 Uen.</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the ET-MC41 board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="Etmc41Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp2ProfileChina">
+ <description>The MTP2 Profile MO represents and keeps attribute values used by one or more MTP2 China termination point MOs.</description>
+ <attribute name="Mtp2ProfileChinaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="profileData">
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="Mtp2ProfileDataChina"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of Mtp2TpChina MOs that have reserved this Mtp2TpProfileChina MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp2TpChina"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>The MOs user label.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp2TpChina">
+ <description>This MO represents a MTP 2 termination point for the China standard, as defined in GF001-9001, plus supplement 1-3.
+
+The performance monitoring counters found in Mtp2China MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a hardware fault, aal1 server/adm restart or node restart.
+
+NOTE: This MO cannot in anyway be related (either contained by or dependent on) an MO that belongs to a standard
+which is NOT the China standard.
+
+NOTE: There is a restriction of a maximum of 32 Mtp2Tp's per MP.
+
+</description>
+ <attribute name="ds0BundleId">
+ <description>The Ds0Bundle MO that this MO references.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Ds0Bundle"/>
+ </dataType>
+ </attribute>
+ <attribute name="mtp2ProfileChinaId">
+ <description>Reference to a Mtp2ProfileChina MO.
+
+Note: The bitRate can not be changed.</description>
+ <mandatory/>
+ <noNotification/>
+ <dataType>
+ <moRef name="Mtp2ProfileChina"/>
+ </dataType>
+ </attribute>
+ <attribute name="Mtp2TpChinaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the MTP2 Signalling Terminal.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmLocalSIBTime">
+ <description>Total time in local SIB (Sending).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUTransmitted">
+ <description>Number of MSUs transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNacks">
+ <description>Number of negative acknowledgements received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuReceivedInError">
+ <description>Number of signal units received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfReTransmittedOctets">
+ <description>Number of re-transmitted octets.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSendBufferOctets">
+ <description>Number of octets in send buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFReceived">
+ <description>Number of SIO and SIF octets received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSIOSIFTransmitted">
+ <description>Number of SIO &amp; SIF octets transmitted.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfStartedRBCongestion">
+ <description>Number of started local RB congestions.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRemoteSIBTime">
+ <description>Total time in remote SIB (Receiving).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Mtp3bSlChina"/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Free tag for marking this managed object.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnitId">
+ <description>The PlugInUnit MO that this MO references.
+It indicates on which processor the Termination Point will be.
+
+Note: The PlugInUnit must be of type GPB.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PlugInUnit"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUReceived">
+ <description>Number of MSUs received..</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mtp3bSlChina">
+ <description>This MO represents an MTP3b Signalling Link for the China standard. It represents the termination of the signalling link within the signalling point as defined in GF001-9001, plus supplement 1-3.
+
+The total amount of links between any two specific nodes in the network shall not be more than 16, independent on how many linksets that are defined between the two nodes. The signalLinkCode for a link must be unique between the nodes, independent on which linkSet the link belongs to.
+
+The performance monitoring counters found in Mtp3SlChina MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard that is NOT the China standard.</description>
+ <attribute name="Mtp3bSlChinaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>This attribute reflects the operational status of the Mtp3bSl.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartLink">
+ <description>Controls if the Mtp3b Signalling Link should be activated at create.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="linkCongestLevel">
+ <description>The congestion level of the link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="CongestLevel">
+ <defaultValue>level_0</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkState">
+ <description>The link state of the Mtp3bSl.
+
+The link state is a bit map which contains a combination of the following values: (in hexadecimal format)
+
+0x00 Available
+0x01 Failed
+0x02 Remotely blocked
+0x04 Locally blocked
+0x08 Remotely inhibited
+0x10 Locally inhibited
+0x20 Deactivated</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="prioBeforeSio">
+ <description>This Boolean tells if the message priority shall be inserted in an octet before the Service Indicator Octet (SIO).
+
+China default is false.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="proceduralState">
+ <description>The procedural state of the link.
+
+0 - not initialized
+1 - initialized
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bProceduralState">
+ <defaultValue>NOT_INITIALIZED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="signLinkCode">
+ <description>The signalling link code, SLC, used for this link.
+The signLinkCode for a link must be unique between the nodes,
+independent on in which linkSet the link belongs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tpId">
+ <description>The tpId attribute points out the termination point of the lower layer protocol.
+
+For narrowband this signalling link will be connected to an MTP L2 termination point (Mtp2Tp MO). And for broadband it will be connected to a NNI SAAL termination point (NniSaalTp Mo).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="usageState">
+ <description>There are three possible states for the usageState attribute:
+
+- idle, the Mtp3bSl carries no traffic.
+- active, the Mtp3bSl is working normally, and there is traffic, and it is not congested.
+- busy, the Mtp3bSl is working but is congested (traffic is routed on other links).
+
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bUsageState">
+ <defaultValue>IDLE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALINServiceInd">
+ <description>Performance management counter for number of received link-in-service indications.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAALOUTInd">
+ <description>Performance management counter for number of received link-out-of-service indications.
+
+Note! This counter is incremented every time a link out of service indication is received for the link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBDSent">
+ <description>Performance management counter for number of sent CBD messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOOXCOSent">
+ <description>Performance management counter for number of sent change over order (COO/XCO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestCeaseRec">
+ <description>Performance monitoring counter for number of local link congestion ceased primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLocalLinkCongestRec">
+ <description>Performance monitoring counter for number of local link congestion primitives received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSURec">
+ <description>Performance monitoring counter for number of received MSU's on this signalling link.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMSUSent">
+ <description>Performance monitoring counter for number of sent MSU's on this signalling link.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="activate">
+ <description>This action activates the Mtp3bSl with normal alignment. It will also set autoStartLink = true.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="deactivate">
+ <description>This action deactivates the Mtp3bSl.
+It will also set autoStartLink = false.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="emergencyActivate">
+ <description>This action activates the Mtp3bSl with emergency alignment.
+It will also set autoStartLink = true
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="localInhibit">
+ <description>This action inhibits the Mtp3bSlChina. Signalling link management inhibiting is requested by management when it becomes necessary, e.g for maintenance or testing purposes to make or keep a signalling link unavailable to User Part-generated signalling traffic.
+Inhibiting of a signalling link may be requested by management function at either end of the link. The request is granted, provided that the inhibiting action does not cause any previously accessible destinations to become inaccessible at either end of the signalling link. The request may also be refused under certain circumstances such as congestion.
+Exception FroRequestFailed if it was not possible to inhibit.
+
+Note! This action requires a transaction.
+</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ <action name="localUninhibit">
+ <description>This action uninhibits the Mtp3bSlItu.
+
+Exception FrorequestFailed if it was not possible to uninhibit.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FroRequestFailedException"/>
+ </action>
+ </class>
+
+ <class name="Mtp3bSpChina">
+ <description>Mtp3b Signalling Point for the China standard.
+
+This MO represents/models the MTP3b Signaling Point characteristics/functions according to the China standard.
+A signaling point is a logical node in the signaling network. The combination of signaling points and their interconnecting
+signaling links form the SS No. 7 signaling network. The signaling point represented by this object is a Local Signaling Point.
+
+The performance monitoring counters found in Mtp3SpChina MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is shutdown request from CLI (Cluster Interface).
+
+NOTE: IT IS NOT POSSIBLE TO CREATE SIGNALLING POINTS OF DIFFERENT STANDARDS!
+
+NOTE: This MO cannot in anyway be related (either contain or by dependence) to an MO that belongs to a standard which is NOT the China standard.
+
+NOTE: The combination of network indicator (networkInd) and Signalling Point Code (signallingPointCode) has to be unique for each Signalling Point.
+
+NOTE: A maximum of 15 instances of this MO can be created on (referencing) the same PlugInUnit.
+
+NOTE: The maximum number of Signalling Points that can be created in a CPP based node is 24.
+
+NOTE: Deleting a singel L3 Signal Point is not possible, if it necessary to delete a Signal Point then all Signal Points has to be deleted. This also has to be done whitin the same transaction.
+
+NOTE: Any object created under a certain SP (Signaling Point) cannot refer to an object created under another SP. Nor can it refer to an object created under another SP.</description>
+ <attribute name="Mtp3bSpChinaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeChangeBuf">
+ <description>The maxSizeChangeBuf attribute represents the maximum size (in kB) of the changeover buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxSizeReroutBuf">
+ <description>The maxSizeReroutBuf attribute represents the maximum size (in kB) of the rerouting buffer.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>5000</max>
+ </range>
+ <defaultValue>2000</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="networkInd">
+ <description>The network indicator, NI, is used for discrimination of messages between functionally different networks.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="Mtp3bNetworkInd">
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operationalState attribute reflects the operational status of the MTP3b SP.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MO's. Can be of type SccpSp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="sendSltmBefLink">
+ <description>The sendSltmBefLink attribute determines if the SLTM (Signalling Link Test Message) should be sent and a SLTA received before the link is considered to be in service.
+
+Note! It is not recommended nor is it in accordance with standard to set the value of this attribute to 'false' </description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="signallingPointCode">
+ <description>The signallingPointCode (Local Point Code) attribute (SPC) is used together with the network indicator (NI, networkInd attribute) to uniquely identify the MTP Signalling Point, SP.
+SP = NI-SPC.
+Size (2 exp 24)-1 (16777215).
+The SignallingPointCode (SPC) is nornally used as a whole unique number (no internal structure). But sometimes the SPC is grouped together as three numbers which corresponds to zone, area/network, signalling point. If this is the case the three numbers are coded as 8-8-8 bits in the total SPC. To enter the SPC-value then you have to convert the three numbers to their binary code and then convert the whole 24-bit pattern as an integer.
+ </description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16777215</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nodeBehaviour">
+ <description>The nodeBehaviour attribute represents the MTP3b node type.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="NodeBehaviourType">
+ <defaultValue>SEP</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="noOfCongestLevelForNI">
+ <description>Defines the number of congestion levels for NI.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>3</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="routeSetCongestTestFlag">
+ <description>Selection of which procedure to use during congestion handling if the national option with priorities is used.
+
+0, use TcTimer as described by the TTC standard.
+1, use Route Set Congestion Test as described by the ANSI, ITU and China Standard.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="resendTfcInterval">
+ <description>Send TFC back to originating signalling point code for every n:th message when
+the destination is congested. Set to 0 will suppress sending of TFC.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="sioSpare">
+ <description>The sioSpare attribute determines if the two spare bits in the SIO (Service Information Octet) should be treated as spare.</description>
+ <dataType>
+ <enumRef name="Mtp3bSioSpareBitsUse">
+ <defaultValue>SPARE</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="spPriority">
+ <description>Struct containing the priority attributes.
+
+Note: The China and ITU priorityData is identical so the ItuPriorityData is used for China to avoid duplication of data.</description>
+ <dataType>
+ <structRef name="Mtp3bSpChinaPriorityData"/>
+ </dataType>
+ </attribute>
+ <attribute name="spTimer">
+ <description>Struct containing China specific timer attributes</description>
+ <dataType>
+ <structRef name="Mtp3bSpChinaTimerData"/>
+ </dataType>
+ </attribute>
+ <attribute name="statusIndInterval">
+ <description>The statusIndInterval attribute sets the interval for sending MTP-STATUS indication, i.e. send indication every Nth message .</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="testPatternSltm">
+ <description>The testPatternSltm attribute represents a string testpattern in the Signalling Link Test Message.
+
+Minimum string length 2 characters, maximum 30 characters. Allowed characters are 0-9, A-F.
+Only even number of characters is allowed.
+
+</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>2</min> <max>30</max>
+ </lengthRange>
+ <defaultValue>"A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5"</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="transFrHandler">
+ <description>Determines if a TransFer Restricted signal (TFR) should be treated as a TFA (TransFer Allowed signal) or be ignored.
+</description>
+ <dataType>
+ <enumRef name="Mtp3bTfrHandling">
+ <defaultValue>IGNORED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="rpuId">
+ <description>Holds a reference to the Reliable Program Uniter.
+The RPU is at the server.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ReliableProgramUniter"/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="m3uaNoOfAttempsOfDauds">
+ <description>For M3UA, number of attempts to send the DAUD message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="noOfAttempsOfAssociationEstablishment">
+ <description>Number of attempts to send the SCTP_ASSOCIATE_REQ message.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>65535</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="version">
+ <description>This attribute shows what MTP3b ITU standard the system follows. With ITU, it is possible using this attribute to set which of the ITU standard versions that shall be followed.
+
+Note! Setting of another value than 'ITU_T_07_96' at create will have no effect. The Signaling Point will always be created with the value 'ITU_T_07_96'.
+
+Note! It is not possible to hav signaling points with different versions in the node so setting of this attribute will effect all signaling points. The value for the last created or changed signaling point will be used for all signaling points.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="Mtp3bItuVersion">
+ <defaultValue>ITU_T_07_96</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBARec">
+ <description>Performance management counter for number of received CBA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCBASent">
+ <description>Performance management counter for number of sent CBA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeBackDeclRec">
+ <description>Performance management counter for number of received change Back Declarations (CBD) messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfChangeOverRec">
+ <description>Performance counter for number of changeOver order messages (COO/XCO) received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCARec">
+ <description>Performance management counter for number of received COA/XCA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCOAXCASent">
+ <description>Performance management counter for number of sent COA/XCA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfControlledRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed controlled rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECASent">
+ <description>Performance management counter for number of sent ECA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECARec">
+ <description>Performance management counter for number of received ECA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfECOSent">
+ <description>Performance management counter for number of sent ECO messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfEmergencyChangeOverRec">
+ <description>Performance management counter for number of received emergency changeOver orders (ECO) messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfForcedRerouteSuccessPerf">
+ <description>Performance monitoring counter for number of successfully performed forced rerouting.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTAFirstTimeOutRec">
+ <description>Performance management counter for number of SLTA first time out received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSLTASecondTimeOutRec">
+ <description>Performance management counter for number of SLTA second time out received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTimerT21WasStarted">
+ <description>Performance monitoring counter for number of times the timer T21 was started (i.e. adjacent SP restarted).
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRARec">
+ <description>Performance management counter for number of received TRA messages.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfTRASent">
+ <description>Performance management counter for number of sent TRA messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessControlledRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed controlled reroutings.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessForcedRerouting">
+ <description>Performance monitoring counter for number of unsuccessfully performed forced reroutings.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUPMsgDiscardedDueToRoutingErr">
+ <description>Performance monitoring counter for number of UP (user part) messages (MTP_TRANSFER_req) discarded due to routing error.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocEstablish">
+ <description>Performance management counter for number of successful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocEstablish">
+ <description>Performance management counter for number of unsuccessful association establishment.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpCommunicationErr">
+ <description>Performance management counter for number of SCTP communication error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpSendFailure">
+ <description>Performance management counter for number of SCTP send failure.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpBufOverflow">
+ <description>Performance management counter for number of SCTP stop sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpResumeSending">
+ <description>Performance management counter for number of SCTP resume sending data.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpNetworkStatusChange">
+ <description>Performance management counter for number of SCTP network status change.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSctpAssociationRestart">
+ <description>Performance management counter for number of SCTP association restart.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocAbort">
+ <description>The number of successful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSuccessAssocShutDown">
+ <description>The number of succesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocAbort">
+ <description>The number of unsuccessful abortions of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfUnsuccessAssocShutDown">
+ <description>The number of unsuccesful shutdowns of signalling associations.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIncomingAssocEstabRequestInStateDownWhenStateEstabIsBlocked">
+ <description>The number of incoming request for association establishment when state on the association is 'DOWN' and establishment of associations is blocked. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocEstabReached">
+ <description>The number of times that the max limit for trying to establish an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMaxTrialsForAssocActivReached">
+ <description>The number of times that the max limit for trying to activate an association has been reached.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfLowerPrioMsgDiscarded">
+ <description>The number of messages with low priority that has been discarded.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Mspg">
+ <description>The MSPG (Multiplex Section Protection Group) object enables two different protection mechanism in Cello. First it enables a standard 1+1 MSP mechanism. A failure on the working line will thus cause a sub 50 ms switch to the standby line.
+Secondly the MSPG is used to enable equipment protection, whereas a failure of the working board will cause a switch to the standby board. While executing an equipment protection switch, the node on the other end of the multiplexer section, will experience a standard 1+1 MSP switch.
+
+It is possible to force traffic to one port/board by using administrative state.
+Setting administrative state to locked on the working board, will automatically cause an equipment switch to the standby board. Similarily setting administrative state to locked on the working port, will cause an MSP switch to the standby port.
+
+The process of configuring a MSP protection interface is as follows:
+1) Create the working interface as normal.
+2) Create the standby interface by creating an Os155SpiTtp with mux mode set to STANDBY (standby for protection).
+3) Create a MSPG object with references to the two Os155SpiTtp objects.
+
+Note! The ports selected for MSPG must be have the attribute standardMode configured in exactly the same way.
+
+Note! The Os155SpiTtp created for standby will not create any children, i.e no Vc4Ttp or Vc4Ttp, Vc12Ttp and E1Ttp will be created. Nor will object of type Sts1SpeTtp, Vt15Ttp or T1Ttp be created.</description>
+ <attribute name="os155SpiWorkingId">
+ <description>The working OS155 pyhiscal path termination.
+This is the administrative value.
+
+To retrive the Id of the current working port, use the selectedPort.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Os155SpiTtp"/>
+ </dataType>
+ </attribute>
+ <attribute name="os155SpiStandbyId">
+ <description>The standby OS155 physical path termination.
+This is the administrative value.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Os155SpiTtp"/>
+ </dataType>
+ </attribute>
+ <attribute name="switchMode">
+ <description>The switching mode.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="SwitchModes">
+ <defaultValue>AUTOMATIC</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Mspg.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="MspgId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="selectedPort">
+ <description>The port currently selected by the MSPG. The selected port can only
+change due to a MSP or equipment switch.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Os155SpiTtp"/>
+ </dataType>
+ </attribute>
+ <attribute name="selectedBoard">
+ <description>The board currently providing the user traffic interface to the Cello switch.
+The only action that can change the selected board is an equipment switch.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="degCauseMsp">
+ <description>If set to true, then a swith is performed upon detection of DEG.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <action name="manualMspSwitch">
+ <description>Initiates a switch when there does not exist a defect.
+
+This action can fail for the following reasons:
+FailedResource - the switch was not possible due to a traffic affecting fault on the port to which the switch was requested (i.e. the one not currently selected).
+LockedResource - the port to which the switch is intended is administratively locked.
+UnknownReason - there exists another fault that prevents the action.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="FailedResourceException"/>
+ <raisesException name="LockedResourceException"/>
+ <raisesException name="UnknownReasonException"/>
+ </action>
+ </class>
+
+ <class name="T1PhysPathTerm">
+ <description>This MO represents an T1 (i.e. 1.5 Mbit/s) physical interface in the node. The T1PhysPathTerm MO does not define which type of traffic (TDM or ATM) that the interface should support.
+Please refer to the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+</description>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="T1PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.
+</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>8</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>Possible values
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+system - The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter for Errored Seconds, ES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Severly Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="idlePattern">
+ <description>The idle pattern.
+
+NOTE: Going from A_LAW or U_LAW to UNDEFINED is always allowed but setting up one ET board with
+both U_LAW and A_LAW is not allowed.
+E.g. If you want to change from A_LAW to U_LAW on one ET board you have to change idlePattern
+on each physical port belonging to the board to UNDEFINED first.
+A_LAW -&gt; UNDEFINED -&gt; U_LAW or U_LAW -&gt; UNDEFINED -&gt; A_LAW</description>
+ <dataType>
+ <enumRef name="IdlePattern">
+ <defaultValue>UNDEFINED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="transmissionMode">
+ <description>The type of transmission media.
+Refer to the TransmissionMode enumeration for details.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="TransmissionMode">
+ <defaultValue>S_133</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ImaGroup">
+ <description>IMA, Inverse Multiplexing for ATM, makes it possible to group several physical
+interfaces together to form a virtual physical pipe for atm. The capacity of this
+pipe is equal to the sum of each of the physical interfaces included in the
+group.
+
+When IMA should be configured, an ATMPort MO is created with reference to an
+IMAGroup MO rather than a pure physical interface MO.
+The IMAGroup MO in turn is created with a list of the physical port MO's that
+are included in the group. The physical port MO's must be of the same type
+and be located on the same ET board.
+
+For each of the physical port MO's included in the IMAGroup, an IMALink object
+is automatically created. The IMALink object is responsible for handling link
+specific performance and fault management related to IMA.
+
+The ports can be of type E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E1Ttp, T1Ttp.
+
+The performance monitoring counters in the ImaGroup MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! A general restriction in Cello is that ports being part of the same IMA group
+must be located on the same board.
+
+Note! Only termination points on Etmc1 and Etmc41 boards are allowed as ImaLinks.
+
+Note! At least two links has to be configured in an Ima Group.</description>
+ <attribute name="ImaGroupId">
+ <description>The identity of the MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="physicalPortList">
+ <description>Holds a list of the physical ports connected to the ImaGroup.
+Can be of type:
+E1PhysPathTerm,
+J1PhysPathTerm,
+T1PhysPathTerm,
+E1Ttp,
+T1Ttp.</description>
+ <mandatory/>
+ <noNotification/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="requiredNumberOfLinks">
+ <description>The required number of links specifies the number of IMALinks that needs to be
+operational in order for the complete group to be operational. The bandwidth
+available for the ATMPort (and thus for creating VP/VC connections) is defined
+by this number.
+Setting the requiredNumberOfLinks field to K less than the number of physical
+links included in the IMAGroup, will reduce the bandwidth available to the atmport
+with the corresponding bandwidth but will also give the effect that K links
+failures can be tolerated with virtually no traffic disturbance.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>8</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="activeLinks">
+ <description>The number of active links in the ImaGroup.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the ImaGroup.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmGrUasIma">
+ <description>This performance counter reflects the GrUasLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmGrFc">
+ <description>This performance counter reflects the GrFc attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmGrFcFe">
+ <description>This performance counter reflects the GrFcFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="ImaLink">
+ <description>This MO is automatically created as a consequence of creating an IMAGroup or
+adding links to an IMAGroup.
+It provides IMA Link specific performance and fault management information.
+
+The links can be of type E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E1Ttp or T1Ttp.
+
+The performance monitoring counters in the ImaLink MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! A general restriction in Cello is that ports being part of the same IMA group
+must be located on the same board.</description>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the ImaLink.
+If the operationalState is disabled the ImaLink will be blocked for traffic.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmIvIma">
+ <description>This performance counter reflects the LvLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ImaLinkId">
+ <description>The identity of the MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="pmOifIma">
+ <description>This performance counter reflects the OifLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesIma">
+ <description>This performance counter reflects the SesLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesImaFe">
+ <description>This performance counter reflects the SesLmaFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUasIma">
+ <description>This performance counter reflects the UasLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUasImaFe">
+ <description>This performance counter reflects the UasLmaFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxUusIma">
+ <description>This performance counter reflects the TxUusLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxUusIma">
+ <description>This performance counter reflects the RxUusLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxUusImaFe">
+ <description>This performance counter reflects the TxUusLmaFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxUusImaFe">
+ <description>This performance counter reflects the RxUusLmaFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxFc">
+ <description>This performance counter reflects the TxFc attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxFc">
+ <description>This performance counter reflects the RxFc attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxFcFe">
+ <description>This performance counter reflects the TxFcFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxFcFe">
+ <description>This performance counter reflects the RxFcFe attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmTxStuffIma">
+ <description>This performance counter reflects the TxStuffLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmRxStuffIma">
+ <description>This performance counter reflects the RxStuffLma attribute as defined by Inverse Multiplexing for ATM(IMA) specification ver. 1.1, AF-PHY-0086.001</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="uses">
+ <description>Reference to the physical port represented by this MO.
+Can be of types E1PhysPathTerm, J1PhysPathTerm, T1PhysPathTerm, E1Ttp or T1Ttp.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Sts3CspeTtp">
+ <description>This MO represents the termination of the SONET higher order paths.
+This MO is automatically created when creating the OS155SPITTP with mux mode
+set to VC4_STS3CSPE_LEVEL and standardMode set to ANSI.
+
+The performance monitoring counters in the Sts3CspeTtp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large to fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="Sts3CspeTtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>User label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Sts3CspeTtp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="aisPReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiPReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="timConsequentAction">
+ <description>Trace Identifier Mismatch (TIM) consequent action, i.e. for generation of Alarm Indication Signal (AIS) downstream and Remote Defect Indication (RDI) upstream as a consequence of the TIM detection.
+
+True - enabled.
+False - disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="expectedPathTrace">
+ <description>Expected path trace.
+
+The string can be of 64 characters length, or empty string ("").
+The string shall consist of 62 ASCII characters followed by CR/LF.
+The empty string shall be coded with the first character equal to ASCII null (i.e. byte value 0) and the rest dummy or non-existing.
+
+Note: An empty string for this attribute means that the detection of Trace Identifier Mismatch (TIM) should be disabled. This attribute is set to empty string every time attribute pathTraceFormat is set.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="transmittedPathTrace">
+ <description>The transmitted path trace.
+
+The string shall consist of 62 ASCII characters followed by CR/LF.
+The empty string shall be coded with the first character equal to ASCII null (i.e. byte value 0) and the rest dummy or non-existing.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Identity of the AtmPort reserving this MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmEsp">
+ <description>Performance Monitoring counter for ES, Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesp">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="WebServer">
+ <description>The WebServer MO represents the WebServer in the node.
+
+This object is used for configuration of the WebServer paths. By connecting this object to a
+SwAllocation MO that is connected to a Repertoire MO the WebServer paths will be
+automatically configured during system upgrade.
+
+The local distinguished name of this MO is ManagedElement=1, WebServer=1.
+
+The WebServer MO is created automatically by the system.</description>
+ <systemCreated/>
+ <attribute name="WebServerId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="webServerPaths">
+ <description>Paths that shall be used by the WebServer separated by the delimiter character ":".</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySwAllocation">
+ <description>List of reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="SwAllocation"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="IpAccessAutoConfig">
+ <description>This MO represents the Auto Configuration feature for the IpAccessHost's in Cello.
+
+</description>
+ <attribute name="IpAccessAutoConfigId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Hold a list of the identitys of the reserving IpAccessHost's.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="networkPrefix">
+ <description>The network prefix.
+
+The prefix denotes how many bits that are used for calculating the subnet mask.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>32</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nrOfUnusedAdresses">
+ <description>The number of addresses in the range that are not used.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="totalNrOfAddresses">
+ <description>The total number of addresses in the range.
+
+Note that the first address in the range will be the same one as the one for networkAddress.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="minIpAddress">
+ <description>The lowest value that can be used as host IP address. If autoConfig=ON for an IpAccessHost, the operator does not explicitly have to assign an Ip Address and prefixLength to the host. This is done by the Control Plane, based on the IpAccesAutoConfig identity specified for the IpAccessHost.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="maxIpAddress">
+ <description>The highest value that can be used as host IP address. If autoConfig=ON for an IpAccessHost, the operator does not explicitly have to assign an Ip Address and prefixLength to the host. This is done by the Control Plane, based on the IpAccesAutoConfig identity specified for the IpAccessHost.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="IpAccessHostMsb">
+ <description>This MO represents the Ip Access Host used for payload. This host type executes on a MSB board (Media Stream Board used by Media Gateway).
+
+Note! If autoConfig is set to ON, the Ip Addresses and the Prefixes for this MO is set by the IpAccessAutoConfig MO.
+
+Note! There can be a maximum of 128 host's in the node.
+
+Note! The references to Aal5TpVccTp MO's has to be set in pairs.
+
+Note! The IpAccessMsbHost must execute on the sam MP as the Aal5TpVccTp that are defined in the attributes 'aal5TpVccTpRef1' and 'aal5TpVccTpRef2'.
+
+Note! The 'administrativeState' has to be set to LOCKED in order to be able to delete this host.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Ip Access Host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>DEGRADED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the Ip Access Host.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimer">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="dspId">
+ <description>The identity of the DSP (Digital Signalling Processor) on a MSB board.
+
+Note! The value of this attribute has to be unique among the host's that execute on the same board.</description>
+ <mandatory/>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpRef1">
+ <description>Holds a reference to an Aal5 termination point (Aal5TpVccTp MO).
+
+Note! The Aal5TpVccTp references are mutually exclusive.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Aal5TpVccTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="aal5TpVccTpRef2">
+ <description>Holds a reference to an Aal5 termination point (Aal5TpVccTp MO).
+
+Note! The Aal5TpVccTp references are mutually exclusive.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Aal5TpVccTp"/>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfig">
+ <description>This attribute specifies whether the auto configuration feature for the Ip Access Host is used or not.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="AutoConfigurationMode">
+ <defaultValue>OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfigIdentity">
+ <description>The identity of the IpAccessAutoConfig MO used by this host.
+
+Note! This attribute can only be set if 'autoConfig' is set to 'ON'.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="IpAccessAutoConfig"/>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress">
+ <description>The IpAddress.
+
+Note! If autoConfig = OFF this attribute is mandatory.
+
+Note! If the autoConfiguration is used for this IpAccessHost (autoConfig = ON) this attribute cannot be set. This attribute is then set by the 'IpAccessAutoConfig MO'.
+
+Note! The IpAddress has to be unique within the node.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="networkPrefix">
+ <description>The network prefix.
+
+The prefix denotes how many bits that are used for calculating the subnet mask.
+
+Note! If auto configuration is used (autoConfig = ON) this attribute cannot be set, the networkPrefix is then set in the ipAccessAutoConfig MO class.
+
+Note! If auto configuration is not used (autoConfig = OFF) this attribute must be set.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>32</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="linkStatusAddress">
+ <description>The link Status for Ip Address.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtu">
+ <description>The maximum transfer unit.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.
+
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>72</min> <max>2048</max>
+ </range>
+ <defaultValue>1024</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ipDefaultTtl">
+ <description>The default value inserted into the Time-To-Live field of the IP header of datagrams originated at this entity,
+whenever a TTL value is not supplied by the transport layer protocol.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInReceives">
+ <description>The total number of input datagrams received from interfaces, including those received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInHdrErrors">
+ <description>The number of input datagrams discarded due to errors in their IP headers, including bad checksums, version number
+mismatch, other format errors, time-to-live exceeded, errors discovered in processing their IP options, etc.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInAddrErrors">
+ <description>The number of input datagrams discarded because the IP address in their IP header's destination field was not a
+valid address to be received at this entity. This count includes invalid addresses (e.g., 0.0.0.0) and addresses of
+unsupported Classes (e.g., Class E). For entities which are not IP routers and therefore do not forward datagrams,
+this counter includes datagrams discarded because the destination address was not a local address.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInUnknownProtos">
+ <description>The number of locally-addressed datagrams received successfully but discarded because of an unknown or
+unsupported protocol.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInDiscards">
+ <description>The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but which
+were discarded (e.g., for lack of buffer space). Note that this counter does not include any datagrams discarded while
+awaiting re-assembly.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInDelivers">
+ <description>The total number of input datagrams successfully delivered to IP user-protocols (including ICMP).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpOutRequests">
+ <description>The total number of IP datagrams which local IP user-protocols (including ICMP) supplied to IP in requests for
+transmission. Note that this counter does not include any datagrams counted in ipForwDatagrams</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpOutDiscards">
+ <description>The number of output IP datagrams for which no problem was encountered to prevent their transmission to their
+destination, but which were discarded (e.g., for lack of buffer space). Note that this counter would include
+datagrams counted in ipForwDatagrams if any such packets met this (discretionary) discard criterion.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInMsgs">
+ <description>The total number of ICMP messages which the entity received.
+Note that this counter includes all those counted by icmpInErrors</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInErrors">
+ <description>The number of ICMP messages which the entity received but determined as having
+ICMP-specific errors (bad ICMP checksums, bad length, etc.).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInDestUnreachs">
+ <description>The number of ICMP Destination Unreachable messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInTimeExcds">
+ <description>The number of ICMP Time Exceeded messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInParamProbs">
+ <description>The number of ICMP Parameter Problem messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInSrcQuenchs">
+ <description>The number of ICMP Source Quench messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInRedirects">
+ <description>The number of ICMP Redirect messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInEchos">
+ <description>The number of ICMP Echo (request) messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInEchoReps">
+ <description>The number of ICMP Echo Reply messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutMsgs">
+ <description>The total number of ICMP messages which this entity attempted to send.
+Note that this counter includes all those counted by icmpOutErrors.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutErrors">
+ <description>The number of ICMP messages which this entity did not send due to problems discovered within ICMP such as a lack of
+buffers. This value should not include errors discovered outside the ICMP layer such as the inability of IP to route the
+resultant datagram. In some implementations there may be no types of error which contribute to this counter's value.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutDestUnreachs">
+ <description>The number of ICMP Destination Unreachable messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutParmProbs">
+ <description>The number of ICMP Parameter Problem messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutEchos">
+ <description>The number of ICMP Echo (request) messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutEchoReps">
+ <description>The number of ICMP Echo Reply messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpInDatagrams">
+ <description>The total number of UDP datagrams delivered to UDP users.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpNoPorts">
+ <description>The total number of received UDP datagrams for which there was no application at the destination port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpInErrors">
+ <description>The number of received UDP datagrams that could not be delivered for
+reasons other than the lack of an application at the destination port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpOutDatagrams">
+ <description>The total number of UDP datagrams sent from this entity.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="IpAccessHostMsbId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="plugInUnitId">
+ <description>Holds a reference to the PlugInUnit.
+
+Note that the 'plugInUnitId has to be the same as the one defined in the attribute 'processorId' found on the Aal5TpVccTpMo.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="PlugInUnit"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2QosProfile">
+ <description>This MO represents the definitions of properties for a set of Aal2 quality of service classes.</description>
+ <attribute name="Aal2QosProfileId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="profileClassA">
+ <description>This attribute holds the values applicable for QoS Class A.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="QoSProfileClassA"/>
+ </dataType>
+ </attribute>
+ <attribute name="profileClassB">
+ <description>This attribute holds the values applicable for QoS Class B.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="QoSProfileClassB"/>
+ </dataType>
+ </attribute>
+ <attribute name="profileClassC">
+ <description>This attribute holds the values applicable for QoS Class C.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="QoSProfileClassC"/>
+ </dataType>
+ </attribute>
+ <attribute name="profileClassD">
+ <description>This attribute holds the values applicable for QoS Class D.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="QoSProfileClassD"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>List of reserving Aal2PathVccTp MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2PathVccTp"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Aal2QosCodePointProfile">
+ <description>This MO represents the QoS CodePoints for the different Aal2 QoS classes.</description>
+ <attribute name="Aal2QosCodePointProfileId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="qualityOfServiceCodePointA">
+ <description>The Code Point for Class A.
+
+Recommended value for Class A, 128.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="qualityOfServiceCodePointB">
+ <description>The Code Point for Class B.
+
+Recommended value for Class B, 129.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="qualityOfServiceCodePointC">
+ <description>The Code Point for Class C.
+
+Recommended value for Class C, 130.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="qualityOfServiceCodePointD">
+ <description>The Code Point for Class D.
+
+Recommended value for Class D, 131.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds the identity of the reserving Aal2Ap Mo.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Aal2Ap"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="M3uAssociation">
+ <description>This MO represents the M3UA Association part of the M3UA (MTP3-User Adaptaion Layer) that is a protocol
+for the transport of any SS7 MTP3-User signalling (e.g., ISUP and SCCP messages) over IP using the services
+of the Stream Control Transmission Protocol.
+
+Note that the local port number is hard coded to 2905.
+
+
+</description>
+ <attribute name="M3uAssociationId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving Signaling Route's (Mtp3bSr MO).
+</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="Mtp3bSr"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The Operational State of the M3Ua</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="mtp3bSrsId">
+ <description>The identity of the Signalling Route Set used.</description>
+ <mandatory/>
+ <noNotification/>
+ <nonPersistent/>
+ <restricted/>
+ <dataType>
+ <moRef name="Mtp3bSrs"/>
+ </dataType>
+ </attribute>
+ <attribute name="sctpId">
+ <description>The SctpHost used by this association.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Sctp"/>
+ </dataType>
+ </attribute>
+ <attribute name="dscp">
+ <description>The DSCP, DiffServCodePoint, for the internal M3UA user.
+Only one DSCP value is valid and set by the first defined MO 'instance'.
+
+NOTE: The value set for the 'dscp' when creating the first M3uAssociation under a signaling point will also be used for all other M3uAssociation MO's that are created under this signaling point. So setting the value for the 'dscp' on other instances than the first one created will have no effect. Note that associations created under a different signaling point can have a different dscp-value. </description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>63</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="associationState">
+ <description>The possible states of an M3Ua association.
+
+Bit 1 = 1 indicates INACTIVE
+Bit 2 = 1 indicates ACTIVE
+Bit 3 = 1 indicates ESTABLISHED
+Bit 4 = 1 indicates DOWN
+
+These values are mutually exclusive.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>15</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="localIpMask">
+ <description>This attribute denotes whether single or multi homing is used.
+
+Note! that all M3uAssociations that refers to the same SCTP MO must have this attribute set to the same value.
+
+Note! If localipMask=2 or localipMask=3 . the attribute ipAddress2 or autoConfigIdentity2 in IpAccessHostGpb MO must be defined.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="HomingState">
+ <defaultValue>SINGLE_HOMED_1</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoStartAssociation">
+ <description>If true, the M3ua layer in the stack will after a restart, start up all signalling associations.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="remotePortNumber">
+ <description>The port number of the remote signalling point (SP).</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>65535</max>
+ </range>
+ <defaultValue>2905</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="remoteIpAddress1">
+ <description>Remote IpAddress 1, if not used the value should be an empty string.
+Range is 0.0.0.0 - 255.255.255.255
+
+Note! This address is concidered as the primary IP-address. In case of association establisment failure 'remoteIpAddress2' will be used.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="remoteIpAddress2">
+ <description>Remote IpAddress 2, if not used the value should be an empty string.
+Range is 0.0.0.0 - 255.255.255.255
+
+Note! This address cannot be the same as remoteIpAddress1. This address is used when trying to establish association in case association attempt using 'remoteIpAddress1' fails.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCommunicationLost">
+ <description>Number of communication losses.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfCongestions">
+ <description>Number of congestions.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDunaRec">
+ <description>Number of DUNA messages received through the association.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDavaRec">
+ <description>Number of DAVA messages received through the association.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSconRec">
+ <description>Number of SCON messages received through the association.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDupuRec">
+ <description>Number of DUPU messages received through the association.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDataMsgSent">
+ <description>The number of data messages sent on the associations related to this signalling point.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDunaSent">
+ <description>Number of DUNA messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDavaSent">
+ <description>Number of DAVA messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfSconSent">
+ <description>Number of SCON messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDupuSent">
+ <description>Number of DUPU messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDataMsgRec">
+ <description>Number of DATA (payload data) messages received through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfErrorMsgRec">
+ <description>Number of ERROR messages received through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfErrorMsgSent">
+ <description>Number of ERROR messages sent through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfNotifyMsgRec">
+ <description>Number of NOTIFY messages received through the association.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDaudMsgSent">
+ <description>The number of daud messages sent on the associations related to this signalling point.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfDaudMsgRec">
+ <description>The number of daud messages received on the associations related to this signalling point.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspupSent">
+ <description>The number of ASPUP sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspupReceived">
+ <description>The number of ASPUP received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspdnSent">
+ <description>The number of ASPDN sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspdnReceived">
+ <description>The number of ASPDN received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspacSent">
+ <description>The number of ASPAC sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspacReceived">
+ <description>The number of ASPAC received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspiaSent">
+ <description>The number of ASPIA sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspiaReceived">
+ <description>The number of ASPIA received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspupAckSent">
+ <description>The number of ASPUP_Ack sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspupAckReceived">
+ <description>The number of ASPUP_Ack received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspdnAckSent">
+ <description>The number of ASPDN_Ack sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspdnAckReceived">
+ <description>The number of ASPDN_Ack received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspacAckSent">
+ <description>The number of ASPAC_Ack sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspacAckReceived">
+ <description>The number of ASPAC_Ack received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspiaAckSent">
+ <description>The number of ASPIA_Ack sent.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfAspiaAckReceived">
+ <description>The number of ASPIA_Ack received.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfM3uaDataMsgDiscarded">
+ <description>The number of data Messages discarded.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <action name="setAutoActivate">
+ <description>This action starts the association.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="setAutoDown">
+ <description>This action stops the association.
+
+Note! This action requires a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="Sctp">
+ <description>This MO represents the SCTP, Stream Control Transmission Protocol in Cello.
+SCTP is designed to transport signaling messages over IP networks.</description>
+ <attribute name="SctpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Ip Access Host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="numberOfAssociations">
+ <description>The maximum number of M3uAssociations that can be handled by this SCTP MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>512</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the M3Ua's handled by the SCTP.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="M3uAssociation"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="ipAccessHostGpbId">
+ <description>The identity of the IpAccessHostGbp reserved by this MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="IpAccessHostGpb"/>
+ </dataType>
+ </attribute>
+ <attribute name="minimumRto">
+ <description>The minimum value for RTO (Retransmission time-out).
+The minimumRto shall be larger than tSack + expected Round Trip Time.
+
+Unit is second/100.
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>4</min> <max>500</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maximumRto">
+ <description>The maximum value for RTO (Retransmission time-out).
+
+Unit is second/100.
+
+maximumRto must be larger than minimumRto.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>4</min> <max>180000</max>
+ </range>
+ <defaultValue>15</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="initialRto">
+ <description>The initial value that the RTO (Retransmission time-out) will take prior to the first RTT (Round Trip Time) measure.
+
+Note that the value for 'initialRto' has to be equal to or greater than 'minimumRto'.
+
+Unit is seconds/100.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>4</min> <max>180000</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="rtoAlphaIndex">
+ <description>This parameter is used for computing the value of the SRTT (Smoothed Round Trip Time) for a specific destination
+address. Is is used to weight the RTT values, and it's value must be between 0 and 1 (0 &lt; rtoAlpha &lt; 1). A value
+close to 1 gives a higher importance to the last RTT measurement.
+The range of possible values in the configuration file and the actual value given to this parameter within the module
+are the following:
+
+rtoAlphaIndex = 1 -&gt; RTO-Alpha = 1/2
+rtoAlphaIndex = 2 -&gt; RTO-Alpha = 1/4
+rtoAlphaIndex = 3 -&gt; RTO-Alpha = 1/8
+rtoAlphaIndex = 4 -&gt; RTO-Alpha = 1/16</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>4</max>
+ </range>
+ <defaultValue>3</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="rtoBetaIndex">
+ <description>This parameter is used for computing the the value of RTTVar (Round Trip Time Variation) of a destination
+address.
+It's value must be between 0 and 1 (0 &lt; rtoBetaIndex &lt; 1). A value close to 1 gives more importance to the
+last observed variation.
+The range of possible values in the configuration file and the actual value given to this parameter within the module
+are the following:
+
+rtoBetaIndex = 1 -&gt; RTO-Beta = 1/2
+rtoBetaIndex = 2 -&gt; RTO-Beta = 1/4
+rtoBetaIndex = 3 -&gt; RTO-Beta = 1/8
+rtoBetaIndex = 4 -&gt; RTO-Beta = 1/16
+</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>4</max>
+ </range>
+ <defaultValue>2</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="validCookieLife">
+ <description>This parameter sets up the lifespan of the State Cookie sent in the INIT_ACK chunk. It is used for limiting the
+the valid amount of time between sending the INIT_ACK and the reception of a COOKIE_ECHO chunk when
+establishing an association.
+If a COOKIE_ECHO chunk arrives after 'validCookieLife' has expired when sending an INIT_ACK chunk, the
+COOKIE_ECHO shall be discarded and no association will be established.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>180</max>
+ </range>
+ <defaultValue>60</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="allowedIncrementCookieLife">
+ <description>The sender of an INIT chunk may request to the remote endpoint a cookie life-span increase (for example, if a previous attempt to
+connect failed due to a state-cookie error). If the value sent in the "Cookie Preservative field" of the INIT chunk is less or equal to
+this parameter, the reciver of the INIT chunk will increase the 'validCookieLife' with the number of seconds specified. If the value
+present in the "Cookie Preservative field" is higher than this parameter, the cookie life should be incremented with the number of
+seconds specified by the parameter.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>180</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="keyChangePeriod">
+ <description>Defines how often the secret key used for computing the MAC (Message Authentication Code) on the State Cookie is changed.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>180</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="associationMaxRtx">
+ <description>This is the maximum number of consecutive retransmissions to a remote peer (on all the destination transport addresses of the peer, if it's multi homed). If the number of retransmissions becomes higher than this value, the remote peer shall be considered unreachable and the association shall be closed down.
+
+The value of this attribute should be greater than, or equal to the value of the attribute 'pathMaxRtx'.
+
+Note that for a specific association, it might happen that all the remote addresses (if the the remote end is multi homed) becomes unreachable without exceeding the 'associationMaxRtx'. In such a case the association will be closed down.
+
+Note! The value need to be increased to avoid frequent CommLost's in case of an unstable network.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>20</max>
+ </range>
+ <defaultValue>2</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pathMaxRtx">
+ <description>Maximum number of consecutive retransmissions to a remote transport address. If the number of retransmissions becomes higher than this value, the remote transport address shall be considered as "inactive" and no data shall be sent to it. If all of the remote transport addresses becomes "inactive", tha association will be closed down.
+
+Note! The value need to be increased to avoid frequent CommLost's in case of an unstable network.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>20</max>
+ </range>
+ <defaultValue>2</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxInitialRtrAtt">
+ <description>The maximum nimber of retransmissions allowed for both INIT and COOKIE_ECHO chunks. If the number of retransmissions
+exceeds this value, then the SCTP must abort the initialization of the association and report the error to the user.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16</max>
+ </range>
+ <defaultValue>8</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxShutDownRtrAtt">
+ <description>The maximum number of retransmission during the shutdown phase of an association.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="heartbeatInterval">
+ <description>The amount of time added to the RTO (Retransmission Time Out) of a specific address when setting up the period of
+time between sending heartbeats. Small values can lead to an earlier detection of unreachable addresses than higher
+values. Note that sendig often might lead to performace penalty.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>1800</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="heartbeatStatus">
+ <description>This attribute enables/disables heartbeats for associations.
+
+True = Enables</description>
+ <dataType>
+ <boolean>
+ <defaultValue>true</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="maxIncomingStream">
+ <description>This is the maximum incoming streams (MIS) for an association. Established associations might have an IS less or equal to
+this, but it's MIS can never be higher than the value of this attribute.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16384</max>
+ </range>
+ <defaultValue>17</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxOutgoingStream">
+ <description>The maximum number of outgonig streams for an association.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16384</max>
+ </range>
+ <defaultValue>17</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxUserDataSize">
+ <description>The maximum number of bytes a user is allowed to pass as a non fragmentable user data in a SCTP_SEND_REQ message
+(fixed user MTU):
+The values for this attribute is 'user' data and do not include IP header (20 bytes), SCTP header (12 bytes) or DATA chunk
+header (16 bytes).
+
+Unit is bytes.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>528</min> <max>65484</max>
+ </range>
+ <defaultValue>1432</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="mBuffer">
+ <description>This attribute sets the size of the buffer used for storing user data pending to be sent or retransmitted in an association. I.e. establish the maximum amount of user data that SCTP shall buffer before discarding user messages.
+
+The Unit is in kilo bytes.
+
+Note! The restriction on this attribute is:
+mBuffer x number of M3uAssociation MOs connected to this Sctp + 20 Mb &lt;= the heap for Sctp program.
+
+Note! The value may need to be increased to ensure stable dataflow at high load.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2048</max>
+ </range>
+ <defaultValue>128</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nThreshold">
+ <description>This attribute sets the value of the threshold used by SCTP to stop the delivery of data on anassociation.
+Once nThreshold or more bytes are queued and pending to be sent, the SCTP layer shall issue an indication to the user.
+The value of nThreshold should be less than mBuffer in order to be effective. A normal value for nThreshold is 3/4 * mBuffer.
+
+Unit is kilo bytes.
+
+Note! The value may need to be increased to ensure stable dataflow at high load.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2048</max>
+ </range>
+ <defaultValue>96</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="tSack">
+ <description>The delay of sending the SACK. I.e. the time from DATA chunk reception to Sack chunk sending.
+
+Unit is second/100</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>50</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxDataSizeIp">
+ <description>The maximum number of bytes SCTP shall be able to fetch every time it reads from the socket.
+
+Note! This value includes the Ip header, 20 bytes.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1500</min> <max>65535</max>
+ </range>
+ <defaultValue>8192</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="initialAdRecWin">
+ <description>The value of the initial advertised reciver window.
+
+Note! The range is 1500 to maxDataSizeIp.
+
+Unit is bytes.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1500</min> <max>65535</max>
+ </range>
+ <defaultValue>8192</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="intervalOobPkts">
+ <description>The number of seconds for the interval for which the counter for out of the blue chunks will be reset.
+
+Unit is seconds.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>6500</max>
+ </range>
+ <defaultValue>3600</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="intervalLostUser">
+ <description>The number of seconds for the interval for which the SCTP will decide that the SCTP user that lost the
+connection is dead. After the time specified in this attribute has elapsed, all associations related to the
+SCTP user will be destroyed.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>3600</max>
+ </range>
+ <defaultValue>5</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="maxBurst">
+ <description>The number of packages that will be sent during the fast retransmit phase when a SACK is processed.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>16384</max>
+ </range>
+ <defaultValue>4</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nPercentage">
+ <description>The size of 'n' inpercentage when SCTP_CONGESTION_CEASE_IND is sent. At 100 percent the
+primitive will buffer usage goes below 'nThreshold'.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>100</max>
+ </range>
+ <defaultValue>85</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="bundlingActivated">
+ <description>This attribute enables/disables the use of bundling.
+Valid values:
+1: enabled.
+0: disabled.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1</max>
+ </range>
+ <defaultValue>1</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="bundlingTimer">
+ <description>This attribute specifies maximum SCTP bundling delay.
+Value=0 means that SCTP will only bundle what is available and send directly (no delay).
+Unit is milliseconds</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>1000</max>
+ </range>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpCurrEstab">
+ <description>Number of SCTP associations for which the current state is either ESTABLISHED, SHUTDOWN-PENDING, or SHUTDOWN-RECEIVED.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpActiveEstab">
+ <description>Number of times that SCTP associations have made a direct transition to the ESTABLISHED state from the COOKIE-ECHOED state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpPassiveEstab">
+ <description>Number of times that SCTP associations have made a direct transition to the ESTABLISHED state from the CLOSED state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpAborted">
+ <description>Number of times that SCTP associations have made a direct transition to the CLOSED state from any state using the primitive ABORT.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpShutdowns">
+ <description>Number of times that SCTP associations have made a direct transition to the CLOSED state from either the SHUTDOWN-SENT state or the SHUTDOWN-ACK-SENT state.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatAssocOutOfBlue">
+ <description>Number of out of the blue packets (SCTP packet correctly formed-right checksum- but the receiver is not able to identify the association to which this packet belongs) received by the host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatSentChunks">
+ <description>Number of complete data chunks sent to the peers (no retransmissions included).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatRecChunks">
+ <description>Number of complete data chunks received from the peers (no retransmissions included).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatOutOfOrderSendChunks">
+ <description>Number of unordered chunks sent to the peers.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatOutOfOrderRecChunks">
+ <description>Number of unordered chunks received from the peers.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatChecksumErrorCounter">
+ <description>Number of SCTP packets received from the peers with an invalid checksum.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatRetransChunks">
+ <description>Number of data chunks retransmitted to the peers.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatSentControlChunks">
+ <description>Number of datagrams sent with chunk type id &gt; 0.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatReceivedControlChunks">
+ <description>Number of datagrams Receivedwith chunk type id &gt; 0.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatFragmentedUserMsg">
+ <description>Number of fragmented user messages, incremented when the first data chunk of a fragmented message is sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatReassembledUserMsg">
+ <description>Number of reassembled user messages, incremented when the first data chunk of a fragmented message is received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatSentPackages">
+ <description>Number of SCTP packages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatReceivedPackages">
+ <description>Number of SCTP packages Received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatCommStop">
+ <description>Number of times the SCTP has sent a communication stop indication to the user.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatCommResume">
+ <description>Number of times SCTP has sent a communication resume indication to the user.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatSentChunksDropped">
+ <description>Number of sent chunks that SCTP has been forced to drop due to buffer overflow in the sending buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSctpStatRecChunksDropped">
+ <description>Number of received chunks that SCTP has been forced to drop due to buffer overflow in the receiving buffer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Sts1SpeTtp">
+ <description>This MO represents the termination of the SONET higher order paths.
+This MO is automatically created when creating the OS155SPITTP with mux mode
+set to E1_J1_T1_LEVEL and standardmode set to ANSI.
+
+The performance monitoring counters in the Sts1SpeTtp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large to fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="Sts1SpeTtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Sts3CspeTtp.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="aisPReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiPReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="timConsequentAction">
+ <description>Trace Identifier Mismatch (TIM) consequent action, i.e. for generation of Alarm Indication Signal (AIS) downstream and Remote Defect Indication (RDI) upstream as a consequence of the TIM detection.
+
+True - enabled.
+False - disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="expectedPathTrace">
+ <description>Expected path trace.
+
+The string can be of 64 characters length, or empty string ("").
+
+Note: An empty string for this attribute means that the detection of Trace Identifier Mismatch (TIM) should be disabled. This attribute is set to empty string every time attribute pathTraceFormat is set.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="transmittedPathTrace">
+ <description>The transmitted path trace.
+Can be defined in two formats. The format may be in 16 or 64 characters. Usually 16 is used for ETSI and 64 for ANSI/TTC.
+
+Note: The string must be of 15 or 62 characters length, or empty string ("").</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>64</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="pmEsp">
+ <description>Performance Monitoring counter for ES, Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesp">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Vt15Ttp">
+ <description>This MO is automatically created when the configuring the Os155SpiTtp. It represents the termination of the SONET VP 1.5 path layer.
+
+This MO is automatically created when creating the Os155SpiTtp MO with the following conditions:
+muxmode = E1_J1_T1_LEVEL
+standardmode = ANSI
+
+The performance monitoring counters in the Vt15Ttp is set to 0 (zero) at start or restart of the node.
+When the value is too large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+</description>
+ <systemCreated/>
+ <attribute name="Vt15TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="aisVreporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiVreporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimer">
+ <description>This timer defines the time that elapses before shut down when administrativeState is se to 'shuttingDown'.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Vt15Ttp MO.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the Vt15Ttp MO.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter of Errored Seconds (ES).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Serverely Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="T1Ttp">
+ <description>This MO represents a channelised T1 interface in the node. The T1Ttp MO does not define which type of traffic (TDM or ATM) that the interface should support. Please refer to the Ds0Bundle, AtmPort, IMALink and IMAGroup objects for details about configuration of traffic type.
+
+The performance monitoring counters in the T1Ttp MO is set to 0 (zero) at start or restart of the node.
+When the value is to large too fit in to a long (31bit) the counter turns over and starts from 0 again.
+
+Note! This MO is automatically created as a consequence of creating an Os155SpiTtpMo
+Please refer to the Os155SpiTtpMo for more details.</description>
+ <systemCreated/>
+ <attribute name="T1TtpId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the T1Ttp MO.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance monitoring counter of Errored Seconds (ES).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance monitoring counter for Serverely Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving AtmPort MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByImaLink">
+ <description>The identity of the reserving ImaLink MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ImaLink"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="E3PhysPathTerm">
+ <description>This MO represents an E3 (i.e. 34 Mbit/s) physical interface in the node. Please refer to the AtmPort object for details about configuration of traffic type.
+
+Note! The performance monitoring counters in the E3PhysPathTerm MO is set to 0 (zero) at start or restart of the node.
+When the value is too large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="E3PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the E3PhysPathTerm.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>Possible values
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+system - The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="degDegThr">
+ <description>The threshold decides how many of the received blocks that are allowed to have bit errors. The measurement is made on a per-second basis and if the threshold is passed the second is considered bad.
+
+This is a percentage value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100</max>
+ </range>
+ <defaultValue>30</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="degDegM">
+ <description>How many bad seconds in a row that causes a Degraded Signal alarm.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>10</max>
+ </range>
+ <defaultValue>7</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmEs">
+ <description>Performance Monitoring counter for ES, Errored Seconds.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSes">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="T3PhysPathTerm">
+ <description>This MO represents an T3 (i.e. 45 Mbit/s) physical interface in the node. Please refer to the AtmPort object for details about configuration of traffic type.
+
+Note! The performance monitoring counters in the T3PhysPathTerm MO is set to 0 (zero) at start or restart of the node.
+When the value is too large too fit in to a long (31bit) the counter turns over and starts from 0 again.</description>
+ <attribute name="T3PhysPathTermId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>enabled or disabled according to the actual operational state of the Physical Line Termination. </description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the T3PhysPathTerm MO.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimeout">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>100000</max>
+ </range>
+ <defaultValue>1800</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="lineNo">
+ <description>The actual Line number on the board.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>2</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="loopback">
+ <description>Possible values
+
+none - This is the normal state, no loop back is performed (and ordinary traffic is running).
+
+line - The physical path is looped on the line side, the external incoming path is looped back to the external outgoing path.
+
+system - The physical path is looped on the system side, the (node-) internal incoming path is looped back to the internal outgoing path.
+
+Note! administrativeStatus must be set to locked when setting loopback attribute.</description>
+ <dataType>
+ <enumRef name="LoopbackState">
+ <defaultValue>none</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="aisReporting">
+ <description>Indicates whether Alarm Indication Signal, AIS, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="rdiReporting">
+ <description>Indicates whether Remote Defect Indication, RDI, alarms are to be issued.
+
+true - reporting enabled.
+false - reporting disabled.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="pmEsCpp">
+ <description>Performance Monitoring counter for ES, Errored Seconds based on C-bit parity.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmSesCpp">
+ <description>Performance Monitoring counter for Severely Errored Seconds, SES based on C-bit parity.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="reservedByTraffic">
+ <description>The identity of the reserving AtmPort MO. </description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="AtmPort"/>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBySync">
+ <description>The identity of the reserving Synchronization MO.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="Synchronization"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Etm3">
+ <description>This MO represents the hardware of the ET-M3 board type. It only represents the ET specific hardware, while the DBM module of the board is represented by the PlugInUnit MO.
+
+The ET-M3 board contains 2 physical ports that can be configured as either E3 (ETSI) or T3(ANSI).
+
+Each port on the ET-M3 board can be used to carry ATM traffic.
+
+At the VP/VC endpoints, the Lost FPM/BR cells counters are not available.
+
+IMA is not applicable for theETM3 board.
+
+The ET-M3 board supports eight bidirectional F4/F5 PM flow per port.
+
+The number of VCC TP+VPC TP with performance monitoring enabled (i.e. PM mode &lt;&gt; off) is restricted to 8/port.
+
+Each port can support up to 240 ATM VC connections. Sixteen of these connections are reserved for AAL2 paths, and therefore sixteen AAL2 multiplexers per port are available.
+
+Each port can support up to 16 VP connections. </description>
+ <attribute name="Etm3Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the Etm3 board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpApRemote">
+ <description>This Managed Object represents an SCCP Remote Access Point. An SCCP AP instance is a logical point in the SCCP network at which an SCCP user can access the services provided by the SCCP and the SCCP can deliver its services to the SCCP user. The SCCP Remote Access Point is identified by a SubSystem Number (SSN).
+
+A remote SccpAp represents an access point in another node and is related to a Mtp3bAp MO.
+
+The performance monitoring counters found in SccpAp MO is reset, set to zero, when the object is created.
+These counters will not be reset again unless there is a shutdown request from the CLI (Cluster Interface).</description>
+ <attribute name="SccpApRemoteId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the SCCP AP. The operability of the SCCP AP is described by this attribute which has two possible values:
+
+Disabled: The SCCP AP is totally inoperable and unable to provide the service to the user (e.g. if the MTP-3b AP is not usable).
+
+Enabled: The SCCP AP is partly or fully operable and available for use.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>Holds a list of the reserving MOs.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <sequence>
+ <moRef name="ManagedObject"/>
+ </sequence>
+ </dataType>
+ </attribute>
+ <attribute name="mtp3bApId">
+ <description>The identity of the Mtp3bAp used by this MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="Mtp3bAp"/>
+ </dataType>
+ </attribute>
+ <attribute name="ssN">
+ <description>The sub system number, SSN, of the SCCP Access Point. Note that this has to be a unique number.
+
+The SSN has to be unique among all other SccpApRemote MOs that has the same DPC in their corresponding Mtp3bSrs MOs.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>2</min> <max>255</max>
+ </range>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="IpAccessHostGpb">
+ <description>This MO represents the Ip Access Host used for payload. This host type executes on a GPB board (GeneralPocessorUnit).
+
+Note! If autoConfig is set to ON, the Ip Addresses and the Prefixes for this MO is set by the IpAccessAutoConfig MO.
+
+Note! There can be a maximum of 128 host's in the node, and only one host on each main processor.
+
+Note! The host cannot be configured on a MP which have a MediumAccessUnit-child MO. They are exclusive.
+
+Note! The 'administrativeState' has to be set to LOCKED in order to be able to delete this host.</description>
+ <attribute name="IpAccessHostGpbId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="reservedBy">
+ <description>The identity of the reserving MO, can be of type Sctp.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>The operational state of the Ip Access Host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>DEGRADED</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="administrativeState">
+ <description>The administrative state of the Ip Access Host.</description>
+ <dataType>
+ <enumRef name="AdmState">
+ <defaultValue>locked</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="shutDownTimer">
+ <description>The shut-down timer. It is used when the administrativeState is set to shutdown.
+
+Value in seconds, must be a positive value.</description>
+ <dataType>
+ <long>
+ <defaultValue>10</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="linkStatusAddress1">
+ <description>The link status for IpAddress1.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="linkStatusAddress2">
+ <description>The link status for IpAddress2, only valid if 2 IpAddresses are configured for this host.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="generalProcessorUnitId">
+ <description>Holds a reference to the GPU (GenerelProcessorUnit).</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="GeneralProcessorUnit"/>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfig">
+ <description>This attribute specifies whether the auto configuration feature for the Ip AccessHost is used or not.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="AutoConfigurationMode">
+ <defaultValue>OFF</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfigIdentity">
+ <description>The identity of the IpAccessAutoConfig MO used by this host.
+
+Note! This attribute is mandatory if 'autoConfig' is set to ON.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="IpAccessAutoConfig"/>
+ </dataType>
+ </attribute>
+ <attribute name="autoConfigIdentity2">
+ <description>The identity of the IpAccessAutoConfig MO used by this host.
+
+Note! This attribute can only be set if 'autoConfig' is set to 'ON'. This attribute is not neccesary to set if 'autoConfig' is set to ON, unless the host shall have two Ip Addresses automatically assigned.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="IpAccessAutoConfig"/>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress">
+ <description>The IpAddress.
+
+Note! If autoConfig = OFF this attribute is mandatory.
+Note! If the autoConfiguration is used for this IpAccessHostGpb (autoConfig = ON) this attribute cannot be set. This attribute is then set by the 'IpAccessAutoConfig MO'.
+Note! If the attribute is set, its value must not be the same as for attribute ipAddress2.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="ipAddress2">
+ <description>The second IpAddress.
+
+Note! If autoConfig = OFF this attribute is possible to set. This attribute should only be set if multi-homing is used for this host (i.e. two addresses defined).
+Note! If the autoConfiguration is used for this IpAccessHostGpb (autoConfig = ON) this attribute cannot be set. This attribute is then set by the 'IpAccessAutoConfig MO'.
+Note! If the attribute is set, its value must not be the same as for attribute 'ipAddress'.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="pathMTUDiscovery">
+ <description>Specifies whether path MTU discovery should be used by this host.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.</description>
+ <dataType>
+ <boolean>
+ <defaultValue>false</defaultValue>
+ </boolean>
+ </dataType>
+ </attribute>
+ <attribute name="mtu">
+ <description>The maximum transfer unit.
+
+The MTU has a initial value of 1452 if pathMTUDiscovery is set to false.
+If pathMTUDiscovery is set to true, the initial value of MTU is 1452.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>72</min> <max>2048</max>
+ </range>
+ <defaultValue>1452</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ipDefaultTtl">
+ <description>The default value inserted into the Time-To-Live field of the IP header of datagrams originated at this entity,
+whenever a TTL value is not supplied by the transport layer protocol.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.</description>
+ <dataType>
+ <long>
+ <range>
+ <min>1</min> <max>255</max>
+ </range>
+ <defaultValue>50</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="ipReasmTimeout">
+ <description>The maximum number of seconds which received fragments are
+held while they are awaiting reassembly at this entity.
+
+Note! in order to be able to set the value for this attribute, the administrative state has to be locked.
+
+Note! The value for this attribute has to be positive.</description>
+ <dataType>
+ <long>
+ <defaultValue>300</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="nextHopIpAddr">
+ <description>The next hop IP address.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="nextHopIpAddr2">
+ <description>The secondary next hop IP address.
+
+Note! This attribute must only be set if one of the following conditions are fulfilled:
+1. Attribute 'ipAddress2' is set.
+2. Attribute 'autoConfig' = 'ON' and attribute 'autoConfigIdentity2' is set.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="networkPrefix">
+ <description>The network prefix.
+
+The prefix denotes how many bits that are used for calculating the subnet mask.
+
+Note! The default value 0 (zero) is most likely not possible to use and an other value should be submitted if this attribute is configured manually.
+Note! If auto configuration is not used (autoConfig = OFF) this attribute must be set (i.e. this attribute is then 'mandatory').
+Note! If auto configuration is used (autoConfig = ON) this attribute cannot be set, networkPrefix is then set by the ipAccessAutoConfig MO class.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>32</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="networkPrefix2">
+ <description>The second network prefix.
+
+The prefix denotes how many bits that are used for calculating the subnet mask.
+
+Note! The default value 0 (zero) is most likely not possible to use and an other value should be submitted if this attribute is configured manually.
+Note! If auto configuration is not used (autoConfig = OFF) and ipAddress2 is set this attribute must be set (i.e. this attribute is then 'mandatory').
+Note! If auto configuration is used (autoConfig = ON) this attribute cannot be set, networkPrefix2 is then set by the ipAccessAutoConfig MO class. </description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>32</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInReceives">
+ <description>The total number of input datagrams received from interfaces, including those received in error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInHdrErrors">
+ <description>The number of input datagrams discarded due to errors in their IP headers, including bad checksums, version number
+mismatch, other format errors, time-to-live exceeded, errors discovered in processing their IP options, etc.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInAddrErrors">
+ <description>The number of input datagrams discarded because the IP address in their IP header's destination field was not a
+valid address to be received at this entity. This count includes invalid addresses (e.g., 0.0.0.0) and addresses of
+unsupported Classes (e.g., Class E). For entities which are not IP routers and therefore do not forward datagrams,
+this counter includes datagrams discarded because the destination address was not a local address.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInUnknownProtos">
+ <description>The number of locally-addressed datagrams received successfully but discarded because of an unknown or
+unsupported protocol.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInDiscards">
+ <description>The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but which
+were discarded (e.g., for lack of buffer space). Note that this counter does not include any datagrams discarded while
+awaiting re-assembly.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpInDelivers">
+ <description>The total number of input datagrams successfully delivered to IP user-protocols (including ICMP).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpOutRequests">
+ <description>The total number of IP datagrams which local IP user-protocols (including ICMP) supplied to IP in requests for
+transmission. Note that this counter does not include any datagrams counted in ipForwDatagrams</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpOutDiscards">
+ <description>The number of output IP datagrams for which no problem was encountered to prevent their transmission to their
+destination, but which were discarded (e.g., for lack of buffer space). Note that this counter would include
+datagrams counted in ipForwDatagrams if any such packets met this (discretionary) discard criterion.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpReasmReqds">
+ <description>The number of IP fragments received which needed to be reassembled at this entity.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpReasmOKs">
+ <description>The number of IP datagrams successfully re-assembled.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpReasmFails">
+ <description>The number of failures detected by the IP re-assembly algorithm (for whatever reason: timed out, errors, etc).
+Note that this is not necessarily a count of discarded IP fragments since some algorithms (notably the algorithm
+in RFC 815) can lose track of the number of fragments by combining them as they are received.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpFragOKs">
+ <description>The number of IP datagrams that have been successfully fragmented at this entity.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpFragFails">
+ <description>The number of IP datagrams that have been discarded because they needed to be fragmented
+at this entity but could not be, e.g., because their Don't Fragment flag was set.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIpFragCreates">
+ <description>The number of IP datagram fragments that have been generated as a result of fragmentation at this entity.
+</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInMsgs">
+ <description>The total number of ICMP messages which the entityreceived.
+Note that this counter includes all those counted by icmpInErrors</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInErrors">
+ <description>The number of ICMP messages which the entity received but determined as having
+ICMP-specific errors (bad ICMP checksums, bad length, etc.).</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInDestUnreachs">
+ <description>The number of ICMP Destination Unreachable messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInTimeExcds">
+ <description>The number of ICMP Time Exceeded messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInParamProbs">
+ <description>The number of ICMP Parameter Problem messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInSrcQuenchs">
+ <description>The number of ICMP Source Quench messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInRedirects">
+ <description>The number of ICMP Redirect messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInEchos">
+ <description>The number of ICMP Echo (request) messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpInEchoReps">
+ <description>The number of ICMP Echo Reply messages received.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutMsgs">
+ <description>The total number of ICMP messages which this entity attempted to send.
+Note that this counter includes all those counted by icmpOutErrors.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutErrors">
+ <description>The number of ICMP messages which this entity did not send due to problems discovered within ICMP such as a lack of
+buffers. This value should not include errors discovered outside the ICMP layer such as the inability of IP to route the
+resultant datagram. In some implementations there may be no types of error which contribute to this counter's value.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutDestUnreachs">
+ <description>The number of ICMP Destination Unreachable messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutParmProbs">
+ <description>The number of ICMP Parameter Problem messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutEchos">
+ <description>The number of ICMP Echo (request) messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmIcmpOutEchoReps">
+ <description>The number of ICMP Echo Reply messages sent.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpInDatagrams">
+ <description>The total number of UDP datagrams delivered to UDP users.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpNoPorts">
+ <description>The total number of received UDP datagrams for which there was no application at the destination port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpInErrors">
+ <description>The number of received UDP datagrams that could not be delivered for
+reasons other than the lack of an application at the destination port.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmUdpOutDatagrams">
+ <description>The total number of UDP datagrams sent from this entity.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInUcastPkts">
+ <description>Performance monitoring counter for the number of input unicast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutUcastPkts">
+ <description>Performance monitoring counter for the number of out unicast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInErrors">
+ <description>Performance monitoring counter for the number of input packets discarded due to any error.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInDiscards">
+ <description>Performance monitoring counter for the number of input packets discarded due to resource limitations.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInBroadcastPkts">
+ <description>Performance monitoring counter for the number of input broadcast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfInMulticastPkts">
+ <description>Performance monitoring counter for the number of input multicast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutBroadcastPkts">
+ <description>Performance monitoring counter for the number of output broadcast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfIfOutMulticastPkts">
+ <description>Performance monitoring counter for the number of output multicast packets delivered to higher layer.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SystemFunctions">
+ <description>This MO structures the SystemFunctions of the managed element. It is created automatically and cannot be deleted.
+
+The local distinguished name of this MO is ManagedElement=1, SystemFunctions=1.</description>
+ <systemCreated/>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="SystemFunctionsId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Licensing">
+ <description>This MO represents the Licensing (Software Keys) functions in Cello.</description>
+ <systemCreated/>
+ <attribute name="LicensingId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="emergencyStateInfo">
+ <description>This attribute holds information about the emergency status and the time remaining in the current state.
+
+Note! If the node is in emergency state USE_DEGRADED, or the emergency state is USE_DISABLED, the the value of'time' is insignificant.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <structRef name="EmergencyInfo"/>
+ </dataType>
+ </attribute>
+ <attribute name="licenseFileUrl">
+ <description>This attribute returns the URL to the License Key File so it can be viewed with an XML capable web browser
+in case this is a licensed node.
+
+Note! In case the node is not licensed, an empty string will be returned.</description>
+ <noNotification/>
+ <readOnly/>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>256</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <action name="updateLicenseKeyFile">
+ <description>This action sends a request to the FTP/SFTP server to update the license key file.
+
+User Id for login to FTP/SFTP server where license key files are located.
+If a null string userId is given, anonymous FTP/SFTP transfer is assumed.
+Max length is 20 characters.
+
+Password for login to the FTP/SFTP server where license key files are located.
+Max length is 20 characters.
+
+The IpAddress of the FTP/SFTP server where license key files are located.
+Max length is 16 characters.
+
+Source name and path of the license key file on the FTP/SFTP server.
+Max length is 256 charcters.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="userId">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="password">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="ipAddress">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ <parameter name="sFile">
+ <in/>
+ <dataType>
+ <string/>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="setEmergencyState">
+ <description>This action sets the license server into emergency state.
+I.e. opens up all licensed features and capacity restrictions.
+Disabling emergency state is done by loading a new license key file.
+
+Note! This action does not require a transaction.</description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class>
+
+ <class name="TimingUnit2">
+ <description>This MO represents a timing unit2 (reference clock) in the node.
+
+The corresponding Program shall be of LoadModuleLoaderType, SpmFpgaLoader.</description>
+ <attribute name="userLabel">
+ <description>Label for free use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Operational state of TimingUnit</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatus">
+ <description>The availability status of the TimingUnit.
+
+The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="TimingUnit2Id">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpPolicing">
+ <description>The SccpPolicing MO represents the policing function in CPP.
+
+The originatingMtp3bSpc is a madatory attribute for policing in one local node (i.e. a SRP in one NI).
+For policing between two local nodes (i.e. a SRP between two NIs) the originatingMtp3bSpc can be replaced by the originatingSccpSpId.
+Optional attributes for policing in one local node (i.e a SRP in one NI) are destinationMtp3bSpc, destinationSccpSsn, originatingSccpSsn and policingGlobalTitle.
+For policing between two local nodes (i.e. a SRP between two NIs) the destinationMtp3bSpc can be replaced by the destinationSccpSpId.</description>
+ <attribute name="SccpPolicingId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="originatingMtp3bSpc">
+ <description>The value of the SPC (Signaling Point Code).
+
+Note! If the 'originatingSccpSpId' is specified the 'originatingMtp3bSpc' is invalid.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>16777215</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="destinationMtp3bSpc">
+ <description>The value of the destination SPC (Signaling Point Code).
+
+Note! The default value 0 (zero) means that no SPC is defined.
+Note! If no 'destinationSccpSp' is defined and the value of 'destinationMtp3bSpc' is set to 0 (zero), all Signalling Point Codes (SPC) are valid.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>16777215</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="originatingSccpSpId">
+ <description>The identity of the originating SccpSp MO must be used for policing between local nodes.
+
+Note! If the 'originatingSccpSpId' is specified the 'originatingMtp3bSpc' is invalid.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="originatingSccpSsn">
+ <description>The value of SSN in CgPA (Calling Party Address)
+
+Note! The value 0 (zero) means that all ssN (Sub System Number) are valid.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="destinationSccpSpId">
+ <description>The identity of the destination SccpSp MO can be used for policing between local nodes.
+
+Note! If the 'destinationSccpSpId' is specified the 'destinationMtp3bSpc' is invalid.
+Note! If no destination 'destinationSccpSp' is defined and the value of 'destinationMtp3bSpc' is set to 0, all local nodes are valid.
+</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="destinationSccpSsn">
+ <description>The value of SSN inCdPA (Called Party Address).
+
+Note! The valu 0 (zero) means tha all ssN (Sub System Number) are valid.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="policingGlobalTitle">
+ <description>The Policing Global Title attribute allows to optionally police on Global Title
+
+Default value is considered as no policing Global Title and all GTs are valid.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <structRef name="GlobalTitleData"/>
+ </dataType>
+ </attribute>
+ <attribute name="discardOrReturnServiceMsg">
+ <description>For a policing case whether to discard or return Service Messages, if the return option is set.</description>
+ <dataType>
+ <enumRef name="DiscardReturnServiceMsg">
+ <defaultValue>DISCARD</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfRejectMsg">
+ <description>Performance monitoring counter for the number of rejected messages.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="SccpAccountingCriteria">
+ <description>The SccpAccountingCriteria MO and the SccpSp MO represents the accounting function in CPP.
+
+Attribute usageType specifies Accounting Remuneration (incoming GT messages) or Verification (outgoing GT messages).
+
+For Remuneration a SccpGlobalTitle MOId in attribute globalTitleId must be defined.
+For Verification a SccpGlobalTitle MOid is defined in attribute globalTitleId, or a SccpEntitySet MOid is defined if accounting shall be made on the resulting new GT.
+
+The attribute ssN is optional .
+The Mtp3bSrs MOid (including an SPC) in attribute pointerId is optional for accounting in one local node (SRP in one NI).
+The SccpSp MOid in attribute pointerId is optional for accounting between two local nodes (SRP between two NIs).
+Attribute countType specifies if Messages och Octets shall be counted.
+Start and stop of accounting and output period for the accounting file is specified in the SccpSp MO.</description>
+ <attribute name="SccpAccountingCriteriaId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Label free for use.</description>
+ <dataType>
+ <string>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="usageType">
+ <description>This attribute specifies if the MO is used for renumeration or verification.
+
+0 = Verification Criteria to detect outgoing massages that will be charged in the next relay node.
+
+1 = Renumeration Criteria to detect incoming messages for relaying, that will be charged.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long/>
+ </dataType>
+ </attribute>
+ <attribute name="ssN">
+ <description>Subsystem Number this Accounting Criteria applies to.
+SubSystem Number 0 (zero) means that any SSN in CdPA (Called Party Address) is valid.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <long>
+ <range>
+ <min>0</min> <max>255</max>
+ </range>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="countType">
+ <description>Specifies type of countes that should be activated.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <enumRef name="SccpCountType">
+ <defaultValue>MESSAGES</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="globalTitleId">
+ <description>The identity of the SccpGlobalTitle MO or the SccpEntitySet MO used by this MO.</description>
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfMsg">
+ <description>Performance monitoring counter for the number of messages, both incoming and outgoing.
+
+Note! If 'countType' is set to 'OCTETS' this counter is not valid.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pmNoOfOctets">
+ <description>Performance monitoring counter for the number of octets, both incoming and outgoing.
+
+Note! If 'countType' is set to 'MESSAGES this counter is not valid.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <long>
+ <defaultValue>0</defaultValue>
+ </long>
+ </dataType>
+ </attribute>
+ <attribute name="pointerId">
+ <description>The pointer is an instance of a Mtp3bSrs MO OR an instance of a SccpSP MO.
+
+Note! If no pointerId is set all Signaling Point Codes (SPC) and all Sccp SP identities are valid.
+Note! It is not possible to submit the Id of the SccpSp that the SccpAccountingCriteria belongs to.</description>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <moRef name="ManagedObject"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="Cbu">
+ <description>This MO models the Cbu (Node Control Board) board in CPP.
+The Cbu board integrates the functionality of TUB, SCB, GPB and ETB (ET-MC1) into one Plug-In Unit.
+
+Note! The 'operationalState' is set to disabled if one of the functional parts is faulty. Even if the Cbu is marked with 'operationalState' DISABLED, parts of the Cbu can still be operational.
+
+Note! A functional part on a Cbu board can only be redundant with the same functional part on another Cbu board and thus not with that functional part implemented on a discrete board. Also note that redundancy is only applicable for the GPB part and the TimingUnit part of the Cbu board..
+
+Note! On the Cbu board it is only possible to configure a maximum of 4 physical path terminations. These can be of type E1PhysPathTerm, J1PhyspathTerm or T1PhyspathTerm. It is not possible to create physical path terminations of different standards on the same board.
+
+Note! The Gpu part of the Cbu board (General Processor Unit) retrieves its 'availabilityStatus' from the PlugInUnit MO, thus not represented on the Cbu MO.
+
+Note! When the ET-MC1 is part of the Cbu board it is only possible to configure 4 physical ports as either E1 (ETSI), J1 (TTC) or T1 (ANSI).
+
+Note! This unit may only be inserted in slot 1 and 24 (or more accurately at APN=1 and 0 in a non-standard subrack). If redundant configuration is needed, two Cbu's must be inserted in the subrack.
+If only one Cbu is used it must be placed in slot 1 (in a non-standard subrack) to be able to read the product information data of the subrack</description>
+ <attribute name="CbuId">
+ <mandatory/>
+ <noNotification/>
+ <restricted/>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="userLabel">
+ <description>Provides the possibility to put a user-friendly label on the MO instance.
+
+Note! This attribute cannot be used for uniquely identifing the MO.</description>
+ <dataType>
+ <string>
+ <lengthRange>
+ <min>0</min> <max>128</max>
+ </lengthRange>
+ <defaultValue>""</defaultValue>
+ </string>
+ </dataType>
+ </attribute>
+ <attribute name="operationalState">
+ <description>Enabled or disabled according to the actual operational state of the NCB board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="OperState">
+ <defaultValue>disabled</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusEt">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.
+The 'availabilityStatusEt' gives the availability status for the ET part of the NCB board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ <attribute name="availabilityStatusTu">
+ <description>The availability status is used to qualify the operational state. It indicates why the operational state has changed its value to disabled.
+The 'availabilityStatusTu' gives the availability status for the Timing Unit part of the NCB board.</description>
+ <noNotification/>
+ <nonPersistent/>
+ <readOnly/>
+ <dataType>
+ <enumRef name="AvailabilityStatus">
+ <defaultValue>NO_STATUS</defaultValue>
+ </enumRef>
+ </dataType>
+ </attribute>
+ </class>
+
+ <relationship name="ManagedElement_to_TransportNetwork">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="TransportNetwork"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Synchronization">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Synchronization"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_SccpSp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="SccpSp"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_UniSaalProfile">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="UniSaalProfile"/>
+ <cardinality>
+ <min>0</min> <max>300</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_UniSaalTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="UniSaalTp"/>
+ <cardinality>
+ <min>0</min> <max>4800</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal0TpVccTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal0TpVccTp"/>
+ <cardinality>
+ <min>0</min> <max>2200</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal5TpVccTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal5TpVccTp"/>
+ <cardinality>
+ <min>0</min> <max>6000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_AtmPort">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="AtmPort"/>
+ <cardinality>
+ <min>0</min> <max>500</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_NniSaalProfile">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="NniSaalProfile"/>
+ <cardinality>
+ <min>0</min> <max>50</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_NniSaalTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="NniSaalTp"/>
+ <cardinality>
+ <min>0</min> <max>600</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_AtmTrafficDescriptor">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="AtmTrafficDescriptor"/>
+ <cardinality>
+ <min>0</min> <max>1000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2PathVccTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2PathVccTp"/>
+ <cardinality>
+ <min>0</min> <max>2000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2RoutingCase">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2RoutingCase"/>
+ <cardinality>
+ <min>0</min> <max>900</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2Sp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2Sp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_AtmCrossConnection">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="AtmCrossConnection"/>
+ <cardinality>
+ <min>0</min> <max>5000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2TpItu">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2TpItu"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2TpAnsi">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2TpAnsi"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal1TpVccTp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal1TpVccTp"/>
+ <cardinality>
+ <min>0</min> <max>1000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp3bSpAnsi">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSpAnsi"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp3bSpItu">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSpItu"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp3bSpTtc">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSpTtc"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2ProfileAnsi">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2ProfileAnsi"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2ProfileItu">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2ProfileItu"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2ProfileChina">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2ProfileChina"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp2TpChina">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp2TpChina"/>
+ <cardinality>
+ <min>0</min> <max>256</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mtp3bSpChina">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSpChina"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Mspg">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Mspg"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_ImaGroup">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="ImaGroup"/>
+ <cardinality>
+ <min>0</min> <max>200</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2QosProfile">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2QosProfile"/>
+ <cardinality>
+ <min>0</min> <max>20</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Aal2QosCodePointProfile">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2QosCodePointProfile"/>
+ <cardinality>
+ <min>0</min> <max>20</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TransportNetwork_to_Sctp">
+ <containment>
+ <parent>
+ <hasClass name="TransportNetwork"/>
+ </parent>
+ <child>
+ <hasClass name="Sctp"/>
+ <cardinality>
+ <min>0</min> <max>10</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Subrack_to_Slot">
+ <containment>
+ <parent>
+ <hasClass name="Subrack"/>
+ </parent>
+ <child>
+ <hasClass name="Slot"/>
+ <cardinality>
+ <min>1</min> <max>28</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Slot_to_PlugInUnit">
+ <containment>
+ <parent>
+ <hasClass name="Slot"/>
+ </parent>
+ <child>
+ <hasClass name="PlugInUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Slot_to_ManagedObject">
+ <containment>
+ <parent>
+ <hasClass name="Slot"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedObject"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_ManagedObject">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedObject"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_ManagedObject">
+ <description>This containment relation indicated that any kind of board may be used to specilize PlugInUnit.</description>
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedObject"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Subrack_to_ManagedObject">
+ <containment>
+ <parent>
+ <hasClass name="Subrack"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedObject"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="VpcTp_to_VclTp">
+ <containment>
+ <parent>
+ <hasClass name="VpcTp"/>
+ </parent>
+ <child>
+ <hasClass name="VclTp"/>
+ <cardinality>
+ <min>0</min> <max>5000</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_Equipment">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="Equipment"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_IpSystem">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="IpSystem"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_SwManagement">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="SwManagement"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_SwitchFabric">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchFabric"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_ManagedElementData">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="ManagedElementData"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ManagedElement_to_SystemFunctions">
+ <containment>
+ <parent>
+ <hasClass name="ManagedElement"/>
+ </parent>
+ <child>
+ <hasClass name="SystemFunctions"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Equipment_to_Subrack">
+ <containment>
+ <parent>
+ <hasClass name="Equipment"/>
+ </parent>
+ <child>
+ <hasClass name="Subrack"/>
+ <cardinality>
+ <min>0</min> <max>9</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Equipment_to_Jvm">
+ <containment>
+ <parent>
+ <hasClass name="Equipment"/>
+ </parent>
+ <child>
+ <hasClass name="Jvm"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Subrack_to_Fan">
+ <containment>
+ <parent>
+ <hasClass name="Subrack"/>
+ </parent>
+ <child>
+ <hasClass name="Fan"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_LoadModule">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="LoadModule"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpApLocal">
+ <description>The SccpApLocal represents a local SSN, no relation exists to an Mtp3bAp
+
+Of the possible 216 SccpAps allowed on a node, a maximum of 16 are allowed to be local, and a maximum of 200 are allowed to be remote.</description>
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpApLocal"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpSp_to_SccpScrc">
+ <containment>
+ <parent>
+ <hasClass name="SccpSp"/>
+ </parent>
+ <child>
+ <hasClass name="SccpScrc"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpEntitySet">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpEntitySet"/>
+ <cardinality>
+ <min>0</min> <max>2048</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpGlobalTitle">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpGlobalTitle"/>
+ <cardinality>
+ <min>0</min> <max>2048</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpApRemote">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpApRemote"/>
+ <cardinality>
+ <min>0</min> <max>200</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpPolicing">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpPolicing"/>
+ <cardinality>
+ <min>0</min> <max>1024</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SccpScrc_to_SccpAccountingCriteria">
+ <containment>
+ <parent>
+ <hasClass name="SccpScrc"/>
+ </parent>
+ <child>
+ <hasClass name="SccpAccountingCriteria"/>
+ <cardinality>
+ <min>0</min> <max>100</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Spm_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Spm"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TimingUnit_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="TimingUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm4_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etm4"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm1_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etm1"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc1_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etmc1"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc41_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etmc41"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TimingUnit2_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="TimingUnit2"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm3_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Etm3"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Spu_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Spu"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Fan_to_Program">
+ <containment>
+ <parent>
+ <hasClass name="Fan"/>
+ </parent>
+ <child>
+ <hasClass name="Program"/>
+ <cardinality>
+ <min>1</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm1_to_E1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm1"/>
+ </parent>
+ <child>
+ <hasClass name="E1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc1_to_E1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etmc1"/>
+ </parent>
+ <child>
+ <hasClass name="E1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="E1PhysPathTerm_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="E1PhysPathTerm"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>31</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm1_to_J1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm1"/>
+ </parent>
+ <child>
+ <hasClass name="J1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc1_to_J1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etmc1"/>
+ </parent>
+ <child>
+ <hasClass name="J1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="J1PhysPathTerm_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="J1PhysPathTerm"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="AtmPort_to_VplTp">
+ <containment>
+ <parent>
+ <hasClass name="AtmPort"/>
+ </parent>
+ <child>
+ <hasClass name="VplTp"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_Mtp3bAp">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bAp"/>
+ <cardinality>
+ <min>0</min> <max>510</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_Mtp3bAp">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bAp"/>
+ <cardinality>
+ <min>0</min> <max>510</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_Mtp3bAp">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bAp"/>
+ <cardinality>
+ <min>0</min> <max>510</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpTtc_to_Mtp3bAp">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpTtc"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bAp"/>
+ <cardinality>
+ <min>0</min> <max>510</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_Mtp3bSrs">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSrs"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpTtc_to_Mtp3bSrs">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpTtc"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSrs"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_Mtp3bSrs">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSrs"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSrs_to_Mtp3bSr">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSrs"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSr"/>
+ <cardinality>
+ <min>0</min> <max>5</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_Mtp3bSrs">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSrs"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etm1">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etm1"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Spu">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Spu"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_SwitchCoreUnit">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchCoreUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_GeneralProcessorUnit">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="GeneralProcessorUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etm4">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etm4"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_TimingUnit">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="TimingUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_SwitchExtensionUnit">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchExtensionUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etmc1">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etmc1"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etmc41">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etmc41"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Etm3">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Etm3"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_TimingUnit2">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="TimingUnit2"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="PlugInUnit_to_Cbu">
+ <containment>
+ <parent>
+ <hasClass name="PlugInUnit"/>
+ </parent>
+ <child>
+ <hasClass name="Cbu"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_Mtp3bSls">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_Mtp3bSls">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpTtc_to_Mtp3bSls">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpTtc"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_Mtp3bSls">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_Mtp3bSls_0">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_Mtp3bSls_0">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_Mtp3bSls_0">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpTtc_to_Mtp3bSls_0">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpTtc"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSls"/>
+ <cardinality>
+ <min>0</min> <max>255</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSls_to_Mtp3bSlAnsi">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSls"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSlAnsi"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSls_to_Mtp3bSlItu">
+ <description>Multiplicity: 0..16</description>
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSls"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSlItu"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSls_to_Mtp3bSlTtc">
+ <description>Multiplicity: 0..16</description>
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSls"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSlTtc"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSls_to_Mtp3bSlChina">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSls"/>
+ </parent>
+ <child>
+ <hasClass name="Mtp3bSlChina"/>
+ <cardinality>
+ <min>0</min> <max>16</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_Ip">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="Ip"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_Ospf">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="Ospf"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_IpAccessAutoConfig">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="IpAccessAutoConfig"/>
+ <cardinality>
+ <min>0</min> <max>32</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_IpAccessHostMsb">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="IpAccessHostMsb"/>
+ <cardinality>
+ <min>0</min> <max>128</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="IpSystem_to_IpAccessHostGpb">
+ <containment>
+ <parent>
+ <hasClass name="IpSystem"/>
+ </parent>
+ <child>
+ <hasClass name="IpAccessHostGpb"/>
+ <cardinality>
+ <min>0</min> <max>128</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ip_to_IpAtmLink">
+ <containment>
+ <parent>
+ <hasClass name="Ip"/>
+ </parent>
+ <child>
+ <hasClass name="IpAtmLink"/>
+ <cardinality>
+ <min>0</min> <max>500</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ip_to_EthernetLink">
+ <containment>
+ <parent>
+ <hasClass name="Ip"/>
+ </parent>
+ <child>
+ <hasClass name="EthernetLink"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ip_to_IpRoutingTable">
+ <containment>
+ <parent>
+ <hasClass name="Ip"/>
+ </parent>
+ <child>
+ <hasClass name="IpRoutingTable"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Aal2Sp_to_Aal2Ap">
+ <containment>
+ <parent>
+ <hasClass name="Aal2Sp"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2Ap"/>
+ <cardinality>
+ <min>0</min> <max>850</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Aal2Ap_to_Aal2PathDistributionUnit">
+ <containment>
+ <parent>
+ <hasClass name="Aal2Ap"/>
+ </parent>
+ <child>
+ <hasClass name="Aal2PathDistributionUnit"/>
+ <cardinality>
+ <min>0</min> <max>26</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm1_to_T1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm1"/>
+ </parent>
+ <child>
+ <hasClass name="T1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TimingUnit_to_TuSyncRef">
+ <containment>
+ <parent>
+ <hasClass name="TimingUnit"/>
+ </parent>
+ <child>
+ <hasClass name="TuSyncRef"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="TimingUnit2_to_TuSyncRef">
+ <containment>
+ <parent>
+ <hasClass name="TimingUnit2"/>
+ </parent>
+ <child>
+ <hasClass name="TuSyncRef"/>
+ <cardinality>
+ <min>0</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Spu_to_Spm">
+ <containment>
+ <parent>
+ <hasClass name="Spu"/>
+ </parent>
+ <child>
+ <hasClass name="Spm"/>
+ <cardinality>
+ <min>0</min> <max>5</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_ConfigurationVersion">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="ConfigurationVersion"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_UpgradePackage">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="UpgradePackage"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_Repertoire">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="Repertoire"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_PiuType">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="PiuType"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_SwAllocation">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="SwAllocation"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwManagement_to_ReliableProgramUniter">
+ <containment>
+ <parent>
+ <hasClass name="SwManagement"/>
+ </parent>
+ <child>
+ <hasClass name="ReliableProgramUniter"/>
+ <cardinality>
+ <min>0</min>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ospf_to_OspfInterface">
+ <containment>
+ <parent>
+ <hasClass name="Ospf"/>
+ </parent>
+ <child>
+ <hasClass name="OspfInterface"/>
+ <cardinality>
+ <min>0</min> <max>32</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Ospf_to_OspfArea">
+ <containment>
+ <parent>
+ <hasClass name="Ospf"/>
+ </parent>
+ <child>
+ <hasClass name="OspfArea"/>
+ <cardinality>
+ <min>1</min> <max>4</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Cbu_to_GeneralProcessorUnit">
+ <containment>
+ <parent>
+ <hasClass name="Cbu"/>
+ </parent>
+ <child>
+ <hasClass name="GeneralProcessorUnit"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="GeneralProcessorUnit_to_MediumAccessUnit">
+ <containment>
+ <parent>
+ <hasClass name="GeneralProcessorUnit"/>
+ </parent>
+ <child>
+ <hasClass name="MediumAccessUnit"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwitchFabric_to_SwitchModule">
+ <containment>
+ <parent>
+ <hasClass name="SwitchFabric"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchModule"/>
+ <cardinality>
+ <min>0</min> <max>32</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SwitchFabric_to_InternalLinkGroup">
+ <containment>
+ <parent>
+ <hasClass name="SwitchFabric"/>
+ </parent>
+ <child>
+ <hasClass name="InternalLinkGroup"/>
+ <cardinality>
+ <min>0</min> <max>31</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="InternalLinkGroup_to_SwitchInternalLink">
+ <containment>
+ <parent>
+ <hasClass name="InternalLinkGroup"/>
+ </parent>
+ <child>
+ <hasClass name="SwitchInternalLink"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm4_to_Os155SpiTtp">
+ <containment>
+ <parent>
+ <hasClass name="Etm4"/>
+ </parent>
+ <child>
+ <hasClass name="Os155SpiTtp"/>
+ <cardinality>
+ <min>0</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="VplTp_to_VpcTp">
+ <containment>
+ <parent>
+ <hasClass name="VplTp"/>
+ </parent>
+ <child>
+ <hasClass name="VpcTp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="E1Ttp_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="E1Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>31</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="T1PhysPathTerm_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="T1PhysPathTerm"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="T1Ttp_to_Ds0Bundle">
+ <containment>
+ <parent>
+ <hasClass name="T1Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="Ds0Bundle"/>
+ <cardinality>
+ <min>0</min> <max>24</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpAnsi_to_M3uAssociation">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpAnsi"/>
+ </parent>
+ <child>
+ <hasClass name="M3uAssociation"/>
+ <cardinality>
+ <min>0</min> <max>512</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpItu_to_M3uAssociation">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpItu"/>
+ </parent>
+ <child>
+ <hasClass name="M3uAssociation"/>
+ <cardinality>
+ <min>0</min> <max>512</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Vc12Ttp_to_E1Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Vc12Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="E1Ttp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Os155SpiTtp_to_Vc4Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Os155SpiTtp"/>
+ </parent>
+ <child>
+ <hasClass name="Vc4Ttp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Vc4Ttp_to_Vc12Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Vc4Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="Vc12Ttp"/>
+ <cardinality>
+ <min>0</min> <max>63</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc41_to_Os155SpiTtp">
+ <containment>
+ <parent>
+ <hasClass name="Etmc41"/>
+ </parent>
+ <child>
+ <hasClass name="Os155SpiTtp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Os155SpiTtp_to_Sts3CspeTtp">
+ <containment>
+ <parent>
+ <hasClass name="Os155SpiTtp"/>
+ </parent>
+ <child>
+ <hasClass name="Sts3CspeTtp"/>
+ <cardinality>
+ <min>0</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Os155SpiTtp_to_Sts1SpeTtp">
+ <containment>
+ <parent>
+ <hasClass name="Os155SpiTtp"/>
+ </parent>
+ <child>
+ <hasClass name="Sts1SpeTtp"/>
+ <cardinality>
+ <min>0</min> <max>3</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Cbu_to_Etmc1">
+ <containment>
+ <parent>
+ <hasClass name="Cbu"/>
+ </parent>
+ <child>
+ <hasClass name="Etmc1"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etmc1_to_T1PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etmc1"/>
+ </parent>
+ <child>
+ <hasClass name="T1PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Mtp3bSpChina_to_M3uAssociation">
+ <containment>
+ <parent>
+ <hasClass name="Mtp3bSpChina"/>
+ </parent>
+ <child>
+ <hasClass name="M3uAssociation"/>
+ <cardinality>
+ <min>0</min> <max>512</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="ImaGroup_to_ImaLink">
+ <containment>
+ <parent>
+ <hasClass name="ImaGroup"/>
+ </parent>
+ <child>
+ <hasClass name="ImaLink"/>
+ <cardinality>
+ <min>0</min> <max>8</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SystemFunctions_to_WebServer">
+ <containment>
+ <parent>
+ <hasClass name="SystemFunctions"/>
+ </parent>
+ <child>
+ <hasClass name="WebServer"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Sts1SpeTtp_to_Vt15Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Sts1SpeTtp"/>
+ </parent>
+ <child>
+ <hasClass name="Vt15Ttp"/>
+ <cardinality>
+ <min>0</min> <max>28</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Vt15Ttp_to_T1Ttp">
+ <containment>
+ <parent>
+ <hasClass name="Vt15Ttp"/>
+ </parent>
+ <child>
+ <hasClass name="T1Ttp"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm3_to_E3PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm3"/>
+ </parent>
+ <child>
+ <hasClass name="E3PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Etm3_to_T3PhysPathTerm">
+ <containment>
+ <parent>
+ <hasClass name="Etm3"/>
+ </parent>
+ <child>
+ <hasClass name="T3PhysPathTerm"/>
+ <cardinality>
+ <min>0</min> <max>2</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="SystemFunctions_to_Licensing">
+ <containment>
+ <parent>
+ <hasClass name="SystemFunctions"/>
+ </parent>
+ <child>
+ <hasClass name="Licensing"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Cbu_to_TimingUnit2">
+ <containment>
+ <parent>
+ <hasClass name="Cbu"/>
+ </parent>
+ <child>
+ <hasClass name="TimingUnit2"/>
+ <cardinality>
+ <min>1</min> <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+</mim>
+
+</models>
+
diff --git a/lib/xmerl/test/xmerl_SUITE_data/eventp/mp.dtd b/lib/xmerl/test/xmerl_SUITE_data/eventp/mp.dtd
new file mode 100644
index 0000000000..1f6e31e772
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/eventp/mp.dtd
@@ -0,0 +1,274 @@
+<!-- 15531-APR 90163: rev F -->
+<!-- Date- 2000-10-16 -->
+<!-- Author- Johnni Sigeti -->
+<!-- Author- Niklas Storm -->
+<!-- Author- Hui Lin -->
+
+<!-- Revision History
+ A Raghunath Squid version
+ PB1 epkjsig 1999-09-09 Removed uLong, uShort, union
+ and inherits.
+ PB2 epkjsig 1999-09-23 Rewritten with new
+ requirements
+ PB3 epkjsig 1999-09-26 Updated after team review
+ B epkjsig 1999-10-06 Updated after inspection
+ PC1 epkjsig 1999-10-28 Added mandatory attribute
+ for associations.
+ PC2 epkjsig 1999-11-22 Added MORef as attribute
+ PC3 qpknian 2000-01-03 Added support object class.
+ PC4 qpknian 2000-01-18 Removed illegal characters
+ in comments.
+ PC5 qpknian 2000-01-21 Updated model tag. class and
+ soClass elements should be in
+ separate models.
+ C qpknian 2000-02-10 Approved after inspection.
+ PD1 qpknian 2000-03-02 Added applicationTag.
+ Added notificationTypes.
+ Removed controlled.
+ Renamed readOnly to advisoryReadOnly.
+ PD2 qpknian 2000-03-21 Added softLink to hoppers.
+ D qpknian 2000-04-26 Approved after inspection.
+ PE1 qpknian 2000-06-27 Updated for CR41 (use Corba types)
+ E qpknian 2000-09-01 Approved after inspection.
+ PF1 eiuhlin 2000-08-21 Updated for CR43 (Rename Model to MIM, add INTER-MIM)
+ PF2 eiuhlin 2000-09-20 Support uniDirectionalAssociation and biDirectionalAssociation
+ Add static to Attribute
+ Add enumRef and sequence to struct
+ PF3 eiuhlin 2000-09-20 Add maxLength to sequence
+ PF4 eiuhlin 2000-09-21 Define Element static
+ PF5 eiuhlin 2000-09-27 Remove ATTLIST name from moRef
+ PF6 eiuhlin 2000-10-02 Remove tag <helpRef>, <icon>
+ Add associationClass to bi and uni-directional association
+ Change tag <target> to <supported>
+ Remove ATTLIST name from supporter and supported
+ Add ATTLIST name to moRef
+ Remove tag <advisoryReadOnly>
+ Add tag <readOnly> and <undefined>
+ PF7 eiuhlin 2000-10-04 Add ATTLIST name to interMim
+ F eiuhlin 2000-10-16 Approved after inspection.
+-->
+
+
+<!-- Common -->
+<!ELEMENT description (#PCDATA)>
+
+
+<!ELEMENT applicationTag (#PCDATA)>
+
+
+<!-- Models definition -->
+<!ELEMENT models (mim|interMim)*>
+
+<!ELEMENT mim (description?, applicationTag?,
+
+ (struct | enum | exception)*,
+ class+, relationship*)>
+<!ATTLIST mim name ID #REQUIRED
+ version CDATA #REQUIRED
+ release CDATA #REQUIRED>
+
+<!ELEMENT interMim (description?, applicationTag?,
+
+ (struct | enum )*,
+ relationship*)>
+
+<!ATTLIST interMim name CDATA #REQUIRED>
+
+<!-- MO class definition -->
+<!ELEMENT class (description?, applicationTag?,
+ systemCreated?, notificationTypes?, (action | attribute)*)>
+<!ATTLIST class name CDATA #REQUIRED>
+
+<!ELEMENT systemCreated EMPTY>
+
+<!ELEMENT notificationTypes (#PCDATA)>
+
+
+<!-- Relations -->
+<!ELEMENT relationship (description?, applicationTag?,
+ (biDirectionalAssociation |uniDirectionalAssociation | containment|softLink|support))>
+<!ATTLIST relationship name CDATA #REQUIRED>
+
+<!ELEMENT softLink (parent, child+)>
+
+<!ELEMENT support (supporter,supported+)>
+
+<!ELEMENT supporter (description?, applicationTag?,
+ hasClass, cardinality?)>
+
+<!ELEMENT supported (description?, applicationTag?,
+ hasClass, cardinality?)>
+
+<!ELEMENT biDirectionalAssociation (mandatory?, associationEnd, associationEnd+, associationClass?)>
+
+<!ELEMENT uniDirectionalAssociation (mandatory?, hasClass, associationEnd+, associationClass?)>
+
+<!ELEMENT containment (parent, child+)>
+
+<!ELEMENT associationEnd (description?, applicationTag?,
+ hasClass, cardinality?)>
+<!ATTLIST associationEnd name CDATA #REQUIRED>
+
+<!ELEMENT associationClass (attribute+)>
+
+<!ELEMENT parent (description?, applicationTag?,
+ hasClass)>
+<!ELEMENT child (description?, applicationTag?,
+ hasClass, cardinality?)>
+
+<!ELEMENT cardinality (min | max | (min, max))>
+
+<!ELEMENT hasClass EMPTY>
+<!ATTLIST hasClass name CDATA #REQUIRED
+ inMim CDATA #IMPLIED
+ ofVersion CDATA #IMPLIED>
+
+
+
+
+<!-- Data types -->
+<!ENTITY % corbaTypes "boolean | octet | char | double | float |
+ long | longlong | short | string | wstring">
+<!ENTITY % availableTypes "%corbaTypes; | enumRef | structRef |
+ moRef | sequence">
+
+
+<!-- For attributes, parameters and exceptions -->
+<!ELEMENT dataType (%availableTypes;)>
+
+<!-- For actions -->
+<!ELEMENT returnType (void | %availableTypes;)>
+
+
+<!-- Return data types -->
+<!ELEMENT void EMPTY>
+
+
+<!-- Primitive data types -->
+<!ELEMENT boolean (defaultValue?)>
+
+<!ELEMENT octet (range?, defaultValue?)>
+
+<!ELEMENT char (range?, defaultValue?)>
+
+<!ELEMENT double (range?, defaultValue?)>
+
+<!ELEMENT float (range?, defaultValue?)>
+
+<!ELEMENT long (range?, defaultValue?)>
+
+<!ELEMENT longlong (range?, defaultValue?)>
+
+<!ELEMENT short (range?, defaultValue?)>
+
+<!ELEMENT string (lengthRange?, (validValues | alphabet)?, defaultValue?)>
+
+<!ELEMENT wstring (lengthRange?, (validValues | alphabet)?, defaultValue?)>
+
+
+<!ELEMENT alphabet (#PCDATA)>
+<!ELEMENT validValues (#PCDATA)>
+
+<!ELEMENT lengthRange (min?, (min, max)*, max?)>
+<!ELEMENT range (min?, (min, max)*, max?)>
+
+<!ELEMENT max (#PCDATA)>
+<!ELEMENT min (#PCDATA)>
+
+<!ELEMENT defaultValue (#PCDATA)>
+
+
+<!-- Enum data type -->
+<!ELEMENT enum (description?, applicationTag?,
+ enumMember+, defaultValue?)>
+<!ATTLIST enum name CDATA #REQUIRED>
+
+<!ELEMENT enumMember (description?, applicationTag?,
+ value?)>
+<!ATTLIST enumMember name CDATA #REQUIRED>
+
+<!ELEMENT enumRef (defaultValue?)>
+<!ATTLIST enumRef name CDATA #REQUIRED>
+
+<!ELEMENT value (#PCDATA)>
+
+
+<!-- Struct data type -->
+<!ELEMENT struct (description?, applicationTag?,
+ structMember+)>
+<!ATTLIST struct name CDATA #REQUIRED>
+
+<!ELEMENT structMember (description?, applicationTag?,
+ (%corbaTypes; | sequence | enumRef))>
+<!ATTLIST structMember name CDATA #REQUIRED>
+
+<!ELEMENT structRef EMPTY>
+<!ATTLIST structRef name CDATA #REQUIRED>
+
+
+<!-- Sequence data type -->
+<!ELEMENT sequence ((%corbaTypes; | enumRef | structRef | moRef),
+ length?, maxLength?, nonUnique?)>
+
+<!ELEMENT length (#PCDATA)>
+
+<!ELEMENT maxLength (#PCDATA)>
+
+<!ELEMENT nonUnique EMPTY>
+
+
+<!-- MoRef data type -->
+<!ELEMENT moRef EMPTY>
+
+<!ATTLIST moRef name CDATA #REQUIRED>
+
+<!-- Attribute -->
+<!ELEMENT attribute (description?, applicationTag?,
+ local?, mandatory?, noNotification?,
+ nonPersistent?, readOnly?, restricted?, static?,undefined?, dataType)>
+<!ATTLIST attribute name CDATA #REQUIRED>
+
+
+<!-- Attribute controls -->
+<!-- nonUnique is defined under the sequence data type. -->
+
+<!ELEMENT local EMPTY>
+
+<!ELEMENT mandatory EMPTY>
+
+<!ELEMENT noNotification EMPTY>
+
+<!ELEMENT nonPersistent EMPTY>
+
+<!ELEMENT readOnly EMPTY>
+
+<!ELEMENT restricted EMPTY>
+
+<!ELEMENT static EMPTY>
+
+<!ELEMENT undefined EMPTY>
+
+
+<!-- Action -->
+<!ELEMENT action (description?, applicationTag?,
+ returnType, parameter*, raisesException*)>
+<!ATTLIST action name CDATA #REQUIRED>
+
+<!ELEMENT parameter (description?, applicationTag?,
+ (in | out | inout), dataType)>
+<!ATTLIST parameter name CDATA #REQUIRED>
+
+<!ELEMENT in EMPTY>
+<!ELEMENT inout EMPTY>
+<!ELEMENT out EMPTY>
+
+<!ELEMENT exception (description?, applicationTag?,
+ exceptionParameter*)>
+<!ATTLIST exception name CDATA #REQUIRED>
+
+<!ELEMENT exceptionParameter (description?, applicationTag?,
+ dataType)>
+<!ATTLIST exceptionParameter name CDATA #REQUIRED>
+
+<!ELEMENT raisesException EMPTY>
+<!ATTLIST raisesException name CDATA #REQUIRED>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/eventp/wurfl.stub b/lib/xmerl/test/xmerl_SUITE_data/eventp/wurfl.stub
new file mode 100644
index 0000000000..78d980d5b7
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/eventp/wurfl.stub
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE wurfl [
+<!ELEMENT version (#PCDATA)>
+<!ELEMENT wurfl (version)>
+]>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/eventp/wurfl.xml b/lib/xmerl/test/xmerl_SUITE_data/eventp/wurfl.xml
new file mode 100644
index 0000000000..ea96469af3
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/eventp/wurfl.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE wurfl [
+<!ELEMENT version (#PCDATA)>
+<!ELEMENT wurfl (version)>
+]>
+<wurfl>
+ <version>
+</version>
+</wurfl>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/misc.tar.gz b/lib/xmerl/test/xmerl_SUITE_data/misc.tar.gz
new file mode 100644
index 0000000000..c48a6f897b
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/misc.tar.gz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/documentRoot.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/documentRoot.xml
new file mode 100644
index 0000000000..667a44b7fe
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/documentRoot.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<documentRoot>
+<!-- Test data from
+ http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm -->
+<?value ="2"?>
+<parent name="data" >
+ <child id="1" name="alpha" >Some Text</child>
+ <child id="2" name="beta" >
+ <grandchild id="2.1" name="beta-alpha" ></grandchild>
+ <grandchild id="2.2" name="beta-beta" ></grandchild>
+ </child>
+ <pet name="tigger" type="cat" >
+ <data>
+ <birthday month="sept" day="19" ></birthday>
+ <food name="Acme Cat Food" ></food>
+ </data>
+ </pet>
+ <pet name="Fido" type="dog" >
+ <description>
+ Large dog!
+ </description>
+ <data>
+ <birthday month="feb" day="3" ></birthday>
+ <food name="Acme Dog Food" ></food>
+ </data>
+ </pet>
+ <rogue name="is this real?" >
+ <data>
+ Hates dogs!
+ </data>
+ </rogue>
+ <child id="3" name="gamma" mark="yes" >
+ <!-- A comment -->
+ <description>
+ Likes all animals - especially dogs!
+ </description>
+ <grandchild id="3.1" name="gamma-alpha" >
+ <![CDATA[ Some non-parsable character data ]]>
+ </grandchild>
+ <grandchild id="3.2" name="gamma-beta" ></grandchild>
+ </child>
+</parent>
+</documentRoot> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/e1074.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1074.xml
new file mode 100644
index 0000000000..920a9e67e1
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1074.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <root id="1">
+ <elem1 id="2">
+ <elem2 id="3">
+ <e id="4"/>
+ <elem3 id="5">
+ <e id="6"/>
+ </elem3>
+ <elem3 id="7"/>
+ </elem2>
+ </elem1>
+ <elem1 id="8">
+ <elem2 id="9"/>
+ <e id="10"/>
+ <e id="11"/>
+ </elem1>
+ <e id="12"/>
+ </root>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/e1075.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1075.xml
new file mode 100644
index 0000000000..920a9e67e1
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1075.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <root id="1">
+ <elem1 id="2">
+ <elem2 id="3">
+ <e id="4"/>
+ <elem3 id="5">
+ <e id="6"/>
+ </elem3>
+ <elem3 id="7"/>
+ </elem2>
+ </elem1>
+ <elem1 id="8">
+ <elem2 id="9"/>
+ <e id="10"/>
+ <e id="11"/>
+ </elem1>
+ <e id="12"/>
+ </root>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/e1076.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1076.xml
new file mode 100644
index 0000000000..c9ffebb202
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1076.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <root id="1">
+ <elem1 id="2">cat</elem1>
+ <elem1 id="3"> dog </elem1>
+ <elem1 id="4">
+ cat
+ <elem2 id="5">
+ <elem3 id="6">cat</elem3>
+ </elem2>
+ dog
+ </elem1>
+ <elem1 id="7">Cat</elem1>
+ </root>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/e1077.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1077.xml
new file mode 100644
index 0000000000..9aa548e13c
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1077.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE root [ <!ELEMENT e (e*) >
+ <!ATTLIST e id ID #REQUIRED>
+ ]>
+ <root>
+ <e id="1">
+ <e id="two">
+ <e id="3"/>
+ <e id="4">
+ <e id="the fifth"/>
+ </e>
+ <e id="6"/>
+ </e>
+ </e>
+ <e id="seven"/>
+ </root>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/e1078.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1078.xml
new file mode 100644
index 0000000000..a90db50145
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/e1078.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <root id="1">
+ <elem1 id="2" pet="cat"/>
+ <elem1 id="3" pet=" dog " age="8"/>
+ <elem1 id="4" pet="Cat" >
+ <elem2 id="5">
+ <elem3 id="6" age="10"/>
+ </elem2>
+ </elem1>
+ <elem1 id="7" pet="dog"/>
+ </root>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/motorcycles.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/motorcycles.xml
new file mode 100644
index 0000000000..b3629dce34
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/motorcycles.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<motorcycles>
+ <bike year="2000" color="black">
+ <name>
+ <manufacturer>Suzuki</manufacturer>
+ <brandName>Suzuki VL 1500</brandName>
+ <additionalName>Intruder</additionalName>
+ </name>
+ <engine>V-engine, 2-cylinders, 1500 cc</engine>
+ <kind>custom</kind>
+ <drive>cardan</drive>
+ <accessories>Sissy bar, luggage carrier,V&amp;H exhaust pipes</accessories>
+ </bike>
+ <date>2004.08.25</date>
+ <bike year="1983" color="read pearl">
+ <name>
+ <manufacturer>Yamaha</manufacturer>
+ <brandName>XJ 400</brandName>
+ </name>
+ <engine>4 cylinder, 400 cc</engine>
+ <kind>alround</kind>
+ <drive>chain</drive>
+ <comment>Good shape!</comment>
+ </bike>
+</motorcycles>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/myBS_model.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/myBS_model.xml
new file mode 100644
index 0000000000..58f90662a4
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/myBS_model.xml
@@ -0,0 +1,6 @@
+<myBS_model>
+
+ <blipp id="name1"/>
+ <blipp id="name2"/>
+
+</myBS_model>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/purchaseOrder.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/purchaseOrder.xml
new file mode 100644
index 0000000000..a5ae223d65
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/purchaseOrder.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder xmlns:apo="http://www.example.com/PO1"
+ orderDate="1999-10-20">
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <!-- etc. -->
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <!-- etc. -->
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <!-- etc. -->
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath.xml b/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath.xml
new file mode 100644
index 0000000000..248fbd413d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath.xml
@@ -0,0 +1,25 @@
+<myBS_model>
+
+ <blipp id="name1">
+ <blupp att="bluppa"/>
+ </blipp>
+ <blipp id="name2">
+ <blupp att2="bluppb">
+ <plopp name="pl">here are some text</plopp>
+ </blupp>
+ </blipp>
+ <blipp id="name3" test="test1">
+ <blupp att2="bluppc">
+ <plopp name="plp">here are some more text</plopp>
+ </blupp>
+ <blupp att="bluppc2"/>
+ </blipp>
+
+ <blipp2 bid="name1">
+ <blupp att="bluppa"/>
+ <blupp att2="bluppb">
+ <plopp name="pl">here are some additional text</plopp>
+ </blupp>
+ </blipp2>
+
+</myBS_model> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_abbrev.erl b/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_abbrev.erl
new file mode 100644
index 0000000000..850b7f8135
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_abbrev.erl
@@ -0,0 +1,266 @@
+%%%-------------------------------------------------------------------
+%%% File : xpath_abbrev.erl
+%%% Author : Bertil Karlsson <bertil@finrod>
+%%% Description :
+%%%
+%%% Created : 17 Jan 2006 by Bertil Karlsson <bertil@finrod>
+%%%-------------------------------------------------------------------
+-module(xpath_abbrev).
+
+-export([test/0, check_node_set/2, ticket_6873/0, ticket_7496/0, functions/0]).
+
+-include("test_server.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+
+test() ->
+ ?line {E,_} = xmerl_scan:file("xpath.xml"),
+
+ ?line Res1 = xmerl_xpath:string("blipp",E),
+ ?line ok = check_node_set("blipp",Res1),
+ ?line Res2 = xmerl_xpath:string("*",E),
+ ?line ok = check_node_set("*",Res2),
+ ?line Res3 = xmerl_xpath:string("blipp/blupp/plopp/text()",E),
+ ?line ok = check_node_set("blipp/blupp/plopp/text()",Res3),
+ ?line Res4 = xmerl_xpath:string("blipp/blupp/@att2",E),
+ ?line ok = check_node_set("blipp/blupp/@att2",Res4),
+ ?line Res5 = xmerl_xpath:string("blipp/@*",E),
+ ?line ok = check_node_set("blipp/@*",Res5),
+ ?line Res6 = xmerl_xpath:string("blipp[2]",E),
+ ?line ok = check_node_set("blipp[2]",Res6),
+ ?line Res7 = xmerl_xpath:string("blipp[last()]",E),
+ ?line ok = check_node_set("blipp[last()]",Res7),
+ ?line Res8 = xmerl_xpath:string("*/blupp",E),
+ ?line ok = check_node_set("*/blupp",Res8),
+ ?line Res9 = xmerl_xpath:string("/myBS_model/blipp[3]/blupp[2]",E),
+ ?line ok = check_node_set("/myBS_model/blipp[3]/blupp[2]",Res9),
+ ?line Res10 = xmerl_xpath:string("blipp//plopp",E),
+ ?line ok = check_node_set("blipp//plopp",Res10),
+ ?line Res11 = xmerl_xpath:string("//plopp",E),
+ ?line ok = check_node_set("//plopp",Res11),
+ ?line Res12 = xmerl_xpath:string("//blupp/plopp",E),
+ ?line ok = check_node_set("//blupp/plopp",Res12),
+ ?line Res13 = xmerl_xpath:string(".",E),
+ ?line ok = check_node_set(".",Res13),
+ ?line Res14 = xmerl_xpath:string(".//blipp2",E),
+ ?line ok = check_node_set(".//blipp2",Res14),
+ ?line Res15 = xmerl_xpath:string(".//blipp2/blupp/plopp/..",E),
+ ?line ok = check_node_set(".//blipp2/blupp/plopp/..",Res15),
+ ?line Res16 = xmerl_xpath:string(".//blipp[2]/blupp/plopp/../@att2",E),
+ ?line ok = check_node_set(".//blipp[2]/blupp/plopp/../@att2",Res16),
+ ?line Res17 = xmerl_xpath:string(".//blipp/blupp/plopp[2]/../@att2",E),
+ ?line ok = check_node_set(".//blipp/blupp/plopp[2]/../@att2",Res17),
+ ?line Res18 = xmerl_xpath:string("blipp[@id='name2']",E),
+ ?line ok = check_node_set("blipp[@id='name2']",Res18),
+ ?line Res19 = xmerl_xpath:string("blipp[@id='name2'][3]",E),
+ ?line ok = check_node_set("blipp[@id='name2'][3]",Res19),
+ ?line Res20 = xmerl_xpath:string("//blupp[plopp=\"here are some more text\"]",E),
+ ?line ok = check_node_set("//blupp[plopp=\"here are some more text\"]",Res20),
+ ?line Res21 = xmerl_xpath:string("//blupp[plopp]",E),
+ ?line ok = check_node_set("//blupp[plopp]",Res21),
+ ?line Res22 = xmerl_xpath:string("blipp[@id and @test]",E),
+ ?line ok = check_node_set("blipp[@id and @test]",Res22).
+
+check_node_set("blipp",[E1,E2,E3]) ->
+ ?line ok = xml_element_name(E1,blipp),
+ ?line ok = xml_element_name(E2,blipp),
+ ?line ok = xml_element_name(E3,blipp),
+ ok;
+check_node_set("*",[E1,E2,E3,E4]) ->
+ ?line ok = xml_element_name(E1,blipp),
+ ?line ok = xml_element_name(E2,blipp),
+ ?line ok = xml_element_name(E3,blipp),
+ ?line ok = xml_element_name(E4,blipp2),
+ ok;
+check_node_set("blipp/blupp/plopp/text()",[T1,T2]) ->
+ ?line #xmlText{value="here are some text"} = T1,
+ ?line #xmlText{value="here are some more text"} = T2,
+ ok;
+check_node_set("blipp/blupp/@att2",[A1,A2]) ->
+ ?line #xmlAttribute{name=att2} = A1,
+ ?line #xmlAttribute{name=att2} = A2,
+ ok;
+check_node_set("blipp/@*",[A1,A2,A3,A4]) ->
+ ?line #xmlAttribute{} = A1,
+ ?line #xmlAttribute{} = A2,
+ ?line #xmlAttribute{} = A3,
+ ?line #xmlAttribute{} = A4,
+ ok;
+check_node_set("blipp[2]",[E]) ->
+ ?line #xmlElement{name=blipp,
+ attributes=[#xmlAttribute{name=id,value="name2"}]} = E,
+ ok;
+check_node_set("blipp[last()]",[E]) ->
+ ?line #xmlElement{name=blipp,
+ attributes=[#xmlAttribute{name=id,value="name3"}|_]} = E,
+ ok;
+check_node_set("*/blupp",[E1,E2,E3,E4,E5,E6]) ->
+ ?line ok = xml_element_name(E1,blupp),
+ ?line ok = xml_element_name(E2,blupp),
+ ?line ok = xml_element_name(E3,blupp),
+ ?line ok = xml_element_name(E4,blupp),
+ ?line ok = xml_element_name(E5,blupp),
+ ?line ok = xml_element_name(E6,blupp),
+ ok;
+check_node_set("/myBS_model/blipp[3]/blupp[2]",[E]) ->
+ ?line #xmlElement{name=blupp,
+ attributes=[#xmlAttribute{name=att,value="bluppc2"}]}=E,
+ ok;
+check_node_set("blipp//plopp",[#xmlElement{name=plopp},#xmlElement{name=plopp}]) ->
+ ok;
+check_node_set("//plopp",[E1,E2,E3]) ->
+ ?line ok = xml_element_name(E1,plopp),
+ ?line ok = xml_element_name(E2,plopp),
+ ?line ok = xml_element_name(E3,plopp),
+ ok;
+check_node_set("//blupp/plopp",[E1,E2,E3]) ->
+ ?line ok = xml_element_name(E1,plopp),
+ ?line ok = xml_element_name(E2,plopp),
+ ?line ok = xml_element_name(E3,plopp),
+ ok;
+check_node_set(".",[#xmlElement{name=myBS_model}]) ->
+ ok;
+check_node_set(".//blipp2",[#xmlElement{name=blipp2}]) ->
+ ok;
+check_node_set(".//blipp2/blupp/plopp/..",[#xmlElement{name=blupp}]) ->
+ ok;
+check_node_set(".//blipp[2]/blupp/plopp/../@att2",[#xmlAttribute{name=att2,value="bluppb"}]) ->
+ ok;
+check_node_set(".//blipp/blupp/plopp[2]/../@att2",[#xmlAttribute{name=att2,value="bluppc"}]) ->
+ ok;
+check_node_set("blipp[@id='name2']",[E]) ->
+ ?line #xmlElement{name=blipp,
+ attributes=[#xmlAttribute{name=id,value="name2"}]}=E,
+ ok;
+check_node_set("blipp[@id='name2'][3]",[]) ->
+ ok;
+check_node_set("//blupp[plopp=\"here are some more text\"]",[E]) ->
+ ?line #xmlElement{name=blupp,
+ content=[_T,#xmlElement{name=plopp,content=C}|_]} = E,
+ ?line true = lists:keymember("here are some more text",#xmlText.value,C),
+ ok;
+check_node_set("//blupp[plopp]",[E1,E2,E3]) ->
+ ?line #xmlElement{name=blupp,
+ content=C1} = E1,
+ ?line true = lists:keymember(plopp,#xmlElement.name,C1),
+ ?line #xmlElement{name=blupp,
+ content=C2} = E2,
+ ?line true = lists:keymember(plopp,#xmlElement.name,C2),
+ ?line #xmlElement{name=blupp,
+ content=C3} = E3,
+ ?line true = lists:keymember(plopp,#xmlElement.name,C3),
+ ok;
+check_node_set("blipp[@id and @test]",[E]) ->
+ ?line #xmlElement{name=blipp,
+ attributes=Atts} = E,
+ ?line true = lists:keymember(id,#xmlAttribute.name,Atts),
+ ?line true = lists:keymember(test,#xmlAttribute.name,Atts),
+ ok;
+check_node_set(Pattern,NodeSet) ->
+ io:format("Pattern: ~p~nNodeSet: ~p~n",[Pattern,NodeSet]),
+ error.
+
+xml_element_name(E,N) ->
+ ?line #xmlElement{name=N} = E,
+ ok.
+
+ticket_6873() ->
+ ?line [#xmlElement{}] = xmerl_xpath:string("//foo[contains(@bar, 'oe')]",element(1,xmerl_scan:string("<foo bar=\"Joe\" />"))),
+ ok.
+
+ticket_7496() ->
+ Test = fun(Doc, XPath, Exp) ->
+ Result = xmerl_xpath:string(XPath, Doc),
+ ?line Exp = [Name || #xmlElement{name = Name} <- Result],
+ ok
+ end,
+ ?line {Doc1,_} = xmerl_scan:string("<a><b/> <c/> <d/> <e/></a>"),
+ ?line ok = Test(Doc1, "//b/following::*", [c, d, e]),
+ ?line ok = Test(Doc1,"//b/following::*[1]", [c]),
+ ?line ok = Test(Doc1,"//b/following::*[position()=1]", [c]),
+ ?line ok = Test(Doc1,"//b/following::*[3]", [e]),
+ ?line ok = Test(Doc1,"//b/following::*[position()=3]", [e]),
+ ?line ok = Test(Doc1,"//e/preceding::*", [b, c, d]),
+ ?line ok = Test(Doc1,"//e/preceding::*[1]", [d]),
+ ?line ok = Test(Doc1,"//e/preceding::*[position()=1]", [d]),
+ ?line ok = Test(Doc1,"//e/preceding::*[3]", [b]),
+ ?line ok = Test(Doc1,"//e/preceding::*[position()=3]", [b]),
+ ?line ok = Test(Doc1,"//b/following::*[position() mod 2=0]", [d]),
+ ?line ok = Test(Doc1,"//b/self::*", [b]),
+
+ ?line {Doc2,_} = xmerl_scan:string("<a><b/> <c><d/></c> <e/> <f><g/></f> <h/> <i><j/></i> <k/></a>"),
+ ?line ok = Test(Doc2,"//g/preceding::*", [b, c, d, e]),
+ ?line ok = Test(Doc2, "//g/following::*", [h, i, j, k]),
+ ?line ok = Test(Doc2,"//g/ancestor::*", [a, f]),
+ ?line ok = Test(Doc2,"//g/ancestor::*[1]", [f]),
+ ?line ok = Test(Doc2,"//g/ancestor::*[2]", [a]),
+ ?line ok = Test(Doc2,"//g/ancestor-or-self::*", [a, f, g]),
+ ?line ok = Test(Doc2,"//g/ancestor-or-self::*[1]", [g]),
+ ?line ok = Test(Doc2,"//g/ancestor-or-self::*[2]", [f]),
+ ?line ok = Test(Doc2,"//g/ancestor-or-self::*[3]", [a]),
+ ?line ok = Test(Doc2,"/descendant::*", [a, b, c, d, e, f, g, h, i, j, k]),
+ ?line ok = Test(Doc2,"//f/preceding-sibling::*", [b, c, e]),
+ ?line ok = Test(Doc2,"//f/following-sibling::*", [h, i, k]),
+ ?line ok = Test(Doc2,"//f/self::*", [f]),
+ ?line ok = Test(Doc2,"//f/ancestor::*", [a]),
+ ?line ok = Test(Doc2,"//f/descendant::*", [g]),
+ ?line ok = Test(Doc2,"//f/preceding::*", [b, c, d, e]),
+ ?line ok = Test(Doc2,"//f/following::*", [h, i, j, k]),
+ ?line ok = Test(Doc2,"//text()[1]/following-sibling::*", [c, e, f, h, i, k]),
+
+ ?line {Doc3,_} = xmerl_scan:file("documentRoot.xml"),
+ ?line ok = Test(Doc3,"//child",[child,child,child]),
+ ?line ok = Test(Doc3,"//child[@name='beta']",[child]),
+ ?line [{xmlAttribute,id,[],[],[],[],1,[],"2",false}] =
+ xmerl_xpath:string("/documentRoot/parent/child[@name='beta']/@id",Doc3),
+ ?line ok = Test(Doc3,"/documentRoot/parent/child|/documentRoot/parent/pet",
+ [child,child,child,pet,pet]),
+ ?line ok = Test(Doc3,"//*[starts-with(local-name(),'p')]",
+ [parent,pet,pet]).
+
+
+functions() ->
+ Test = fun(Doc, XPath, Exp) ->
+ Result = xmerl_xpath:string(XPath, Doc),
+ ?line Exp = [begin
+ case Obj of
+ #xmlElement{name = EName} ->
+ EName;
+ #xmlAttribute{name = AName} ->
+ AName;
+ #xmlText{value=Text} ->
+ Text
+ end
+ end|| Obj <- Result],
+ ok
+ end,
+ Foo =
+ "<foo>"
+ " <bar>"
+ " <name>Xml</name>"
+ " <value>1</value>"
+ " </bar>"
+ " <bar>"
+ " <name>Xpath</name>"
+ " <value>2</value>"
+ " </bar>"
+ " <bar>"
+ " <name>Erlang</name>"
+ " <value>3</value>"
+ " </bar>"
+ "</foo>",
+ {Doc,_} = xmerl_scan:string(Foo),
+ ?line ok = Test(Doc,"/foo/bar[name = 'Xml']/value/text()",["1"]),
+ ?line ok = Test(Doc,"/foo/bar/node()/text()",
+ ["Xml","1","Xpath","2","Erlang","3"]),
+ ?line ok = Test(Doc,"/foo/bar[contains(name, 'path')]",[bar]),
+ ?line ok = Test(Doc,"/foo/bar[starts-with(name, 'X')]",[bar,bar]),
+ ?line ok = Test(Doc,"/foo/bar[value = string(1)]/value/text()",["1"]),
+
+
+ {Doc2,_}= xmerl_scan:file("purchaseOrder.xml"),
+ ?line ok = Test(Doc2,"//*[starts-with(local-name(),'c')]",
+ ['apo:comment',city,city,comment]),
+ ?line ok = Test(Doc2,"//*[starts-with(name(),'c')]",
+ [city,city,comment]),
+ ?line ok = Test(Doc2,"//*[starts-with(name(),'{http://www.example.com/PO1')]",
+ ['apo:purchaseOrder','apo:comment']).
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_lib.erl b/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_lib.erl
new file mode 100644
index 0000000000..4cde46826e
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_lib.erl
@@ -0,0 +1,184 @@
+%%%-------------------------------------------------------------------
+%%% File : xpath_lib.erl
+%%% Author : Bertil Karlsson <bertil@finrod>
+%%% Description :
+%%%
+%%% Created : 13 Jan 2006 by Bertil Karlsson <bertil@finrod>
+%%%-------------------------------------------------------------------
+-module(xpath_lib).
+
+-export([test/0,check_node_set/2,ticket_6873/0]).
+
+-include("test_server.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+
+test() ->
+ ?line {E,_} = xmerl_scan:file("myBS_model.xml"),
+ ?line Res1 = xmerl_xpath:string("blipp",E),
+ ?line ok = check_node_set("blipp",Res1),
+ ?line Res2 = xmerl_xpath:string("//blipp",E),
+ ?line ok = check_node_set("//blipp",Res2),
+ ?line Res3 = xmerl_xpath:string("/myBS_model/blipp",E),
+ ?line ok = check_node_set("/myBS_model/blipp",Res3),
+ ?line Res4 = xmerl_xpath:string("blipp[@id=\"name1\"]",E),
+ ?line ok = check_node_set("blipp[@id=\"name1\"]",Res4),
+ ?line Res5 = xmerl_xpath:string("//blipp[@id=\"name1\"]",E),
+ ?line ok = check_node_set("//blipp[@id=\"name1\"]",Res5),
+ ?line Res6 = xmerl_xpath:string("/myBS_model/blipp[@id=\"name1\"]",E),
+ ?line ok = check_node_set("/myBS_model/blipp[@id=\"name1\"]",Res6).
+
+
+check_node_set("blipp",[H1,H2]) ->
+ ?line #xmlElement{name = blipp} = H1,
+ ?line #xmlElement{name = blipp} = H2,
+ ok;
+check_node_set("//blipp",[H1,H2]) ->
+ ?line #xmlElement{name = blipp} = H1,
+ ?line #xmlElement{name = blipp} = H2,
+ ok;
+check_node_set("/myBS_model/blipp",[H1,H2]) ->
+ ?line #xmlElement{name = blipp} = H1,
+ ?line #xmlElement{name = blipp} = H2,
+ ok;
+check_node_set("blipp[@id=\"name1\"]",[H]) ->
+ ?line H#xmlElement{attributes=#xmlAttribute{name=id,value="name1"}},
+ ok;
+check_node_set("//blipp[@id=\"name1\"]",[H]) ->
+ ?line H#xmlElement{attributes=#xmlAttribute{name=id,value="name1"}},
+ ok;
+check_node_set("/myBS_model/blipp[@id=\"name1\"]",[H]) ->
+ ?line H#xmlElement{attributes=#xmlAttribute{name=id,value="name1"}},
+ ok.
+
+ticket_6873() ->
+ GetId =
+ fun(Atts) ->
+ case lists:keysearch(id,#xmlAttribute.name,Atts) of
+ {value,#xmlAttribute{value=AttV}} -> AttV;
+ _ -> novalue
+ end
+ end,
+ Test =
+ fun(Doc, XPath, Exp) ->
+ Result = xmerl_xpath:string(XPath, Doc),
+ Exp = [begin
+ case Obj of
+ #xmlElement{name = EName,attributes=Atts} ->
+ {EName,GetId(Atts)};
+ #xmlAttribute{name = AName} ->
+ AName;
+ #xmlText{value=Text} ->
+ Text
+ end
+ end|| Obj <- Result],
+ ok
+ end,
+
+
+
+ Doc1 = get_doc("e1074"),
+ ?line ok = Test(Doc1,"/*",[{root,"1"}]),
+ ?line ok = Test(Doc1,"/root",[{root,"1"}]),
+ ?line ok = Test(Doc1,"/root/*",[{elem1,"2"},{elem1,"8"},{e,"12"}]),
+ ?line ok = Test(Doc1,"/root/e",[{e,"12"}]),
+ ?line ok = Test(Doc1,"//e",[{e,"12"},{e,"4"},{e,"6"},{e,"10"},{e,"11"}]),
+ ?line ok = Test(Doc1,"//*[name() != 'e']",
+ [{root,"1"},{elem1,"2"},{elem1,"8"},{elem2,"3"},
+ {elem3,"5"},{elem3,"7"},{elem2,"9"}]),
+ ?line ok = Test(Doc1,"//elem1/e",[{e,"10"},{e,"11"}]),
+ ?line ok = Test(Doc1,"//elem1//e",[{e,"4"},{e,"6"},{e,"10"},{e,"11"}]),
+ ?line ok = Test(Doc1,"//*[*]",
+ [{root,"1"},{elem1,"2"},{elem1,"8"},
+ {elem2,"3"},{elem3,"5"}]),
+ ?line ok = Test(Doc1,"//*[not(*)]",
+ [{e,"12"},{e,"4"},{elem3,"7"},{e,"6"},
+ {elem2,"9"},{e,"10"},{e,"11"}]),
+ %% contents would be empty in the above expression
+ ?line [#xmlElement{content=[]}|_] = xmerl_xpath:string("//*[not(*)]",Doc1),
+ ?line ok = Test(Doc1,"//*[e]",[{root,"1"},{elem1,"8"},{elem2,"3"},{elem3,"5"}]),
+ ?line ok = Test(Doc1,"//*[count(e)>1]",[{elem1,"8"}]),
+ ?line ok = Test(Doc1,"//*[not(e) and name() != 'e']",
+ [{elem1,"2"},{elem3,"7"},{elem2,"9"}]),
+ ?line ok = Test(Doc1,"/*/*/*/e",[{e,"4"}]),
+ ?line ok = Test(Doc1,"//*[starts-with(name(), 'el')]",
+ [{elem1,"2"},{elem1,"8"},{elem2,"3"},
+ {elem3,"5"},{elem3,"7"},{elem2,"9"}]),
+ ?line ok = Test(Doc1,"//*[contains(name(), 'lem1')]",
+ [{elem1,"2"},{elem1,"8"}]),
+ ?line ok = Test(Doc1,"/*/e | //elem2/e",[{e,"4"},{e,"12"}]),
+
+ io:format("Tested ~p~n",[e1074]),
+
+ Doc2 = get_doc("e1075"),
+ ?line ok = Test(Doc2,"/*/*[1]",[{elem1,"2"}]),
+ ?line ok = Test(Doc2,"/root/elem1[2]",[{elem1,"8"}]),
+
+ %% Get all first-born e elements in the document; that is, for all
+ %% e elements with e element siblings, include only the first
+ %% sibling.Note that //e[1] does not return the first e element in
+ %% the document because the [1] predicate applies to e, which
+ %% represents the set of e elements under one element and not to
+ %% //e, which represents the set of e elements in the document.
+ %% ?line ok = Test(Doc2,"//e[1]",[{e,"4"},{e,"6"},{e,"10"},{e,"12"}]),
+
+ %% The following expression retrieves the first e element in the
+ %% document:
+ %% ?line ok = Test(Doc2,"(//e)[1]",[{e,4}]),
+
+ %% For all e elements with e element siblings, include only the
+ %% first 3 siblings
+ %% ?line ok = Test(Doc2,"//e[position() <= 3]",[{e,"4"},{e,"6"},{e,"10"},{e,"11"},{e,"12"}]),
+
+ %% Get all last-born e elements in the document; that is, for all
+ %% e elements with e element siblings, include only the last
+ %% sibling
+ %% ?line ok = Test(Doc2,"//e[last()]",[{e,"4"},{e,"6"},{e,"11"},{e,"12"}]),
+
+ %% Get the last e element in the document
+ %% ?line ok = Test(Doc2,"(//e)[last()]", [{e,"12"}]),
+
+
+ io:format("Tested ~p~n",[e1075]),
+
+
+ Doc3 = get_doc("e1076"),
+ ?line ok = Test(Doc3,"//*[.='cat']",[{elem1,"2"},{elem3,"6"}]),
+ ?line ok = Test(Doc3,"//*[.='dog']",[]),
+ ?line ok = Test(Doc3,"//*[contains(.,'cat')]",
+ [{elem1,"2"},{elem1,"4"},{elem3,"6"}]),
+ ?line ok = Test(Doc3,"//elem3[contains(.,'cat')]",[{elem3,"6"}]),
+ ?line ok = Test(Doc3,"//*[contains(child::text(),'cat')]",[{elem1,"2"},{elem1,"4"},{elem3,"6"}]),
+ ?line ok = Test(Doc3,"//*[count(*)=0 and contains(.,'cat')]",[{elem1,"2"},{elem3,"6"}]),
+ ?line ok = Test(Doc3,"//*[contains(translate(.,'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'),'CAT')]",[{elem1,"2"},{elem1,"4"},{elem1,"7"},{elem3,"6"}]),
+
+ io:format("Tested ~p~n",[e1076]),
+
+ Doc4 = get_doc("e1078"),
+ ?line ok = Test(Doc4,"//*[@pet='cat']",[{elem1,"2"}]),
+ ?line ok = Test(Doc4,"//*[@pet='dog']",[{elem1,"7"}]),
+ ?line ok = Test(Doc4,"//*[contains(@pet,'dog')]",
+ [{elem1,"3"},{elem1,"7"}]),
+ ?line ok = Test(Doc4,"//*[@age]",[{elem1,"3"},{elem3,"6"}]),
+ ?line ok = Test(Doc4,"//elem1[@age]",[{elem1,"3"}]),
+ ?line ok = Test(Doc4,"//*[@pet and @age]",[{elem1,"3"}]),
+ ?line ok = Test(Doc4,"//*[contains(translate(@pet,'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'),'CAT')]",[{elem1,"2"},{elem1,"4"}]),
+
+ io:format("Tested ~p~n",[e1078]),
+
+
+ Doc5 = get_doc("e1077"),
+ ?line ok = Test(Doc5,"id('3')",[{e,"3"}]),
+
+ %% Get all e elements directly under element id 3
+ %% ?line ok = Test(Doc5,"id('two')/e",[{e,"3"},{e,"4"},{e,"6"}]),
+ ?line ok = Test(Doc5,"id('two 3 seven the fifth')",[{e,"seven"},{e,"3"},{e,"two"}]),
+ ?line ok = Test(Doc5,"id('100')",[]),
+
+ io:format("Tested ~p~n",[e1077]),
+ ok.
+
+
+
+get_doc(Name) ->
+ ?line {Doc,_} = xmerl_scan:file(Name++".xml"),
+ Doc.
diff --git a/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_text.erl b/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_text.erl
new file mode 100644
index 0000000000..e39ad6bcb0
--- /dev/null
+++ b/lib/xmerl/test/xmerl_SUITE_data/xpath/xpath_text.erl
@@ -0,0 +1,28 @@
+%%%-------------------------------------------------------------------
+%%% File : xpath_text.erl
+%%% Author : Bertil Karlsson <bertil@finrod>
+%%% Description :
+%%%
+%%% Created : 14 Dec 2004 by Bertil Karlsson <bertil@finrod>
+%%%-------------------------------------------------------------------
+-module(xpath_text).
+
+-compile(export_all).
+
+-include("test_server.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+
+-import(xmerl_xs,
+ [ xslapply/2, value_of/1, select/2, built_in_rules/2 ]).
+
+
+one() ->
+ ?line {A,_}=xmerl_scan:file('motorcycles.xml'),
+ ?line [["Suzuki","Yamaha"]] = template(A),
+ ok.
+
+%%% templates, test of OTP-5268
+template(E = #xmlElement{name='motorcycles'}) ->
+ [value_of(select("bike/name/manufacturer/text()",E))];
+template(E) -> built_in_rules(fun template/1, E).
+
diff --git a/lib/xmerl/test/xmerl_app_test.erl b/lib/xmerl/test/xmerl_app_test.erl
new file mode 100644
index 0000000000..4cc4bf3791
--- /dev/null
+++ b/lib/xmerl/test/xmerl_app_test.erl
@@ -0,0 +1,242 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%%----------------------------------------------------------------------
+%% Purpose: Verify the application specifics of the Megaco application
+%%----------------------------------------------------------------------
+-module(xmerl_app_test).
+
+-compile(export_all).
+
+%-include("megaco_test_lib.hrl").
+
+
+% t() -> megaco_test_lib:t(?MODULE).
+% t(Case) -> megaco_test_lib:t({?MODULE, Case}).
+
+
+% %% Test server callbacks
+% init_per_testcase(Case, Config) ->
+% megaco_test_lib:init_per_testcase(Case, Config).
+
+% end_per_testcase(Case, Config) ->
+% megaco_test_lib:end_per_testcase(Case, Config).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+all() ->
+ [fields, modules, exportall, app_depend].
+
+groups() ->
+ [].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+init_per_suite(suite) -> [];
+init_per_suite(doc) -> [];
+init_per_suite(Config) when is_list(Config) ->
+ case is_app(xmerl) of
+ {ok, AppFile} ->
+ io:format("AppFile: ~n~p~n", [AppFile]),
+ [{app_file, AppFile}|Config];
+ {error, Reason} ->
+ fail(Reason)
+ end.
+
+is_app(App) ->
+ LibDir = code:lib_dir(App),
+ File = filename:join([LibDir, "ebin", atom_to_list(App) ++ ".app"]),
+ case file:consult(File) of
+ {ok, [{application, App, AppFile}]} ->
+ {ok, AppFile};
+ Error ->
+ {error, {invalid_format, Error}}
+ end.
+
+
+end_per_suite(suite) -> [];
+end_per_suite(doc) -> [];
+end_per_suite(Config) when is_list(Config) ->
+ Config.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+fields(suite) ->
+ [];
+fields(doc) ->
+ [];
+fields(Config) when is_list(Config) ->
+ AppFile = key1search(app_file, Config),
+ Fields = [vsn, description, modules, registered, applications],
+ case check_fields(Fields, AppFile, []) of
+ [] ->
+ ok;
+ Missing ->
+ fail({missing_fields, Missing})
+ end.
+
+check_fields([], _AppFile, Missing) ->
+ Missing;
+check_fields([Field|Fields], AppFile, Missing) ->
+ check_fields(Fields, AppFile, check_field(Field, AppFile, Missing)).
+
+check_field(Name, AppFile, Missing) ->
+ io:format("checking field: ~p~n", [Name]),
+ case lists:keymember(Name, 1, AppFile) of
+ true ->
+ Missing;
+ false ->
+ [Name|Missing]
+ end.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+modules(suite) ->
+ [];
+modules(doc) ->
+ [];
+modules(Config) when is_list(Config) ->
+ AppFile = key1search(app_file, Config),
+ Mods = key1search(modules, AppFile),
+ EbinList = get_ebin_mods(xmerl),
+ case missing_modules(Mods, EbinList, []) of
+ [] ->
+ ok;
+ Missing ->
+ throw({error, {missing_modules, Missing}})
+ end,
+ case extra_modules(Mods, EbinList, []) of
+ [] ->
+ ok;
+ Extra ->
+ throw({error, {extra_modules, Extra}})
+ end,
+ {ok, Mods}.
+
+get_ebin_mods(App) ->
+ LibDir = code:lib_dir(App),
+ EbinDir = filename:join([LibDir,"ebin"]),
+ {ok, Files0} = file:list_dir(EbinDir),
+ Files1 = [lists:reverse(File) || File <- Files0],
+ [list_to_atom(lists:reverse(Name)) || [$m,$a,$e,$b,$.|Name] <- Files1].
+
+
+missing_modules([], _Ebins, Missing) ->
+ Missing;
+missing_modules([Mod|Mods], Ebins, Missing) ->
+ case lists:member(Mod, Ebins) of
+ true ->
+ missing_modules(Mods, Ebins, Missing);
+ false ->
+ io:format("missing module: ~p~n", [Mod]),
+ missing_modules(Mods, Ebins, [Mod|Missing])
+ end.
+
+
+extra_modules(_Mods, [], Extra) ->
+ Extra;
+extra_modules(Mods, [Mod|Ebins], Extra) ->
+ case lists:member(Mod, Mods) of
+ true ->
+ extra_modules(Mods, Ebins, Extra);
+ false ->
+ io:format("supefluous module: ~p~n", [Mod]),
+ extra_modules(Mods, Ebins, [Mod|Extra])
+ end.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+exportall(suite) ->
+ [];
+exportall(doc) ->
+ [];
+exportall(Config) when is_list(Config) ->
+ AppFile = key1search(app_file, Config),
+ Mods = key1search(modules, AppFile),
+ check_export_all(Mods).
+
+
+check_export_all([]) ->
+ ok;
+check_export_all([Mod|Mods]) ->
+ case (catch apply(Mod, module_info, [compile])) of
+ {'EXIT', {undef, _}} ->
+ check_export_all(Mods);
+ O ->
+ case lists:keysearch(options, 1, O) of
+ false ->
+ check_export_all(Mods);
+ {value, {options, List}} ->
+ case lists:member(export_all, List) of
+ true ->
+ throw({error, {export_all, Mod}});
+ false ->
+ check_export_all(Mods)
+ end
+ end
+ end.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+app_depend(suite) ->
+ [];
+app_depend(doc) ->
+ [];
+app_depend(Config) when is_list(Config) ->
+ AppFile = key1search(app_file, Config),
+ Apps = key1search(applications, AppFile),
+ check_apps(Apps).
+
+
+check_apps([]) ->
+ ok;
+check_apps([App|Apps]) ->
+ case is_app(App) of
+ {ok, _} ->
+ check_apps(Apps);
+ Error ->
+ throw({error, {missing_app, {App, Error}}})
+ end.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+fail(Reason) ->
+ exit({suite_failed, Reason}).
+
+key1search(Key, L) ->
+ case lists:keysearch(Key, 1, L) of
+ undefined ->
+ fail({not_found, Key, L});
+ {value, {Key, Value}} ->
+ Value
+ end.
diff --git a/lib/xmerl/test/xmerl_appup_test.erl b/lib/xmerl/test/xmerl_appup_test.erl
new file mode 100644
index 0000000000..88d4a9bc28
--- /dev/null
+++ b/lib/xmerl/test/xmerl_appup_test.erl
@@ -0,0 +1,392 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%%----------------------------------------------------------------------
+%% Purpose: Verify the application specifics of the Megaco application
+%%----------------------------------------------------------------------
+-module(xmerl_appup_test).
+
+-compile(export_all).
+
+%-include("megaco_test_lib.hrl").
+
+
+%t() -> megaco_test_lib:t(?MODULE).
+%t(Case) -> megaco_test_lib:t({?MODULE, Case}).
+
+
+%% Test server callbacks
+% init_per_testcase(Case, Config) ->
+% megaco_test_lib:init_per_testcase(Case, Config).
+
+% end_per_testcase(Case, Config) ->
+% megaco_test_lib:end_per_testcase(Case, Config).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+all() ->
+ [appup].
+
+groups() ->
+ [].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+init_per_suite(suite) -> [];
+init_per_suite(doc) -> [];
+init_per_suite(Config) when is_list(Config) ->
+ AppFile = file_name(xmerl, ".app"),
+ AppupFile = file_name(xmerl, ".appup"),
+ [{app_file, AppFile}, {appup_file, AppupFile}|Config].
+
+
+file_name(App, Ext) ->
+ LibDir = code:lib_dir(App),
+ filename:join([LibDir, "ebin", atom_to_list(App) ++ Ext]).
+
+
+end_per_suite(suite) -> [];
+end_per_suite(doc) -> [];
+end_per_suite(Config) when is_list(Config) ->
+ Config.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+appup(suite) ->
+ [];
+appup(doc) ->
+ "perform a simple check of the appup file";
+appup(Config) when is_list(Config) ->
+ AppupFile = key1search(appup_file, Config),
+ AppFile = key1search(app_file, Config),
+ Modules = modules(AppFile),
+ check_appup(AppupFile, Modules).
+
+modules(File) ->
+ case file:consult(File) of
+ {ok, [{application,xmerl,Info}]} ->
+ case lists:keysearch(modules,1,Info) of
+ {value, {modules, Modules}} ->
+ Modules;
+ false ->
+ fail({bad_appinfo, Info})
+ end;
+ Error ->
+ fail({bad_appfile, Error})
+ end.
+
+
+check_appup(AppupFile, Modules) ->
+ case file:consult(AppupFile) of
+ {ok, [{V, UpFrom, DownTo}]} ->
+ io:format("V= ~p, UpFrom= ~p, DownTo= ~p, Modules= ~p~n",
+ [V, UpFrom, DownTo, Modules]),
+ check_appup(V, UpFrom, DownTo, Modules);
+ Else ->
+ fail({bad_appupfile, Else})
+ end.
+
+
+check_appup(V, UpFrom, DownTo, Modules) ->
+ check_version(V),
+ check_depends(up, UpFrom, Modules),
+ check_depends(down, DownTo, Modules),
+ ok.
+
+
+check_depends(_, [], _) ->
+ ok;
+check_depends(UpDown, [Dep|Deps], Modules) ->
+ check_depend(UpDown, Dep, Modules),
+ check_depends(UpDown, Deps, Modules).
+
+
+check_depend(up,I={add_application, _App}, Modules) ->
+ d("check_instructions(~w) -> entry with"
+ "~n Instruction: ~p"
+ "~n Modules: ~p", [up,I , Modules]),
+ ok;
+check_depend(down,I={remove_application, _App}, Modules) ->
+ d("check_instructions(~w) -> entry with"
+ "~n Instruction: ~p"
+ "~n Modules: ~p", [down,I , Modules]),
+ ok;
+check_depend(UpDown, {V, Instructions}, Modules) ->
+ d("check_instructions(~w) -> entry with"
+ "~n V: ~p"
+ "~n Modules: ~p", [UpDown, V, Modules]),
+ check_version(V),
+ case check_instructions(UpDown,
+ Instructions, Instructions, [], [], Modules) of
+ {_Good, []} ->
+ ok;
+ {_, Bad} ->
+ fail({bad_instructions, Bad, UpDown})
+ end.
+
+
+check_instructions(_, [], _, Good, Bad, _) ->
+ {lists:reverse(Good), lists:reverse(Bad)};
+check_instructions(UpDown, [Instr|Instrs], AllInstr, Good, Bad, Modules) ->
+ d("check_instructions(~w) -> entry with"
+ "~n Instr: ~p", [UpDown,Instr]),
+ case (catch check_instruction(UpDown, Instr, AllInstr, Modules)) of
+ ok ->
+ check_instructions(UpDown, Instrs, AllInstr,
+ [Instr|Good], Bad, Modules);
+ {error, Reason} ->
+ d("check_instructions(~w) -> bad instruction: "
+ "~n Reason: ~p", [UpDown,Reason]),
+ check_instructions(UpDown, Instrs, AllInstr, Good,
+ [{Instr, Reason}|Bad], Modules)
+ end.
+
+%% A new module is added
+check_instruction(up, {add_module, Module}, _, Modules)
+ when is_atom(Module) ->
+ d("check_instruction -> entry when up-add_module instruction with"
+ "~n Module: ~p", [Module]),
+ check_module(Module, Modules);
+
+%% An old module is re-added
+check_instruction(down, {add_module, Module}, _, Modules)
+ when is_atom(Module) ->
+ d("check_instruction -> entry when down-add_module instruction with"
+ "~n Module: ~p", [Module]),
+ case (catch check_module(Module, Modules)) of
+ {error, {unknown_module, Module, Modules}} ->
+ ok;
+ ok ->
+ local_error({existing_readded_module, Module})
+ end;
+
+%% Removing a module on upgrade:
+%% - the module has been removed from the app-file.
+%% - check that no module depends on this (removed) module
+check_instruction(up, {remove, {Module, Pre, Post}}, _, Modules)
+ when is_atom(Module), is_atom(Pre), is_atom(Post) ->
+ d("check_instruction -> entry when up-remove instruction with"
+ "~n Module: ~p"
+ "~n Pre: ~p"
+ "~n Post: ~p", [Module, Pre, Post]),
+ case (catch check_module(Module, Modules)) of
+ {error, {unknown_module, Module, Modules}} ->
+ check_purge(Pre),
+ check_purge(Post);
+ ok ->
+ local_error({existing_removed_module, Module})
+ end;
+
+%% Removing a module on downgrade: the module exist
+%% in the app-file.
+check_instruction(down, {remove, {Module, Pre, Post}}, AllInstr, Modules)
+ when is_atom(Module), is_atom(Pre), is_atom(Post) ->
+ d("check_instruction -> entry when down-remove instruction with"
+ "~n Module: ~p"
+ "~n Pre: ~p"
+ "~n Post: ~p", [Module, Pre, Post]),
+ case (catch check_module(Module, Modules)) of
+ ok ->
+ check_purge(Pre),
+ check_purge(Post),
+ check_no_remove_depends(Module, AllInstr);
+ {error, {unknown_module, Module, Modules}} ->
+ local_error({nonexisting_removed_module, Module})
+ end;
+
+check_instruction(_, {load_module, Module, Pre, Post, Depend},
+ AllInstr, Modules)
+ when is_atom(Module), is_atom(Pre), is_atom(Post), is_list(Depend) ->
+ d("check_instruction -> entry when load_module instruction with"
+ "~n Module: ~p"
+ "~n Pre: ~p"
+ "~n Post: ~p"
+ "~n Depend: ~p", [Module, Pre, Post, Depend]),
+ check_module(Module, Modules),
+ check_module_depend(Module, Depend, Modules),
+ check_module_depend(Module, Depend, updated_modules(AllInstr, [])),
+ check_purge(Pre),
+ check_purge(Post);
+
+check_instruction(_, {update, Module, Change, Pre, Post, Depend},
+ AllInstr, Modules)
+ when is_atom(Module), is_atom(Pre), is_atom(Post), is_list(Depend) ->
+ d("check_instruction -> entry when update instruction with"
+ "~n Module: ~p"
+ "~n Change: ~p"
+ "~n Pre: ~p"
+ "~n Post: ~p"
+ "~n Depend: ~p", [Module, Change, Pre, Post, Depend]),
+ check_module(Module, Modules),
+ check_module_depend(Module, Depend, Modules),
+ check_module_depend(Module, Depend, updated_modules(AllInstr, [])),
+ check_change(Change),
+ check_purge(Pre),
+ check_purge(Post);
+
+check_instruction(_, Instr, _AllInstr, _Modules) ->
+ d("check_instruction -> entry when unknown instruction with"
+ "~n Instr: ~p", [Instr]),
+ local_error({error, {unknown_instruction, Instr}}).
+
+
+%% If Module X depends on Module Y, then module Y must have an update
+%% instruction of some sort (otherwise the depend is faulty).
+updated_modules([], Modules) ->
+ d("update_modules -> entry when done with"
+ "~n Modules: ~p", [Modules]),
+ Modules;
+updated_modules([Instr |Instrs], Modules) ->
+ d("update_modules -> entry with"
+ "~n Instr: ~p"
+ "~n Modules: ~p", [Instr,Modules]),
+ Module = instruction_module(Instr),
+ d("update_modules -> Module: ~p", [Module]),
+ updated_modules(Instrs, [Module|Modules]).
+
+instruction_module({add_module, Module}) ->
+ Module;
+instruction_module({remove, {Module, _, _}}) ->
+ Module;
+instruction_module({load_module, Module, _, _, _}) ->
+ Module;
+instruction_module({update, Module, _, _, _, _}) ->
+ Module;
+instruction_module(Instr) ->
+ d("instruction_module -> entry when unknown instruction with"
+ "~n Instr: ~p", [Instr]),
+ local_error({error, {unknown_instruction, Instr}}).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+check_version(V) when is_list(V) ->
+ ok;
+check_version(V) ->
+ local_error({bad_version, V}).
+
+
+check_module(M, Modules) when is_atom(M) ->
+ case lists:member(M,Modules) of
+ true ->
+ ok;
+ false ->
+ local_error({unknown_module, M, Modules})
+ end;
+check_module(M, _) ->
+ local_error({bad_module, M}).
+
+
+check_module_depend(M, [], _) when is_atom(M) ->
+ d("check_module_depend -> entry with"
+ "~n M: ~p", [M]),
+ ok;
+check_module_depend(M, Deps, Modules) when is_atom(M), is_list(Deps) ->
+ d("check_module_depend -> entry with"
+ "~n M: ~p"
+ "~n Deps: ~p"
+ "~n Modules: ~p", [M, Deps, Modules]),
+ case [Dep || Dep <- Deps, lists:member(Dep, Modules) == false] of
+ [] ->
+ ok;
+ Unknown ->
+ local_error({unknown_depend_modules, Unknown})
+ end;
+check_module_depend(_M, D, _Modules) ->
+ d("check_module_depend -> entry when bad depend with"
+ "~n D: ~p", [D]),
+ local_error({bad_depend, D}).
+
+
+check_no_remove_depends(_Module, []) ->
+ ok;
+check_no_remove_depends(Module, [Instr|Instrs]) ->
+ check_no_remove_depend(Module, Instr),
+ check_no_remove_depends(Module, Instrs).
+
+check_no_remove_depend(Module, {load_module, Mod, _Pre, _Post, Depend}) ->
+ case lists:member(Module, Depend) of
+ true ->
+ local_error({removed_module_in_depend, load_module, Mod, Module});
+ false ->
+ ok
+ end;
+check_no_remove_depend(Module, {update, Mod, _Change, _Pre, _Post, Depend}) ->
+ case lists:member(Module, Depend) of
+ true ->
+ local_error({removed_module_in_depend, update, Mod, Module});
+ false ->
+ ok
+ end;
+check_no_remove_depend(_, _) ->
+ ok.
+
+
+check_change(soft) ->
+ ok;
+check_change({advanced, _Something}) ->
+ ok;
+check_change(Change) ->
+ local_error({bad_change, Change}).
+
+
+check_purge(soft_purge) ->
+ ok;
+check_purge(brutal_purge) ->
+ ok;
+check_purge(Purge) ->
+ local_error({bad_purge, Purge}).
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+local_error(Reason) ->
+ throw({error, Reason}).
+
+fail(Reason) ->
+ exit({suite_failed, Reason}).
+
+key1search(Key, L) ->
+ case lists:keysearch(Key, 1, L) of
+ undefined ->
+ fail({not_found, Key, L});
+ {value, {Key, Value}} ->
+ Value
+ end.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+d(F, A) ->
+ d(false, F, A).
+
+d(true, F, A) ->
+ io:format(F ++ "~n", A);
+d(_, _, _) ->
+ ok.
+
+
diff --git a/lib/xmerl/test/xmerl_sax_SUITE.erl b/lib/xmerl/test/xmerl_sax_SUITE.erl
new file mode 100644
index 0000000000..563bbaaa06
--- /dev/null
+++ b/lib/xmerl/test/xmerl_sax_SUITE.erl
@@ -0,0 +1,110 @@
+%%-*-erlang-*-
+%%----------------------------------------------------------------------
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%----------------------------------------------------------------------
+%% File : xmerl_sax_SUITE.erl
+%% Created : 2009-06-01
+%%----------------------------------------------------------------------
+-module(xmerl_sax_SUITE).
+-compile(export_all).
+
+%%----------------------------------------------------------------------
+%% Include files
+%%----------------------------------------------------------------------
+-include_lib("test_server/include/test_server.hrl").
+-include_lib("kernel/include/file.hrl").
+
+%%======================================================================
+%% External functions
+%%======================================================================
+
+%%----------------------------------------------------------------------
+%% Initializations
+%%----------------------------------------------------------------------
+
+init_per_suite(doc) ->
+ ["Starts the test suite"];
+init_per_suite(Config) ->
+ Config.
+
+end_per_suite(doc) ->
+ ["Stops the test suite"];
+end_per_suite(Config) ->
+ Config.
+
+
+
+%% initialization before each testcase
+init_per_testcase(_TestCase,Config) ->
+ Config.
+
+%% clean up after each testcase
+end_per_testcase(_Func,_Config) ->
+ ok.
+
+%%----------------------------------------------------------------------
+%% Tests
+%%----------------------------------------------------------------------
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% ID: ticket_8213
+%% Description: Checks that end of document is checked properly when continuation fun is missing.
+ticket_8213(suite) -> [];
+ticket_8213(_Config) ->
+ ?line {ok,ok,[]} = xmerl_sax_parser:stream("<elem/>", [{event_fun, fun (_E,_,_) -> ok end}]).
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% ID: ticket_8214
+%% Description: Checks that attributes with default namespace don't get [] in NS field.
+ticket_8214(suite) -> [];
+ticket_8214(_Config) ->
+ ?line {ok,ok,[]} =
+ xmerl_sax_parser:stream("<elem attr='123' x:attr='234' xmlns='http://lshift.net/d' "
+ "xmlns:x='http://lshift.net/x' />",
+ [{event_fun, fun ({startElement,"http://lshift.net/d","elem",
+ {[],"elem"},
+ [{[],[],"attr","123"},{"http://lshift.net/x","x","attr","234"}]},
+ _, _) ->ok;
+ ({startElement, _, "elem",_,_}, _,_) ->
+ throw({test, "Error in startElement tuple"});
+ (_E,_,_) -> ok
+ end}]).
+
+%%----------------------------------------------------------------------
+%% Bug test cases
+%%
+
+%%----------------------------------------------------------------------
+%% Test Suite
+%%
+all() ->
+ [{group, bugs}].
+
+groups() ->
+ [{bugs, [], [ticket_8213, ticket_8214]}].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
diff --git a/lib/xmerl/test/xmerl_sax_std_SUITE.erl b/lib/xmerl/test/xmerl_sax_std_SUITE.erl
new file mode 100644
index 0000000000..2048cc384f
--- /dev/null
+++ b/lib/xmerl/test/xmerl_sax_std_SUITE.erl
@@ -0,0 +1,25635 @@
+
+%%----------------------------------------------------------------------
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%----------------------------------------------------------------------
+%% File : xmerl_sax_std_SUITE.erl
+%% Created : 2009-06-01
+%%----------------------------------------------------------------------
+-module(xmerl_sax_std_SUITE).
+-compile(export_all).
+
+%%----------------------------------------------------------------------
+%% Include files
+%%----------------------------------------------------------------------
+-include_lib("test_server/include/test_server.hrl").
+-include_lib("kernel/include/file.hrl").
+
+%%======================================================================
+%% External functions
+%%======================================================================
+
+%%----------------------------------------------------------------------
+%% Initializations
+%%----------------------------------------------------------------------
+
+init_per_suite(doc) ->
+ ["Starts the test suite"];
+init_per_suite(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line ok=erl_tar:extract("ibm.tgz",[compressed]),
+ ?line ok=erl_tar:extract("japanese.tgz",[compressed]),
+ ?line ok=erl_tar:extract("oasis.tgz",[compressed]),
+ ?line ok=erl_tar:extract("sun.tgz",[compressed]),
+ ?line ok=erl_tar:extract("xmltest.tgz",[compressed]),
+ ?line ok = change_mode(["ibm","japanese","oasis",
+ "sun","xmltest"]),
+ Config.
+
+-ifndef(dont_rm_test_dirs).
+
+end_per_suite(doc) ->
+ ["Stops the test suite"];
+end_per_suite(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line ok=rm_files(["ibm","japanese","oasis","sun","xmltest"]),
+ Config.
+
+-else.
+
+end_per_suite(doc) ->
+ ["Stops the test suite"];
+end_per_suite(Config) ->
+ Config.
+
+-endif.
+
+%% initialization before each testcase
+init_per_testcase(_TestCase,Config) ->
+ io:format("Config:\n~p\n",[Config]),
+ ?line {ok, _} = file:read_file_info(filename:join([?config(priv_dir,Config)])),
+ ?line code:add_patha(?config(priv_dir,Config)),
+% Dog=test_server:timetrap({minutes,10}),
+% [{watchdog, Dog}|Config].
+ Config.
+
+%% clean up after each testcase
+end_per_testcase(_Func,_Config) ->
+% Dog=?config(watchdog, Config),
+% test_server:timetrap_cancel(Dog),
+ ok.
+
+%%----------------------------------------------------------------------
+%% Tests
+%%----------------------------------------------------------------------
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/001.xml
+%% ID: not-wf-sa-001
+%% Type: not-wf
+%% Sections: 3.1 [41]
+'not-wf-sa-001'(suite) -> [];
+'not-wf-sa-001'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/001.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/002.xml
+%% ID: not-wf-sa-002
+%% Type: not-wf
+%% Sections: 2.3 [4]
+'not-wf-sa-002'(suite) -> [];
+'not-wf-sa-002'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/002.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/003.xml
+%% ID: not-wf-sa-003
+%% Type: not-wf
+%% Sections: 2.6 [16]
+'not-wf-sa-003'(suite) -> [];
+'not-wf-sa-003'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/003.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/004.xml
+%% ID: not-wf-sa-004
+%% Type: not-wf
+%% Sections: 2.6 [16]
+'not-wf-sa-004'(suite) -> [];
+'not-wf-sa-004'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/004.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/005.xml
+%% ID: not-wf-sa-005
+%% Type: not-wf
+%% Sections: 2.6 [16]
+'not-wf-sa-005'(suite) -> [];
+'not-wf-sa-005'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/005.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/006.xml
+%% ID: not-wf-sa-006
+%% Type: not-wf
+%% Sections: 2.5 [16]
+'not-wf-sa-006'(suite) -> [];
+'not-wf-sa-006'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/006.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/007.xml
+%% ID: not-wf-sa-007
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-007'(suite) -> [];
+'not-wf-sa-007'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/007.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/008.xml
+%% ID: not-wf-sa-008
+%% Type: not-wf
+%% Sections: 2.3 [5]
+'not-wf-sa-008'(suite) -> [];
+'not-wf-sa-008'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/008.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/009.xml
+%% ID: not-wf-sa-009
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'not-wf-sa-009'(suite) -> [];
+'not-wf-sa-009'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/009.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/010.xml
+%% ID: not-wf-sa-010
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-010'(suite) -> [];
+'not-wf-sa-010'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/010.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/011.xml
+%% ID: not-wf-sa-011
+%% Type: not-wf
+%% Sections: 3.1 [41]
+'not-wf-sa-011'(suite) -> [];
+'not-wf-sa-011'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/011.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/012.xml
+%% ID: not-wf-sa-012
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'not-wf-sa-012'(suite) -> [];
+'not-wf-sa-012'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/012.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/013.xml
+%% ID: not-wf-sa-013
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'not-wf-sa-013'(suite) -> [];
+'not-wf-sa-013'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/013.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/014.xml
+%% ID: not-wf-sa-014
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'not-wf-sa-014'(suite) -> [];
+'not-wf-sa-014'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/014.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/015.xml
+%% ID: not-wf-sa-015
+%% Type: not-wf
+%% Sections: 3.1 [41]
+'not-wf-sa-015'(suite) -> [];
+'not-wf-sa-015'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/015.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/016.xml
+%% ID: not-wf-sa-016
+%% Type: not-wf
+%% Sections: 3.1 [41]
+'not-wf-sa-016'(suite) -> [];
+'not-wf-sa-016'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/016.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/017.xml
+%% ID: not-wf-sa-017
+%% Type: not-wf
+%% Sections: 2.7 [18]
+'not-wf-sa-017'(suite) -> [];
+'not-wf-sa-017'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/017.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/018.xml
+%% ID: not-wf-sa-018
+%% Type: not-wf
+%% Sections: 2.7 [19]
+'not-wf-sa-018'(suite) -> [];
+'not-wf-sa-018'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/018.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/019.xml
+%% ID: not-wf-sa-019
+%% Type: not-wf
+%% Sections: 3.1 [42]
+'not-wf-sa-019'(suite) -> [];
+'not-wf-sa-019'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/019.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/020.xml
+%% ID: not-wf-sa-020
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'not-wf-sa-020'(suite) -> [];
+'not-wf-sa-020'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/020.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/021.xml
+%% ID: not-wf-sa-021
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'not-wf-sa-021'(suite) -> [];
+'not-wf-sa-021'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/021.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/022.xml
+%% ID: not-wf-sa-022
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'not-wf-sa-022'(suite) -> [];
+'not-wf-sa-022'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/022.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/023.xml
+%% ID: not-wf-sa-023
+%% Type: not-wf
+%% Sections: 2.3 [5]
+'not-wf-sa-023'(suite) -> [];
+'not-wf-sa-023'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/023.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/024.xml
+%% ID: not-wf-sa-024
+%% Type: not-wf
+%% Sections: 2.3 [5]
+'not-wf-sa-024'(suite) -> [];
+'not-wf-sa-024'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/024.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/025.xml
+%% ID: not-wf-sa-025
+%% Type: not-wf
+%% Sections: 2.4 [14]
+'not-wf-sa-025'(suite) -> [];
+'not-wf-sa-025'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/025.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/026.xml
+%% ID: not-wf-sa-026
+%% Type: not-wf
+%% Sections: 2.4 [14]
+'not-wf-sa-026'(suite) -> [];
+'not-wf-sa-026'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/026.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/027.xml
+%% ID: not-wf-sa-027
+%% Type: not-wf
+%% Sections: 2.5 [15]
+'not-wf-sa-027'(suite) -> [];
+'not-wf-sa-027'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/027.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/028.xml
+%% ID: not-wf-sa-028
+%% Type: not-wf
+%% Sections: 2.6 [16]
+'not-wf-sa-028'(suite) -> [];
+'not-wf-sa-028'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/028.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/029.xml
+%% ID: not-wf-sa-029
+%% Type: not-wf
+%% Sections: 2.4 [14]
+'not-wf-sa-029'(suite) -> [];
+'not-wf-sa-029'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/029.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/030.xml
+%% ID: not-wf-sa-030
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-030'(suite) -> [];
+'not-wf-sa-030'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/030.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/031.xml
+%% ID: not-wf-sa-031
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-031'(suite) -> [];
+'not-wf-sa-031'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/031.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/032.xml
+%% ID: not-wf-sa-032
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-032'(suite) -> [];
+'not-wf-sa-032'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/032.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/033.xml
+%% ID: not-wf-sa-033
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-033'(suite) -> [];
+'not-wf-sa-033'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/033.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/034.xml
+%% ID: not-wf-sa-034
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-034'(suite) -> [];
+'not-wf-sa-034'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/034.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/035.xml
+%% ID: not-wf-sa-035
+%% Type: not-wf
+%% Sections: 3.1 [43]
+'not-wf-sa-035'(suite) -> [];
+'not-wf-sa-035'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/035.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/036.xml
+%% ID: not-wf-sa-036
+%% Type: not-wf
+%% Sections: 2.8 [27]
+'not-wf-sa-036'(suite) -> [];
+'not-wf-sa-036'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/036.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"Illegal data\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/037.xml
+%% ID: not-wf-sa-037
+%% Type: not-wf
+%% Sections: 2.8 [27]
+'not-wf-sa-037'(suite) -> [];
+'not-wf-sa-037'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/037.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"&#32;\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/038.xml
+%% ID: not-wf-sa-038
+%% Type: not-wf
+%% Sections: 3.1
+'not-wf-sa-038'(suite) -> [];
+'not-wf-sa-038'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/038.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/039.xml
+%% ID: not-wf-sa-039
+%% Type: not-wf
+%% Sections: 3
+'not-wf-sa-039'(suite) -> [];
+'not-wf-sa-039'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/039.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/040.xml
+%% ID: not-wf-sa-040
+%% Type: not-wf
+%% Sections: 2.8 [27]
+'not-wf-sa-040'(suite) -> [];
+'not-wf-sa-040'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/040.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"<doc></doc>\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/041.xml
+%% ID: not-wf-sa-041
+%% Type: not-wf
+%% Sections: 2.8 [27]
+'not-wf-sa-041'(suite) -> [];
+'not-wf-sa-041'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/041.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"<doc></doc>\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/042.xml
+%% ID: not-wf-sa-042
+%% Type: not-wf
+%% Sections: 3.1 [42]
+'not-wf-sa-042'(suite) -> [];
+'not-wf-sa-042'(Config) -> {skip, "Fix 1"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/042.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/043.xml
+%% ID: not-wf-sa-043
+%% Type: not-wf
+%% Sections: 2.8 [27]
+'not-wf-sa-043'(suite) -> [];
+'not-wf-sa-043'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/043.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"Illegal data\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/044.xml
+%% ID: not-wf-sa-044
+%% Type: not-wf
+%% Sections: 2.8 [27]
+'not-wf-sa-044'(suite) -> [];
+'not-wf-sa-044'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/044.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"<doc/>\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/045.xml
+%% ID: not-wf-sa-045
+%% Type: not-wf
+%% Sections: 3.1 [44]
+'not-wf-sa-045'(suite) -> [];
+'not-wf-sa-045'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/045.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/046.xml
+%% ID: not-wf-sa-046
+%% Type: not-wf
+%% Sections: 3.1 [40]
+'not-wf-sa-046'(suite) -> [];
+'not-wf-sa-046'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/046.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/047.xml
+%% ID: not-wf-sa-047
+%% Type: not-wf
+%% Sections: 3.1 [44]
+'not-wf-sa-047'(suite) -> [];
+'not-wf-sa-047'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/047.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/048.xml
+%% ID: not-wf-sa-048
+%% Type: not-wf
+%% Sections: 2.8 [27]
+'not-wf-sa-048'(suite) -> [];
+'not-wf-sa-048'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/048.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"<![CDATA[]]>\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/049.xml
+%% ID: not-wf-sa-049
+%% Type: not-wf
+%% Sections: 3.1 [40]
+'not-wf-sa-049'(suite) -> [];
+'not-wf-sa-049'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/049.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/050.xml
+%% ID: not-wf-sa-050
+%% Type: not-wf
+%% Sections: 2.1 [1]
+'not-wf-sa-050'(suite) -> [];
+'not-wf-sa-050'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/050.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/051.xml
+%% ID: not-wf-sa-051
+%% Type: not-wf
+%% Sections: 2.7 [18]
+'not-wf-sa-051'(suite) -> [];
+'not-wf-sa-051'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/051.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/052.xml
+%% ID: not-wf-sa-052
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'not-wf-sa-052'(suite) -> [];
+'not-wf-sa-052'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/052.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/053.xml
+%% ID: not-wf-sa-053
+%% Type: not-wf
+%% Sections: 3.1 [42]
+'not-wf-sa-053'(suite) -> [];
+'not-wf-sa-053'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/053.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/054.xml
+%% ID: not-wf-sa-054
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'not-wf-sa-054'(suite) -> [];
+'not-wf-sa-054'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/054.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/055.xml
+%% ID: not-wf-sa-055
+%% Type: not-wf
+%% Sections: 2.8 [28]
+'not-wf-sa-055'(suite) -> [];
+'not-wf-sa-055'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/055.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/056.xml
+%% ID: not-wf-sa-056
+%% Type: not-wf
+%% Sections: 2.8 [28]
+'not-wf-sa-056'(suite) -> [];
+'not-wf-sa-056'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/056.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/057.xml
+%% ID: not-wf-sa-057
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'not-wf-sa-057'(suite) -> [];
+'not-wf-sa-057'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/057.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/058.xml
+%% ID: not-wf-sa-058
+%% Type: not-wf
+%% Sections: 3.3.1 [54]
+'not-wf-sa-058'(suite) -> [];
+'not-wf-sa-058'(_Config) -> {skip, "Attlist Notation parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/058.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/059.xml
+%% ID: not-wf-sa-059
+%% Type: not-wf
+%% Sections: 3.3.1 [59]
+'not-wf-sa-059'(suite) -> [];
+'not-wf-sa-059'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/059.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/060.xml
+%% ID: not-wf-sa-060
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'not-wf-sa-060'(suite) -> [];
+'not-wf-sa-060'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/060.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/061.xml
+%% ID: not-wf-sa-061
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'not-wf-sa-061'(suite) -> [];
+'not-wf-sa-061'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/061.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/062.xml
+%% ID: not-wf-sa-062
+%% Type: not-wf
+%% Sections: 4.2 [71]
+'not-wf-sa-062'(suite) -> [];
+'not-wf-sa-062'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/062.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/063.xml
+%% ID: not-wf-sa-063
+%% Type: not-wf
+%% Sections: 2.8 [29]
+'not-wf-sa-063'(suite) -> [];
+'not-wf-sa-063'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/063.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/064.xml
+%% ID: not-wf-sa-064
+%% Type: not-wf
+%% Sections: 3.3 [53]
+'not-wf-sa-064'(suite) -> [];
+'not-wf-sa-064'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/064.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/065.xml
+%% ID: not-wf-sa-065
+%% Type: not-wf
+%% Sections: 3.3 [53]
+'not-wf-sa-065'(suite) -> [];
+'not-wf-sa-065'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/065.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/066.xml
+%% ID: not-wf-sa-066
+%% Type: not-wf
+%% Sections: 3.3 [52]
+'not-wf-sa-066'(suite) -> [];
+'not-wf-sa-066'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/066.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/067.xml
+%% ID: not-wf-sa-067
+%% Type: not-wf
+%% Sections: 3.3 [53]
+'not-wf-sa-067'(suite) -> [];
+'not-wf-sa-067'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/067.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/068.xml
+%% ID: not-wf-sa-068
+%% Type: not-wf
+%% Sections: 3.3.1 [58]
+'not-wf-sa-068'(suite) -> [];
+'not-wf-sa-068'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/068.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/069.xml
+%% ID: not-wf-sa-069
+%% Type: not-wf
+%% Sections: 4.2.2 [76]
+'not-wf-sa-069'(suite) -> [];
+'not-wf-sa-069'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/069.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/070.xml
+%% ID: not-wf-sa-070
+%% Type: not-wf
+%% Sections: 2.5 [16]
+'not-wf-sa-070'(suite) -> [];
+'not-wf-sa-070'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/070.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/071.xml
+%% ID: not-wf-sa-071
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-071'(suite) -> [];
+'not-wf-sa-071'(_Config) -> {skip, "No loop detection yet"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/071.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/072.xml
+%% ID: not-wf-sa-072
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-072'(suite) -> [];
+'not-wf-sa-072'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/072.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/073.xml
+%% ID: not-wf-sa-073
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-073'(suite) -> [];
+'not-wf-sa-073'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/073.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/074.xml
+%% ID: not-wf-sa-074
+%% Type: not-wf
+%% Sections: 4.3.2
+'not-wf-sa-074'(suite) -> [];
+'not-wf-sa-074'(_Config) -> {skip, "Entity not correct tag pair NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/074.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/075.xml
+%% ID: not-wf-sa-075
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-075'(suite) -> [];
+'not-wf-sa-075'(_Config) -> {skip, "No loop detection yet"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/075.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/076.xml
+%% ID: not-wf-sa-076
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-076'(suite) -> [];
+'not-wf-sa-076'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/076.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/077.xml
+%% ID: not-wf-sa-077
+%% Type: not-wf
+%% Sections: 41. [68]
+'not-wf-sa-077'(suite) -> [];
+'not-wf-sa-077'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/077.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/078.xml
+%% ID: not-wf-sa-078
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-078'(suite) -> [];
+'not-wf-sa-078'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/078.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/079.xml
+%% ID: not-wf-sa-079
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-079'(suite) -> [];
+'not-wf-sa-079'(_Config) -> {skip, "No loop detection yet"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/079.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/080.xml
+%% ID: not-wf-sa-080
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-080'(suite) -> [];
+'not-wf-sa-080'(_Config) -> {skip, "No loop detection yet"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/080.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/081.xml
+%% ID: not-wf-sa-081
+%% Type: not-wf
+%% Sections: 3.1
+'not-wf-sa-081'(suite) -> [];
+'not-wf-sa-081'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/081.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/082.xml
+%% ID: not-wf-sa-082
+%% Type: not-wf
+%% Sections: 3.1
+'not-wf-sa-082'(suite) -> [];
+'not-wf-sa-082'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/082.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/083.xml
+%% ID: not-wf-sa-083
+%% Type: not-wf
+%% Sections: 4.2.2 [76]
+'not-wf-sa-083'(suite) -> [];
+'not-wf-sa-083'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/083.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/084.xml
+%% ID: not-wf-sa-084
+%% Type: not-wf
+%% Sections: 4.1
+'not-wf-sa-084'(suite) -> [];
+'not-wf-sa-084'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/084.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/085.xml
+%% ID: not-wf-sa-085
+%% Type: not-wf
+%% Sections: 2.3 [13]
+'not-wf-sa-085'(suite) -> [];
+'not-wf-sa-085'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/085.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/086.xml
+%% ID: not-wf-sa-086
+%% Type: not-wf
+%% Sections: 2.3 [13]
+'not-wf-sa-086'(suite) -> [];
+'not-wf-sa-086'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/086.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/087.xml
+%% ID: not-wf-sa-087
+%% Type: not-wf
+%% Sections: 2.3 [13]
+'not-wf-sa-087'(suite) -> [];
+'not-wf-sa-087'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/087.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/088.xml
+%% ID: not-wf-sa-088
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'not-wf-sa-088'(suite) -> [];
+'not-wf-sa-088'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/088.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/089.xml
+%% ID: not-wf-sa-089
+%% Type: not-wf
+%% Sections: 4.2 [74]
+'not-wf-sa-089'(suite) -> [];
+'not-wf-sa-089'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/089.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/090.xml
+%% ID: not-wf-sa-090
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'not-wf-sa-090'(suite) -> [];
+'not-wf-sa-090'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/090.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/091.xml
+%% ID: not-wf-sa-091
+%% Type: not-wf
+%% Sections: 4.2 [74]
+'not-wf-sa-091'(suite) -> [];
+'not-wf-sa-091'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/091.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/092.xml
+%% ID: not-wf-sa-092
+%% Type: not-wf
+%% Sections: 4.5
+'not-wf-sa-092'(suite) -> [];
+'not-wf-sa-092'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/092.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/093.xml
+%% ID: not-wf-sa-093
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'not-wf-sa-093'(suite) -> [];
+'not-wf-sa-093'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/093.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/094.xml
+%% ID: not-wf-sa-094
+%% Type: not-wf
+%% Sections: 2.8 [24]
+'not-wf-sa-094'(suite) -> [];
+'not-wf-sa-094'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/094.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/095.xml
+%% ID: not-wf-sa-095
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'not-wf-sa-095'(suite) -> [];
+'not-wf-sa-095'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/095.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/096.xml
+%% ID: not-wf-sa-096
+%% Type: not-wf
+%% Sections: 2.9 [32]
+'not-wf-sa-096'(suite) -> [];
+'not-wf-sa-096'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/096.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/097.xml
+%% ID: not-wf-sa-097
+%% Type: not-wf
+%% Sections: 2.8 [24]
+'not-wf-sa-097'(suite) -> [];
+'not-wf-sa-097'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/097.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/098.xml
+%% ID: not-wf-sa-098
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'not-wf-sa-098'(suite) -> [];
+'not-wf-sa-098'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/098.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/099.xml
+%% ID: not-wf-sa-099
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'not-wf-sa-099'(suite) -> [];
+'not-wf-sa-099'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/099.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/100.xml
+%% ID: not-wf-sa-100
+%% Type: not-wf
+%% Sections: 2.9 [32]
+'not-wf-sa-100'(suite) -> [];
+'not-wf-sa-100'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/100.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/101.xml
+%% ID: not-wf-sa-101
+%% Type: not-wf
+%% Sections: 4.3.3 [81]
+'not-wf-sa-101'(suite) -> [];
+'not-wf-sa-101'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/101.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/102.xml
+%% ID: not-wf-sa-102
+%% Type: not-wf
+%% Sections: 2.8 [26]
+'not-wf-sa-102'(suite) -> [];
+'not-wf-sa-102'(Config) -> {skip, "Fix 2"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/102.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/103.xml
+%% ID: not-wf-sa-103
+%% Type: not-wf
+%% Sections: 4.3.2
+'not-wf-sa-103'(suite) -> [];
+'not-wf-sa-103'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/103.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/104.xml
+%% ID: not-wf-sa-104
+%% Type: not-wf
+%% Sections: 4.3.2
+'not-wf-sa-104'(suite) -> [];
+'not-wf-sa-104'(_Config) -> {skip, "Entity not correct tag pair NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/104.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/105.xml
+%% ID: not-wf-sa-105
+%% Type: not-wf
+%% Sections: 2.7
+'not-wf-sa-105'(suite) -> [];
+'not-wf-sa-105'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/105.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/106.xml
+%% ID: not-wf-sa-106
+%% Type: not-wf
+%% Sections: 4.2
+'not-wf-sa-106'(suite) -> [];
+'not-wf-sa-106'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/106.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/107.xml
+%% ID: not-wf-sa-107
+%% Type: not-wf
+%% Sections: 2.8 [28]
+'not-wf-sa-107'(suite) -> [];
+'not-wf-sa-107'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/107.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/108.xml
+%% ID: not-wf-sa-108
+%% Type: not-wf
+%% Sections: 2.7 [19]
+'not-wf-sa-108'(suite) -> [];
+'not-wf-sa-108'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/108.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/109.xml
+%% ID: not-wf-sa-109
+%% Type: not-wf
+%% Sections: 4.2 [70]
+'not-wf-sa-109'(suite) -> [];
+'not-wf-sa-109'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/109.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/110.xml
+%% ID: not-wf-sa-110
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-110'(suite) -> [];
+'not-wf-sa-110'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/110.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"&e;\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/111.xml
+%% ID: not-wf-sa-111
+%% Type: not-wf
+%% Sections: 3.1 [43]
+'not-wf-sa-111'(suite) -> [];
+'not-wf-sa-111'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/111.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/112.xml
+%% ID: not-wf-sa-112
+%% Type: not-wf
+%% Sections: 2.7 [19]
+'not-wf-sa-112'(suite) -> [];
+'not-wf-sa-112'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/112.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/113.xml
+%% ID: not-wf-sa-113
+%% Type: not-wf
+%% Sections: 2.3 [9]
+'not-wf-sa-113'(suite) -> [];
+'not-wf-sa-113'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/113.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/114.xml
+%% ID: not-wf-sa-114
+%% Type: not-wf
+%% Sections: 2.3 [9]
+'not-wf-sa-114'(suite) -> [];
+'not-wf-sa-114'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/114.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/115.xml
+%% ID: not-wf-sa-115
+%% Type: not-wf
+%% Sections: 4.5
+'not-wf-sa-115'(suite) -> [];
+'not-wf-sa-115'(_Config) -> {skip, "& expansion not correct"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/115.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/116.xml
+%% ID: not-wf-sa-116
+%% Type: not-wf
+%% Sections: 4.3.2
+'not-wf-sa-116'(suite) -> [];
+'not-wf-sa-116'(_Config) -> {skip, "& expansion not correct"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/116.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/117.xml
+%% ID: not-wf-sa-117
+%% Type: not-wf
+%% Sections: 4.3.2
+'not-wf-sa-117'(suite) -> [];
+'not-wf-sa-117'(_Config) -> {skip, "& expansion not correct"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/117.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/118.xml
+%% ID: not-wf-sa-118
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-118'(suite) -> [];
+'not-wf-sa-118'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/118.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/119.xml
+%% ID: not-wf-sa-119
+%% Type: not-wf
+%% Sections: 4.3.2
+'not-wf-sa-119'(suite) -> [];
+'not-wf-sa-119'(_Config) -> {skip, "& expansion not correct"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/119.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/120.xml
+%% ID: not-wf-sa-120
+%% Type: not-wf
+%% Sections: 4.5
+'not-wf-sa-120'(suite) -> [];
+'not-wf-sa-120'(_Config) -> {skip, "& expansion not correct"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/120.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/121.xml
+%% ID: not-wf-sa-121
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'not-wf-sa-121'(suite) -> [];
+'not-wf-sa-121'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/121.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/122.xml
+%% ID: not-wf-sa-122
+%% Type: not-wf
+%% Sections: 3.2.1 [47]
+'not-wf-sa-122'(suite) -> [];
+'not-wf-sa-122'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/122.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/123.xml
+%% ID: not-wf-sa-123
+%% Type: not-wf
+%% Sections: 3.2.1 [48]
+'not-wf-sa-123'(suite) -> [];
+'not-wf-sa-123'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/123.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/124.xml
+%% ID: not-wf-sa-124
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'not-wf-sa-124'(suite) -> [];
+'not-wf-sa-124'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/124.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/125.xml
+%% ID: not-wf-sa-125
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'not-wf-sa-125'(suite) -> [];
+'not-wf-sa-125'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/125.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/126.xml
+%% ID: not-wf-sa-126
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'not-wf-sa-126'(suite) -> [];
+'not-wf-sa-126'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/126.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/127.xml
+%% ID: not-wf-sa-127
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'not-wf-sa-127'(suite) -> [];
+'not-wf-sa-127'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/127.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/128.xml
+%% ID: not-wf-sa-128
+%% Type: not-wf
+%% Sections: 2.7 [18]
+'not-wf-sa-128'(suite) -> [];
+'not-wf-sa-128'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/128.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/129.xml
+%% ID: not-wf-sa-129
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'not-wf-sa-129'(suite) -> [];
+'not-wf-sa-129'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/129.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/130.xml
+%% ID: not-wf-sa-130
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'not-wf-sa-130'(suite) -> [];
+'not-wf-sa-130'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/130.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/131.xml
+%% ID: not-wf-sa-131
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'not-wf-sa-131'(suite) -> [];
+'not-wf-sa-131'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/131.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/132.xml
+%% ID: not-wf-sa-132
+%% Type: not-wf
+%% Sections: 3.2.1 [50]
+'not-wf-sa-132'(suite) -> [];
+'not-wf-sa-132'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/132.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/133.xml
+%% ID: not-wf-sa-133
+%% Type: not-wf
+%% Sections: 3.2.1
+'not-wf-sa-133'(suite) -> [];
+'not-wf-sa-133'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/133.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/134.xml
+%% ID: not-wf-sa-134
+%% Type: not-wf
+%% Sections: 3.2.1
+'not-wf-sa-134'(suite) -> [];
+'not-wf-sa-134'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/134.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/135.xml
+%% ID: not-wf-sa-135
+%% Type: not-wf
+%% Sections: 3.2.1 [47]
+'not-wf-sa-135'(suite) -> [];
+'not-wf-sa-135'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/135.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/136.xml
+%% ID: not-wf-sa-136
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'not-wf-sa-136'(suite) -> [];
+'not-wf-sa-136'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/136.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/137.xml
+%% ID: not-wf-sa-137
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'not-wf-sa-137'(suite) -> [];
+'not-wf-sa-137'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/137.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/138.xml
+%% ID: not-wf-sa-138
+%% Type: not-wf
+%% Sections: 3.2.1 [48]
+'not-wf-sa-138'(suite) -> [];
+'not-wf-sa-138'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/138.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/139.xml
+%% ID: not-wf-sa-139
+%% Type: not-wf
+%% Sections: 3.2.1 [46]
+'not-wf-sa-139'(suite) -> [];
+'not-wf-sa-139'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/139.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/140.xml
+%% ID: not-wf-sa-140
+%% Type: not-wf
+%% Sections: 2.3 [4]
+'not-wf-sa-140'(suite) -> [];
+'not-wf-sa-140'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/140.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/141.xml
+%% ID: not-wf-sa-141
+%% Type: not-wf
+%% Sections: 2.3 [5]
+'not-wf-sa-141'(suite) -> [];
+'not-wf-sa-141'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/141.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/142.xml
+%% ID: not-wf-sa-142
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-142'(suite) -> [];
+'not-wf-sa-142'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/142.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/143.xml
+%% ID: not-wf-sa-143
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-143'(suite) -> [];
+'not-wf-sa-143'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/143.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/144.xml
+%% ID: not-wf-sa-144
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-144'(suite) -> [];
+'not-wf-sa-144'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/144.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/145.xml
+%% ID: not-wf-sa-145
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-145'(suite) -> [];
+'not-wf-sa-145'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/145.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/146.xml
+%% ID: not-wf-sa-146
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-146'(suite) -> [];
+'not-wf-sa-146'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/146.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/147.xml
+%% ID: not-wf-sa-147
+%% Type: not-wf
+%% Sections: 2.8 [22]
+'not-wf-sa-147'(suite) -> [];
+'not-wf-sa-147'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/147.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/148.xml
+%% ID: not-wf-sa-148
+%% Type: not-wf
+%% Sections: 2.8 [22]
+'not-wf-sa-148'(suite) -> [];
+'not-wf-sa-148'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/148.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/149.xml
+%% ID: not-wf-sa-149
+%% Type: not-wf
+%% Sections: 2.8 [28]
+'not-wf-sa-149'(suite) -> [];
+'not-wf-sa-149'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/149.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/150.xml
+%% ID: not-wf-sa-150
+%% Type: not-wf
+%% Sections: 3.1 [43]
+'not-wf-sa-150'(suite) -> [];
+'not-wf-sa-150'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/150.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/151.xml
+%% ID: not-wf-sa-151
+%% Type: not-wf
+%% Sections: 2.8 [27]
+'not-wf-sa-151'(suite) -> [];
+'not-wf-sa-151'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/151.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"xml version=\"1.0\"?>\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/152.xml
+%% ID: not-wf-sa-152
+%% Type: not-wf
+%% Sections: 2.8 [22]
+'not-wf-sa-152'(suite) -> [];
+'not-wf-sa-152'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/152.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/153.xml
+%% ID: not-wf-sa-153
+%% Type: not-wf
+%% Sections: 4.3.2
+'not-wf-sa-153'(suite) -> [];
+'not-wf-sa-153'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/153.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/154.xml
+%% ID: not-wf-sa-154
+%% Type: not-wf
+%% Sections: 2.8 2.6 [23, 17]
+'not-wf-sa-154'(suite) -> [];
+'not-wf-sa-154'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/154.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/155.xml
+%% ID: not-wf-sa-155
+%% Type: not-wf
+%% Sections: 2.8 2.6 [23, 17]
+'not-wf-sa-155'(suite) -> [];
+'not-wf-sa-155'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/155.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/156.xml
+%% ID: not-wf-sa-156
+%% Type: not-wf
+%% Sections: 2.8 2.6 [23, 17]
+'not-wf-sa-156'(suite) -> [];
+'not-wf-sa-156'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/156.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/157.xml
+%% ID: not-wf-sa-157
+%% Type: not-wf
+%% Sections: 2.6 [17]
+'not-wf-sa-157'(suite) -> [];
+'not-wf-sa-157'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/157.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/158.xml
+%% ID: not-wf-sa-158
+%% Type: not-wf
+%% Sections: 3.3 [52]
+'not-wf-sa-158'(suite) -> [];
+'not-wf-sa-158'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/158.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/159.xml
+%% ID: not-wf-sa-159
+%% Type: not-wf
+%% Sections: 2.3 [9]
+'not-wf-sa-159'(suite) -> [];
+'not-wf-sa-159'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/159.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/160.xml
+%% ID: not-wf-sa-160
+%% Type: not-wf
+%% Sections: 2.8
+'not-wf-sa-160'(suite) -> [];
+'not-wf-sa-160'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/160.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/161.xml
+%% ID: not-wf-sa-161
+%% Type: not-wf
+%% Sections: 2.8
+'not-wf-sa-161'(suite) -> [];
+'not-wf-sa-161'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/161.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/162.xml
+%% ID: not-wf-sa-162
+%% Type: not-wf
+%% Sections: 2.8
+'not-wf-sa-162'(suite) -> [];
+'not-wf-sa-162'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/162.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/163.xml
+%% ID: not-wf-sa-163
+%% Type: not-wf
+%% Sections: 4.1 [69]
+'not-wf-sa-163'(suite) -> [];
+'not-wf-sa-163'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/163.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/164.xml
+%% ID: not-wf-sa-164
+%% Type: not-wf
+%% Sections: 4.1 [69]
+'not-wf-sa-164'(suite) -> [];
+'not-wf-sa-164'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/164.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/165.xml
+%% ID: not-wf-sa-165
+%% Type: not-wf
+%% Sections: 4.2 [72]
+'not-wf-sa-165'(suite) -> [];
+'not-wf-sa-165'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/165.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/166.xml
+%% ID: not-wf-sa-166
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-166'(suite) -> [];
+'not-wf-sa-166'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/166.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/167.xml
+%% ID: not-wf-sa-167
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-167'(suite) -> [];
+'not-wf-sa-167'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/167.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/168.xml
+%% ID: not-wf-sa-168
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-168'(suite) -> [];
+'not-wf-sa-168'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/168.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/169.xml
+%% ID: not-wf-sa-169
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-169'(suite) -> [];
+'not-wf-sa-169'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/169.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/170.xml
+%% ID: not-wf-sa-170
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-170'(suite) -> [];
+'not-wf-sa-170'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/170.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/171.xml
+%% ID: not-wf-sa-171
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-171'(suite) -> [];
+'not-wf-sa-171'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/171.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/172.xml
+%% ID: not-wf-sa-172
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-172'(suite) -> [];
+'not-wf-sa-172'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/172.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/173.xml
+%% ID: not-wf-sa-173
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-173'(suite) -> [];
+'not-wf-sa-173'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/173.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/174.xml
+%% ID: not-wf-sa-174
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-174'(suite) -> [];
+'not-wf-sa-174'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/174.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/175.xml
+%% ID: not-wf-sa-175
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-175'(suite) -> [];
+'not-wf-sa-175'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/175.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/176.xml
+%% ID: not-wf-sa-176
+%% Type: not-wf
+%% Sections: 3 [39]
+'not-wf-sa-176'(suite) -> [];
+'not-wf-sa-176'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/176.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/177.xml
+%% ID: not-wf-sa-177
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'not-wf-sa-177'(suite) -> [];
+'not-wf-sa-177'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/177.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/178.xml
+%% ID: not-wf-sa-178
+%% Type: not-wf
+%% Sections: 3.1 [41]
+'not-wf-sa-178'(suite) -> [];
+'not-wf-sa-178'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/178.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/179.xml
+%% ID: not-wf-sa-179
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'not-wf-sa-179'(suite) -> [];
+'not-wf-sa-179'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/179.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/180.xml
+%% ID: not-wf-sa-180
+%% Type: not-wf
+%% Sections: 4.1
+'not-wf-sa-180'(suite) -> [];
+'not-wf-sa-180'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/180.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/181.xml
+%% ID: not-wf-sa-181
+%% Type: not-wf
+%% Sections: 4.3.2
+'not-wf-sa-181'(suite) -> [];
+'not-wf-sa-181'(_Config) -> {skip, "Entity not tag pair NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/181.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/182.xml
+%% ID: not-wf-sa-182
+%% Type: not-wf
+%% Sections: 4.3.2
+'not-wf-sa-182'(suite) -> [];
+'not-wf-sa-182'(_Config) -> {skip, "Entity not tag pair NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/182.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/183.xml
+%% ID: not-wf-sa-183
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'not-wf-sa-183'(suite) -> [];
+'not-wf-sa-183'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/183.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/184.xml
+%% ID: not-wf-sa-184
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'not-wf-sa-184'(suite) -> [];
+'not-wf-sa-184'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/184.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/185.xml
+%% ID: not-wf-sa-185
+%% Type: not-wf
+%% Sections: 4.1
+'not-wf-sa-185'(suite) -> [];
+'not-wf-sa-185'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/185.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sa/186.xml
+%% ID: not-wf-sa-186
+%% Type: not-wf
+%% Sections: 3.1 [44]
+'not-wf-sa-186'(suite) -> [];
+'not-wf-sa-186'(Config) -> {skip, "Fix 2"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/sa/186.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa/001.xml
+%% ID: not-wf-not-sa-001
+%% Type: not-wf
+%% Sections: 3.4 [62]
+'not-wf-not-sa-001'(suite) -> [];
+'not-wf-not-sa-001'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/not-sa/001.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa/002.xml
+%% ID: not-wf-not-sa-002
+%% Type: not-wf
+%% Sections: 2.6 [17]
+'not-wf-not-sa-002'(suite) -> [];
+'not-wf-not-sa-002'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/not-sa/002.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa/003.xml
+%% ID: not-wf-not-sa-003
+%% Type: not-wf
+%% Sections: 3.4 [62]
+'not-wf-not-sa-003'(suite) -> [];
+'not-wf-not-sa-003'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/not-sa/003.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa/004.xml
+%% ID: not-wf-not-sa-004
+%% Type: not-wf
+%% Sections: 3.4 [62]
+'not-wf-not-sa-004'(suite) -> [];
+'not-wf-not-sa-004'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/not-sa/004.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa/005.xml
+%% ID: not-wf-not-sa-005
+%% Type: error
+%% Sections: 4.1
+'not-wf-not-sa-005'(suite) -> [];
+'not-wf-not-sa-005'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/not-sa/005.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa/006.xml
+%% ID: not-wf-not-sa-006
+%% Type: not-wf
+%% Sections: 3.4 [62]
+'not-wf-not-sa-006'(suite) -> [];
+'not-wf-not-sa-006'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/not-sa/006.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa/007.xml
+%% ID: not-wf-not-sa-007
+%% Type: not-wf
+%% Sections: 4.3.2 [79]
+'not-wf-not-sa-007'(suite) -> [];
+'not-wf-not-sa-007'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/not-sa/007.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa/008.xml
+%% ID: not-wf-not-sa-008
+%% Type: not-wf
+%% Sections: 4.1 [69]
+'not-wf-not-sa-008'(suite) -> [];
+'not-wf-not-sa-008'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/not-sa/008.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa/009.xml
+%% ID: not-wf-not-sa-009
+%% Type: not-wf
+%% Sections: 2.8
+'not-wf-not-sa-009'(suite) -> [];
+'not-wf-not-sa-009'(_Config) -> {skip, "not a complete content in PE NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/not-sa/009.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/ext-sa/001.xml
+%% ID: not-wf-ext-sa-001
+%% Type: not-wf
+%% Sections: 4.1
+'not-wf-ext-sa-001'(suite) -> [];
+'not-wf-ext-sa-001'(Config) -> {skip, "Fix 1"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/ext-sa/001.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/ext-sa/002.xml
+%% ID: not-wf-ext-sa-002
+%% Type: not-wf
+%% Sections: 4.3.1 4.3.2 [77, 78]
+'not-wf-ext-sa-002'(suite) -> [];
+'not-wf-ext-sa-002'(Config) -> {skip, "Fix 1"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/ext-sa/002.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/ext-sa/003.xml
+%% ID: not-wf-ext-sa-003
+%% Type: not-wf
+%% Sections: 2.6 [17]
+'not-wf-ext-sa-003'(suite) -> [];
+'not-wf-ext-sa-003'(Config) -> {skip, "Fix 1"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","not-wf/ext-sa/003.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/002.xml
+%% ID: invalid--002
+%% Type: invalid
+%% Sections: 3.2.1
+'invalid--002'(suite) -> [];
+'invalid--002'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","invalid/002.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/005.xml
+%% ID: invalid--005
+%% Type: invalid
+%% Sections: 2.8
+'invalid--005'(suite) -> [];
+'invalid--005'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","invalid/005.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/006.xml
+%% ID: invalid--006
+%% Type: invalid
+%% Sections: 2.8
+'invalid--006'(suite) -> [];
+'invalid--006'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","invalid/006.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa/022.xml
+%% ID: invalid-not-sa-022
+%% Type: invalid
+%% Sections: 3.4 [62]
+'invalid-not-sa-022'(suite) -> [];
+'invalid-not-sa-022'(_Config) -> {skip, "DTD element content parsing NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","invalid/not-sa/022.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/001.xml
+%% ID: valid-sa-001
+%% Type: valid
+%% Sections: 3.2.2 [51]
+'valid-sa-001'(suite) -> [];
+'valid-sa-001'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/001.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/002.xml
+%% ID: valid-sa-002
+%% Type: valid
+%% Sections: 3.1 [40]
+'valid-sa-002'(suite) -> [];
+'valid-sa-002'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/002.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/003.xml
+%% ID: valid-sa-003
+%% Type: valid
+%% Sections: 3.1 [42]
+'valid-sa-003'(suite) -> [];
+'valid-sa-003'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/003.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/004.xml
+%% ID: valid-sa-004
+%% Type: valid
+%% Sections: 3.1 [41]
+'valid-sa-004'(suite) -> [];
+'valid-sa-004'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/004.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/005.xml
+%% ID: valid-sa-005
+%% Type: valid
+%% Sections: 3.1 [40]
+'valid-sa-005'(suite) -> [];
+'valid-sa-005'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/005.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/006.xml
+%% ID: valid-sa-006
+%% Type: valid
+%% Sections: 3.1 [41]
+'valid-sa-006'(suite) -> [];
+'valid-sa-006'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/006.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/007.xml
+%% ID: valid-sa-007
+%% Type: valid
+%% Sections: 3.1 4.6 [43]
+'valid-sa-007'(suite) -> [];
+'valid-sa-007'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/007.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/008.xml
+%% ID: valid-sa-008
+%% Type: valid
+%% Sections: 2.4 3.1 [43]
+'valid-sa-008'(suite) -> [];
+'valid-sa-008'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/008.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/009.xml
+%% ID: valid-sa-009
+%% Type: valid
+%% Sections: 2.3 3.1 [43]
+'valid-sa-009'(suite) -> [];
+'valid-sa-009'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/009.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/010.xml
+%% ID: valid-sa-010
+%% Type: valid
+%% Sections: 3.1 [40]
+'valid-sa-010'(suite) -> [];
+'valid-sa-010'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/010.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/011.xml
+%% ID: valid-sa-011
+%% Type: valid
+%% Sections: 3.1 [40]
+'valid-sa-011'(suite) -> [];
+'valid-sa-011'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/011.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/012.xml
+%% ID: valid-sa-012
+%% Type: valid
+%% Sections: 2.3 [4]
+'valid-sa-012'(suite) -> [];
+'valid-sa-012'(Config) -> {skip, "Fix 1"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/012.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/013.xml
+%% ID: valid-sa-013
+%% Type: valid
+%% Sections: 2.3 3.1 [13] [40]
+'valid-sa-013'(suite) -> [];
+'valid-sa-013'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/013.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/014.xml
+%% ID: valid-sa-014
+%% Type: valid
+%% Sections: 2.3 3.1 [13] [40]
+'valid-sa-014'(suite) -> [];
+'valid-sa-014'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/014.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/015.xml
+%% ID: valid-sa-015
+%% Type: valid
+%% Sections: 2.3 3.1 [13] [40]
+'valid-sa-015'(suite) -> [];
+'valid-sa-015'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/015.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/016.xml
+%% ID: valid-sa-016
+%% Type: valid
+%% Sections: 2.6 3.1 [16] [43]
+'valid-sa-016'(suite) -> [];
+'valid-sa-016'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/016.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/017.xml
+%% ID: valid-sa-017
+%% Type: valid
+%% Sections: 2.6 3.1 [16] [43]
+'valid-sa-017'(suite) -> [];
+'valid-sa-017'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/017.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/018.xml
+%% ID: valid-sa-018
+%% Type: valid
+%% Sections: 2.7 3.1 [18] [43]
+'valid-sa-018'(suite) -> [];
+'valid-sa-018'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/018.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/019.xml
+%% ID: valid-sa-019
+%% Type: valid
+%% Sections: 2.7 3.1 [18] [43]
+'valid-sa-019'(suite) -> [];
+'valid-sa-019'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/019.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/020.xml
+%% ID: valid-sa-020
+%% Type: valid
+%% Sections: 2.7 3.1 [18] [43]
+'valid-sa-020'(suite) -> [];
+'valid-sa-020'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/020.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/021.xml
+%% ID: valid-sa-021
+%% Type: valid
+%% Sections: 2.5 3.1 [15] [43]
+'valid-sa-021'(suite) -> [];
+'valid-sa-021'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/021.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/022.xml
+%% ID: valid-sa-022
+%% Type: valid
+%% Sections: 2.5 3.1 [15] [43]
+'valid-sa-022'(suite) -> [];
+'valid-sa-022'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/022.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/023.xml
+%% ID: valid-sa-023
+%% Type: valid
+%% Sections: 3.1 [43]
+'valid-sa-023'(suite) -> [];
+'valid-sa-023'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/023.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/024.xml
+%% ID: valid-sa-024
+%% Type: valid
+%% Sections: 3.1 4.1 [43] [66]
+'valid-sa-024'(suite) -> [];
+'valid-sa-024'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/024.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/025.xml
+%% ID: valid-sa-025
+%% Type: valid
+%% Sections: 3.2 [46]
+'valid-sa-025'(suite) -> [];
+'valid-sa-025'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/025.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/026.xml
+%% ID: valid-sa-026
+%% Type: valid
+%% Sections: 3.2 [46]
+'valid-sa-026'(suite) -> [];
+'valid-sa-026'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/026.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/027.xml
+%% ID: valid-sa-027
+%% Type: valid
+%% Sections: 3.2 [46]
+'valid-sa-027'(suite) -> [];
+'valid-sa-027'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/027.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/028.xml
+%% ID: valid-sa-028
+%% Type: valid
+%% Sections: 2.8 [24]
+'valid-sa-028'(suite) -> [];
+'valid-sa-028'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/028.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/029.xml
+%% ID: valid-sa-029
+%% Type: valid
+%% Sections: 2.8 [24]
+'valid-sa-029'(suite) -> [];
+'valid-sa-029'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/029.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/030.xml
+%% ID: valid-sa-030
+%% Type: valid
+%% Sections: 2.8 [25]
+'valid-sa-030'(suite) -> [];
+'valid-sa-030'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/030.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/031.xml
+%% ID: valid-sa-031
+%% Type: valid
+%% Sections: 4.3.3 [80]
+'valid-sa-031'(suite) -> [];
+'valid-sa-031'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/031.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/032.xml
+%% ID: valid-sa-032
+%% Type: valid
+%% Sections: 2.9 [32]
+'valid-sa-032'(suite) -> [];
+'valid-sa-032'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/032.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/033.xml
+%% ID: valid-sa-033
+%% Type: valid
+%% Sections: 2.8 [23]
+'valid-sa-033'(suite) -> [];
+'valid-sa-033'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/033.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/034.xml
+%% ID: valid-sa-034
+%% Type: valid
+%% Sections: 3.1 [44]
+'valid-sa-034'(suite) -> [];
+'valid-sa-034'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/034.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/035.xml
+%% ID: valid-sa-035
+%% Type: valid
+%% Sections: 3.1 [44]
+'valid-sa-035'(suite) -> [];
+'valid-sa-035'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/035.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/036.xml
+%% ID: valid-sa-036
+%% Type: valid
+%% Sections: 2.6 [16]
+'valid-sa-036'(suite) -> [];
+'valid-sa-036'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/036.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/037.xml
+%% ID: valid-sa-037
+%% Type: valid
+%% Sections: 2.6 [15]
+'valid-sa-037'(suite) -> [];
+'valid-sa-037'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/037.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/038.xml
+%% ID: valid-sa-038
+%% Type: valid
+%% Sections: 2.6 [15]
+'valid-sa-038'(suite) -> [];
+'valid-sa-038'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/038.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/039.xml
+%% ID: valid-sa-039
+%% Type: valid
+%% Sections: 2.6 [16]
+'valid-sa-039'(suite) -> [];
+'valid-sa-039'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/039.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/040.xml
+%% ID: valid-sa-040
+%% Type: valid
+%% Sections: 3.3 3.3.1 [52] [54]
+'valid-sa-040'(suite) -> [];
+'valid-sa-040'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/040.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/041.xml
+%% ID: valid-sa-041
+%% Type: valid
+%% Sections: 3.3.1 4.1 [54] [66]
+'valid-sa-041'(suite) -> [];
+'valid-sa-041'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/041.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/042.xml
+%% ID: valid-sa-042
+%% Type: valid
+%% Sections: 3.3.1 4.1 [54] [66]
+'valid-sa-042'(suite) -> [];
+'valid-sa-042'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/042.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/043.xml
+%% ID: valid-sa-043
+%% Type: valid
+%% Sections: 3.3
+'valid-sa-043'(suite) -> [];
+'valid-sa-043'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/043.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/044.xml
+%% ID: valid-sa-044
+%% Type: valid
+%% Sections: 3.1 [44]
+'valid-sa-044'(suite) -> [];
+'valid-sa-044'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/044.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/045.xml
+%% ID: valid-sa-045
+%% Type: valid
+%% Sections: 3.3 [52]
+'valid-sa-045'(suite) -> [];
+'valid-sa-045'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/045.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/046.xml
+%% ID: valid-sa-046
+%% Type: valid
+%% Sections: 3.3 [52]
+'valid-sa-046'(suite) -> [];
+'valid-sa-046'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/046.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/047.xml
+%% ID: valid-sa-047
+%% Type: valid
+%% Sections: 3.1 [43]
+'valid-sa-047'(suite) -> [];
+'valid-sa-047'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/047.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/048.xml
+%% ID: valid-sa-048
+%% Type: valid
+%% Sections: 2.4 3.1 [14] [43]
+'valid-sa-048'(suite) -> [];
+'valid-sa-048'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/048.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/049.xml
+%% ID: valid-sa-049
+%% Type: valid
+%% Sections: 2.2 [2]
+'valid-sa-049'(suite) -> [];
+'valid-sa-049'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/049.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/050.xml
+%% ID: valid-sa-050
+%% Type: valid
+%% Sections: 2.2 [2]
+'valid-sa-050'(suite) -> [];
+'valid-sa-050'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/050.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/051.xml
+%% ID: valid-sa-051
+%% Type: valid
+%% Sections: 2.2 [2]
+'valid-sa-051'(suite) -> [];
+'valid-sa-051'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/051.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/052.xml
+%% ID: valid-sa-052
+%% Type: valid
+%% Sections: 2.2 [2]
+'valid-sa-052'(suite) -> [];
+'valid-sa-052'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/052.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/053.xml
+%% ID: valid-sa-053
+%% Type: valid
+%% Sections: 4.4.2
+'valid-sa-053'(suite) -> [];
+'valid-sa-053'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/053.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/054.xml
+%% ID: valid-sa-054
+%% Type: valid
+%% Sections: 3.1 [40] [42]
+'valid-sa-054'(suite) -> [];
+'valid-sa-054'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/054.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/055.xml
+%% ID: valid-sa-055
+%% Type: valid
+%% Sections: 2.6 2.10 [16]
+'valid-sa-055'(suite) -> [];
+'valid-sa-055'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/055.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/056.xml
+%% ID: valid-sa-056
+%% Type: valid
+%% Sections: 3.3.1 4.1 [54] [66]
+'valid-sa-056'(suite) -> [];
+'valid-sa-056'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/056.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/057.xml
+%% ID: valid-sa-057
+%% Type: valid
+%% Sections: 3.2.1 [47]
+'valid-sa-057'(suite) -> [];
+'valid-sa-057'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/057.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/058.xml
+%% ID: valid-sa-058
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-058'(suite) -> [];
+'valid-sa-058'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/058.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/059.xml
+%% ID: valid-sa-059
+%% Type: valid
+%% Sections: 3.2 3.3 [46] [53]
+'valid-sa-059'(suite) -> [];
+'valid-sa-059'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/059.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/060.xml
+%% ID: valid-sa-060
+%% Type: valid
+%% Sections: 4.1 [66]
+'valid-sa-060'(suite) -> [];
+'valid-sa-060'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/060.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/061.xml
+%% ID: valid-sa-061
+%% Type: valid
+%% Sections: 4.1 [66]
+'valid-sa-061'(suite) -> [];
+'valid-sa-061'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/061.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/062.xml
+%% ID: valid-sa-062
+%% Type: valid
+%% Sections: 4.1 [66]
+'valid-sa-062'(suite) -> [];
+'valid-sa-062'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/062.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/063.xml
+%% ID: valid-sa-063
+%% Type: valid
+%% Sections: 2.3 [5]
+'valid-sa-063'(suite) -> [];
+'valid-sa-063'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/063.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/064.xml
+%% ID: valid-sa-064
+%% Type: valid
+%% Sections: 4.1 [66]
+'valid-sa-064'(suite) -> [];
+'valid-sa-064'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/064.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/065.xml
+%% ID: valid-sa-065
+%% Type: valid
+%% Sections: 4.5
+'valid-sa-065'(suite) -> [];
+'valid-sa-065'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/065.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/066.xml
+%% ID: valid-sa-066
+%% Type: valid
+%% Sections: 4.1 [66]
+'valid-sa-066'(suite) -> [];
+'valid-sa-066'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/066.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/067.xml
+%% ID: valid-sa-067
+%% Type: valid
+%% Sections: 4.1 [66]
+'valid-sa-067'(suite) -> [];
+'valid-sa-067'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/067.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/068.xml
+%% ID: valid-sa-068
+%% Type: valid
+%% Sections: 2.11, 4.5
+'valid-sa-068'(suite) -> [];
+'valid-sa-068'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/068.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/069.xml
+%% ID: valid-sa-069
+%% Type: valid
+%% Sections: 4.7
+'valid-sa-069'(suite) -> [];
+'valid-sa-069'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/069.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/070.xml
+%% ID: valid-sa-070
+%% Type: valid
+%% Sections: 4.4.8
+'valid-sa-070'(suite) -> [];
+'valid-sa-070'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/070.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/071.xml
+%% ID: valid-sa-071
+%% Type: valid
+%% Sections: 3.3 3.3.1 [52] [56]
+'valid-sa-071'(suite) -> [];
+'valid-sa-071'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/071.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/072.xml
+%% ID: valid-sa-072
+%% Type: valid
+%% Sections: 3.3 3.3.1 [52] [56]
+'valid-sa-072'(suite) -> [];
+'valid-sa-072'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/072.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/073.xml
+%% ID: valid-sa-073
+%% Type: valid
+%% Sections: 3.3 3.3.1 [52] [56]
+'valid-sa-073'(suite) -> [];
+'valid-sa-073'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/073.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/074.xml
+%% ID: valid-sa-074
+%% Type: valid
+%% Sections: 3.3 3.3.1 [52] [56]
+'valid-sa-074'(suite) -> [];
+'valid-sa-074'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/074.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/075.xml
+%% ID: valid-sa-075
+%% Type: valid
+%% Sections: 3.3 3.3.1 [52] [56]
+'valid-sa-075'(suite) -> [];
+'valid-sa-075'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/075.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/076.xml
+%% ID: valid-sa-076
+%% Type: valid
+%% Sections: 3.3.1
+'valid-sa-076'(suite) -> [];
+'valid-sa-076'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/076.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/077.xml
+%% ID: valid-sa-077
+%% Type: valid
+%% Sections: 3.3 3.3.1 [52] [54]
+'valid-sa-077'(suite) -> [];
+'valid-sa-077'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/077.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/078.xml
+%% ID: valid-sa-078
+%% Type: valid
+%% Sections: 3.3 3.3.1 [52] [54]
+'valid-sa-078'(suite) -> [];
+'valid-sa-078'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/078.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/079.xml
+%% ID: valid-sa-079
+%% Type: valid
+%% Sections: 3.3 3.3.2 [52] [60]
+'valid-sa-079'(suite) -> [];
+'valid-sa-079'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/079.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/080.xml
+%% ID: valid-sa-080
+%% Type: valid
+%% Sections: 3.3 3.3.2 [52] [60]
+'valid-sa-080'(suite) -> [];
+'valid-sa-080'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/080.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/081.xml
+%% ID: valid-sa-081
+%% Type: valid
+%% Sections: 3.2.1 [50]
+'valid-sa-081'(suite) -> [];
+'valid-sa-081'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/081.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/082.xml
+%% ID: valid-sa-082
+%% Type: valid
+%% Sections: 4.2 [72]
+'valid-sa-082'(suite) -> [];
+'valid-sa-082'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/082.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/083.xml
+%% ID: valid-sa-083
+%% Type: valid
+%% Sections: 4.2 [72]
+'valid-sa-083'(suite) -> [];
+'valid-sa-083'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/083.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/084.xml
+%% ID: valid-sa-084
+%% Type: valid
+%% Sections: 2.10
+'valid-sa-084'(suite) -> [];
+'valid-sa-084'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/084.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/085.xml
+%% ID: valid-sa-085
+%% Type: valid
+%% Sections: 4
+'valid-sa-085'(suite) -> [];
+'valid-sa-085'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/085.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/086.xml
+%% ID: valid-sa-086
+%% Type: valid
+%% Sections: 4.2
+'valid-sa-086'(suite) -> [];
+'valid-sa-086'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/086.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/087.xml
+%% ID: valid-sa-087
+%% Type: valid
+%% Sections: 4.5
+'valid-sa-087'(suite) -> [];
+'valid-sa-087'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/087.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/088.xml
+%% ID: valid-sa-088
+%% Type: valid
+%% Sections: 4.5
+'valid-sa-088'(suite) -> [];
+'valid-sa-088'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/088.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/089.xml
+%% ID: valid-sa-089
+%% Type: valid
+%% Sections: 4.1 [66]
+'valid-sa-089'(suite) -> [];
+'valid-sa-089'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/089.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/090.xml
+%% ID: valid-sa-090
+%% Type: valid
+%% Sections: 3.3.1
+'valid-sa-090'(suite) -> [];
+'valid-sa-090'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/090.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/091.xml
+%% ID: valid-sa-091
+%% Type: valid
+%% Sections: 3.3.1
+'valid-sa-091'(suite) -> [];
+'valid-sa-091'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/091.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/092.xml
+%% ID: valid-sa-092
+%% Type: valid
+%% Sections: 2.3 2.10
+'valid-sa-092'(suite) -> [];
+'valid-sa-092'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/092.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/093.xml
+%% ID: valid-sa-093
+%% Type: valid
+%% Sections: 2.10
+'valid-sa-093'(suite) -> [];
+'valid-sa-093'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/093.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/094.xml
+%% ID: valid-sa-094
+%% Type: valid
+%% Sections: 2.8
+'valid-sa-094'(suite) -> [];
+'valid-sa-094'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/094.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/095.xml
+%% ID: valid-sa-095
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-095'(suite) -> [];
+'valid-sa-095'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/095.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/096.xml
+%% ID: valid-sa-096
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-096'(suite) -> [];
+'valid-sa-096'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/096.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/097.xml
+%% ID: valid-sa-097
+%% Type: valid
+%% Sections: 3.3
+'valid-sa-097'(suite) -> [];
+'valid-sa-097'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/097.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/098.xml
+%% ID: valid-sa-098
+%% Type: valid
+%% Sections: 2.6 2.10 [16]
+'valid-sa-098'(suite) -> [];
+'valid-sa-098'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/098.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/099.xml
+%% ID: valid-sa-099
+%% Type: valid
+%% Sections: 4.3.3 [81]
+'valid-sa-099'(suite) -> [];
+'valid-sa-099'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/099.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/100.xml
+%% ID: valid-sa-100
+%% Type: valid
+%% Sections: 2.3 [12]
+'valid-sa-100'(suite) -> [];
+'valid-sa-100'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/100.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/101.xml
+%% ID: valid-sa-101
+%% Type: valid
+%% Sections: 4.5
+'valid-sa-101'(suite) -> [];
+'valid-sa-101'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/101.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/102.xml
+%% ID: valid-sa-102
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-102'(suite) -> [];
+'valid-sa-102'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/102.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/103.xml
+%% ID: valid-sa-103
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-103'(suite) -> [];
+'valid-sa-103'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/103.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/104.xml
+%% ID: valid-sa-104
+%% Type: valid
+%% Sections: 3.1 [40]
+'valid-sa-104'(suite) -> [];
+'valid-sa-104'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/104.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/105.xml
+%% ID: valid-sa-105
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-105'(suite) -> [];
+'valid-sa-105'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/105.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/106.xml
+%% ID: valid-sa-106
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-106'(suite) -> [];
+'valid-sa-106'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/106.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/107.xml
+%% ID: valid-sa-107
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-107'(suite) -> [];
+'valid-sa-107'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/107.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/108.xml
+%% ID: valid-sa-108
+%% Type: valid
+%% Sections: 2.11, 3.3.3
+'valid-sa-108'(suite) -> [];
+'valid-sa-108'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/108.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/109.xml
+%% ID: valid-sa-109
+%% Type: valid
+%% Sections: 2.3 3.1 [10][40][41]
+'valid-sa-109'(suite) -> [];
+'valid-sa-109'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/109.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/110.xml
+%% ID: valid-sa-110
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-110'(suite) -> [];
+'valid-sa-110'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/110.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/111.xml
+%% ID: valid-sa-111
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-111'(suite) -> [];
+'valid-sa-111'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/111.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/112.xml
+%% ID: valid-sa-112
+%% Type: valid
+%% Sections: 3.2.1 [48][49]
+'valid-sa-112'(suite) -> [];
+'valid-sa-112'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/112.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/113.xml
+%% ID: valid-sa-113
+%% Type: valid
+%% Sections: 3.3 [52][53]
+'valid-sa-113'(suite) -> [];
+'valid-sa-113'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/113.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/114.xml
+%% ID: valid-sa-114
+%% Type: valid
+%% Sections: 2.7 [20]
+'valid-sa-114'(suite) -> [];
+'valid-sa-114'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/114.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/115.xml
+%% ID: valid-sa-115
+%% Type: valid
+%% Sections: 3.3.3
+'valid-sa-115'(suite) -> [];
+'valid-sa-115'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/115.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/116.xml
+%% ID: valid-sa-116
+%% Type: valid
+%% Sections: 2.11
+'valid-sa-116'(suite) -> [];
+'valid-sa-116'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/116.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/117.xml
+%% ID: valid-sa-117
+%% Type: valid
+%% Sections: 4.5
+'valid-sa-117'(suite) -> [];
+'valid-sa-117'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/117.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/118.xml
+%% ID: valid-sa-118
+%% Type: valid
+%% Sections: 4.5
+'valid-sa-118'(suite) -> [];
+'valid-sa-118'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/118.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa/119.xml
+%% ID: valid-sa-119
+%% Type: valid
+%% Sections: 2.5
+'valid-sa-119'(suite) -> [];
+'valid-sa-119'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/sa/119.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/001.xml
+%% ID: valid-not-sa-001
+%% Type: valid
+%% Sections: 4.2.2 [75]
+'valid-not-sa-001'(suite) -> [];
+'valid-not-sa-001'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/001.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/002.xml
+%% ID: valid-not-sa-002
+%% Type: valid
+%% Sections: 4.2.2 [75]
+'valid-not-sa-002'(suite) -> [];
+'valid-not-sa-002'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/002.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/003.xml
+%% ID: valid-not-sa-003
+%% Type: valid
+%% Sections: 4.1 [69]
+'valid-not-sa-003'(suite) -> [];
+'valid-not-sa-003'(_Config) -> {skip, "external entity NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/003.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/004.xml
+%% ID: valid-not-sa-004
+%% Type: valid
+%% Sections: 4.1 [69]
+'valid-not-sa-004'(suite) -> [];
+'valid-not-sa-004'(_Config) -> {skip, "external entity NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/004.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/005.xml
+%% ID: valid-not-sa-005
+%% Type: valid
+%% Sections: 4.1 [69]
+'valid-not-sa-005'(suite) -> [];
+'valid-not-sa-005'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/005.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/006.xml
+%% ID: valid-not-sa-006
+%% Type: valid
+%% Sections: 3.3 [52]
+'valid-not-sa-006'(suite) -> [];
+'valid-not-sa-006'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/006.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/007.xml
+%% ID: valid-not-sa-007
+%% Type: valid
+%% Sections: 3.3 [52]
+'valid-not-sa-007'(suite) -> [];
+'valid-not-sa-007'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/007.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/008.xml
+%% ID: valid-not-sa-008
+%% Type: valid
+%% Sections: 4.2.2 [75]
+'valid-not-sa-008'(suite) -> [];
+'valid-not-sa-008'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/008.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/009.xml
+%% ID: valid-not-sa-009
+%% Type: valid
+%% Sections: 4.2.2 [75]
+'valid-not-sa-009'(suite) -> [];
+'valid-not-sa-009'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/009.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/010.xml
+%% ID: valid-not-sa-010
+%% Type: valid
+%% Sections: 3.3 [52]
+'valid-not-sa-010'(suite) -> [];
+'valid-not-sa-010'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/010.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/011.xml
+%% ID: valid-not-sa-011
+%% Type: valid
+%% Sections: 4.2 4.2.1 [72] [75]
+'valid-not-sa-011'(suite) -> [];
+'valid-not-sa-011'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/011.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/012.xml
+%% ID: valid-not-sa-012
+%% Type: valid
+%% Sections: 4.3.1 [77]
+'valid-not-sa-012'(suite) -> [];
+'valid-not-sa-012'(Config) -> {skip, "Fix 3"}.
+ %% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/012.xml"]),
+ %% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/013.xml
+%% ID: valid-not-sa-013
+%% Type: valid
+%% Sections: 3.4 [62]
+'valid-not-sa-013'(suite) -> [];
+'valid-not-sa-013'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/013.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/014.xml
+%% ID: valid-not-sa-014
+%% Type: valid
+%% Sections: 3.4 [62]
+'valid-not-sa-014'(suite) -> [];
+'valid-not-sa-014'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/014.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/015.xml
+%% ID: valid-not-sa-015
+%% Type: valid
+%% Sections: 3.4 [63]
+'valid-not-sa-015'(suite) -> [];
+'valid-not-sa-015'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/015.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/016.xml
+%% ID: valid-not-sa-016
+%% Type: valid
+%% Sections: 3.4 [62]
+'valid-not-sa-016'(suite) -> [];
+'valid-not-sa-016'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/016.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/017.xml
+%% ID: valid-not-sa-017
+%% Type: valid
+%% Sections: 4.2 [72]
+'valid-not-sa-017'(suite) -> [];
+'valid-not-sa-017'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/017.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/018.xml
+%% ID: valid-not-sa-018
+%% Type: valid
+%% Sections: 4.2.2 [75]
+'valid-not-sa-018'(suite) -> [];
+'valid-not-sa-018'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/018.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/019.xml
+%% ID: valid-not-sa-019
+%% Type: valid
+%% Sections: 4.4.8
+'valid-not-sa-019'(suite) -> [];
+'valid-not-sa-019'(_Config) -> {skip, "partly replacement of markupdecls"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/019.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/020.xml
+%% ID: valid-not-sa-020
+%% Type: valid
+%% Sections: 4.4.8
+'valid-not-sa-020'(suite) -> [];
+'valid-not-sa-020'(_Config) -> {skip, "partly replacement of markupdecls"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/020.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/021.xml
+%% ID: valid-not-sa-021
+%% Type: valid
+%% Sections: 4.2 [72]
+'valid-not-sa-021'(suite) -> [];
+'valid-not-sa-021'(_Config) -> {skip, "partly replacement of markupdecls"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/021.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/023.xml
+%% ID: valid-not-sa-023
+%% Type: valid
+%% Sections: 2.3 4.1 [10] [69]
+'valid-not-sa-023'(suite) -> [];
+'valid-not-sa-023'(_Config) -> {skip, "partly replacement of markupdecls"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/023.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/024.xml
+%% ID: valid-not-sa-024
+%% Type: valid
+%% Sections: 2.8, 4.1 [69]
+'valid-not-sa-024'(suite) -> [];
+'valid-not-sa-024'(_Config) -> {skip, "partly replacement of markupdecls"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/024.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/025.xml
+%% ID: valid-not-sa-025
+%% Type: valid
+%% Sections: 4.2
+'valid-not-sa-025'(suite) -> [];
+'valid-not-sa-025'(_Config) -> {skip, "partly replacement of markupdecls"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/025.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/026.xml
+%% ID: valid-not-sa-026
+%% Type: valid
+%% Sections: 3.3 [52]
+'valid-not-sa-026'(suite) -> [];
+'valid-not-sa-026'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/026.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/027.xml
+%% ID: valid-not-sa-027
+%% Type: valid
+%% Sections: 4.1 [69]
+'valid-not-sa-027'(suite) -> [];
+'valid-not-sa-027'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/027.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/028.xml
+%% ID: valid-not-sa-028
+%% Type: valid
+%% Sections: 3.4 [62]
+'valid-not-sa-028'(suite) -> [];
+'valid-not-sa-028'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/028.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/029.xml
+%% ID: valid-not-sa-029
+%% Type: valid
+%% Sections: 3.4 [62]
+'valid-not-sa-029'(suite) -> [];
+'valid-not-sa-029'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/029.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/030.xml
+%% ID: valid-not-sa-030
+%% Type: valid
+%% Sections: 3.4 [62]
+'valid-not-sa-030'(suite) -> [];
+'valid-not-sa-030'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/030.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa/031.xml
+%% ID: valid-not-sa-031
+%% Type: valid
+%% Sections: 2.7
+'valid-not-sa-031'(suite) -> [];
+'valid-not-sa-031'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/not-sa/031.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/001.xml
+%% ID: valid-ext-sa-001
+%% Type: valid
+%% Sections: 2.11
+'valid-ext-sa-001'(suite) -> [];
+'valid-ext-sa-001'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/001.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/002.xml
+%% ID: valid-ext-sa-002
+%% Type: valid
+%% Sections: 2.11
+'valid-ext-sa-002'(suite) -> [];
+'valid-ext-sa-002'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/002.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/003.xml
+%% ID: valid-ext-sa-003
+%% Type: valid
+%% Sections: 3.1 4.1 [43] [68]
+'valid-ext-sa-003'(suite) -> [];
+'valid-ext-sa-003'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/003.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/004.xml
+%% ID: valid-ext-sa-004
+%% Type: valid
+%% Sections: 2.11
+'valid-ext-sa-004'(suite) -> [];
+'valid-ext-sa-004'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/004.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/005.xml
+%% ID: valid-ext-sa-005
+%% Type: valid
+%% Sections: 3.2.1 4.2.2 [48] [75]
+'valid-ext-sa-005'(suite) -> [];
+'valid-ext-sa-005'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/005.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/006.xml
+%% ID: valid-ext-sa-006
+%% Type: valid
+%% Sections: 2.11 3.2.1 3.2.2 4.2.2 [48] [51] [75]
+'valid-ext-sa-006'(suite) -> [];
+'valid-ext-sa-006'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/006.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/007.xml
+%% ID: valid-ext-sa-007
+%% Type: valid
+%% Sections: 4.2.2 4.4.3 [75]
+'valid-ext-sa-007'(suite) -> [];
+'valid-ext-sa-007'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/007.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/008.xml
+%% ID: valid-ext-sa-008
+%% Type: valid
+%% Sections: 4.2.2 4.3.3. 4.4.3 [75] [80]
+'valid-ext-sa-008'(suite) -> [];
+'valid-ext-sa-008'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/008.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/009.xml
+%% ID: valid-ext-sa-009
+%% Type: valid
+%% Sections: 2.11
+'valid-ext-sa-009'(suite) -> [];
+'valid-ext-sa-009'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/009.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/011.xml
+%% ID: valid-ext-sa-011
+%% Type: valid
+%% Sections: 2.11 4.2.2 [75]
+'valid-ext-sa-011'(suite) -> [];
+'valid-ext-sa-011'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/011.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/012.xml
+%% ID: valid-ext-sa-012
+%% Type: valid
+%% Sections: 4.2.1 4.2.2
+'valid-ext-sa-012'(suite) -> [];
+'valid-ext-sa-012'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/012.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/013.xml
+%% ID: valid-ext-sa-013
+%% Type: valid
+%% Sections: 3.3.3
+'valid-ext-sa-013'(suite) -> [];
+'valid-ext-sa-013'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/013.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext-sa/014.xml
+%% ID: valid-ext-sa-014
+%% Type: valid
+%% Sections: 4.1 4.4.3 [68]
+'valid-ext-sa-014'(suite) -> [];
+'valid-ext-sa-014'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"xmltest","valid/ext-sa/014.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: James Clark XMLTEST cases, 18-Nov-1998
+
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: James Clark XML 1.0 Tests
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: pr-xml-euc-jp.xml
+%% ID: pr-xml-euc-jp
+%% Type: error
+%% Sections: 4.3.3 [4,84]
+'pr-xml-euc-jp'(suite) -> [];
+'pr-xml-euc-jp'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","pr-xml-euc-jp.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: pr-xml-iso-2022-jp.xml
+%% ID: pr-xml-iso-2022-jp
+%% Type: error
+%% Sections: 4.3.3 [4,84]
+'pr-xml-iso-2022-jp'(suite) -> [];
+'pr-xml-iso-2022-jp'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","pr-xml-iso-2022-jp.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: pr-xml-little-endian.xml
+%% ID: pr-xml-little
+%% Type: valid
+%% Sections: 4.3.3 [4,84]
+'pr-xml-little'(suite) -> [];
+'pr-xml-little'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","pr-xml-little-endian.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: pr-xml-shift_jis.xml
+%% ID: pr-xml-shift_jis
+%% Type: error
+%% Sections: 4.3.3 [4,84]
+'pr-xml-shift_jis'(suite) -> [];
+'pr-xml-shift_jis'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","pr-xml-shift_jis.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: pr-xml-utf-16.xml
+%% ID: pr-xml-utf-16
+%% Type: valid
+%% Sections: 4.3.3 [4,84]
+'pr-xml-utf-16'(suite) -> [];
+'pr-xml-utf-16'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","pr-xml-utf-16.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: pr-xml-utf-8.xml
+%% ID: pr-xml-utf-8
+%% Type: valid
+%% Sections: 4.3.3 [4,84]
+'pr-xml-utf-8'(suite) -> [];
+'pr-xml-utf-8'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","pr-xml-utf-8.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: weekly-euc-jp.xml
+%% ID: weekly-euc-jp
+%% Type: error
+%% Sections: 4.3.3 [4,84]
+'weekly-euc-jp'(suite) -> [];
+'weekly-euc-jp'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","weekly-euc-jp.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: weekly-iso-2022-jp.xml
+%% ID: weekly-iso-2022-jp
+%% Type: error
+%% Sections: 4.3.3 [4,84]
+'weekly-iso-2022-jp'(suite) -> [];
+'weekly-iso-2022-jp'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","weekly-iso-2022-jp.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: weekly-little-endian.xml
+%% ID: weekly-little
+%% Type: valid
+%% Sections: 4.3.3 [4,84]
+'weekly-little'(suite) -> [];
+'weekly-little'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","weekly-little-endian.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: weekly-shift_jis.xml
+%% ID: weekly-shift_jis
+%% Type: error
+%% Sections: 4.3.3 [4,84]
+'weekly-shift_jis'(suite) -> [];
+'weekly-shift_jis'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","weekly-shift_jis.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: weekly-utf-16.xml
+%% ID: weekly-utf-16
+%% Type: valid
+%% Sections: 4.3.3 [4,84]
+'weekly-utf-16'(suite) -> [];
+'weekly-utf-16'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","weekly-utf-16.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: weekly-utf-8.xml
+%% ID: weekly-utf-8
+%% Type: valid
+%% Sections: 4.3.3 [4,84]
+'weekly-utf-8'(suite) -> [];
+'weekly-utf-8'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"japanese","weekly-utf-8.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: Fuji Xerox Japanese Text Tests
+
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: Fuji Xerox Japanese Text Tests XML 1.0 Tests
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/pe01.xml
+%% ID: pe01
+%% Type: valid
+%% Sections: 2.8
+'pe01'(suite) -> [];
+'pe01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/pe01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/dtd00.xml
+%% ID: dtd00
+%% Type: valid
+%% Sections: 3.2.2 [51]
+'dtd00'(suite) -> [];
+'dtd00'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/dtd00.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/dtd01.xml
+%% ID: dtd01
+%% Type: valid
+%% Sections: 2.5 [15]
+'dtd01'(suite) -> [];
+'dtd01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/dtd01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/element.xml
+%% ID: element
+%% Type: valid
+%% Sections: 3
+'element'(suite) -> [];
+'element'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/element.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext01.xml
+%% ID: ext01
+%% Type: valid
+%% Sections: 4.3.1 4.3.2 [77] [78]
+'ext01'(suite) -> [];
+'ext01'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/ext01.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/ext02.xml
+%% ID: ext02
+%% Type: valid
+%% Sections: 4.3.2 [78]
+'ext02'(suite) -> [];
+'ext02'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/ext02.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa01.xml
+%% ID: not-sa01
+%% Type: valid
+%% Sections: 2.9
+'not-sa01'(suite) -> [];
+'not-sa01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/not-sa01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa02.xml
+%% ID: not-sa02
+%% Type: valid
+%% Sections: 2.9
+'not-sa02'(suite) -> [];
+'not-sa02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/not-sa02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa03.xml
+%% ID: not-sa03
+%% Type: valid
+%% Sections: 2.9
+'not-sa03'(suite) -> [];
+'not-sa03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/not-sa03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/not-sa04.xml
+%% ID: not-sa04
+%% Type: valid
+%% Sections: 2.9
+'not-sa04'(suite) -> [];
+'not-sa04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/not-sa04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/notation01.xml
+%% ID: notation01
+%% Type: valid
+%% Sections: 4.7 [82]
+'notation01'(suite) -> [];
+'notation01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/notation01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/optional.xml
+%% ID: optional
+%% Type: valid
+%% Sections: 3 3.2.1 [47]
+'optional'(suite) -> [];
+'optional'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/optional.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/required00.xml
+%% ID: required00
+%% Type: valid
+%% Sections: 3.3.2 [60]
+'required00'(suite) -> [];
+'required00'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/required00.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa01.xml
+%% ID: sa01
+%% Type: valid
+%% Sections: 2.9 [32]
+'sa01'(suite) -> [];
+'sa01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/sa01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa02.xml
+%% ID: sa02
+%% Type: valid
+%% Sections: 2.9 [32]
+'sa02'(suite) -> [];
+'sa02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/sa02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa03.xml
+%% ID: sa03
+%% Type: valid
+%% Sections: 2.9 [32]
+'sa03'(suite) -> [];
+'sa03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/sa03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa04.xml
+%% ID: sa04
+%% Type: valid
+%% Sections: 2.9 [32]
+'sa04'(suite) -> [];
+'sa04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/sa04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sa05.xml
+%% ID: sa05
+%% Type: valid
+%% Sections: 2.9 [32]
+'sa05'(suite) -> [];
+'sa05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/sa05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/sgml01.xml
+%% ID: v-sgml01
+%% Type: valid
+%% Sections: 3.3.1 [59]
+'v-sgml01'(suite) -> [];
+'v-sgml01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/sgml01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/v-lang01.xml
+%% ID: v-lang01
+%% Type: valid
+%% Sections: 2.12 [35]
+'v-lang01'(suite) -> [];
+'v-lang01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/v-lang01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/v-lang02.xml
+%% ID: v-lang02
+%% Type: valid
+%% Sections: 2.12 [35]
+'v-lang02'(suite) -> [];
+'v-lang02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/v-lang02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/v-lang03.xml
+%% ID: v-lang03
+%% Type: valid
+%% Sections: 2.12 [36]
+'v-lang03'(suite) -> [];
+'v-lang03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/v-lang03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/v-lang04.xml
+%% ID: v-lang04
+%% Type: valid
+%% Sections: 2.12 [37]
+'v-lang04'(suite) -> [];
+'v-lang04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/v-lang04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/v-lang05.xml
+%% ID: v-lang05
+%% Type: valid
+%% Sections: 2.12 [35]
+'v-lang05'(suite) -> [];
+'v-lang05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/v-lang05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/v-lang06.xml
+%% ID: v-lang06
+%% Type: valid
+%% Sections: 2.12 [37]
+'v-lang06'(suite) -> [];
+'v-lang06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/v-lang06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/pe00.xml
+%% ID: v-pe00
+%% Type: valid
+%% Sections: 4.5
+'v-pe00'(suite) -> [];
+'v-pe00'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/pe00.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/pe03.xml
+%% ID: v-pe03
+%% Type: valid
+%% Sections: 4.5
+'v-pe03'(suite) -> [];
+'v-pe03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/pe03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/pe02.xml
+%% ID: v-pe02
+%% Type: valid
+%% Sections: 4.5
+'v-pe02'(suite) -> [];
+'v-pe02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","valid/pe02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/dtd01.xml
+%% ID: inv-dtd01
+%% Type: invalid
+%% Sections: 3.2.2
+'inv-dtd01'(suite) -> [];
+'inv-dtd01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/dtd01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/dtd02.xml
+%% ID: inv-dtd02
+%% Type: invalid
+%% Sections: 4.2.2
+'inv-dtd02'(suite) -> [];
+'inv-dtd02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/dtd02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/dtd03.xml
+%% ID: inv-dtd03
+%% Type: invalid
+%% Sections: 3
+'inv-dtd03'(suite) -> [];
+'inv-dtd03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/dtd03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/el01.xml
+%% ID: el01
+%% Type: invalid
+%% Sections: 3
+'el01'(suite) -> [];
+'el01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/el01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/el02.xml
+%% ID: el02
+%% Type: invalid
+%% Sections: 3
+'el02'(suite) -> [];
+'el02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/el02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/el03.xml
+%% ID: el03
+%% Type: invalid
+%% Sections: 3
+'el03'(suite) -> [];
+'el03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/el03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/el04.xml
+%% ID: el04
+%% Type: invalid
+%% Sections: 3.2
+'el04'(suite) -> [];
+'el04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/el04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/el05.xml
+%% ID: el05
+%% Type: invalid
+%% Sections: 3.2.2
+'el05'(suite) -> [];
+'el05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/el05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/el06.xml
+%% ID: el06
+%% Type: invalid
+%% Sections: 3
+'el06'(suite) -> [];
+'el06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/el06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/id01.xml
+%% ID: id01
+%% Type: invalid
+%% Sections: 3.3.1
+'id01'(suite) -> [];
+'id01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/id01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/id02.xml
+%% ID: id02
+%% Type: invalid
+%% Sections: 3.3.1
+'id02'(suite) -> [];
+'id02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/id02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/id03.xml
+%% ID: id03
+%% Type: invalid
+%% Sections: 3.3.1
+'id03'(suite) -> [];
+'id03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/id03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/id04.xml
+%% ID: id04
+%% Type: invalid
+%% Sections: 3.3.1
+'id04'(suite) -> [];
+'id04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/id04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/id05.xml
+%% ID: id05
+%% Type: invalid
+%% Sections: 3.3.1
+'id05'(suite) -> [];
+'id05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/id05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/id06.xml
+%% ID: id06
+%% Type: invalid
+%% Sections: 3.3.1
+'id06'(suite) -> [];
+'id06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/id06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/id07.xml
+%% ID: id07
+%% Type: invalid
+%% Sections: 3.3.1
+'id07'(suite) -> [];
+'id07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/id07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/id08.xml
+%% ID: id08
+%% Type: invalid
+%% Sections: 3.3.1
+'id08'(suite) -> [];
+'id08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/id08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/id09.xml
+%% ID: id09
+%% Type: invalid
+%% Sections: 3.3.1
+'id09'(suite) -> [];
+'id09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/id09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa01.xml
+%% ID: inv-not-sa01
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa01'(suite) -> [];
+'inv-not-sa01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa02.xml
+%% ID: inv-not-sa02
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa02'(suite) -> [];
+'inv-not-sa02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa04.xml
+%% ID: inv-not-sa04
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa04'(suite) -> [];
+'inv-not-sa04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa05.xml
+%% ID: inv-not-sa05
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa05'(suite) -> [];
+'inv-not-sa05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa06.xml
+%% ID: inv-not-sa06
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa06'(suite) -> [];
+'inv-not-sa06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa07.xml
+%% ID: inv-not-sa07
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa07'(suite) -> [];
+'inv-not-sa07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa08.xml
+%% ID: inv-not-sa08
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa08'(suite) -> [];
+'inv-not-sa08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa09.xml
+%% ID: inv-not-sa09
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa09'(suite) -> [];
+'inv-not-sa09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa10.xml
+%% ID: inv-not-sa10
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa10'(suite) -> [];
+'inv-not-sa10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa11.xml
+%% ID: inv-not-sa11
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa11'(suite) -> [];
+'inv-not-sa11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa12.xml
+%% ID: inv-not-sa12
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa12'(suite) -> [];
+'inv-not-sa12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa13.xml
+%% ID: inv-not-sa13
+%% Type: invalid
+%% Sections: 2.9
+'inv-not-sa13'(suite) -> [];
+'inv-not-sa13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/not-sa14.xml
+%% ID: inv-not-sa14
+%% Type: invalid
+%% Sections: 3
+'inv-not-sa14'(suite) -> [];
+'inv-not-sa14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/not-sa14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional01.xml
+%% ID: optional01
+%% Type: invalid
+%% Sections: 3
+'optional01'(suite) -> [];
+'optional01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional02.xml
+%% ID: optional02
+%% Type: invalid
+%% Sections: 3
+'optional02'(suite) -> [];
+'optional02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional03.xml
+%% ID: optional03
+%% Type: invalid
+%% Sections: 3
+'optional03'(suite) -> [];
+'optional03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional04.xml
+%% ID: optional04
+%% Type: invalid
+%% Sections: 3
+'optional04'(suite) -> [];
+'optional04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional05.xml
+%% ID: optional05
+%% Type: invalid
+%% Sections: 3
+'optional05'(suite) -> [];
+'optional05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional06.xml
+%% ID: optional06
+%% Type: invalid
+%% Sections: 3
+'optional06'(suite) -> [];
+'optional06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional07.xml
+%% ID: optional07
+%% Type: invalid
+%% Sections: 3
+'optional07'(suite) -> [];
+'optional07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional08.xml
+%% ID: optional08
+%% Type: invalid
+%% Sections: 3
+'optional08'(suite) -> [];
+'optional08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional09.xml
+%% ID: optional09
+%% Type: invalid
+%% Sections: 3
+'optional09'(suite) -> [];
+'optional09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional10.xml
+%% ID: optional10
+%% Type: invalid
+%% Sections: 3
+'optional10'(suite) -> [];
+'optional10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional11.xml
+%% ID: optional11
+%% Type: invalid
+%% Sections: 3
+'optional11'(suite) -> [];
+'optional11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional12.xml
+%% ID: optional12
+%% Type: invalid
+%% Sections: 3
+'optional12'(suite) -> [];
+'optional12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional13.xml
+%% ID: optional13
+%% Type: invalid
+%% Sections: 3
+'optional13'(suite) -> [];
+'optional13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional14.xml
+%% ID: optional14
+%% Type: invalid
+%% Sections: 3
+'optional14'(suite) -> [];
+'optional14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional20.xml
+%% ID: optional20
+%% Type: invalid
+%% Sections: 3
+'optional20'(suite) -> [];
+'optional20'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional20.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional21.xml
+%% ID: optional21
+%% Type: invalid
+%% Sections: 3
+'optional21'(suite) -> [];
+'optional21'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional21.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional22.xml
+%% ID: optional22
+%% Type: invalid
+%% Sections: 3
+'optional22'(suite) -> [];
+'optional22'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional22.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional23.xml
+%% ID: optional23
+%% Type: invalid
+%% Sections: 3
+'optional23'(suite) -> [];
+'optional23'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional23.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional24.xml
+%% ID: optional24
+%% Type: invalid
+%% Sections: 3
+'optional24'(suite) -> [];
+'optional24'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional24.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/optional25.xml
+%% ID: optional25
+%% Type: invalid
+%% Sections: 3
+'optional25'(suite) -> [];
+'optional25'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/optional25.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/required00.xml
+%% ID: inv-required00
+%% Type: invalid
+%% Sections: 3.3.2
+'inv-required00'(suite) -> [];
+'inv-required00'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/required00.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/required01.xml
+%% ID: inv-required01
+%% Type: invalid
+%% Sections: 3.1 2.10
+'inv-required01'(suite) -> [];
+'inv-required01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/required01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/required02.xml
+%% ID: inv-required02
+%% Type: invalid
+%% Sections: 3.1 2.12
+'inv-required02'(suite) -> [];
+'inv-required02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/required02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/root.xml
+%% ID: root
+%% Type: invalid
+%% Sections: 2.8
+'root'(suite) -> [];
+'root'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/root.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr01.xml
+%% ID: attr01
+%% Type: invalid
+%% Sections: 3.3.1
+'attr01'(suite) -> [];
+'attr01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr02.xml
+%% ID: attr02
+%% Type: invalid
+%% Sections: 3.3.1
+'attr02'(suite) -> [];
+'attr02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr03.xml
+%% ID: attr03
+%% Type: invalid
+%% Sections: 3.3.1
+'attr03'(suite) -> [];
+'attr03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr04.xml
+%% ID: attr04
+%% Type: invalid
+%% Sections: 3.3.1
+'attr04'(suite) -> [];
+'attr04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr05.xml
+%% ID: attr05
+%% Type: invalid
+%% Sections: 3.3.1
+'attr05'(suite) -> [];
+'attr05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr06.xml
+%% ID: attr06
+%% Type: invalid
+%% Sections: 3.3.1
+'attr06'(suite) -> [];
+'attr06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr07.xml
+%% ID: attr07
+%% Type: invalid
+%% Sections: 3.3.1
+'attr07'(suite) -> [];
+'attr07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr08.xml
+%% ID: attr08
+%% Type: invalid
+%% Sections: 3.3.2
+'attr08'(suite) -> [];
+'attr08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr09.xml
+%% ID: attr09
+%% Type: invalid
+%% Sections: 3.3.2
+'attr09'(suite) -> [];
+'attr09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr10.xml
+%% ID: attr10
+%% Type: invalid
+%% Sections: 3.3.2
+'attr10'(suite) -> [];
+'attr10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr11.xml
+%% ID: attr11
+%% Type: invalid
+%% Sections: 3.3.2
+'attr11'(suite) -> [];
+'attr11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr12.xml
+%% ID: attr12
+%% Type: invalid
+%% Sections: 3.3.2
+'attr12'(suite) -> [];
+'attr12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr13.xml
+%% ID: attr13
+%% Type: invalid
+%% Sections: 3.3.2
+'attr13'(suite) -> [];
+'attr13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr14.xml
+%% ID: attr14
+%% Type: invalid
+%% Sections: 3.3.2
+'attr14'(suite) -> [];
+'attr14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr15.xml
+%% ID: attr15
+%% Type: invalid
+%% Sections: 3.3.2
+'attr15'(suite) -> [];
+'attr15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/attr16.xml
+%% ID: attr16
+%% Type: invalid
+%% Sections: 3.3.2
+'attr16'(suite) -> [];
+'attr16'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/attr16.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/utf16b.xml
+%% ID: utf16b
+%% Type: invalid
+%% Sections: 4.3.3 2.8
+'utf16b'(suite) -> [];
+'utf16b'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/utf16b.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/utf16l.xml
+%% ID: utf16l
+%% Type: invalid
+%% Sections: 4.3.3 2.8
+'utf16l'(suite) -> [];
+'utf16l'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/utf16l.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/empty.xml
+%% ID: empty
+%% Type: invalid
+%% Sections: 2.4 2.7 [18] 3
+'empty'(suite) -> [];
+'empty'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","invalid/empty.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/not-sa03.xml
+%% ID: not-wf-sa03
+%% Type: not-wf
+%% Sections: 2.9
+'not-wf-sa03'(suite) -> [];
+'not-wf-sa03'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/not-sa03.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist01.xml
+%% ID: attlist01
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'attlist01'(suite) -> [];
+'attlist01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist02.xml
+%% ID: attlist02
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'attlist02'(suite) -> [];
+'attlist02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist03.xml
+%% ID: attlist03
+%% Type: not-wf
+%% Sections: 3.3.1 [59]
+'attlist03'(suite) -> [];
+'attlist03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist04.xml
+%% ID: attlist04
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'attlist04'(suite) -> [];
+'attlist04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist05.xml
+%% ID: attlist05
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'attlist05'(suite) -> [];
+'attlist05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist06.xml
+%% ID: attlist06
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'attlist06'(suite) -> [];
+'attlist06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist07.xml
+%% ID: attlist07
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'attlist07'(suite) -> [];
+'attlist07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist08.xml
+%% ID: attlist08
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'attlist08'(suite) -> [];
+'attlist08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist09.xml
+%% ID: attlist09
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'attlist09'(suite) -> [];
+'attlist09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist10.xml
+%% ID: attlist10
+%% Type: not-wf
+%% Sections: 3.1 [40]
+'attlist10'(suite) -> [];
+'attlist10'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist10.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/attlist11.xml
+%% ID: attlist11
+%% Type: not-wf
+%% Sections: 3.1 [44]
+'attlist11'(suite) -> [];
+'attlist11'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/attlist11.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/cond01.xml
+%% ID: cond01
+%% Type: not-wf
+%% Sections: 3.4 [61]
+'cond01'(suite) -> [];
+'cond01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/cond01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/cond02.xml
+%% ID: cond02
+%% Type: not-wf
+%% Sections: 3.4 [61]
+'cond02'(suite) -> [];
+'cond02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/cond02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/content01.xml
+%% ID: content01
+%% Type: not-wf
+%% Sections: 3.2.1 [48]
+'content01'(suite) -> [];
+'content01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/content01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/content02.xml
+%% ID: content02
+%% Type: not-wf
+%% Sections: 3.2.1 [48]
+'content02'(suite) -> [];
+'content02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/content02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/content03.xml
+%% ID: content03
+%% Type: not-wf
+%% Sections: 3.2.1 [48]
+'content03'(suite) -> [];
+'content03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/content03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/decl01.xml
+%% ID: decl01
+%% Type: not-wf
+%% Sections: 4.3.1 [77]
+'decl01'(suite) -> [];
+'decl01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/decl01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/dtd00.xml
+%% ID: nwf-dtd00
+%% Type: not-wf
+%% Sections: 3.2.1 [55]
+'nwf-dtd00'(suite) -> [];
+'nwf-dtd00'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/dtd00.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/dtd01.xml
+%% ID: nwf-dtd01
+%% Type: not-wf
+%% Sections: 3.2.1 [55]
+'nwf-dtd01'(suite) -> [];
+'nwf-dtd01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/dtd01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/dtd02.xml
+%% ID: dtd02
+%% Type: not-wf
+%% Sections: 4.1 [69]
+'dtd02'(suite) -> [];
+'dtd02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/dtd02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/dtd03.xml
+%% ID: dtd03
+%% Type: not-wf
+%% Sections: 4.1 [69]
+'dtd03'(suite) -> [];
+'dtd03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/dtd03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/dtd04.xml
+%% ID: dtd04
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'dtd04'(suite) -> [];
+'dtd04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/dtd04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/dtd05.xml
+%% ID: dtd05
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'dtd05'(suite) -> [];
+'dtd05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/dtd05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/dtd07.xml
+%% ID: dtd07
+%% Type: not-wf
+%% Sections: 4.3.1 [77]
+'dtd07'(suite) -> [];
+'dtd07'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/dtd07.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/element00.xml
+%% ID: element00
+%% Type: not-wf
+%% Sections: 3.1 [42]
+'element00'(suite) -> [];
+'element00'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/element00.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/element01.xml
+%% ID: element01
+%% Type: not-wf
+%% Sections: 3.1 [42]
+'element01'(suite) -> [];
+'element01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/element01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/element02.xml
+%% ID: element02
+%% Type: not-wf
+%% Sections: 3.1 [43]
+'element02'(suite) -> [];
+'element02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/element02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/element03.xml
+%% ID: element03
+%% Type: not-wf
+%% Sections: 3.1 [43]
+'element03'(suite) -> [];
+'element03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/element03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/element04.xml
+%% ID: element04
+%% Type: not-wf
+%% Sections: 3.1 [43]
+'element04'(suite) -> [];
+'element04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/element04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/encoding01.xml
+%% ID: encoding01
+%% Type: not-wf
+%% Sections: 4.3.3 [81]
+'encoding01'(suite) -> [];
+'encoding01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/encoding01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/encoding02.xml
+%% ID: encoding02
+%% Type: not-wf
+%% Sections: 4.3.3 [81]
+'encoding02'(suite) -> [];
+'encoding02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/encoding02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/encoding03.xml
+%% ID: encoding03
+%% Type: not-wf
+%% Sections: 4.3.3 [81]
+'encoding03'(suite) -> [];
+'encoding03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/encoding03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/encoding04.xml
+%% ID: encoding04
+%% Type: not-wf
+%% Sections: 4.3.3 [81]
+'encoding04'(suite) -> [];
+'encoding04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/encoding04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/encoding05.xml
+%% ID: encoding05
+%% Type: not-wf
+%% Sections: 4.3.3 [81]
+'encoding05'(suite) -> [];
+'encoding05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/encoding05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/encoding06.xml
+%% ID: encoding06
+%% Type: not-wf
+%% Sections: 4.3.3 [81]
+'encoding06'(suite) -> [];
+'encoding06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/encoding06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/encoding07.xml
+%% ID: encoding07
+%% Type: not-wf
+%% Sections: 4.3.1 [77]
+'encoding07'(suite) -> [];
+'encoding07'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/encoding07.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/pi.xml
+%% ID: pi
+%% Type: not-wf
+%% Sections: 2.6 [16]
+'pi'(suite) -> [];
+'pi'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/pi.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/pubid01.xml
+%% ID: pubid01
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'pubid01'(suite) -> [];
+'pubid01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/pubid01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/pubid02.xml
+%% ID: pubid02
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'pubid02'(suite) -> [];
+'pubid02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/pubid02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/pubid03.xml
+%% ID: pubid03
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'pubid03'(suite) -> [];
+'pubid03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/pubid03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/pubid04.xml
+%% ID: pubid04
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'pubid04'(suite) -> [];
+'pubid04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/pubid04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/pubid05.xml
+%% ID: pubid05
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'pubid05'(suite) -> [];
+'pubid05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/pubid05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml01.xml
+%% ID: sgml01
+%% Type: not-wf
+%% Sections: 3 [39]
+'sgml01'(suite) -> [];
+'sgml01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml02.xml
+%% ID: sgml02
+%% Type: not-wf
+%% Sections: 2.8
+'sgml02'(suite) -> [];
+'sgml02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml03.xml
+%% ID: sgml03
+%% Type: not-wf
+%% Sections: 2.5 [15]
+'sgml03'(suite) -> [];
+'sgml03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml04.xml
+%% ID: sgml04
+%% Type: not-wf
+%% Sections: 3.3 [52]
+'sgml04'(suite) -> [];
+'sgml04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml05.xml
+%% ID: sgml05
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'sgml05'(suite) -> [];
+'sgml05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml06.xml
+%% ID: sgml06
+%% Type: not-wf
+%% Sections: 3.3 [52]
+'sgml06'(suite) -> [];
+'sgml06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml07.xml
+%% ID: sgml07
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'sgml07'(suite) -> [];
+'sgml07'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml07.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml08.xml
+%% ID: sgml08
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'sgml08'(suite) -> [];
+'sgml08'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml08.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml09.xml
+%% ID: sgml09
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'sgml09'(suite) -> [];
+'sgml09'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml09.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml10.xml
+%% ID: sgml10
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'sgml10'(suite) -> [];
+'sgml10'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml10.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml11.xml
+%% ID: sgml11
+%% Type: not-wf
+%% Sections: 3.2 [46]
+'sgml11'(suite) -> [];
+'sgml11'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml11.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml12.xml
+%% ID: sgml12
+%% Type: not-wf
+%% Sections: 3.2 [46]
+'sgml12'(suite) -> [];
+'sgml12'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml12.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/sgml13.xml
+%% ID: sgml13
+%% Type: not-wf
+%% Sections: 3.2.1 [47]
+'sgml13'(suite) -> [];
+'sgml13'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/sgml13.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/uri01.xml
+%% ID: uri01
+%% Type: error
+%% Sections: 4.2.2 [75]
+'uri01'(suite) -> [];
+'uri01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"sun","not-wf/uri01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: Sun Microsystems XML Tests
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p01pass2.xml
+%% ID: o-p01pass2
+%% Type: valid
+%% Sections: 2.2 [1]
+'o-p01pass2'(suite) -> [];
+'o-p01pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p01pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p06pass1.xml
+%% ID: o-p06pass1
+%% Type: valid
+%% Sections: 2.3 [6]
+'o-p06pass1'(suite) -> [];
+'o-p06pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p06pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p07pass1.xml
+%% ID: o-p07pass1
+%% Type: valid
+%% Sections: 2.3 [7]
+'o-p07pass1'(suite) -> [];
+'o-p07pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p07pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p08pass1.xml
+%% ID: o-p08pass1
+%% Type: valid
+%% Sections: 2.3 [8]
+'o-p08pass1'(suite) -> [];
+'o-p08pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p08pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p09pass1.xml
+%% ID: o-p09pass1
+%% Type: valid
+%% Sections: 2.3 [9]
+'o-p09pass1'(suite) -> [];
+'o-p09pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p09pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p12pass1.xml
+%% ID: o-p12pass1
+%% Type: valid
+%% Sections: 2.3 [12]
+'o-p12pass1'(suite) -> [];
+'o-p12pass1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p12pass1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p22pass4.xml
+%% ID: o-p22pass4
+%% Type: valid
+%% Sections: 2.8 [22]
+'o-p22pass4'(suite) -> [];
+'o-p22pass4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p22pass4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p22pass5.xml
+%% ID: o-p22pass5
+%% Type: valid
+%% Sections: 2.8 [22]
+'o-p22pass5'(suite) -> [];
+'o-p22pass5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p22pass5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p22pass6.xml
+%% ID: o-p22pass6
+%% Type: valid
+%% Sections: 2.8 [22]
+'o-p22pass6'(suite) -> [];
+'o-p22pass6'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p22pass6.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p28pass1.xml
+%% ID: o-p28pass1
+%% Type: valid
+%% Sections: 3.1 [43] [44]
+'o-p28pass1'(suite) -> [];
+'o-p28pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p28pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p28pass3.xml
+%% ID: o-p28pass3
+%% Type: valid
+%% Sections: 2.8 4.1 [28] [69]
+'o-p28pass3'(suite) -> [];
+'o-p28pass3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p28pass3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p28pass4.xml
+%% ID: o-p28pass4
+%% Type: valid
+%% Sections: 2.8 4.2.2 [28] [75]
+'o-p28pass4'(suite) -> [];
+'o-p28pass4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p28pass4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p28pass5.xml
+%% ID: o-p28pass5
+%% Type: valid
+%% Sections: 2.8 4.1 [28] [69]
+'o-p28pass5'(suite) -> [];
+'o-p28pass5'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p28pass5.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p29pass1.xml
+%% ID: o-p29pass1
+%% Type: valid
+%% Sections: 2.8 [29]
+'o-p29pass1'(suite) -> [];
+'o-p29pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p29pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p30pass1.xml
+%% ID: o-p30pass1
+%% Type: valid
+%% Sections: 2.8 4.2.2 [30] [75]
+'o-p30pass1'(suite) -> [];
+'o-p30pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p30pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p30pass2.xml
+%% ID: o-p30pass2
+%% Type: valid
+%% Sections: 2.8 4.2.2 4.3.1 [30] [75] [77]
+'o-p30pass2'(suite) -> [];
+'o-p30pass2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p30pass2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p31pass1.xml
+%% ID: o-p31pass1
+%% Type: valid
+%% Sections: 2.8 [31]
+'o-p31pass1'(suite) -> [];
+'o-p31pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p31pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p31pass2.xml
+%% ID: o-p31pass2
+%% Type: valid
+%% Sections: 2.8 3.4 4.2.2 [31] [62] [63] [75]
+'o-p31pass2'(suite) -> [];
+'o-p31pass2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p31pass2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p43pass1.xml
+%% ID: o-p43pass1
+%% Type: valid
+%% Sections: 2.4 2.5 2.6 2.7 [15] [16] [18]
+'o-p43pass1'(suite) -> [];
+'o-p43pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p43pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p45pass1.xml
+%% ID: o-p45pass1
+%% Type: valid
+%% Sections: 3.2 [45]
+'o-p45pass1'(suite) -> [];
+'o-p45pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p45pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p46pass1.xml
+%% ID: o-p46pass1
+%% Type: valid
+%% Sections: 3.2 3.2.1 3.2.2 [45] [46] [47] [51]
+'o-p46pass1'(suite) -> [];
+'o-p46pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p46pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p47pass1.xml
+%% ID: o-p47pass1
+%% Type: valid
+%% Sections: 3.2 3.2.1 [45] [46] [47]
+'o-p47pass1'(suite) -> [];
+'o-p47pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p47pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p48pass1.xml
+%% ID: o-p48pass1
+%% Type: valid
+%% Sections: 3.2 3.2.1 [45] [46] [47]
+'o-p48pass1'(suite) -> [];
+'o-p48pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p48pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p49pass1.xml
+%% ID: o-p49pass1
+%% Type: valid
+%% Sections: 3.2 3.2.1 [45] [46] [47]
+'o-p49pass1'(suite) -> [];
+'o-p49pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p49pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p50pass1.xml
+%% ID: o-p50pass1
+%% Type: valid
+%% Sections: 3.2 3.2.1 [45] [46] [47]
+'o-p50pass1'(suite) -> [];
+'o-p50pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p50pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p51pass1.xml
+%% ID: o-p51pass1
+%% Type: valid
+%% Sections: 3.2.2 [51]
+'o-p51pass1'(suite) -> [];
+'o-p51pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p51pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p52pass1.xml
+%% ID: o-p52pass1
+%% Type: valid
+%% Sections: 3.3 [52]
+'o-p52pass1'(suite) -> [];
+'o-p52pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p52pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p53pass1.xml
+%% ID: o-p53pass1
+%% Type: valid
+%% Sections: 3.3 [53]
+'o-p53pass1'(suite) -> [];
+'o-p53pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p53pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p54pass1.xml
+%% ID: o-p54pass1
+%% Type: valid
+%% Sections: 3.3.1 [54]
+'o-p54pass1'(suite) -> [];
+'o-p54pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p54pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p55pass1.xml
+%% ID: o-p55pass1
+%% Type: valid
+%% Sections: 3.3.1 [55]
+'o-p55pass1'(suite) -> [];
+'o-p55pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p55pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p56pass1.xml
+%% ID: o-p56pass1
+%% Type: valid
+%% Sections: 3.3.1 [56]
+'o-p56pass1'(suite) -> [];
+'o-p56pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p56pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p57pass1.xml
+%% ID: o-p57pass1
+%% Type: valid
+%% Sections: 3.3.1 [57]
+'o-p57pass1'(suite) -> [];
+'o-p57pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p57pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p58pass1.xml
+%% ID: o-p58pass1
+%% Type: valid
+%% Sections: 3.3.1 [58]
+'o-p58pass1'(suite) -> [];
+'o-p58pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p58pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p59pass1.xml
+%% ID: o-p59pass1
+%% Type: valid
+%% Sections: 3.3.1 [59]
+'o-p59pass1'(suite) -> [];
+'o-p59pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p59pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p60pass1.xml
+%% ID: o-p60pass1
+%% Type: valid
+%% Sections: 3.3.2 [60]
+'o-p60pass1'(suite) -> [];
+'o-p60pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p60pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p61pass1.xml
+%% ID: o-p61pass1
+%% Type: valid
+%% Sections: 3.4 [61]
+'o-p61pass1'(suite) -> [];
+'o-p61pass1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p61pass1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p62pass1.xml
+%% ID: o-p62pass1
+%% Type: valid
+%% Sections: 3.4 [62]
+'o-p62pass1'(suite) -> [];
+'o-p62pass1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p62pass1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p63pass1.xml
+%% ID: o-p63pass1
+%% Type: valid
+%% Sections: 3.4 [63]
+'o-p63pass1'(suite) -> [];
+'o-p63pass1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p63pass1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p64pass1.xml
+%% ID: o-p64pass1
+%% Type: valid
+%% Sections: 3.4 [64]
+'o-p64pass1'(suite) -> [];
+'o-p64pass1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p64pass1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p68pass1.xml
+%% ID: o-p68pass1
+%% Type: valid
+%% Sections: 4.1 [68]
+'o-p68pass1'(suite) -> [];
+'o-p68pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p68pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p69pass1.xml
+%% ID: o-p69pass1
+%% Type: valid
+%% Sections: 4.1 [69]
+'o-p69pass1'(suite) -> [];
+'o-p69pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p69pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p70pass1.xml
+%% ID: o-p70pass1
+%% Type: valid
+%% Sections: 4.2 [70]
+'o-p70pass1'(suite) -> [];
+'o-p70pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p70pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p71pass1.xml
+%% ID: o-p71pass1
+%% Type: valid
+%% Sections: 4.2 [71]
+'o-p71pass1'(suite) -> [];
+'o-p71pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p71pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p72pass1.xml
+%% ID: o-p72pass1
+%% Type: valid
+%% Sections: 4.2 [72]
+'o-p72pass1'(suite) -> [];
+'o-p72pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p72pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p73pass1.xml
+%% ID: o-p73pass1
+%% Type: valid
+%% Sections: 4.2 [73]
+'o-p73pass1'(suite) -> [];
+'o-p73pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p73pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p76pass1.xml
+%% ID: o-p76pass1
+%% Type: valid
+%% Sections: 4.2.2 [76]
+'o-p76pass1'(suite) -> [];
+'o-p76pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p76pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p01pass1.xml
+%% ID: o-p01pass1
+%% Type: invalid
+%% Sections: 2.1 [1]
+'o-p01pass1'(suite) -> [];
+'o-p01pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p01pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p01pass3.xml
+%% ID: o-p01pass3
+%% Type: invalid
+%% Sections: 2.1 [1]
+'o-p01pass3'(suite) -> [];
+'o-p01pass3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p01pass3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03pass1.xml
+%% ID: o-p03pass1
+%% Type: invalid
+%% Sections: 2.3 [3]
+'o-p03pass1'(suite) -> [];
+'o-p03pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p04pass1.xml
+%% ID: o-p04pass1
+%% Type: invalid
+%% Sections: 2.3 [4]
+'o-p04pass1'(suite) -> [];
+'o-p04pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p04pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p05pass1.xml
+%% ID: o-p05pass1
+%% Type: invalid
+%% Sections: 2.3 [5]
+'o-p05pass1'(suite) -> [];
+'o-p05pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p05pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p06fail1.xml
+%% ID: o-p06fail1
+%% Type: invalid
+%% Sections: 2.3 [6]
+'o-p06fail1'(suite) -> [];
+'o-p06fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p06fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p08fail1.xml
+%% ID: o-p08fail1
+%% Type: invalid
+%% Sections: 2.3 [8]
+'o-p08fail1'(suite) -> [];
+'o-p08fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p08fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p08fail2.xml
+%% ID: o-p08fail2
+%% Type: invalid
+%% Sections: 2.3 [8]
+'o-p08fail2'(suite) -> [];
+'o-p08fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p08fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p10pass1.xml
+%% ID: o-p10pass1
+%% Type: invalid
+%% Sections: 2.3 [10]
+'o-p10pass1'(suite) -> [];
+'o-p10pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p10pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p14pass1.xml
+%% ID: o-p14pass1
+%% Type: invalid
+%% Sections: 2.4 [14]
+'o-p14pass1'(suite) -> [];
+'o-p14pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p14pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p15pass1.xml
+%% ID: o-p15pass1
+%% Type: invalid
+%% Sections: 2.5 [15]
+'o-p15pass1'(suite) -> [];
+'o-p15pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p15pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p16pass1.xml
+%% ID: o-p16pass1
+%% Type: invalid
+%% Sections: 2.6 [16] [17]
+'o-p16pass1'(suite) -> [];
+'o-p16pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p16pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p16pass2.xml
+%% ID: o-p16pass2
+%% Type: invalid
+%% Sections: 2.6 [16]
+'o-p16pass2'(suite) -> [];
+'o-p16pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p16pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p16pass3.xml
+%% ID: o-p16pass3
+%% Type: invalid
+%% Sections: 2.6 [16]
+'o-p16pass3'(suite) -> [];
+'o-p16pass3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p16pass3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p18pass1.xml
+%% ID: o-p18pass1
+%% Type: invalid
+%% Sections: 2.7 [18]
+'o-p18pass1'(suite) -> [];
+'o-p18pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p18pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p22pass1.xml
+%% ID: o-p22pass1
+%% Type: invalid
+%% Sections: 2.8 [22]
+'o-p22pass1'(suite) -> [];
+'o-p22pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p22pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p22pass2.xml
+%% ID: o-p22pass2
+%% Type: invalid
+%% Sections: 2.8 [22]
+'o-p22pass2'(suite) -> [];
+'o-p22pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p22pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p22pass3.xml
+%% ID: o-p22pass3
+%% Type: invalid
+%% Sections: 2.8 [22]
+'o-p22pass3'(suite) -> [];
+'o-p22pass3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p22pass3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p23pass1.xml
+%% ID: o-p23pass1
+%% Type: invalid
+%% Sections: 2.8 [23]
+'o-p23pass1'(suite) -> [];
+'o-p23pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p23pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p23pass2.xml
+%% ID: o-p23pass2
+%% Type: invalid
+%% Sections: 2.8 [23]
+'o-p23pass2'(suite) -> [];
+'o-p23pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p23pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p23pass3.xml
+%% ID: o-p23pass3
+%% Type: invalid
+%% Sections: 2.8 [23]
+'o-p23pass3'(suite) -> [];
+'o-p23pass3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p23pass3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p23pass4.xml
+%% ID: o-p23pass4
+%% Type: invalid
+%% Sections: 2.8 [23]
+'o-p23pass4'(suite) -> [];
+'o-p23pass4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p23pass4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p24pass1.xml
+%% ID: o-p24pass1
+%% Type: invalid
+%% Sections: 2.8 [24]
+'o-p24pass1'(suite) -> [];
+'o-p24pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p24pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p24pass2.xml
+%% ID: o-p24pass2
+%% Type: invalid
+%% Sections: 2.8 [24]
+'o-p24pass2'(suite) -> [];
+'o-p24pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p24pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p24pass3.xml
+%% ID: o-p24pass3
+%% Type: invalid
+%% Sections: 2.8 [24]
+'o-p24pass3'(suite) -> [];
+'o-p24pass3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p24pass3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p24pass4.xml
+%% ID: o-p24pass4
+%% Type: invalid
+%% Sections: 2.8 [24]
+'o-p24pass4'(suite) -> [];
+'o-p24pass4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p24pass4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p25pass1.xml
+%% ID: o-p25pass1
+%% Type: invalid
+%% Sections: 2.8 [25]
+'o-p25pass1'(suite) -> [];
+'o-p25pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p25pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p25pass2.xml
+%% ID: o-p25pass2
+%% Type: invalid
+%% Sections: 2.8 [25]
+'o-p25pass2'(suite) -> [];
+'o-p25pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p25pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p26pass1.xml
+%% ID: o-p26pass1
+%% Type: invalid
+%% Sections: 2.8 [26]
+'o-p26pass1'(suite) -> [];
+'o-p26pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p26pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p27pass1.xml
+%% ID: o-p27pass1
+%% Type: invalid
+%% Sections: 2.8 [27]
+'o-p27pass1'(suite) -> [];
+'o-p27pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p27pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p27pass2.xml
+%% ID: o-p27pass2
+%% Type: invalid
+%% Sections: 2.8 [27]
+'o-p27pass2'(suite) -> [];
+'o-p27pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p27pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p27pass3.xml
+%% ID: o-p27pass3
+%% Type: invalid
+%% Sections: 2.8 [27]
+'o-p27pass3'(suite) -> [];
+'o-p27pass3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p27pass3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p27pass4.xml
+%% ID: o-p27pass4
+%% Type: invalid
+%% Sections: 2.8 [27]
+'o-p27pass4'(suite) -> [];
+'o-p27pass4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p27pass4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p32pass1.xml
+%% ID: o-p32pass1
+%% Type: invalid
+%% Sections: 2.9 [32]
+'o-p32pass1'(suite) -> [];
+'o-p32pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p32pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p32pass2.xml
+%% ID: o-p32pass2
+%% Type: invalid
+%% Sections: 2.9 [32]
+'o-p32pass2'(suite) -> [];
+'o-p32pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p32pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p39pass1.xml
+%% ID: o-p39pass1
+%% Type: invalid
+%% Sections: 3 3.1 [39] [44]
+'o-p39pass1'(suite) -> [];
+'o-p39pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p39pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p39pass2.xml
+%% ID: o-p39pass2
+%% Type: invalid
+%% Sections: 3 3.1 [39] [43]
+'o-p39pass2'(suite) -> [];
+'o-p39pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p39pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p40pass1.xml
+%% ID: o-p40pass1
+%% Type: invalid
+%% Sections: 3.1 [40]
+'o-p40pass1'(suite) -> [];
+'o-p40pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p40pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p40pass2.xml
+%% ID: o-p40pass2
+%% Type: invalid
+%% Sections: 3.1 [40]
+'o-p40pass2'(suite) -> [];
+'o-p40pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p40pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p40pass3.xml
+%% ID: o-p40pass3
+%% Type: invalid
+%% Sections: 3.1 [40] [41]
+'o-p40pass3'(suite) -> [];
+'o-p40pass3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p40pass3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p40pass4.xml
+%% ID: o-p40pass4
+%% Type: invalid
+%% Sections: 3.1 [40]
+'o-p40pass4'(suite) -> [];
+'o-p40pass4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p40pass4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p41pass1.xml
+%% ID: o-p41pass1
+%% Type: invalid
+%% Sections: 3.1 [41]
+'o-p41pass1'(suite) -> [];
+'o-p41pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p41pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p41pass2.xml
+%% ID: o-p41pass2
+%% Type: invalid
+%% Sections: 3.1 [41]
+'o-p41pass2'(suite) -> [];
+'o-p41pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p41pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p42pass1.xml
+%% ID: o-p42pass1
+%% Type: invalid
+%% Sections: 3.1 [42]
+'o-p42pass1'(suite) -> [];
+'o-p42pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p42pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p42pass2.xml
+%% ID: o-p42pass2
+%% Type: invalid
+%% Sections: 3.1 [42]
+'o-p42pass2'(suite) -> [];
+'o-p42pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p42pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44pass1.xml
+%% ID: o-p44pass1
+%% Type: invalid
+%% Sections: 3.1 [44]
+'o-p44pass1'(suite) -> [];
+'o-p44pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44pass2.xml
+%% ID: o-p44pass2
+%% Type: invalid
+%% Sections: 3.1 [44]
+'o-p44pass2'(suite) -> [];
+'o-p44pass2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44pass2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44pass3.xml
+%% ID: o-p44pass3
+%% Type: invalid
+%% Sections: 3.1 [44]
+'o-p44pass3'(suite) -> [];
+'o-p44pass3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44pass3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44pass4.xml
+%% ID: o-p44pass4
+%% Type: invalid
+%% Sections: 3.1 [44]
+'o-p44pass4'(suite) -> [];
+'o-p44pass4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44pass4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44pass5.xml
+%% ID: o-p44pass5
+%% Type: invalid
+%% Sections: 3.1 [44]
+'o-p44pass5'(suite) -> [];
+'o-p44pass5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44pass5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p66pass1.xml
+%% ID: o-p66pass1
+%% Type: invalid
+%% Sections: 4.1 [66]
+'o-p66pass1'(suite) -> [];
+'o-p66pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p66pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p74pass1.xml
+%% ID: o-p74pass1
+%% Type: invalid
+%% Sections: 4.2 [74]
+'o-p74pass1'(suite) -> [];
+'o-p74pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p74pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p75pass1.xml
+%% ID: o-p75pass1
+%% Type: invalid
+%% Sections: 4.2.2 [75]
+'o-p75pass1'(suite) -> [];
+'o-p75pass1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p75pass1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: e2.xml
+%% ID: o-e2
+%% Type: invalid
+%% Sections: 3.3.1 [58] [59] Errata [E2]
+'o-e2'(suite) -> [];
+'o-e2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","e2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p01fail1.xml
+%% ID: o-p01fail1
+%% Type: not-wf
+%% Sections: 2.1 [1]
+'o-p01fail1'(suite) -> [];
+'o-p01fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p01fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p01fail2.xml
+%% ID: o-p01fail2
+%% Type: not-wf
+%% Sections: 2.1 [1]
+'o-p01fail2'(suite) -> [];
+'o-p01fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p01fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p01fail3.xml
+%% ID: o-p01fail3
+%% Type: not-wf
+%% Sections: 2.1 [1]
+'o-p01fail3'(suite) -> [];
+'o-p01fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p01fail3.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_, <<"<bad/>", _/binary>>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p01fail4.xml
+%% ID: o-p01fail4
+%% Type: not-wf
+%% Sections: 2.1 [1]
+'o-p01fail4'(suite) -> [];
+'o-p01fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p01fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail1.xml
+%% ID: o-p02fail1
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail1'(suite) -> [];
+'o-p02fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail10.xml
+%% ID: o-p02fail10
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail10'(suite) -> [];
+'o-p02fail10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail11.xml
+%% ID: o-p02fail11
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail11'(suite) -> [];
+'o-p02fail11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail12.xml
+%% ID: o-p02fail12
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail12'(suite) -> [];
+'o-p02fail12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail13.xml
+%% ID: o-p02fail13
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail13'(suite) -> [];
+'o-p02fail13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail14.xml
+%% ID: o-p02fail14
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail14'(suite) -> [];
+'o-p02fail14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail15.xml
+%% ID: o-p02fail15
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail15'(suite) -> [];
+'o-p02fail15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail16.xml
+%% ID: o-p02fail16
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail16'(suite) -> [];
+'o-p02fail16'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail16.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail17.xml
+%% ID: o-p02fail17
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail17'(suite) -> [];
+'o-p02fail17'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail17.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail18.xml
+%% ID: o-p02fail18
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail18'(suite) -> [];
+'o-p02fail18'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail18.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail19.xml
+%% ID: o-p02fail19
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail19'(suite) -> [];
+'o-p02fail19'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail19.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail2.xml
+%% ID: o-p02fail2
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail2'(suite) -> [];
+'o-p02fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail20.xml
+%% ID: o-p02fail20
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail20'(suite) -> [];
+'o-p02fail20'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail20.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail21.xml
+%% ID: o-p02fail21
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail21'(suite) -> [];
+'o-p02fail21'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail21.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail22.xml
+%% ID: o-p02fail22
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail22'(suite) -> [];
+'o-p02fail22'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail22.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail23.xml
+%% ID: o-p02fail23
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail23'(suite) -> [];
+'o-p02fail23'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail23.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail24.xml
+%% ID: o-p02fail24
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail24'(suite) -> [];
+'o-p02fail24'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail24.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail25.xml
+%% ID: o-p02fail25
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail25'(suite) -> [];
+'o-p02fail25'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail25.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail26.xml
+%% ID: o-p02fail26
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail26'(suite) -> [];
+'o-p02fail26'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail26.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail27.xml
+%% ID: o-p02fail27
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail27'(suite) -> [];
+'o-p02fail27'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail27.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail28.xml
+%% ID: o-p02fail28
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail28'(suite) -> [];
+'o-p02fail28'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail28.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail29.xml
+%% ID: o-p02fail29
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail29'(suite) -> [];
+'o-p02fail29'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail29.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail3.xml
+%% ID: o-p02fail3
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail3'(suite) -> [];
+'o-p02fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail30.xml
+%% ID: o-p02fail30
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail30'(suite) -> [];
+'o-p02fail30'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail30.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail31.xml
+%% ID: o-p02fail31
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail31'(suite) -> [];
+'o-p02fail31'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail31.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail4.xml
+%% ID: o-p02fail4
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail4'(suite) -> [];
+'o-p02fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail5.xml
+%% ID: o-p02fail5
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail5'(suite) -> [];
+'o-p02fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail6.xml
+%% ID: o-p02fail6
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail6'(suite) -> [];
+'o-p02fail6'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail6.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail7.xml
+%% ID: o-p02fail7
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail7'(suite) -> [];
+'o-p02fail7'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail7.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail8.xml
+%% ID: o-p02fail8
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail8'(suite) -> [];
+'o-p02fail8'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail8.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p02fail9.xml
+%% ID: o-p02fail9
+%% Type: not-wf
+%% Sections: 2.2 [2]
+'o-p02fail9'(suite) -> [];
+'o-p02fail9'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p02fail9.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail1.xml
+%% ID: o-p03fail1
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail1'(suite) -> [];
+'o-p03fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail10.xml
+%% ID: o-p03fail10
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail10'(suite) -> [];
+'o-p03fail10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail11.xml
+%% ID: o-p03fail11
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail11'(suite) -> [];
+'o-p03fail11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail12.xml
+%% ID: o-p03fail12
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail12'(suite) -> [];
+'o-p03fail12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail13.xml
+%% ID: o-p03fail13
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail13'(suite) -> [];
+'o-p03fail13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail14.xml
+%% ID: o-p03fail14
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail14'(suite) -> [];
+'o-p03fail14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail15.xml
+%% ID: o-p03fail15
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail15'(suite) -> [];
+'o-p03fail15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail16.xml
+%% ID: o-p03fail16
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail16'(suite) -> [];
+'o-p03fail16'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail16.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail17.xml
+%% ID: o-p03fail17
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail17'(suite) -> [];
+'o-p03fail17'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail17.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail18.xml
+%% ID: o-p03fail18
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail18'(suite) -> [];
+'o-p03fail18'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail18.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail19.xml
+%% ID: o-p03fail19
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail19'(suite) -> [];
+'o-p03fail19'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail19.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail2.xml
+%% ID: o-p03fail2
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail2'(suite) -> [];
+'o-p03fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail20.xml
+%% ID: o-p03fail20
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail20'(suite) -> [];
+'o-p03fail20'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail20.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail21.xml
+%% ID: o-p03fail21
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail21'(suite) -> [];
+'o-p03fail21'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail21.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail22.xml
+%% ID: o-p03fail22
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail22'(suite) -> [];
+'o-p03fail22'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail22.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail23.xml
+%% ID: o-p03fail23
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail23'(suite) -> [];
+'o-p03fail23'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail23.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail24.xml
+%% ID: o-p03fail24
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail24'(suite) -> [];
+'o-p03fail24'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail24.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail25.xml
+%% ID: o-p03fail25
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail25'(suite) -> [];
+'o-p03fail25'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail25.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail26.xml
+%% ID: o-p03fail26
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail26'(suite) -> [];
+'o-p03fail26'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail26.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail27.xml
+%% ID: o-p03fail27
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail27'(suite) -> [];
+'o-p03fail27'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail27.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail28.xml
+%% ID: o-p03fail28
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail28'(suite) -> [];
+'o-p03fail28'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail28.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail29.xml
+%% ID: o-p03fail29
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail29'(suite) -> [];
+'o-p03fail29'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail29.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail3.xml
+%% ID: o-p03fail3
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail3'(suite) -> [];
+'o-p03fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail4.xml
+%% ID: o-p03fail4
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail4'(suite) -> [];
+'o-p03fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail5.xml
+%% ID: o-p03fail5
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail5'(suite) -> [];
+'o-p03fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail7.xml
+%% ID: o-p03fail7
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail7'(suite) -> [];
+'o-p03fail7'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail7.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail8.xml
+%% ID: o-p03fail8
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail8'(suite) -> [];
+'o-p03fail8'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail8.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p03fail9.xml
+%% ID: o-p03fail9
+%% Type: not-wf
+%% Sections: 2.3 [3]
+'o-p03fail9'(suite) -> [];
+'o-p03fail9'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p03fail9.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p04fail1.xml
+%% ID: o-p04fail1
+%% Type: not-wf
+%% Sections: 2.3 [4]
+'o-p04fail1'(suite) -> [];
+'o-p04fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p04fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p04fail2.xml
+%% ID: o-p04fail2
+%% Type: not-wf
+%% Sections: 2.3 [4]
+'o-p04fail2'(suite) -> [];
+'o-p04fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p04fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p04fail3.xml
+%% ID: o-p04fail3
+%% Type: not-wf
+%% Sections: 2.3 [4]
+'o-p04fail3'(suite) -> [];
+'o-p04fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p04fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p05fail1.xml
+%% ID: o-p05fail1
+%% Type: not-wf
+%% Sections: 2.3 [5]
+'o-p05fail1'(suite) -> [];
+'o-p05fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p05fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p05fail2.xml
+%% ID: o-p05fail2
+%% Type: not-wf
+%% Sections: 2.3 [5]
+'o-p05fail2'(suite) -> [];
+'o-p05fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p05fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p05fail3.xml
+%% ID: o-p05fail3
+%% Type: not-wf
+%% Sections: 2.3 [5]
+'o-p05fail3'(suite) -> [];
+'o-p05fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p05fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p05fail4.xml
+%% ID: o-p05fail4
+%% Type: not-wf
+%% Sections: 2.3 [5]
+'o-p05fail4'(suite) -> [];
+'o-p05fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p05fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p05fail5.xml
+%% ID: o-p05fail5
+%% Type: not-wf
+%% Sections: 2.3 [5]
+'o-p05fail5'(suite) -> [];
+'o-p05fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p05fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p09fail1.xml
+%% ID: o-p09fail1
+%% Type: not-wf
+%% Sections: 2.3 [9]
+'o-p09fail1'(suite) -> [];
+'o-p09fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p09fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p09fail2.xml
+%% ID: o-p09fail2
+%% Type: not-wf
+%% Sections: 2.3 [9]
+'o-p09fail2'(suite) -> [];
+'o-p09fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p09fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p09fail3.xml
+%% ID: o-p09fail3
+%% Type: not-wf
+%% Sections: 2.3 [9]
+'o-p09fail3'(suite) -> [];
+'o-p09fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p09fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p09fail4.xml
+%% ID: o-p09fail4
+%% Type: not-wf
+%% Sections: 2.3 [9]
+'o-p09fail4'(suite) -> [];
+'o-p09fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p09fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p09fail5.xml
+%% ID: o-p09fail5
+%% Type: not-wf
+%% Sections: 2.3 [9]
+'o-p09fail5'(suite) -> [];
+'o-p09fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p09fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p10fail1.xml
+%% ID: o-p10fail1
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'o-p10fail1'(suite) -> [];
+'o-p10fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p10fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p10fail2.xml
+%% ID: o-p10fail2
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'o-p10fail2'(suite) -> [];
+'o-p10fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p10fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p10fail3.xml
+%% ID: o-p10fail3
+%% Type: not-wf
+%% Sections: 2.3 [10]
+'o-p10fail3'(suite) -> [];
+'o-p10fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p10fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p11fail1.xml
+%% ID: o-p11fail1
+%% Type: not-wf
+%% Sections: 2.3 [11]
+'o-p11fail1'(suite) -> [];
+'o-p11fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p11fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p11fail2.xml
+%% ID: o-p11fail2
+%% Type: not-wf
+%% Sections: 2.3 [11]
+'o-p11fail2'(suite) -> [];
+'o-p11fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p11fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p12fail1.xml
+%% ID: o-p12fail1
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'o-p12fail1'(suite) -> [];
+'o-p12fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p12fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p12fail2.xml
+%% ID: o-p12fail2
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'o-p12fail2'(suite) -> [];
+'o-p12fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p12fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p12fail3.xml
+%% ID: o-p12fail3
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'o-p12fail3'(suite) -> [];
+'o-p12fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p12fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p12fail4.xml
+%% ID: o-p12fail4
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'o-p12fail4'(suite) -> [];
+'o-p12fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p12fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p12fail5.xml
+%% ID: o-p12fail5
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'o-p12fail5'(suite) -> [];
+'o-p12fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p12fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p12fail6.xml
+%% ID: o-p12fail6
+%% Type: not-wf
+%% Sections: 2.3 [12]
+'o-p12fail6'(suite) -> [];
+'o-p12fail6'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p12fail6.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p12fail7.xml
+%% ID: o-p12fail7
+%% Type: not-wf
+%% Sections: 2.3 [13]
+'o-p12fail7'(suite) -> [];
+'o-p12fail7'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p12fail7.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p14fail1.xml
+%% ID: o-p14fail1
+%% Type: not-wf
+%% Sections: 2.4 [14]
+'o-p14fail1'(suite) -> [];
+'o-p14fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p14fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p14fail2.xml
+%% ID: o-p14fail2
+%% Type: not-wf
+%% Sections: 2.4 [14]
+'o-p14fail2'(suite) -> [];
+'o-p14fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p14fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p14fail3.xml
+%% ID: o-p14fail3
+%% Type: not-wf
+%% Sections: 2.4 [14]
+'o-p14fail3'(suite) -> [];
+'o-p14fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p14fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p15fail1.xml
+%% ID: o-p15fail1
+%% Type: not-wf
+%% Sections: 2.5 [15]
+'o-p15fail1'(suite) -> [];
+'o-p15fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p15fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p15fail2.xml
+%% ID: o-p15fail2
+%% Type: not-wf
+%% Sections: 2.5 [15]
+'o-p15fail2'(suite) -> [];
+'o-p15fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p15fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p15fail3.xml
+%% ID: o-p15fail3
+%% Type: not-wf
+%% Sections: 2.5 [15]
+'o-p15fail3'(suite) -> [];
+'o-p15fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p15fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p16fail1.xml
+%% ID: o-p16fail1
+%% Type: not-wf
+%% Sections: 2.6 [16]
+'o-p16fail1'(suite) -> [];
+'o-p16fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p16fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p16fail2.xml
+%% ID: o-p16fail2
+%% Type: not-wf
+%% Sections: 2.6 [16]
+'o-p16fail2'(suite) -> [];
+'o-p16fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p16fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p16fail3.xml
+%% ID: o-p16fail3
+%% Type: not-wf
+%% Sections: 2.6 [16]
+'o-p16fail3'(suite) -> [];
+'o-p16fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p16fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p18fail1.xml
+%% ID: o-p18fail1
+%% Type: not-wf
+%% Sections: 2.7 [18]
+'o-p18fail1'(suite) -> [];
+'o-p18fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p18fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p18fail2.xml
+%% ID: o-p18fail2
+%% Type: not-wf
+%% Sections: 2.7 [18]
+'o-p18fail2'(suite) -> [];
+'o-p18fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p18fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p18fail3.xml
+%% ID: o-p18fail3
+%% Type: not-wf
+%% Sections: 2.7 [18]
+'o-p18fail3'(suite) -> [];
+'o-p18fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p18fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p22fail1.xml
+%% ID: o-p22fail1
+%% Type: not-wf
+%% Sections: 2.8 [22]
+'o-p22fail1'(suite) -> [];
+'o-p22fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p22fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p22fail2.xml
+%% ID: o-p22fail2
+%% Type: not-wf
+%% Sections: 2.8 [22]
+'o-p22fail2'(suite) -> [];
+'o-p22fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p22fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p23fail1.xml
+%% ID: o-p23fail1
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'o-p23fail1'(suite) -> [];
+'o-p23fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p23fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p23fail2.xml
+%% ID: o-p23fail2
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'o-p23fail2'(suite) -> [];
+'o-p23fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p23fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p23fail3.xml
+%% ID: o-p23fail3
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'o-p23fail3'(suite) -> [];
+'o-p23fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p23fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p23fail4.xml
+%% ID: o-p23fail4
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'o-p23fail4'(suite) -> [];
+'o-p23fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p23fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p23fail5.xml
+%% ID: o-p23fail5
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'o-p23fail5'(suite) -> [];
+'o-p23fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p23fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p24fail1.xml
+%% ID: o-p24fail1
+%% Type: not-wf
+%% Sections: 2.8 [24]
+'o-p24fail1'(suite) -> [];
+'o-p24fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p24fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p24fail2.xml
+%% ID: o-p24fail2
+%% Type: not-wf
+%% Sections: 2.8 [24]
+'o-p24fail2'(suite) -> [];
+'o-p24fail2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p24fail2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p25fail1.xml
+%% ID: o-p25fail1
+%% Type: not-wf
+%% Sections: 2.8 [25]
+'o-p25fail1'(suite) -> [];
+'o-p25fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p25fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p26fail1.xml
+%% ID: o-p26fail1
+%% Type: not-wf
+%% Sections: 2.8 [26]
+'o-p26fail1'(suite) -> [];
+'o-p26fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p26fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p26fail2.xml
+%% ID: o-p26fail2
+%% Type: not-wf
+%% Sections: 2.8 [26]
+'o-p26fail2'(suite) -> [];
+'o-p26fail2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p26fail2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p27fail1.xml
+%% ID: o-p27fail1
+%% Type: not-wf
+%% Sections: 2.8 [27]
+'o-p27fail1'(suite) -> [];
+'o-p27fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p27fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p28fail1.xml
+%% ID: o-p28fail1
+%% Type: not-wf
+%% Sections: 2.8 [28]
+'o-p28fail1'(suite) -> [];
+'o-p28fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p28fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p29fail1.xml
+%% ID: o-p29fail1
+%% Type: not-wf
+%% Sections: 2.8 [29]
+'o-p29fail1'(suite) -> [];
+'o-p29fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p29fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p30fail1.xml
+%% ID: o-p30fail1
+%% Type: not-wf
+%% Sections: 2.8 [30]
+'o-p30fail1'(suite) -> [];
+'o-p30fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p30fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p31fail1.xml
+%% ID: o-p31fail1
+%% Type: not-wf
+%% Sections: 2.8 [31]
+'o-p31fail1'(suite) -> [];
+'o-p31fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p31fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p32fail1.xml
+%% ID: o-p32fail1
+%% Type: not-wf
+%% Sections: 2.9 [32]
+'o-p32fail1'(suite) -> [];
+'o-p32fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p32fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p32fail2.xml
+%% ID: o-p32fail2
+%% Type: not-wf
+%% Sections: 2.9 [32]
+'o-p32fail2'(suite) -> [];
+'o-p32fail2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p32fail2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p32fail3.xml
+%% ID: o-p32fail3
+%% Type: not-wf
+%% Sections: 2.9 [32]
+'o-p32fail3'(suite) -> [];
+'o-p32fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p32fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p32fail4.xml
+%% ID: o-p32fail4
+%% Type: not-wf
+%% Sections: 2.9 [32]
+'o-p32fail4'(suite) -> [];
+'o-p32fail4'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p32fail4.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p32fail5.xml
+%% ID: o-p32fail5
+%% Type: not-wf
+%% Sections: 2.9 [32]
+'o-p32fail5'(suite) -> [];
+'o-p32fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p32fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p39fail1.xml
+%% ID: o-p39fail1
+%% Type: not-wf
+%% Sections: 3 [39]
+'o-p39fail1'(suite) -> [];
+'o-p39fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p39fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p39fail2.xml
+%% ID: o-p39fail2
+%% Type: not-wf
+%% Sections: 3 [39]
+'o-p39fail2'(suite) -> [];
+'o-p39fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p39fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p39fail3.xml
+%% ID: o-p39fail3
+%% Type: not-wf
+%% Sections: 3 [39]
+'o-p39fail3'(suite) -> [];
+'o-p39fail3'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p39fail3.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p39fail4.xml
+%% ID: o-p39fail4
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'o-p39fail4'(suite) -> [];
+'o-p39fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p39fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p39fail5.xml
+%% ID: o-p39fail5
+%% Type: not-wf
+%% Sections: 2.8 [23]
+'o-p39fail5'(suite) -> [];
+'o-p39fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p39fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p40fail1.xml
+%% ID: o-p40fail1
+%% Type: not-wf
+%% Sections: 3.1 [40]
+'o-p40fail1'(suite) -> [];
+'o-p40fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p40fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p40fail2.xml
+%% ID: o-p40fail2
+%% Type: not-wf
+%% Sections: 3.1 [40]
+'o-p40fail2'(suite) -> [];
+'o-p40fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p40fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p40fail3.xml
+%% ID: o-p40fail3
+%% Type: not-wf
+%% Sections: 3.1 [40]
+'o-p40fail3'(suite) -> [];
+'o-p40fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p40fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p40fail4.xml
+%% ID: o-p40fail4
+%% Type: not-wf
+%% Sections: 3.1 [40]
+'o-p40fail4'(suite) -> [];
+'o-p40fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p40fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p41fail1.xml
+%% ID: o-p41fail1
+%% Type: not-wf
+%% Sections: 3.1 [41]
+'o-p41fail1'(suite) -> [];
+'o-p41fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p41fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p41fail2.xml
+%% ID: o-p41fail2
+%% Type: not-wf
+%% Sections: 3.1 [41]
+'o-p41fail2'(suite) -> [];
+'o-p41fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p41fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p41fail3.xml
+%% ID: o-p41fail3
+%% Type: not-wf
+%% Sections: 3.1 [41]
+'o-p41fail3'(suite) -> [];
+'o-p41fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p41fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p42fail1.xml
+%% ID: o-p42fail1
+%% Type: not-wf
+%% Sections: 3.1 [42]
+'o-p42fail1'(suite) -> [];
+'o-p42fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p42fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p42fail2.xml
+%% ID: o-p42fail2
+%% Type: not-wf
+%% Sections: 3.1 [42]
+'o-p42fail2'(suite) -> [];
+'o-p42fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p42fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p42fail3.xml
+%% ID: o-p42fail3
+%% Type: not-wf
+%% Sections: 3.1 [42]
+'o-p42fail3'(suite) -> [];
+'o-p42fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p42fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p43fail1.xml
+%% ID: o-p43fail1
+%% Type: not-wf
+%% Sections: 3.1 [43]
+'o-p43fail1'(suite) -> [];
+'o-p43fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p43fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p43fail2.xml
+%% ID: o-p43fail2
+%% Type: not-wf
+%% Sections: 3.1 [43]
+'o-p43fail2'(suite) -> [];
+'o-p43fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p43fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p43fail3.xml
+%% ID: o-p43fail3
+%% Type: not-wf
+%% Sections: 3.1 [43]
+'o-p43fail3'(suite) -> [];
+'o-p43fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p43fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44fail1.xml
+%% ID: o-p44fail1
+%% Type: not-wf
+%% Sections: 3.1 [44]
+'o-p44fail1'(suite) -> [];
+'o-p44fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44fail2.xml
+%% ID: o-p44fail2
+%% Type: not-wf
+%% Sections: 3.1 [44]
+'o-p44fail2'(suite) -> [];
+'o-p44fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44fail3.xml
+%% ID: o-p44fail3
+%% Type: not-wf
+%% Sections: 3.1 [44]
+'o-p44fail3'(suite) -> [];
+'o-p44fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44fail4.xml
+%% ID: o-p44fail4
+%% Type: not-wf
+%% Sections: 3.1 [44]
+'o-p44fail4'(suite) -> [];
+'o-p44fail4'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44fail4.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p44fail5.xml
+%% ID: o-p44fail5
+%% Type: not-wf
+%% Sections: 3.1 [44]
+'o-p44fail5'(suite) -> [];
+'o-p44fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p44fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p45fail1.xml
+%% ID: o-p45fail1
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'o-p45fail1'(suite) -> [];
+'o-p45fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p45fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p45fail2.xml
+%% ID: o-p45fail2
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'o-p45fail2'(suite) -> [];
+'o-p45fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p45fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p45fail3.xml
+%% ID: o-p45fail3
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'o-p45fail3'(suite) -> [];
+'o-p45fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p45fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p45fail4.xml
+%% ID: o-p45fail4
+%% Type: not-wf
+%% Sections: 3.2 [45]
+'o-p45fail4'(suite) -> [];
+'o-p45fail4'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p45fail4.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p46fail1.xml
+%% ID: o-p46fail1
+%% Type: not-wf
+%% Sections: 3.2 [46]
+'o-p46fail1'(suite) -> [];
+'o-p46fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p46fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p46fail2.xml
+%% ID: o-p46fail2
+%% Type: not-wf
+%% Sections: 3.2 [46]
+'o-p46fail2'(suite) -> [];
+'o-p46fail2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p46fail2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p46fail3.xml
+%% ID: o-p46fail3
+%% Type: not-wf
+%% Sections: 3.2 [46]
+'o-p46fail3'(suite) -> [];
+'o-p46fail3'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p46fail3.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p46fail4.xml
+%% ID: o-p46fail4
+%% Type: not-wf
+%% Sections: 3.2 [46]
+'o-p46fail4'(suite) -> [];
+'o-p46fail4'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p46fail4.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p46fail5.xml
+%% ID: o-p46fail5
+%% Type: not-wf
+%% Sections: 3.2 [46]
+'o-p46fail5'(suite) -> [];
+'o-p46fail5'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p46fail5.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p46fail6.xml
+%% ID: o-p46fail6
+%% Type: not-wf
+%% Sections: 3.2 [46]
+'o-p46fail6'(suite) -> [];
+'o-p46fail6'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p46fail6.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p47fail1.xml
+%% ID: o-p47fail1
+%% Type: not-wf
+%% Sections: 3.2.1 [47]
+'o-p47fail1'(suite) -> [];
+'o-p47fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p47fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p47fail2.xml
+%% ID: o-p47fail2
+%% Type: not-wf
+%% Sections: 3.2.1 [47]
+'o-p47fail2'(suite) -> [];
+'o-p47fail2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p47fail2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p47fail3.xml
+%% ID: o-p47fail3
+%% Type: not-wf
+%% Sections: 3.2.1 [47]
+'o-p47fail3'(suite) -> [];
+'o-p47fail3'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p47fail3.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p47fail4.xml
+%% ID: o-p47fail4
+%% Type: not-wf
+%% Sections: 3.2.1 [47]
+'o-p47fail4'(suite) -> [];
+'o-p47fail4'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p47fail4.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p48fail1.xml
+%% ID: o-p48fail1
+%% Type: not-wf
+%% Sections: 3.2.1 [48]
+'o-p48fail1'(suite) -> [];
+'o-p48fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p48fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p48fail2.xml
+%% ID: o-p48fail2
+%% Type: not-wf
+%% Sections: 3.2.1 [48]
+'o-p48fail2'(suite) -> [];
+'o-p48fail2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p48fail2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p49fail1.xml
+%% ID: o-p49fail1
+%% Type: not-wf
+%% Sections: 3.2.1 [49]
+'o-p49fail1'(suite) -> [];
+'o-p49fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p49fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p50fail1.xml
+%% ID: o-p50fail1
+%% Type: not-wf
+%% Sections: 3.2.1 [50]
+'o-p50fail1'(suite) -> [];
+'o-p50fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p50fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p51fail1.xml
+%% ID: o-p51fail1
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'o-p51fail1'(suite) -> [];
+'o-p51fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p51fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p51fail2.xml
+%% ID: o-p51fail2
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'o-p51fail2'(suite) -> [];
+'o-p51fail2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p51fail2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p51fail3.xml
+%% ID: o-p51fail3
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'o-p51fail3'(suite) -> [];
+'o-p51fail3'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p51fail3.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p51fail4.xml
+%% ID: o-p51fail4
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'o-p51fail4'(suite) -> [];
+'o-p51fail4'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p51fail4.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p51fail5.xml
+%% ID: o-p51fail5
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'o-p51fail5'(suite) -> [];
+'o-p51fail5'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p51fail5.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p51fail6.xml
+%% ID: o-p51fail6
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'o-p51fail6'(suite) -> [];
+'o-p51fail6'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p51fail6.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p51fail7.xml
+%% ID: o-p51fail7
+%% Type: not-wf
+%% Sections: 3.2.2 [51]
+'o-p51fail7'(suite) -> [];
+'o-p51fail7'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p51fail7.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p52fail1.xml
+%% ID: o-p52fail1
+%% Type: not-wf
+%% Sections: 3.3 [52]
+'o-p52fail1'(suite) -> [];
+'o-p52fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p52fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p52fail2.xml
+%% ID: o-p52fail2
+%% Type: not-wf
+%% Sections: 3.3 [52]
+'o-p52fail2'(suite) -> [];
+'o-p52fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p52fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p53fail1.xml
+%% ID: o-p53fail1
+%% Type: not-wf
+%% Sections: 3.3 [53]
+'o-p53fail1'(suite) -> [];
+'o-p53fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p53fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p53fail2.xml
+%% ID: o-p53fail2
+%% Type: not-wf
+%% Sections: 3.3 [53]
+'o-p53fail2'(suite) -> [];
+'o-p53fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p53fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p53fail3.xml
+%% ID: o-p53fail3
+%% Type: not-wf
+%% Sections: 3.3 [53]
+'o-p53fail3'(suite) -> [];
+'o-p53fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p53fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p53fail4.xml
+%% ID: o-p53fail4
+%% Type: not-wf
+%% Sections: 3.3 [53]
+'o-p53fail4'(suite) -> [];
+'o-p53fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p53fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p53fail5.xml
+%% ID: o-p53fail5
+%% Type: not-wf
+%% Sections: 3.3 [53]
+'o-p53fail5'(suite) -> [];
+'o-p53fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p53fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p54fail1.xml
+%% ID: o-p54fail1
+%% Type: not-wf
+%% Sections: 3.3.1 [54]
+'o-p54fail1'(suite) -> [];
+'o-p54fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p54fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p55fail1.xml
+%% ID: o-p55fail1
+%% Type: not-wf
+%% Sections: 3.3.1 [55]
+'o-p55fail1'(suite) -> [];
+'o-p55fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p55fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p56fail1.xml
+%% ID: o-p56fail1
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'o-p56fail1'(suite) -> [];
+'o-p56fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p56fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p56fail2.xml
+%% ID: o-p56fail2
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'o-p56fail2'(suite) -> [];
+'o-p56fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p56fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p56fail3.xml
+%% ID: o-p56fail3
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'o-p56fail3'(suite) -> [];
+'o-p56fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p56fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p56fail4.xml
+%% ID: o-p56fail4
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'o-p56fail4'(suite) -> [];
+'o-p56fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p56fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p56fail5.xml
+%% ID: o-p56fail5
+%% Type: not-wf
+%% Sections: 3.3.1 [56]
+'o-p56fail5'(suite) -> [];
+'o-p56fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p56fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p57fail1.xml
+%% ID: o-p57fail1
+%% Type: not-wf
+%% Sections: 3.3.1 [57]
+'o-p57fail1'(suite) -> [];
+'o-p57fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p57fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p58fail1.xml
+%% ID: o-p58fail1
+%% Type: not-wf
+%% Sections: 3.3.1 [58]
+'o-p58fail1'(suite) -> [];
+'o-p58fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p58fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p58fail2.xml
+%% ID: o-p58fail2
+%% Type: not-wf
+%% Sections: 3.3.1 [58]
+'o-p58fail2'(suite) -> [];
+'o-p58fail2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p58fail2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p58fail3.xml
+%% ID: o-p58fail3
+%% Type: not-wf
+%% Sections: 3.3.1 [58]
+'o-p58fail3'(suite) -> [];
+'o-p58fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p58fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p58fail4.xml
+%% ID: o-p58fail4
+%% Type: not-wf
+%% Sections: 3.3.1 [58]
+'o-p58fail4'(suite) -> [];
+'o-p58fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p58fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p58fail5.xml
+%% ID: o-p58fail5
+%% Type: not-wf
+%% Sections: 3.3.1 [58]
+'o-p58fail5'(suite) -> [];
+'o-p58fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p58fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p58fail6.xml
+%% ID: o-p58fail6
+%% Type: not-wf
+%% Sections: 3.3.1 [58]
+'o-p58fail6'(suite) -> [];
+'o-p58fail6'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p58fail6.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p58fail7.xml
+%% ID: o-p58fail7
+%% Type: not-wf
+%% Sections: 3.3.1 [58]
+'o-p58fail7'(suite) -> [];
+'o-p58fail7'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p58fail7.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p58fail8.xml
+%% ID: o-p58fail8
+%% Type: not-wf
+%% Sections: 3.3.1 [58]
+'o-p58fail8'(suite) -> [];
+'o-p58fail8'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p58fail8.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p59fail1.xml
+%% ID: o-p59fail1
+%% Type: not-wf
+%% Sections: 3.3.1 [59]
+'o-p59fail1'(suite) -> [];
+'o-p59fail1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p59fail1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p59fail2.xml
+%% ID: o-p59fail2
+%% Type: not-wf
+%% Sections: 3.3.1 [59]
+'o-p59fail2'(suite) -> [];
+'o-p59fail2'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p59fail2.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p59fail3.xml
+%% ID: o-p59fail3
+%% Type: not-wf
+%% Sections: 3.3.1 [59]
+'o-p59fail3'(suite) -> [];
+'o-p59fail3'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p59fail3.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p60fail1.xml
+%% ID: o-p60fail1
+%% Type: not-wf
+%% Sections: 3.3.2 [60]
+'o-p60fail1'(suite) -> [];
+'o-p60fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p60fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p60fail2.xml
+%% ID: o-p60fail2
+%% Type: not-wf
+%% Sections: 3.3.2 [60]
+'o-p60fail2'(suite) -> [];
+'o-p60fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p60fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p60fail3.xml
+%% ID: o-p60fail3
+%% Type: not-wf
+%% Sections: 3.3.2 [60]
+'o-p60fail3'(suite) -> [];
+'o-p60fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p60fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p60fail4.xml
+%% ID: o-p60fail4
+%% Type: not-wf
+%% Sections: 3.3.2 [60]
+'o-p60fail4'(suite) -> [];
+'o-p60fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p60fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p60fail5.xml
+%% ID: o-p60fail5
+%% Type: not-wf
+%% Sections: 3.3.2 [60]
+'o-p60fail5'(suite) -> [];
+'o-p60fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p60fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p61fail1.xml
+%% ID: o-p61fail1
+%% Type: not-wf
+%% Sections: 3.4 [61]
+'o-p61fail1'(suite) -> [];
+'o-p61fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p61fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p62fail1.xml
+%% ID: o-p62fail1
+%% Type: not-wf
+%% Sections: 3.4 [62]
+'o-p62fail1'(suite) -> [];
+'o-p62fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p62fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p62fail2.xml
+%% ID: o-p62fail2
+%% Type: not-wf
+%% Sections: 3.4 [62]
+'o-p62fail2'(suite) -> [];
+'o-p62fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p62fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p63fail1.xml
+%% ID: o-p63fail1
+%% Type: not-wf
+%% Sections: 3.4 [63]
+'o-p63fail1'(suite) -> [];
+'o-p63fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p63fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p63fail2.xml
+%% ID: o-p63fail2
+%% Type: not-wf
+%% Sections: 3.4 [63]
+'o-p63fail2'(suite) -> [];
+'o-p63fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p63fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p64fail1.xml
+%% ID: o-p64fail1
+%% Type: not-wf
+%% Sections: 3.4 [64]
+'o-p64fail1'(suite) -> [];
+'o-p64fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p64fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p64fail2.xml
+%% ID: o-p64fail2
+%% Type: not-wf
+%% Sections: 3.4 [64]
+'o-p64fail2'(suite) -> [];
+'o-p64fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p64fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p66fail1.xml
+%% ID: o-p66fail1
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'o-p66fail1'(suite) -> [];
+'o-p66fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p66fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p66fail2.xml
+%% ID: o-p66fail2
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'o-p66fail2'(suite) -> [];
+'o-p66fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p66fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p66fail3.xml
+%% ID: o-p66fail3
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'o-p66fail3'(suite) -> [];
+'o-p66fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p66fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p66fail4.xml
+%% ID: o-p66fail4
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'o-p66fail4'(suite) -> [];
+'o-p66fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p66fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p66fail5.xml
+%% ID: o-p66fail5
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'o-p66fail5'(suite) -> [];
+'o-p66fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p66fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p66fail6.xml
+%% ID: o-p66fail6
+%% Type: not-wf
+%% Sections: 4.1 [66]
+'o-p66fail6'(suite) -> [];
+'o-p66fail6'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p66fail6.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p68fail1.xml
+%% ID: o-p68fail1
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'o-p68fail1'(suite) -> [];
+'o-p68fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p68fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p68fail2.xml
+%% ID: o-p68fail2
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'o-p68fail2'(suite) -> [];
+'o-p68fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p68fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p68fail3.xml
+%% ID: o-p68fail3
+%% Type: not-wf
+%% Sections: 4.1 [68]
+'o-p68fail3'(suite) -> [];
+'o-p68fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p68fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p69fail1.xml
+%% ID: o-p69fail1
+%% Type: not-wf
+%% Sections: 4.1 [69]
+'o-p69fail1'(suite) -> [];
+'o-p69fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p69fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p69fail2.xml
+%% ID: o-p69fail2
+%% Type: not-wf
+%% Sections: 4.1 [69]
+'o-p69fail2'(suite) -> [];
+'o-p69fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p69fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p69fail3.xml
+%% ID: o-p69fail3
+%% Type: not-wf
+%% Sections: 4.1 [69]
+'o-p69fail3'(suite) -> [];
+'o-p69fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p69fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p70fail1.xml
+%% ID: o-p70fail1
+%% Type: not-wf
+%% Sections: 4.2 [70]
+'o-p70fail1'(suite) -> [];
+'o-p70fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p70fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p71fail1.xml
+%% ID: o-p71fail1
+%% Type: not-wf
+%% Sections: 4.2 [71]
+'o-p71fail1'(suite) -> [];
+'o-p71fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p71fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p71fail2.xml
+%% ID: o-p71fail2
+%% Type: not-wf
+%% Sections: 4.2 [71]
+'o-p71fail2'(suite) -> [];
+'o-p71fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p71fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p71fail3.xml
+%% ID: o-p71fail3
+%% Type: not-wf
+%% Sections: 4.2 [71]
+'o-p71fail3'(suite) -> [];
+'o-p71fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p71fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p71fail4.xml
+%% ID: o-p71fail4
+%% Type: not-wf
+%% Sections: 4.2 [71]
+'o-p71fail4'(suite) -> [];
+'o-p71fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p71fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p72fail1.xml
+%% ID: o-p72fail1
+%% Type: not-wf
+%% Sections: 4.2 [72]
+'o-p72fail1'(suite) -> [];
+'o-p72fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p72fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p72fail2.xml
+%% ID: o-p72fail2
+%% Type: not-wf
+%% Sections: 4.2 [72]
+'o-p72fail2'(suite) -> [];
+'o-p72fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p72fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p72fail3.xml
+%% ID: o-p72fail3
+%% Type: not-wf
+%% Sections: 4.2 [72]
+'o-p72fail3'(suite) -> [];
+'o-p72fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p72fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p72fail4.xml
+%% ID: o-p72fail4
+%% Type: not-wf
+%% Sections: 4.2 [72]
+'o-p72fail4'(suite) -> [];
+'o-p72fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p72fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p73fail1.xml
+%% ID: o-p73fail1
+%% Type: not-wf
+%% Sections: 4.2 [73]
+'o-p73fail1'(suite) -> [];
+'o-p73fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p73fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p73fail2.xml
+%% ID: o-p73fail2
+%% Type: not-wf
+%% Sections: 4.2 [73]
+'o-p73fail2'(suite) -> [];
+'o-p73fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p73fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p73fail3.xml
+%% ID: o-p73fail3
+%% Type: not-wf
+%% Sections: 4.2 [73]
+'o-p73fail3'(suite) -> [];
+'o-p73fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p73fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p73fail4.xml
+%% ID: o-p73fail4
+%% Type: not-wf
+%% Sections: 4.2 [73]
+'o-p73fail4'(suite) -> [];
+'o-p73fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p73fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p73fail5.xml
+%% ID: o-p73fail5
+%% Type: not-wf
+%% Sections: 4.2 [73]
+'o-p73fail5'(suite) -> [];
+'o-p73fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p73fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p74fail1.xml
+%% ID: o-p74fail1
+%% Type: not-wf
+%% Sections: 4.2 [74]
+'o-p74fail1'(suite) -> [];
+'o-p74fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p74fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p74fail2.xml
+%% ID: o-p74fail2
+%% Type: not-wf
+%% Sections: 4.2 [74]
+'o-p74fail2'(suite) -> [];
+'o-p74fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p74fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p74fail3.xml
+%% ID: o-p74fail3
+%% Type: not-wf
+%% Sections: 4.2 [74]
+'o-p74fail3'(suite) -> [];
+'o-p74fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p74fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p75fail1.xml
+%% ID: o-p75fail1
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'o-p75fail1'(suite) -> [];
+'o-p75fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p75fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p75fail2.xml
+%% ID: o-p75fail2
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'o-p75fail2'(suite) -> [];
+'o-p75fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p75fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p75fail3.xml
+%% ID: o-p75fail3
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'o-p75fail3'(suite) -> [];
+'o-p75fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p75fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p75fail4.xml
+%% ID: o-p75fail4
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'o-p75fail4'(suite) -> [];
+'o-p75fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p75fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p75fail5.xml
+%% ID: o-p75fail5
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'o-p75fail5'(suite) -> [];
+'o-p75fail5'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p75fail5.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p75fail6.xml
+%% ID: o-p75fail6
+%% Type: not-wf
+%% Sections: 4.2.2 [75]
+'o-p75fail6'(suite) -> [];
+'o-p75fail6'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p75fail6.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p76fail1.xml
+%% ID: o-p76fail1
+%% Type: not-wf
+%% Sections: 4.2.2 [76]
+'o-p76fail1'(suite) -> [];
+'o-p76fail1'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p76fail1.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p76fail2.xml
+%% ID: o-p76fail2
+%% Type: not-wf
+%% Sections: 4.2.2 [76]
+'o-p76fail2'(suite) -> [];
+'o-p76fail2'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p76fail2.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p76fail3.xml
+%% ID: o-p76fail3
+%% Type: not-wf
+%% Sections: 4.2.2 [76]
+'o-p76fail3'(suite) -> [];
+'o-p76fail3'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p76fail3.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p76fail4.xml
+%% ID: o-p76fail4
+%% Type: not-wf
+%% Sections: 4.2.2 [76]
+'o-p76fail4'(suite) -> [];
+'o-p76fail4'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p76fail4.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: p11pass1.xml
+%% ID: o-p11pass1
+%% Type: error
+%% Sections: 2.3, 4.2.2 [11]
+'o-p11pass1'(suite) -> [];
+'o-p11pass1'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"oasis","p11pass1.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: OASIS/NIST TESTS, 1-Nov-1998
+
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: OASIS/NIST XML 1.0 Tests
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P28/ibm28i01.xml
+%% ID: ibm-invalid-P28-ibm28i01.xml
+%% Type: invalid
+%% Sections: 2.8
+'ibm-invalid-P28-ibm28i01'(suite) -> [];
+'ibm-invalid-P28-ibm28i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P28/ibm28i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 28
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P32/ibm32i01.xml
+%% ID: ibm-invalid-P32-ibm32i01.xml
+%% Type: invalid
+%% Sections: 2.9
+'ibm-invalid-P32-ibm32i01'(suite) -> [];
+'ibm-invalid-P32-ibm32i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P32/ibm32i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P32/ibm32i03.xml
+%% ID: ibm-invalid-P32-ibm32i03.xml
+%% Type: invalid
+%% Sections: 2.9
+'ibm-invalid-P32-ibm32i03'(suite) -> [];
+'ibm-invalid-P32-ibm32i03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P32/ibm32i03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P32/ibm32i04.xml
+%% ID: ibm-invalid-P32-ibm32i04.xml
+%% Type: invalid
+%% Sections: 2.9
+'ibm-invalid-P32-ibm32i04'(suite) -> [];
+'ibm-invalid-P32-ibm32i04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P32/ibm32i04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 32
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P39/ibm39i01.xml
+%% ID: ibm-invalid-P39-ibm39i01.xml
+%% Type: invalid
+%% Sections: 3
+'ibm-invalid-P39-ibm39i01'(suite) -> [];
+'ibm-invalid-P39-ibm39i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P39/ibm39i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P39/ibm39i02.xml
+%% ID: ibm-invalid-P39-ibm39i02.xml
+%% Type: invalid
+%% Sections: 3
+'ibm-invalid-P39-ibm39i02'(suite) -> [];
+'ibm-invalid-P39-ibm39i02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P39/ibm39i02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P39/ibm39i03.xml
+%% ID: ibm-invalid-P39-ibm39i03.xml
+%% Type: invalid
+%% Sections: 3
+'ibm-invalid-P39-ibm39i03'(suite) -> [];
+'ibm-invalid-P39-ibm39i03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P39/ibm39i03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P39/ibm39i04.xml
+%% ID: ibm-invalid-P39-ibm39i04.xml
+%% Type: invalid
+%% Sections: 3
+'ibm-invalid-P39-ibm39i04'(suite) -> [];
+'ibm-invalid-P39-ibm39i04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P39/ibm39i04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 39
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P41/ibm41i01.xml
+%% ID: ibm-invalid-P41-ibm41i01.xml
+%% Type: invalid
+%% Sections: 3.1
+'ibm-invalid-P41-ibm41i01'(suite) -> [];
+'ibm-invalid-P41-ibm41i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P41/ibm41i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P41/ibm41i02.xml
+%% ID: ibm-invalid-P41-ibm41i02.xml
+%% Type: invalid
+%% Sections: 3.1
+'ibm-invalid-P41-ibm41i02'(suite) -> [];
+'ibm-invalid-P41-ibm41i02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P41/ibm41i02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 41
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P45/ibm45i01.xml
+%% ID: ibm-invalid-P45-ibm45i01.xml
+%% Type: invalid
+%% Sections: 3.2
+'ibm-invalid-P45-ibm45i01'(suite) -> [];
+'ibm-invalid-P45-ibm45i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P45/ibm45i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 45
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P49/ibm49i01.xml
+%% ID: ibm-invalid-P49-ibm49i01.xml
+%% Type: invalid
+%% Sections: 3.2.1
+'ibm-invalid-P49-ibm49i01'(suite) -> [];
+'ibm-invalid-P49-ibm49i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P49/ibm49i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 49
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P50/ibm50i01.xml
+%% ID: ibm-invalid-P50-ibm50i01.xml
+%% Type: invalid
+%% Sections: 3.2.1
+'ibm-invalid-P50-ibm50i01'(suite) -> [];
+'ibm-invalid-P50-ibm50i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P50/ibm50i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 50
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P51/ibm51i01.xml
+%% ID: ibm-invalid-P51-ibm51i01.xml
+%% Type: invalid
+%% Sections: 3.2.2
+'ibm-invalid-P51-ibm51i01'(suite) -> [];
+'ibm-invalid-P51-ibm51i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P51/ibm51i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P51/ibm51i03.xml
+%% ID: ibm-invalid-P51-ibm51i03.xml
+%% Type: invalid
+%% Sections: 3.2.2
+'ibm-invalid-P51-ibm51i03'(suite) -> [];
+'ibm-invalid-P51-ibm51i03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P51/ibm51i03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 51
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i01.xml
+%% ID: ibm-invalid-P56-ibm56i01.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i01'(suite) -> [];
+'ibm-invalid-P56-ibm56i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i02.xml
+%% ID: ibm-invalid-P56-ibm56i02.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i02'(suite) -> [];
+'ibm-invalid-P56-ibm56i02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i03.xml
+%% ID: ibm-invalid-P56-ibm56i03.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i03'(suite) -> [];
+'ibm-invalid-P56-ibm56i03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i05.xml
+%% ID: ibm-invalid-P56-ibm56i05.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i05'(suite) -> [];
+'ibm-invalid-P56-ibm56i05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i06.xml
+%% ID: ibm-invalid-P56-ibm56i06.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i06'(suite) -> [];
+'ibm-invalid-P56-ibm56i06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i07.xml
+%% ID: ibm-invalid-P56-ibm56i07.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i07'(suite) -> [];
+'ibm-invalid-P56-ibm56i07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i08.xml
+%% ID: ibm-invalid-P56-ibm56i08.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i08'(suite) -> [];
+'ibm-invalid-P56-ibm56i08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i09.xml
+%% ID: ibm-invalid-P56-ibm56i09.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i09'(suite) -> [];
+'ibm-invalid-P56-ibm56i09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i10.xml
+%% ID: ibm-invalid-P56-ibm56i10.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i10'(suite) -> [];
+'ibm-invalid-P56-ibm56i10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i11.xml
+%% ID: ibm-invalid-P56-ibm56i11.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i11'(suite) -> [];
+'ibm-invalid-P56-ibm56i11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i12.xml
+%% ID: ibm-invalid-P56-ibm56i12.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i12'(suite) -> [];
+'ibm-invalid-P56-ibm56i12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i13.xml
+%% ID: ibm-invalid-P56-ibm56i13.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i13'(suite) -> [];
+'ibm-invalid-P56-ibm56i13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i14.xml
+%% ID: ibm-invalid-P56-ibm56i14.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i14'(suite) -> [];
+'ibm-invalid-P56-ibm56i14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i15.xml
+%% ID: ibm-invalid-P56-ibm56i15.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i15'(suite) -> [];
+'ibm-invalid-P56-ibm56i15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i16.xml
+%% ID: ibm-invalid-P56-ibm56i16.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i16'(suite) -> [];
+'ibm-invalid-P56-ibm56i16'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i16.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i17.xml
+%% ID: ibm-invalid-P56-ibm56i17.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i17'(suite) -> [];
+'ibm-invalid-P56-ibm56i17'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i17.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P56/ibm56i18.xml
+%% ID: ibm-invalid-P56-ibm56i18.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P56-ibm56i18'(suite) -> [];
+'ibm-invalid-P56-ibm56i18'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P56/ibm56i18.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 56
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P58/ibm58i01.xml
+%% ID: ibm-invalid-P58-ibm58i01.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P58-ibm58i01'(suite) -> [];
+'ibm-invalid-P58-ibm58i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P58/ibm58i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P58/ibm58i02.xml
+%% ID: ibm-invalid-P58-ibm58i02.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P58-ibm58i02'(suite) -> [];
+'ibm-invalid-P58-ibm58i02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P58/ibm58i02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 58
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P59/ibm59i01.xml
+%% ID: ibm-invalid-P59-ibm59i01.xml
+%% Type: invalid
+%% Sections: 3.3.1
+'ibm-invalid-P59-ibm59i01'(suite) -> [];
+'ibm-invalid-P59-ibm59i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P59/ibm59i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 59
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P60/ibm60i01.xml
+%% ID: ibm-invalid-P60-ibm60i01.xml
+%% Type: invalid
+%% Sections: 3.3.2
+'ibm-invalid-P60-ibm60i01'(suite) -> [];
+'ibm-invalid-P60-ibm60i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P60/ibm60i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P60/ibm60i02.xml
+%% ID: ibm-invalid-P60-ibm60i02.xml
+%% Type: invalid
+%% Sections: 3.3.2
+'ibm-invalid-P60-ibm60i02'(suite) -> [];
+'ibm-invalid-P60-ibm60i02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P60/ibm60i02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P60/ibm60i03.xml
+%% ID: ibm-invalid-P60-ibm60i03.xml
+%% Type: invalid
+%% Sections: 3.3.2
+'ibm-invalid-P60-ibm60i03'(suite) -> [];
+'ibm-invalid-P60-ibm60i03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P60/ibm60i03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P60/ibm60i04.xml
+%% ID: ibm-invalid-P60-ibm60i04.xml
+%% Type: invalid
+%% Sections: 3.3.2
+'ibm-invalid-P60-ibm60i04'(suite) -> [];
+'ibm-invalid-P60-ibm60i04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P60/ibm60i04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 60
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P68/ibm68i01.xml
+%% ID: ibm-invalid-P68-ibm68i01.xml
+%% Type: error
+%% Sections: 4.1
+'ibm-invalid-P68-ibm68i01'(suite) -> [];
+'ibm-invalid-P68-ibm68i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P68/ibm68i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P68/ibm68i02.xml
+%% ID: ibm-invalid-P68-ibm68i02.xml
+%% Type: error
+%% Sections: 4.1
+'ibm-invalid-P68-ibm68i02'(suite) -> [];
+'ibm-invalid-P68-ibm68i02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P68/ibm68i02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P68/ibm68i03.xml
+%% ID: ibm-invalid-P68-ibm68i03.xml
+%% Type: error
+%% Sections: 4.1
+'ibm-invalid-P68-ibm68i03'(suite) -> [];
+'ibm-invalid-P68-ibm68i03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P68/ibm68i03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P68/ibm68i04.xml
+%% ID: ibm-invalid-P68-ibm68i04.xml
+%% Type: error
+%% Sections: 4.1
+'ibm-invalid-P68-ibm68i04'(suite) -> [];
+'ibm-invalid-P68-ibm68i04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P68/ibm68i04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 68
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P69/ibm69i01.xml
+%% ID: ibm-invalid-P69-ibm69i01.xml
+%% Type: error
+%% Sections: 4.1
+'ibm-invalid-P69-ibm69i01'(suite) -> [];
+'ibm-invalid-P69-ibm69i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P69/ibm69i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P69/ibm69i02.xml
+%% ID: ibm-invalid-P69-ibm69i02.xml
+%% Type: error
+%% Sections: 4.1
+'ibm-invalid-P69-ibm69i02'(suite) -> [];
+'ibm-invalid-P69-ibm69i02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P69/ibm69i02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P69/ibm69i03.xml
+%% ID: ibm-invalid-P69-ibm69i03.xml
+%% Type: error
+%% Sections: 4.1
+'ibm-invalid-P69-ibm69i03'(suite) -> [];
+'ibm-invalid-P69-ibm69i03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P69/ibm69i03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P69/ibm69i04.xml
+%% ID: ibm-invalid-P69-ibm69i04.xml
+%% Type: error
+%% Sections: 4.1
+'ibm-invalid-P69-ibm69i04'(suite) -> [];
+'ibm-invalid-P69-ibm69i04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P69/ibm69i04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 69
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: invalid/P76/ibm76i01.xml
+%% ID: ibm-invalid-P76-ibm76i01.xml
+%% Type: invalid
+%% Sections: 4.2.2
+'ibm-invalid-P76-ibm76i01'(suite) -> [];
+'ibm-invalid-P76-ibm76i01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","invalid/P76/ibm76i01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "invalid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 76
+
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - invalid tests
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P01/ibm01n01.xml
+%% ID: ibm-not-wf-P01-ibm01n01.xml
+%% Type: not-wf
+%% Sections: 2.1
+'ibm-not-wf-P01-ibm01n01'(suite) -> [];
+'ibm-not-wf-P01-ibm01n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P01/ibm01n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P01/ibm01n02.xml
+%% ID: ibm-not-wf-P01-ibm01n02.xml
+%% Type: not-wf
+%% Sections: 2.1
+'ibm-not-wf-P01-ibm01n02'(suite) -> [];
+'ibm-not-wf-P01-ibm01n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P01/ibm01n02.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_, <<"xml version=\"1.0\"?>", _/binary>>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P01/ibm01n03.xml
+%% ID: ibm-not-wf-P01-ibm01n03.xml
+%% Type: not-wf
+%% Sections: 2.1
+'ibm-not-wf-P01-ibm01n03'(suite) -> [];
+'ibm-not-wf-P01-ibm01n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P01/ibm01n03.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_, <<"<title>Wrong combination!</title>", _/binary>>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 1
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n01.xml
+%% ID: ibm-not-wf-P02-ibm02n01.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n01'(suite) -> [];
+'ibm-not-wf-P02-ibm02n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n02.xml
+%% ID: ibm-not-wf-P02-ibm02n02.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n02'(suite) -> [];
+'ibm-not-wf-P02-ibm02n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n03.xml
+%% ID: ibm-not-wf-P02-ibm02n03.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n03'(suite) -> [];
+'ibm-not-wf-P02-ibm02n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n04.xml
+%% ID: ibm-not-wf-P02-ibm02n04.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n04'(suite) -> [];
+'ibm-not-wf-P02-ibm02n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n05.xml
+%% ID: ibm-not-wf-P02-ibm02n05.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n05'(suite) -> [];
+'ibm-not-wf-P02-ibm02n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n06.xml
+%% ID: ibm-not-wf-P02-ibm02n06.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n06'(suite) -> [];
+'ibm-not-wf-P02-ibm02n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n07.xml
+%% ID: ibm-not-wf-P02-ibm02n07.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n07'(suite) -> [];
+'ibm-not-wf-P02-ibm02n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n08.xml
+%% ID: ibm-not-wf-P02-ibm02n08.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n08'(suite) -> [];
+'ibm-not-wf-P02-ibm02n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n09.xml
+%% ID: ibm-not-wf-P02-ibm02n09.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n09'(suite) -> [];
+'ibm-not-wf-P02-ibm02n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n10.xml
+%% ID: ibm-not-wf-P02-ibm02n10.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n10'(suite) -> [];
+'ibm-not-wf-P02-ibm02n10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n11.xml
+%% ID: ibm-not-wf-P02-ibm02n11.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n11'(suite) -> [];
+'ibm-not-wf-P02-ibm02n11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n12.xml
+%% ID: ibm-not-wf-P02-ibm02n12.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n12'(suite) -> [];
+'ibm-not-wf-P02-ibm02n12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n13.xml
+%% ID: ibm-not-wf-P02-ibm02n13.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n13'(suite) -> [];
+'ibm-not-wf-P02-ibm02n13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n14.xml
+%% ID: ibm-not-wf-P02-ibm02n14.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n14'(suite) -> [];
+'ibm-not-wf-P02-ibm02n14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n15.xml
+%% ID: ibm-not-wf-P02-ibm02n15.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n15'(suite) -> [];
+'ibm-not-wf-P02-ibm02n15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n16.xml
+%% ID: ibm-not-wf-P02-ibm02n16.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n16'(suite) -> [];
+'ibm-not-wf-P02-ibm02n16'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n16.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n17.xml
+%% ID: ibm-not-wf-P02-ibm02n17.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n17'(suite) -> [];
+'ibm-not-wf-P02-ibm02n17'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n17.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n18.xml
+%% ID: ibm-not-wf-P02-ibm02n18.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n18'(suite) -> [];
+'ibm-not-wf-P02-ibm02n18'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n18.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n19.xml
+%% ID: ibm-not-wf-P02-ibm02n19.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n19'(suite) -> [];
+'ibm-not-wf-P02-ibm02n19'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n19.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n20.xml
+%% ID: ibm-not-wf-P02-ibm02n20.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n20'(suite) -> [];
+'ibm-not-wf-P02-ibm02n20'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n20.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n21.xml
+%% ID: ibm-not-wf-P02-ibm02n21.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n21'(suite) -> [];
+'ibm-not-wf-P02-ibm02n21'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n21.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n22.xml
+%% ID: ibm-not-wf-P02-ibm02n22.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n22'(suite) -> [];
+'ibm-not-wf-P02-ibm02n22'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n22.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n23.xml
+%% ID: ibm-not-wf-P02-ibm02n23.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n23'(suite) -> [];
+'ibm-not-wf-P02-ibm02n23'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n23.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n24.xml
+%% ID: ibm-not-wf-P02-ibm02n24.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n24'(suite) -> [];
+'ibm-not-wf-P02-ibm02n24'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n24.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n25.xml
+%% ID: ibm-not-wf-P02-ibm02n25.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n25'(suite) -> [];
+'ibm-not-wf-P02-ibm02n25'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n25.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n26.xml
+%% ID: ibm-not-wf-P02-ibm02n26.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n26'(suite) -> [];
+'ibm-not-wf-P02-ibm02n26'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n26.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n27.xml
+%% ID: ibm-not-wf-P02-ibm02n27.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n27'(suite) -> [];
+'ibm-not-wf-P02-ibm02n27'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n27.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n28.xml
+%% ID: ibm-not-wf-P02-ibm02n28.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n28'(suite) -> [];
+'ibm-not-wf-P02-ibm02n28'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n28.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n29.xml
+%% ID: ibm-not-wf-P02-ibm02n29.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n29'(suite) -> [];
+'ibm-not-wf-P02-ibm02n29'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n29.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n30.xml
+%% ID: ibm-not-wf-P02-ibm02n30.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n30'(suite) -> [];
+'ibm-not-wf-P02-ibm02n30'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n30.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n31.xml
+%% ID: ibm-not-wf-P02-ibm02n31.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n31'(suite) -> [];
+'ibm-not-wf-P02-ibm02n31'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n31.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n32.xml
+%% ID: ibm-not-wf-P02-ibm02n32.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n32'(suite) -> [];
+'ibm-not-wf-P02-ibm02n32'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n32.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P02/ibm02n33.xml
+%% ID: ibm-not-wf-P02-ibm02n33.xml
+%% Type: not-wf
+%% Sections: 2.2
+'ibm-not-wf-P02-ibm02n33'(suite) -> [];
+'ibm-not-wf-P02-ibm02n33'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P02/ibm02n33.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 2
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P03/ibm03n01.xml
+%% ID: ibm-not-wf-P03-ibm03n01.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P03-ibm03n01'(suite) -> [];
+'ibm-not-wf-P03-ibm03n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P03/ibm03n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 3
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n01.xml
+%% ID: ibm-not-wf-P04-ibm04n01.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n01'(suite) -> [];
+'ibm-not-wf-P04-ibm04n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n02.xml
+%% ID: ibm-not-wf-P04-ibm04n02.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n02'(suite) -> [];
+'ibm-not-wf-P04-ibm04n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n03.xml
+%% ID: ibm-not-wf-P04-ibm04n03.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n03'(suite) -> [];
+'ibm-not-wf-P04-ibm04n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n04.xml
+%% ID: ibm-not-wf-P04-ibm04n04.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n04'(suite) -> [];
+'ibm-not-wf-P04-ibm04n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n05.xml
+%% ID: ibm-not-wf-P04-ibm04n05.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n05'(suite) -> [];
+'ibm-not-wf-P04-ibm04n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n06.xml
+%% ID: ibm-not-wf-P04-ibm04n06.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n06'(suite) -> [];
+'ibm-not-wf-P04-ibm04n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n07.xml
+%% ID: ibm-not-wf-P04-ibm04n07.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n07'(suite) -> [];
+'ibm-not-wf-P04-ibm04n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n08.xml
+%% ID: ibm-not-wf-P04-ibm04n08.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n08'(suite) -> [];
+'ibm-not-wf-P04-ibm04n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n09.xml
+%% ID: ibm-not-wf-P04-ibm04n09.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n09'(suite) -> [];
+'ibm-not-wf-P04-ibm04n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n10.xml
+%% ID: ibm-not-wf-P04-ibm04n10.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n10'(suite) -> [];
+'ibm-not-wf-P04-ibm04n10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n11.xml
+%% ID: ibm-not-wf-P04-ibm04n11.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n11'(suite) -> [];
+'ibm-not-wf-P04-ibm04n11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n12.xml
+%% ID: ibm-not-wf-P04-ibm04n12.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n12'(suite) -> [];
+'ibm-not-wf-P04-ibm04n12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n13.xml
+%% ID: ibm-not-wf-P04-ibm04n13.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n13'(suite) -> [];
+'ibm-not-wf-P04-ibm04n13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n14.xml
+%% ID: ibm-not-wf-P04-ibm04n14.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n14'(suite) -> [];
+'ibm-not-wf-P04-ibm04n14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n15.xml
+%% ID: ibm-not-wf-P04-ibm04n15.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n15'(suite) -> [];
+'ibm-not-wf-P04-ibm04n15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n16.xml
+%% ID: ibm-not-wf-P04-ibm04n16.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n16'(suite) -> [];
+'ibm-not-wf-P04-ibm04n16'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n16.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n17.xml
+%% ID: ibm-not-wf-P04-ibm04n17.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n17'(suite) -> [];
+'ibm-not-wf-P04-ibm04n17'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n17.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P04/ibm04n18.xml
+%% ID: ibm-not-wf-P04-ibm04n18.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P04-ibm04n18'(suite) -> [];
+'ibm-not-wf-P04-ibm04n18'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P04/ibm04n18.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 4
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P05/ibm05n01.xml
+%% ID: ibm-not-wf-P05-ibm05n01.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P05-ibm05n01'(suite) -> [];
+'ibm-not-wf-P05-ibm05n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P05/ibm05n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P05/ibm05n02.xml
+%% ID: ibm-not-wf-P05-ibm05n02.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P05-ibm05n02'(suite) -> [];
+'ibm-not-wf-P05-ibm05n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P05/ibm05n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P05/ibm05n03.xml
+%% ID: ibm-not-wf-P05-ibm05n03.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P05-ibm05n03'(suite) -> [];
+'ibm-not-wf-P05-ibm05n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P05/ibm05n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 5
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P09/ibm09n01.xml
+%% ID: ibm-not-wf-P09-ibm09n01.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P09-ibm09n01'(suite) -> [];
+'ibm-not-wf-P09-ibm09n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P09/ibm09n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P09/ibm09n02.xml
+%% ID: ibm-not-wf-P09-ibm09n02.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P09-ibm09n02'(suite) -> [];
+'ibm-not-wf-P09-ibm09n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P09/ibm09n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P09/ibm09n03.xml
+%% ID: ibm-not-wf-P09-ibm09n03.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P09-ibm09n03'(suite) -> [];
+'ibm-not-wf-P09-ibm09n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P09/ibm09n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P09/ibm09n04.xml
+%% ID: ibm-not-wf-P09-ibm09n04.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P09-ibm09n04'(suite) -> [];
+'ibm-not-wf-P09-ibm09n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P09/ibm09n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 9
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P10/ibm10n01.xml
+%% ID: ibm-not-wf-P10-ibm10n01.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P10-ibm10n01'(suite) -> [];
+'ibm-not-wf-P10-ibm10n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P10/ibm10n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P10/ibm10n02.xml
+%% ID: ibm-not-wf-P10-ibm10n02.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P10-ibm10n02'(suite) -> [];
+'ibm-not-wf-P10-ibm10n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P10/ibm10n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P10/ibm10n03.xml
+%% ID: ibm-not-wf-P10-ibm10n03.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P10-ibm10n03'(suite) -> [];
+'ibm-not-wf-P10-ibm10n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P10/ibm10n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P10/ibm10n04.xml
+%% ID: ibm-not-wf-P10-ibm10n04.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P10-ibm10n04'(suite) -> [];
+'ibm-not-wf-P10-ibm10n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P10/ibm10n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P10/ibm10n05.xml
+%% ID: ibm-not-wf-P10-ibm10n05.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P10-ibm10n05'(suite) -> [];
+'ibm-not-wf-P10-ibm10n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P10/ibm10n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P10/ibm10n06.xml
+%% ID: ibm-not-wf-P10-ibm10n06.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P10-ibm10n06'(suite) -> [];
+'ibm-not-wf-P10-ibm10n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P10/ibm10n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P10/ibm10n07.xml
+%% ID: ibm-not-wf-P10-ibm10n07.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P10-ibm10n07'(suite) -> [];
+'ibm-not-wf-P10-ibm10n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P10/ibm10n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P10/ibm10n08.xml
+%% ID: ibm-not-wf-P10-ibm10n08.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P10-ibm10n08'(suite) -> [];
+'ibm-not-wf-P10-ibm10n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P10/ibm10n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 10
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P11/ibm11n01.xml
+%% ID: ibm-not-wf-P11-ibm11n01.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P11-ibm11n01'(suite) -> [];
+'ibm-not-wf-P11-ibm11n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P11/ibm11n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P11/ibm11n02.xml
+%% ID: ibm-not-wf-P11-ibm11n02.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P11-ibm11n02'(suite) -> [];
+'ibm-not-wf-P11-ibm11n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P11/ibm11n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P11/ibm11n03.xml
+%% ID: ibm-not-wf-P11-ibm11n03.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P11-ibm11n03'(suite) -> [];
+'ibm-not-wf-P11-ibm11n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P11/ibm11n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P11/ibm11n04.xml
+%% ID: ibm-not-wf-P11-ibm11n04.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P11-ibm11n04'(suite) -> [];
+'ibm-not-wf-P11-ibm11n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P11/ibm11n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 11
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P12/ibm12n01.xml
+%% ID: ibm-not-wf-P12-ibm12n01.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P12-ibm12n01'(suite) -> [];
+'ibm-not-wf-P12-ibm12n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P12/ibm12n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P12/ibm12n02.xml
+%% ID: ibm-not-wf-P12-ibm12n02.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P12-ibm12n02'(suite) -> [];
+'ibm-not-wf-P12-ibm12n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P12/ibm12n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P12/ibm12n03.xml
+%% ID: ibm-not-wf-P12-ibm12n03.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P12-ibm12n03'(suite) -> [];
+'ibm-not-wf-P12-ibm12n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P12/ibm12n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 12
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P13/ibm13n01.xml
+%% ID: ibm-not-wf-P13-ibm13n01.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P13-ibm13n01'(suite) -> [];
+'ibm-not-wf-P13-ibm13n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P13/ibm13n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P13/ibm13n02.xml
+%% ID: ibm-not-wf-P13-ibm13n02.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P13-ibm13n02'(suite) -> [];
+'ibm-not-wf-P13-ibm13n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P13/ibm13n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P13/ibm13n03.xml
+%% ID: ibm-not-wf-P13-ibm13n03.xml
+%% Type: not-wf
+%% Sections: 2.3
+'ibm-not-wf-P13-ibm13n03'(suite) -> [];
+'ibm-not-wf-P13-ibm13n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P13/ibm13n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 13
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P14/ibm14n01.xml
+%% ID: ibm-not-wf-P14-ibm14n01.xml
+%% Type: not-wf
+%% Sections: 2.4
+'ibm-not-wf-P14-ibm14n01'(suite) -> [];
+'ibm-not-wf-P14-ibm14n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P14/ibm14n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P14/ibm14n02.xml
+%% ID: ibm-not-wf-P14-ibm14n02.xml
+%% Type: not-wf
+%% Sections: 2.4
+'ibm-not-wf-P14-ibm14n02'(suite) -> [];
+'ibm-not-wf-P14-ibm14n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P14/ibm14n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P14/ibm14n03.xml
+%% ID: ibm-not-wf-P14-ibm14n03.xml
+%% Type: not-wf
+%% Sections: 2.4
+'ibm-not-wf-P14-ibm14n03'(suite) -> [];
+'ibm-not-wf-P14-ibm14n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P14/ibm14n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 14
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P15/ibm15n01.xml
+%% ID: ibm-not-wf-P15-ibm15n01.xml
+%% Type: not-wf
+%% Sections: 2.5
+'ibm-not-wf-P15-ibm15n01'(suite) -> [];
+'ibm-not-wf-P15-ibm15n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P15/ibm15n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P15/ibm15n02.xml
+%% ID: ibm-not-wf-P15-ibm15n02.xml
+%% Type: not-wf
+%% Sections: 2.5
+'ibm-not-wf-P15-ibm15n02'(suite) -> [];
+'ibm-not-wf-P15-ibm15n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P15/ibm15n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P15/ibm15n03.xml
+%% ID: ibm-not-wf-P15-ibm15n03.xml
+%% Type: not-wf
+%% Sections: 2.5
+'ibm-not-wf-P15-ibm15n03'(suite) -> [];
+'ibm-not-wf-P15-ibm15n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P15/ibm15n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P15/ibm15n04.xml
+%% ID: ibm-not-wf-P15-ibm15n04.xml
+%% Type: not-wf
+%% Sections: 2.5
+'ibm-not-wf-P15-ibm15n04'(suite) -> [];
+'ibm-not-wf-P15-ibm15n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P15/ibm15n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 15
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P16/ibm16n01.xml
+%% ID: ibm-not-wf-P16-ibm16n01.xml
+%% Type: not-wf
+%% Sections: 2.6
+'ibm-not-wf-P16-ibm16n01'(suite) -> [];
+'ibm-not-wf-P16-ibm16n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P16/ibm16n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P16/ibm16n02.xml
+%% ID: ibm-not-wf-P16-ibm16n02.xml
+%% Type: not-wf
+%% Sections: 2.6
+'ibm-not-wf-P16-ibm16n02'(suite) -> [];
+'ibm-not-wf-P16-ibm16n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P16/ibm16n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P16/ibm16n03.xml
+%% ID: ibm-not-wf-P16-ibm16n03.xml
+%% Type: not-wf
+%% Sections: 2.6
+'ibm-not-wf-P16-ibm16n03'(suite) -> [];
+'ibm-not-wf-P16-ibm16n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P16/ibm16n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P16/ibm16n04.xml
+%% ID: ibm-not-wf-P16-ibm16n04.xml
+%% Type: not-wf
+%% Sections: 2.6
+'ibm-not-wf-P16-ibm16n04'(suite) -> [];
+'ibm-not-wf-P16-ibm16n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P16/ibm16n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 16
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P17/ibm17n01.xml
+%% ID: ibm-not-wf-P17-ibm17n01.xml
+%% Type: not-wf
+%% Sections: 2.6
+'ibm-not-wf-P17-ibm17n01'(suite) -> [];
+'ibm-not-wf-P17-ibm17n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P17/ibm17n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P17/ibm17n02.xml
+%% ID: ibm-not-wf-P17-ibm17n02.xml
+%% Type: not-wf
+%% Sections: 2.6
+'ibm-not-wf-P17-ibm17n02'(suite) -> [];
+'ibm-not-wf-P17-ibm17n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P17/ibm17n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P17/ibm17n03.xml
+%% ID: ibm-not-wf-P17-ibm17n03.xml
+%% Type: not-wf
+%% Sections: 2.6
+'ibm-not-wf-P17-ibm17n03'(suite) -> [];
+'ibm-not-wf-P17-ibm17n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P17/ibm17n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P17/ibm17n04.xml
+%% ID: ibm-not-wf-P17-ibm17n04.xml
+%% Type: not-wf
+%% Sections: 2.6
+'ibm-not-wf-P17-ibm17n04'(suite) -> [];
+'ibm-not-wf-P17-ibm17n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P17/ibm17n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 17
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P18/ibm18n01.xml
+%% ID: ibm-not-wf-P18-ibm18n01.xml
+%% Type: not-wf
+%% Sections: 2.7
+'ibm-not-wf-P18-ibm18n01'(suite) -> [];
+'ibm-not-wf-P18-ibm18n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P18/ibm18n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P18/ibm18n02.xml
+%% ID: ibm-not-wf-P18-ibm18n02.xml
+%% Type: not-wf
+%% Sections: 2.7
+'ibm-not-wf-P18-ibm18n02'(suite) -> [];
+'ibm-not-wf-P18-ibm18n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P18/ibm18n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 18
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P19/ibm19n01.xml
+%% ID: ibm-not-wf-P19-ibm19n01.xml
+%% Type: not-wf
+%% Sections: 2.7
+'ibm-not-wf-P19-ibm19n01'(suite) -> [];
+'ibm-not-wf-P19-ibm19n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P19/ibm19n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P19/ibm19n02.xml
+%% ID: ibm-not-wf-P19-ibm19n02.xml
+%% Type: not-wf
+%% Sections: 2.7
+'ibm-not-wf-P19-ibm19n02'(suite) -> [];
+'ibm-not-wf-P19-ibm19n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P19/ibm19n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P19/ibm19n03.xml
+%% ID: ibm-not-wf-P19-ibm19n03.xml
+%% Type: not-wf
+%% Sections: 2.7
+'ibm-not-wf-P19-ibm19n03'(suite) -> [];
+'ibm-not-wf-P19-ibm19n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P19/ibm19n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 19
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P20/ibm20n01.xml
+%% ID: ibm-not-wf-P20-ibm20n01.xml
+%% Type: not-wf
+%% Sections: 2.7
+'ibm-not-wf-P20-ibm20n01'(suite) -> [];
+'ibm-not-wf-P20-ibm20n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P20/ibm20n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 20
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P21/ibm21n01.xml
+%% ID: ibm-not-wf-P21-ibm21n01.xml
+%% Type: not-wf
+%% Sections: 2.7
+'ibm-not-wf-P21-ibm21n01'(suite) -> [];
+'ibm-not-wf-P21-ibm21n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P21/ibm21n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P21/ibm21n02.xml
+%% ID: ibm-not-wf-P21-ibm21n02.xml
+%% Type: not-wf
+%% Sections: 2.7
+'ibm-not-wf-P21-ibm21n02'(suite) -> [];
+'ibm-not-wf-P21-ibm21n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P21/ibm21n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P21/ibm21n03.xml
+%% ID: ibm-not-wf-P21-ibm21n03.xml
+%% Type: not-wf
+%% Sections: 2.7
+'ibm-not-wf-P21-ibm21n03'(suite) -> [];
+'ibm-not-wf-P21-ibm21n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P21/ibm21n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 21
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P22/ibm22n01.xml
+%% ID: ibm-not-wf-P22-ibm22n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P22-ibm22n01'(suite) -> [];
+'ibm-not-wf-P22-ibm22n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P22/ibm22n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P22/ibm22n02.xml
+%% ID: ibm-not-wf-P22-ibm22n02.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P22-ibm22n02'(suite) -> [];
+'ibm-not-wf-P22-ibm22n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P22/ibm22n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P22/ibm22n03.xml
+%% ID: ibm-not-wf-P22-ibm22n03.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P22-ibm22n03'(suite) -> [];
+'ibm-not-wf-P22-ibm22n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P22/ibm22n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 22
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P23/ibm23n01.xml
+%% ID: ibm-not-wf-P23-ibm23n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P23-ibm23n01'(suite) -> [];
+'ibm-not-wf-P23-ibm23n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P23/ibm23n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P23/ibm23n02.xml
+%% ID: ibm-not-wf-P23-ibm23n02.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P23-ibm23n02'(suite) -> [];
+'ibm-not-wf-P23-ibm23n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P23/ibm23n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P23/ibm23n03.xml
+%% ID: ibm-not-wf-P23-ibm23n03.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P23-ibm23n03'(suite) -> [];
+'ibm-not-wf-P23-ibm23n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P23/ibm23n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P23/ibm23n04.xml
+%% ID: ibm-not-wf-P23-ibm23n04.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P23-ibm23n04'(suite) -> [];
+'ibm-not-wf-P23-ibm23n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P23/ibm23n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P23/ibm23n05.xml
+%% ID: ibm-not-wf-P23-ibm23n05.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P23-ibm23n05'(suite) -> [];
+'ibm-not-wf-P23-ibm23n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P23/ibm23n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P23/ibm23n06.xml
+%% ID: ibm-not-wf-P23-ibm23n06.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P23-ibm23n06'(suite) -> [];
+'ibm-not-wf-P23-ibm23n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P23/ibm23n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 23
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P24/ibm24n01.xml
+%% ID: ibm-not-wf-P24-ibm24n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P24-ibm24n01'(suite) -> [];
+'ibm-not-wf-P24-ibm24n01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P24/ibm24n01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P24/ibm24n02.xml
+%% ID: ibm-not-wf-P24-ibm24n02.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P24-ibm24n02'(suite) -> [];
+'ibm-not-wf-P24-ibm24n02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P24/ibm24n02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P24/ibm24n03.xml
+%% ID: ibm-not-wf-P24-ibm24n03.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P24-ibm24n03'(suite) -> [];
+'ibm-not-wf-P24-ibm24n03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P24/ibm24n03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P24/ibm24n04.xml
+%% ID: ibm-not-wf-P24-ibm24n04.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P24-ibm24n04'(suite) -> [];
+'ibm-not-wf-P24-ibm24n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P24/ibm24n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P24/ibm24n05.xml
+%% ID: ibm-not-wf-P24-ibm24n05.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P24-ibm24n05'(suite) -> [];
+'ibm-not-wf-P24-ibm24n05'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P24/ibm24n05.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P24/ibm24n06.xml
+%% ID: ibm-not-wf-P24-ibm24n06.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P24-ibm24n06'(suite) -> [];
+'ibm-not-wf-P24-ibm24n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P24/ibm24n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P24/ibm24n07.xml
+%% ID: ibm-not-wf-P24-ibm24n07.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P24-ibm24n07'(suite) -> [];
+'ibm-not-wf-P24-ibm24n07'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P24/ibm24n07.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P24/ibm24n08.xml
+%% ID: ibm-not-wf-P24-ibm24n08.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P24-ibm24n08'(suite) -> [];
+'ibm-not-wf-P24-ibm24n08'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P24/ibm24n08.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P24/ibm24n09.xml
+%% ID: ibm-not-wf-P24-ibm24n09.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P24-ibm24n09'(suite) -> [];
+'ibm-not-wf-P24-ibm24n09'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P24/ibm24n09.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 24
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P25/ibm25n01.xml
+%% ID: ibm-not-wf-P25-ibm25n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P25-ibm25n01'(suite) -> [];
+'ibm-not-wf-P25-ibm25n01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P25/ibm25n01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P25/ibm25n02.xml
+%% ID: ibm-not-wf-P25-ibm25n02.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P25-ibm25n02'(suite) -> [];
+'ibm-not-wf-P25-ibm25n02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P25/ibm25n02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 25
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P26/ibm26n01.xml
+%% ID: ibm-not-wf-P26-ibm26n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P26-ibm26n01'(suite) -> [];
+'ibm-not-wf-P26-ibm26n01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P26/ibm26n01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 26
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P27/ibm27n01.xml
+%% ID: ibm-not-wf-P27-ibm27n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P27-ibm27n01'(suite) -> [];
+'ibm-not-wf-P27-ibm27n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P27/ibm27n01.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_, <<"<!ELEMENT cat EMPTY>">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 27
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P28/ibm28n01.xml
+%% ID: ibm-not-wf-P28-ibm28n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P28-ibm28n01'(suite) -> [];
+'ibm-not-wf-P28-ibm28n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P28/ibm28n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P28/ibm28n02.xml
+%% ID: ibm-not-wf-P28-ibm28n02.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P28-ibm28n02'(suite) -> [];
+'ibm-not-wf-P28-ibm28n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P28/ibm28n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P28/ibm28n03.xml
+%% ID: ibm-not-wf-P28-ibm28n03.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P28-ibm28n03'(suite) -> [];
+'ibm-not-wf-P28-ibm28n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P28/ibm28n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P28/ibm28n04.xml
+%% ID: ibm-not-wf-P28-ibm28n04.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P28-ibm28n04'(suite) -> [];
+'ibm-not-wf-P28-ibm28n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P28/ibm28n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P28/ibm28n05.xml
+%% ID: ibm-not-wf-P28-ibm28n05.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P28-ibm28n05'(suite) -> [];
+'ibm-not-wf-P28-ibm28n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P28/ibm28n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P28/ibm28n06.xml
+%% ID: ibm-not-wf-P28-ibm28n06.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P28-ibm28n06'(suite) -> [];
+'ibm-not-wf-P28-ibm28n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P28/ibm28n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P28/ibm28n07.xml
+%% ID: ibm-not-wf-P28-ibm28n07.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P28-ibm28n07'(suite) -> [];
+'ibm-not-wf-P28-ibm28n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P28/ibm28n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P28/ibm28n08.xml
+%% ID: ibm-not-wf-P28-ibm28n08.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P28-ibm28n08'(suite) -> [];
+'ibm-not-wf-P28-ibm28n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P28/ibm28n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 28
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/p28a/ibm28an01.xml
+%% ID: ibm-not-wf-p28a-ibm28an01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-p28a-ibm28an01'(suite) -> [];
+'ibm-not-wf-p28a-ibm28an01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/p28a/ibm28an01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 28a
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P29/ibm29n01.xml
+%% ID: ibm-not-wf-P29-ibm29n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P29-ibm29n01'(suite) -> [];
+'ibm-not-wf-P29-ibm29n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P29/ibm29n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P29/ibm29n02.xml
+%% ID: ibm-not-wf-P29-ibm29n02.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P29-ibm29n02'(suite) -> [];
+'ibm-not-wf-P29-ibm29n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P29/ibm29n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P29/ibm29n03.xml
+%% ID: ibm-not-wf-P29-ibm29n03.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P29-ibm29n03'(suite) -> [];
+'ibm-not-wf-P29-ibm29n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P29/ibm29n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P29/ibm29n04.xml
+%% ID: ibm-not-wf-P29-ibm29n04.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P29-ibm29n04'(suite) -> [];
+'ibm-not-wf-P29-ibm29n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P29/ibm29n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P29/ibm29n05.xml
+%% ID: ibm-not-wf-P29-ibm29n05.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P29-ibm29n05'(suite) -> [];
+'ibm-not-wf-P29-ibm29n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P29/ibm29n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P29/ibm29n06.xml
+%% ID: ibm-not-wf-P29-ibm29n06.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P29-ibm29n06'(suite) -> [];
+'ibm-not-wf-P29-ibm29n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P29/ibm29n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P29/ibm29n07.xml
+%% ID: ibm-not-wf-P29-ibm29n07.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P29-ibm29n07'(suite) -> [];
+'ibm-not-wf-P29-ibm29n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P29/ibm29n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 29
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P30/ibm30n01.xml
+%% ID: ibm-not-wf-P30-ibm30n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P30-ibm30n01'(suite) -> [];
+'ibm-not-wf-P30-ibm30n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P30/ibm30n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 30
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P31/ibm31n01.xml
+%% ID: ibm-not-wf-P31-ibm31n01.xml
+%% Type: not-wf
+%% Sections: 2.8
+'ibm-not-wf-P31-ibm31n01'(suite) -> [];
+'ibm-not-wf-P31-ibm31n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P31/ibm31n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 31
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P32/ibm32n01.xml
+%% ID: ibm-not-wf-P32-ibm32n01.xml
+%% Type: not-wf
+%% Sections: 2.9
+'ibm-not-wf-P32-ibm32n01'(suite) -> [];
+'ibm-not-wf-P32-ibm32n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P32/ibm32n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P32/ibm32n02.xml
+%% ID: ibm-not-wf-P32-ibm32n02.xml
+%% Type: not-wf
+%% Sections: 2.9
+'ibm-not-wf-P32-ibm32n02'(suite) -> [];
+'ibm-not-wf-P32-ibm32n02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P32/ibm32n02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P32/ibm32n03.xml
+%% ID: ibm-not-wf-P32-ibm32n03.xml
+%% Type: not-wf
+%% Sections: 2.9
+'ibm-not-wf-P32-ibm32n03'(suite) -> [];
+'ibm-not-wf-P32-ibm32n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P32/ibm32n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P32/ibm32n04.xml
+%% ID: ibm-not-wf-P32-ibm32n04.xml
+%% Type: not-wf
+%% Sections: 2.9
+'ibm-not-wf-P32-ibm32n04'(suite) -> [];
+'ibm-not-wf-P32-ibm32n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P32/ibm32n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P32/ibm32n05.xml
+%% ID: ibm-not-wf-P32-ibm32n05.xml
+%% Type: not-wf
+%% Sections: 2.9
+'ibm-not-wf-P32-ibm32n05'(suite) -> [];
+'ibm-not-wf-P32-ibm32n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P32/ibm32n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P32/ibm32n06.xml
+%% ID: ibm-not-wf-P32-ibm32n06.xml
+%% Type: not-wf
+%% Sections: 2.9
+'ibm-not-wf-P32-ibm32n06'(suite) -> [];
+'ibm-not-wf-P32-ibm32n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P32/ibm32n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P32/ibm32n07.xml
+%% ID: ibm-not-wf-P32-ibm32n07.xml
+%% Type: not-wf
+%% Sections: 2.9
+'ibm-not-wf-P32-ibm32n07'(suite) -> [];
+'ibm-not-wf-P32-ibm32n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P32/ibm32n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P32/ibm32n08.xml
+%% ID: ibm-not-wf-P32-ibm32n08.xml
+%% Type: not-wf
+%% Sections: 2.9
+'ibm-not-wf-P32-ibm32n08'(suite) -> [];
+'ibm-not-wf-P32-ibm32n08'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P32/ibm32n08.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P32/ibm32n09.xml
+%% ID: ibm-not-wf-P32-ibm32n09.xml
+%% Type: not-wf
+%% Sections: 2.9
+'ibm-not-wf-P32-ibm32n09'(suite) -> [];
+'ibm-not-wf-P32-ibm32n09'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P32/ibm32n09.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 32
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P39/ibm39n01.xml
+%% ID: ibm-not-wf-P39-ibm39n01.xml
+%% Type: not-wf
+%% Sections: 3
+'ibm-not-wf-P39-ibm39n01'(suite) -> [];
+'ibm-not-wf-P39-ibm39n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P39/ibm39n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P39/ibm39n02.xml
+%% ID: ibm-not-wf-P39-ibm39n02.xml
+%% Type: not-wf
+%% Sections: 3
+'ibm-not-wf-P39-ibm39n02'(suite) -> [];
+'ibm-not-wf-P39-ibm39n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P39/ibm39n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P39/ibm39n03.xml
+%% ID: ibm-not-wf-P39-ibm39n03.xml
+%% Type: not-wf
+%% Sections: 3
+'ibm-not-wf-P39-ibm39n03'(suite) -> [];
+'ibm-not-wf-P39-ibm39n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P39/ibm39n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P39/ibm39n04.xml
+%% ID: ibm-not-wf-P39-ibm39n04.xml
+%% Type: not-wf
+%% Sections: 3
+'ibm-not-wf-P39-ibm39n04'(suite) -> [];
+'ibm-not-wf-P39-ibm39n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P39/ibm39n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P39/ibm39n05.xml
+%% ID: ibm-not-wf-P39-ibm39n05.xml
+%% Type: not-wf
+%% Sections: 3
+'ibm-not-wf-P39-ibm39n05'(suite) -> [];
+'ibm-not-wf-P39-ibm39n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P39/ibm39n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P39/ibm39n06.xml
+%% ID: ibm-not-wf-P39-ibm39n06.xml
+%% Type: not-wf
+%% Sections: 3
+'ibm-not-wf-P39-ibm39n06'(suite) -> [];
+'ibm-not-wf-P39-ibm39n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P39/ibm39n06.xml"]),
+ %% Special case becase we returns everything after a legal document
+ %% as an rest instead of giving and error to let the user handle
+ %% multipple docs on a stream.
+ ?line {ok,_,<<"content after end tag\r\n">>} = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]).
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 39
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P40/ibm40n01.xml
+%% ID: ibm-not-wf-P40-ibm40n01.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P40-ibm40n01'(suite) -> [];
+'ibm-not-wf-P40-ibm40n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P40/ibm40n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P40/ibm40n02.xml
+%% ID: ibm-not-wf-P40-ibm40n02.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P40-ibm40n02'(suite) -> [];
+'ibm-not-wf-P40-ibm40n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P40/ibm40n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P40/ibm40n03.xml
+%% ID: ibm-not-wf-P40-ibm40n03.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P40-ibm40n03'(suite) -> [];
+'ibm-not-wf-P40-ibm40n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P40/ibm40n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P40/ibm40n04.xml
+%% ID: ibm-not-wf-P40-ibm40n04.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P40-ibm40n04'(suite) -> [];
+'ibm-not-wf-P40-ibm40n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P40/ibm40n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P40/ibm40n05.xml
+%% ID: ibm-not-wf-P40-ibm40n05.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P40-ibm40n05'(suite) -> [];
+'ibm-not-wf-P40-ibm40n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P40/ibm40n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 40
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n01.xml
+%% ID: ibm-not-wf-P41-ibm41n01.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n01'(suite) -> [];
+'ibm-not-wf-P41-ibm41n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n02.xml
+%% ID: ibm-not-wf-P41-ibm41n02.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n02'(suite) -> [];
+'ibm-not-wf-P41-ibm41n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n03.xml
+%% ID: ibm-not-wf-P41-ibm41n03.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n03'(suite) -> [];
+'ibm-not-wf-P41-ibm41n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n04.xml
+%% ID: ibm-not-wf-P41-ibm41n04.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n04'(suite) -> [];
+'ibm-not-wf-P41-ibm41n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n05.xml
+%% ID: ibm-not-wf-P41-ibm41n05.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n05'(suite) -> [];
+'ibm-not-wf-P41-ibm41n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n06.xml
+%% ID: ibm-not-wf-P41-ibm41n06.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n06'(suite) -> [];
+'ibm-not-wf-P41-ibm41n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n07.xml
+%% ID: ibm-not-wf-P41-ibm41n07.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n07'(suite) -> [];
+'ibm-not-wf-P41-ibm41n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n08.xml
+%% ID: ibm-not-wf-P41-ibm41n08.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n08'(suite) -> [];
+'ibm-not-wf-P41-ibm41n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n09.xml
+%% ID: ibm-not-wf-P41-ibm41n09.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n09'(suite) -> [];
+'ibm-not-wf-P41-ibm41n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n10.xml
+%% ID: ibm-not-wf-P41-ibm41n10.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n10'(suite) -> [];
+'ibm-not-wf-P41-ibm41n10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n11.xml
+%% ID: ibm-not-wf-P41-ibm41n11.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n11'(suite) -> [];
+'ibm-not-wf-P41-ibm41n11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n12.xml
+%% ID: ibm-not-wf-P41-ibm41n12.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n12'(suite) -> [];
+'ibm-not-wf-P41-ibm41n12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n13.xml
+%% ID: ibm-not-wf-P41-ibm41n13.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n13'(suite) -> [];
+'ibm-not-wf-P41-ibm41n13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P41/ibm41n14.xml
+%% ID: ibm-not-wf-P41-ibm41n14.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P41-ibm41n14'(suite) -> [];
+'ibm-not-wf-P41-ibm41n14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P41/ibm41n14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 41
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P42/ibm42n01.xml
+%% ID: ibm-not-wf-P42-ibm42n01.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P42-ibm42n01'(suite) -> [];
+'ibm-not-wf-P42-ibm42n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P42/ibm42n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P42/ibm42n02.xml
+%% ID: ibm-not-wf-P42-ibm42n02.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P42-ibm42n02'(suite) -> [];
+'ibm-not-wf-P42-ibm42n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P42/ibm42n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P42/ibm42n03.xml
+%% ID: ibm-not-wf-P42-ibm42n03.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P42-ibm42n03'(suite) -> [];
+'ibm-not-wf-P42-ibm42n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P42/ibm42n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P42/ibm42n04.xml
+%% ID: ibm-not-wf-P42-ibm42n04.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P42-ibm42n04'(suite) -> [];
+'ibm-not-wf-P42-ibm42n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P42/ibm42n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P42/ibm42n05.xml
+%% ID: ibm-not-wf-P42-ibm42n05.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P42-ibm42n05'(suite) -> [];
+'ibm-not-wf-P42-ibm42n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P42/ibm42n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 42
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P43/ibm43n01.xml
+%% ID: ibm-not-wf-P43-ibm43n01.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P43-ibm43n01'(suite) -> [];
+'ibm-not-wf-P43-ibm43n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P43/ibm43n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P43/ibm43n02.xml
+%% ID: ibm-not-wf-P43-ibm43n02.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P43-ibm43n02'(suite) -> [];
+'ibm-not-wf-P43-ibm43n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P43/ibm43n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P43/ibm43n04.xml
+%% ID: ibm-not-wf-P43-ibm43n04.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P43-ibm43n04'(suite) -> [];
+'ibm-not-wf-P43-ibm43n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P43/ibm43n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P43/ibm43n05.xml
+%% ID: ibm-not-wf-P43-ibm43n05.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P43-ibm43n05'(suite) -> [];
+'ibm-not-wf-P43-ibm43n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P43/ibm43n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 43
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P44/ibm44n01.xml
+%% ID: ibm-not-wf-P44-ibm44n01.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P44-ibm44n01'(suite) -> [];
+'ibm-not-wf-P44-ibm44n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P44/ibm44n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P44/ibm44n02.xml
+%% ID: ibm-not-wf-P44-ibm44n02.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P44-ibm44n02'(suite) -> [];
+'ibm-not-wf-P44-ibm44n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P44/ibm44n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P44/ibm44n03.xml
+%% ID: ibm-not-wf-P44-ibm44n03.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P44-ibm44n03'(suite) -> [];
+'ibm-not-wf-P44-ibm44n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P44/ibm44n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P44/ibm44n04.xml
+%% ID: ibm-not-wf-P44-ibm44n04.xml
+%% Type: not-wf
+%% Sections: 3.1
+'ibm-not-wf-P44-ibm44n04'(suite) -> [];
+'ibm-not-wf-P44-ibm44n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P44/ibm44n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 44
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P45/ibm45n01.xml
+%% ID: ibm-not-wf-P45-ibm45n01.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P45-ibm45n01'(suite) -> [];
+'ibm-not-wf-P45-ibm45n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P45/ibm45n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P45/ibm45n02.xml
+%% ID: ibm-not-wf-P45-ibm45n02.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P45-ibm45n02'(suite) -> [];
+'ibm-not-wf-P45-ibm45n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P45/ibm45n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P45/ibm45n03.xml
+%% ID: ibm-not-wf-P45-ibm45n03.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P45-ibm45n03'(suite) -> [];
+'ibm-not-wf-P45-ibm45n03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P45/ibm45n03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P45/ibm45n04.xml
+%% ID: ibm-not-wf-P45-ibm45n04.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P45-ibm45n04'(suite) -> [];
+'ibm-not-wf-P45-ibm45n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P45/ibm45n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P45/ibm45n05.xml
+%% ID: ibm-not-wf-P45-ibm45n05.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P45-ibm45n05'(suite) -> [];
+'ibm-not-wf-P45-ibm45n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P45/ibm45n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P45/ibm45n06.xml
+%% ID: ibm-not-wf-P45-ibm45n06.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P45-ibm45n06'(suite) -> [];
+'ibm-not-wf-P45-ibm45n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P45/ibm45n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P45/ibm45n07.xml
+%% ID: ibm-not-wf-P45-ibm45n07.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P45-ibm45n07'(suite) -> [];
+'ibm-not-wf-P45-ibm45n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P45/ibm45n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P45/ibm45n08.xml
+%% ID: ibm-not-wf-P45-ibm45n08.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P45-ibm45n08'(suite) -> [];
+'ibm-not-wf-P45-ibm45n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P45/ibm45n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P45/ibm45n09.xml
+%% ID: ibm-not-wf-P45-ibm45n09.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P45-ibm45n09'(suite) -> [];
+'ibm-not-wf-P45-ibm45n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P45/ibm45n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 45
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P46/ibm46n01.xml
+%% ID: ibm-not-wf-P46-ibm46n01.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P46-ibm46n01'(suite) -> [];
+'ibm-not-wf-P46-ibm46n01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P46/ibm46n01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P46/ibm46n02.xml
+%% ID: ibm-not-wf-P46-ibm46n02.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P46-ibm46n02'(suite) -> [];
+'ibm-not-wf-P46-ibm46n02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P46/ibm46n02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P46/ibm46n03.xml
+%% ID: ibm-not-wf-P46-ibm46n03.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P46-ibm46n03'(suite) -> [];
+'ibm-not-wf-P46-ibm46n03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P46/ibm46n03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P46/ibm46n04.xml
+%% ID: ibm-not-wf-P46-ibm46n04.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P46-ibm46n04'(suite) -> [];
+'ibm-not-wf-P46-ibm46n04'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P46/ibm46n04.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P46/ibm46n05.xml
+%% ID: ibm-not-wf-P46-ibm46n05.xml
+%% Type: not-wf
+%% Sections: 3.2
+'ibm-not-wf-P46-ibm46n05'(suite) -> [];
+'ibm-not-wf-P46-ibm46n05'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P46/ibm46n05.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 46
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P47/ibm47n01.xml
+%% ID: ibm-not-wf-P47-ibm47n01.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P47-ibm47n01'(suite) -> [];
+'ibm-not-wf-P47-ibm47n01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P47/ibm47n01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P47/ibm47n02.xml
+%% ID: ibm-not-wf-P47-ibm47n02.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P47-ibm47n02'(suite) -> [];
+'ibm-not-wf-P47-ibm47n02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P47/ibm47n02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P47/ibm47n03.xml
+%% ID: ibm-not-wf-P47-ibm47n03.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P47-ibm47n03'(suite) -> [];
+'ibm-not-wf-P47-ibm47n03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P47/ibm47n03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P47/ibm47n04.xml
+%% ID: ibm-not-wf-P47-ibm47n04.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P47-ibm47n04'(suite) -> [];
+'ibm-not-wf-P47-ibm47n04'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P47/ibm47n04.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P47/ibm47n05.xml
+%% ID: ibm-not-wf-P47-ibm47n05.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P47-ibm47n05'(suite) -> [];
+'ibm-not-wf-P47-ibm47n05'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P47/ibm47n05.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P47/ibm47n06.xml
+%% ID: ibm-not-wf-P47-ibm47n06.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P47-ibm47n06'(suite) -> [];
+'ibm-not-wf-P47-ibm47n06'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P47/ibm47n06.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 47
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P48/ibm48n01.xml
+%% ID: ibm-not-wf-P48-ibm48n01.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P48-ibm48n01'(suite) -> [];
+'ibm-not-wf-P48-ibm48n01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P48/ibm48n01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P48/ibm48n02.xml
+%% ID: ibm-not-wf-P48-ibm48n02.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P48-ibm48n02'(suite) -> [];
+'ibm-not-wf-P48-ibm48n02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P48/ibm48n02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P48/ibm48n03.xml
+%% ID: ibm-not-wf-P48-ibm48n03.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P48-ibm48n03'(suite) -> [];
+'ibm-not-wf-P48-ibm48n03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P48/ibm48n03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P48/ibm48n04.xml
+%% ID: ibm-not-wf-P48-ibm48n04.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P48-ibm48n04'(suite) -> [];
+'ibm-not-wf-P48-ibm48n04'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P48/ibm48n04.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P48/ibm48n05.xml
+%% ID: ibm-not-wf-P48-ibm48n05.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P48-ibm48n05'(suite) -> [];
+'ibm-not-wf-P48-ibm48n05'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P48/ibm48n05.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P48/ibm48n06.xml
+%% ID: ibm-not-wf-P48-ibm48n06.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P48-ibm48n06'(suite) -> [];
+'ibm-not-wf-P48-ibm48n06'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P48/ibm48n06.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P48/ibm48n07.xml
+%% ID: ibm-not-wf-P48-ibm48n07.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P48-ibm48n07'(suite) -> [];
+'ibm-not-wf-P48-ibm48n07'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P48/ibm48n07.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 48
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P49/ibm49n01.xml
+%% ID: ibm-not-wf-P49-ibm49n01.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P49-ibm49n01'(suite) -> [];
+'ibm-not-wf-P49-ibm49n01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P49/ibm49n01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P49/ibm49n02.xml
+%% ID: ibm-not-wf-P49-ibm49n02.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P49-ibm49n02'(suite) -> [];
+'ibm-not-wf-P49-ibm49n02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P49/ibm49n02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P49/ibm49n03.xml
+%% ID: ibm-not-wf-P49-ibm49n03.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P49-ibm49n03'(suite) -> [];
+'ibm-not-wf-P49-ibm49n03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P49/ibm49n03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P49/ibm49n04.xml
+%% ID: ibm-not-wf-P49-ibm49n04.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P49-ibm49n04'(suite) -> [];
+'ibm-not-wf-P49-ibm49n04'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P49/ibm49n04.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P49/ibm49n05.xml
+%% ID: ibm-not-wf-P49-ibm49n05.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P49-ibm49n05'(suite) -> [];
+'ibm-not-wf-P49-ibm49n05'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P49/ibm49n05.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P49/ibm49n06.xml
+%% ID: ibm-not-wf-P49-ibm49n06.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P49-ibm49n06'(suite) -> [];
+'ibm-not-wf-P49-ibm49n06'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P49/ibm49n06.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 49
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P50/ibm50n01.xml
+%% ID: ibm-not-wf-P50-ibm50n01.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P50-ibm50n01'(suite) -> [];
+'ibm-not-wf-P50-ibm50n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P50/ibm50n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P50/ibm50n02.xml
+%% ID: ibm-not-wf-P50-ibm50n02.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P50-ibm50n02'(suite) -> [];
+'ibm-not-wf-P50-ibm50n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P50/ibm50n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P50/ibm50n03.xml
+%% ID: ibm-not-wf-P50-ibm50n03.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P50-ibm50n03'(suite) -> [];
+'ibm-not-wf-P50-ibm50n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P50/ibm50n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P50/ibm50n04.xml
+%% ID: ibm-not-wf-P50-ibm50n04.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P50-ibm50n04'(suite) -> [];
+'ibm-not-wf-P50-ibm50n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P50/ibm50n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P50/ibm50n05.xml
+%% ID: ibm-not-wf-P50-ibm50n05.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P50-ibm50n05'(suite) -> [];
+'ibm-not-wf-P50-ibm50n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P50/ibm50n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P50/ibm50n06.xml
+%% ID: ibm-not-wf-P50-ibm50n06.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P50-ibm50n06'(suite) -> [];
+'ibm-not-wf-P50-ibm50n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P50/ibm50n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P50/ibm50n07.xml
+%% ID: ibm-not-wf-P50-ibm50n07.xml
+%% Type: not-wf
+%% Sections: 3.2.1
+'ibm-not-wf-P50-ibm50n07'(suite) -> [];
+'ibm-not-wf-P50-ibm50n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P50/ibm50n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 50
+
+testcases67(suite) -> [].
+%% ['ibm-not-wf-P50-ibm50n01','ibm-not-wf-P50-ibm50n02','ibm-not-wf-P50-ibm50n03','ibm-not-wf-P50-ibm50n04','ibm-not-wf-P50-ibm50n05','ibm-not-wf-P50-ibm50n06','ibm-not-wf-P50-ibm50n07'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P51/ibm51n01.xml
+%% ID: ibm-not-wf-P51-ibm51n01.xml
+%% Type: not-wf
+%% Sections: 3.2.2
+'ibm-not-wf-P51-ibm51n01'(suite) -> [];
+'ibm-not-wf-P51-ibm51n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P51/ibm51n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P51/ibm51n02.xml
+%% ID: ibm-not-wf-P51-ibm51n02.xml
+%% Type: not-wf
+%% Sections: 3.2.2
+'ibm-not-wf-P51-ibm51n02'(suite) -> [];
+'ibm-not-wf-P51-ibm51n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P51/ibm51n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P51/ibm51n03.xml
+%% ID: ibm-not-wf-P51-ibm51n03.xml
+%% Type: not-wf
+%% Sections: 3.2.2
+'ibm-not-wf-P51-ibm51n03'(suite) -> [];
+'ibm-not-wf-P51-ibm51n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P51/ibm51n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P51/ibm51n04.xml
+%% ID: ibm-not-wf-P51-ibm51n04.xml
+%% Type: not-wf
+%% Sections: 3.2.2
+'ibm-not-wf-P51-ibm51n04'(suite) -> [];
+'ibm-not-wf-P51-ibm51n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P51/ibm51n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P51/ibm51n05.xml
+%% ID: ibm-not-wf-P51-ibm51n05.xml
+%% Type: not-wf
+%% Sections: 3.2.2
+'ibm-not-wf-P51-ibm51n05'(suite) -> [];
+'ibm-not-wf-P51-ibm51n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P51/ibm51n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P51/ibm51n06.xml
+%% ID: ibm-not-wf-P51-ibm51n06.xml
+%% Type: not-wf
+%% Sections: 3.2.2
+'ibm-not-wf-P51-ibm51n06'(suite) -> [];
+'ibm-not-wf-P51-ibm51n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P51/ibm51n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P51/ibm51n07.xml
+%% ID: ibm-not-wf-P51-ibm51n07.xml
+%% Type: not-wf
+%% Sections: 3.2.2
+'ibm-not-wf-P51-ibm51n07'(suite) -> [];
+'ibm-not-wf-P51-ibm51n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P51/ibm51n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 51
+
+testcases68(suite) -> [].
+%% ['ibm-not-wf-P51-ibm51n01','ibm-not-wf-P51-ibm51n02','ibm-not-wf-P51-ibm51n03','ibm-not-wf-P51-ibm51n04','ibm-not-wf-P51-ibm51n05','ibm-not-wf-P51-ibm51n06','ibm-not-wf-P51-ibm51n07'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P52/ibm52n01.xml
+%% ID: ibm-not-wf-P52-ibm52n01.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P52-ibm52n01'(suite) -> [];
+'ibm-not-wf-P52-ibm52n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P52/ibm52n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P52/ibm52n02.xml
+%% ID: ibm-not-wf-P52-ibm52n02.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P52-ibm52n02'(suite) -> [];
+'ibm-not-wf-P52-ibm52n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P52/ibm52n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P52/ibm52n03.xml
+%% ID: ibm-not-wf-P52-ibm52n03.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P52-ibm52n03'(suite) -> [];
+'ibm-not-wf-P52-ibm52n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P52/ibm52n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P52/ibm52n04.xml
+%% ID: ibm-not-wf-P52-ibm52n04.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P52-ibm52n04'(suite) -> [];
+'ibm-not-wf-P52-ibm52n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P52/ibm52n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P52/ibm52n05.xml
+%% ID: ibm-not-wf-P52-ibm52n05.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P52-ibm52n05'(suite) -> [];
+'ibm-not-wf-P52-ibm52n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P52/ibm52n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P52/ibm52n06.xml
+%% ID: ibm-not-wf-P52-ibm52n06.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P52-ibm52n06'(suite) -> [];
+'ibm-not-wf-P52-ibm52n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P52/ibm52n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 52
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P53/ibm53n01.xml
+%% ID: ibm-not-wf-P53-ibm53n01.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P53-ibm53n01'(suite) -> [];
+'ibm-not-wf-P53-ibm53n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P53/ibm53n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P53/ibm53n02.xml
+%% ID: ibm-not-wf-P53-ibm53n02.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P53-ibm53n02'(suite) -> [];
+'ibm-not-wf-P53-ibm53n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P53/ibm53n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P53/ibm53n03.xml
+%% ID: ibm-not-wf-P53-ibm53n03.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P53-ibm53n03'(suite) -> [];
+'ibm-not-wf-P53-ibm53n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P53/ibm53n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P53/ibm53n04.xml
+%% ID: ibm-not-wf-P53-ibm53n04.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P53-ibm53n04'(suite) -> [];
+'ibm-not-wf-P53-ibm53n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P53/ibm53n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P53/ibm53n05.xml
+%% ID: ibm-not-wf-P53-ibm53n05.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P53-ibm53n05'(suite) -> [];
+'ibm-not-wf-P53-ibm53n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P53/ibm53n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P53/ibm53n06.xml
+%% ID: ibm-not-wf-P53-ibm53n06.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P53-ibm53n06'(suite) -> [];
+'ibm-not-wf-P53-ibm53n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P53/ibm53n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P53/ibm53n07.xml
+%% ID: ibm-not-wf-P53-ibm53n07.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P53-ibm53n07'(suite) -> [];
+'ibm-not-wf-P53-ibm53n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P53/ibm53n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P53/ibm53n08.xml
+%% ID: ibm-not-wf-P53-ibm53n08.xml
+%% Type: not-wf
+%% Sections: 3.3
+'ibm-not-wf-P53-ibm53n08'(suite) -> [];
+'ibm-not-wf-P53-ibm53n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P53/ibm53n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 53
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P54/ibm54n01.xml
+%% ID: ibm-not-wf-P54-ibm54n01.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P54-ibm54n01'(suite) -> [];
+'ibm-not-wf-P54-ibm54n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P54/ibm54n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P54/ibm54n02.xml
+%% ID: ibm-not-wf-P54-ibm54n02.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P54-ibm54n02'(suite) -> [];
+'ibm-not-wf-P54-ibm54n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P54/ibm54n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 54
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P55/ibm55n01.xml
+%% ID: ibm-not-wf-P55-ibm55n01.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P55-ibm55n01'(suite) -> [];
+'ibm-not-wf-P55-ibm55n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P55/ibm55n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P55/ibm55n02.xml
+%% ID: ibm-not-wf-P55-ibm55n02.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P55-ibm55n02'(suite) -> [];
+'ibm-not-wf-P55-ibm55n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P55/ibm55n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P55/ibm55n03.xml
+%% ID: ibm-not-wf-P55-ibm55n03.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P55-ibm55n03'(suite) -> [];
+'ibm-not-wf-P55-ibm55n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P55/ibm55n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 55
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P56/ibm56n01.xml
+%% ID: ibm-not-wf-P56-ibm56n01.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P56-ibm56n01'(suite) -> [];
+'ibm-not-wf-P56-ibm56n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P56/ibm56n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P56/ibm56n02.xml
+%% ID: ibm-not-wf-P56-ibm56n02.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P56-ibm56n02'(suite) -> [];
+'ibm-not-wf-P56-ibm56n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P56/ibm56n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P56/ibm56n03.xml
+%% ID: ibm-not-wf-P56-ibm56n03.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P56-ibm56n03'(suite) -> [];
+'ibm-not-wf-P56-ibm56n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P56/ibm56n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P56/ibm56n04.xml
+%% ID: ibm-not-wf-P56-ibm56n04.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P56-ibm56n04'(suite) -> [];
+'ibm-not-wf-P56-ibm56n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P56/ibm56n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P56/ibm56n05.xml
+%% ID: ibm-not-wf-P56-ibm56n05.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P56-ibm56n05'(suite) -> [];
+'ibm-not-wf-P56-ibm56n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P56/ibm56n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P56/ibm56n06.xml
+%% ID: ibm-not-wf-P56-ibm56n06.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P56-ibm56n06'(suite) -> [];
+'ibm-not-wf-P56-ibm56n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P56/ibm56n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P56/ibm56n07.xml
+%% ID: ibm-not-wf-P56-ibm56n07.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P56-ibm56n07'(suite) -> [];
+'ibm-not-wf-P56-ibm56n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P56/ibm56n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 56
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P57/ibm57n01.xml
+%% ID: ibm-not-wf-P57-ibm57n01.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P57-ibm57n01'(suite) -> [];
+'ibm-not-wf-P57-ibm57n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P57/ibm57n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 57
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P58/ibm58n01.xml
+%% ID: ibm-not-wf-P58-ibm58n01.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P58-ibm58n01'(suite) -> [];
+'ibm-not-wf-P58-ibm58n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P58/ibm58n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P58/ibm58n02.xml
+%% ID: ibm-not-wf-P58-ibm58n02.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P58-ibm58n02'(suite) -> [];
+'ibm-not-wf-P58-ibm58n02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P58/ibm58n02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P58/ibm58n03.xml
+%% ID: ibm-not-wf-P58-ibm58n03.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P58-ibm58n03'(suite) -> [];
+'ibm-not-wf-P58-ibm58n03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P58/ibm58n03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P58/ibm58n04.xml
+%% ID: ibm-not-wf-P58-ibm58n04.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P58-ibm58n04'(suite) -> [];
+'ibm-not-wf-P58-ibm58n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P58/ibm58n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P58/ibm58n05.xml
+%% ID: ibm-not-wf-P58-ibm58n05.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P58-ibm58n05'(suite) -> [];
+'ibm-not-wf-P58-ibm58n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P58/ibm58n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P58/ibm58n06.xml
+%% ID: ibm-not-wf-P58-ibm58n06.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P58-ibm58n06'(suite) -> [];
+'ibm-not-wf-P58-ibm58n06'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P58/ibm58n06.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P58/ibm58n07.xml
+%% ID: ibm-not-wf-P58-ibm58n07.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P58-ibm58n07'(suite) -> [];
+'ibm-not-wf-P58-ibm58n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P58/ibm58n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P58/ibm58n08.xml
+%% ID: ibm-not-wf-P58-ibm58n08.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P58-ibm58n08'(suite) -> [];
+'ibm-not-wf-P58-ibm58n08'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P58/ibm58n08.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 58
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P59/ibm59n01.xml
+%% ID: ibm-not-wf-P59-ibm59n01.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P59-ibm59n01'(suite) -> [];
+'ibm-not-wf-P59-ibm59n01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P59/ibm59n01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P59/ibm59n02.xml
+%% ID: ibm-not-wf-P59-ibm59n02.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P59-ibm59n02'(suite) -> [];
+'ibm-not-wf-P59-ibm59n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P59/ibm59n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P59/ibm59n03.xml
+%% ID: ibm-not-wf-P59-ibm59n03.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P59-ibm59n03'(suite) -> [];
+'ibm-not-wf-P59-ibm59n03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P59/ibm59n03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P59/ibm59n04.xml
+%% ID: ibm-not-wf-P59-ibm59n04.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P59-ibm59n04'(suite) -> [];
+'ibm-not-wf-P59-ibm59n04'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P59/ibm59n04.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P59/ibm59n05.xml
+%% ID: ibm-not-wf-P59-ibm59n05.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P59-ibm59n05'(suite) -> [];
+'ibm-not-wf-P59-ibm59n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P59/ibm59n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P59/ibm59n06.xml
+%% ID: ibm-not-wf-P59-ibm59n06.xml
+%% Type: not-wf
+%% Sections: 3.3.1
+'ibm-not-wf-P59-ibm59n06'(suite) -> [];
+'ibm-not-wf-P59-ibm59n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P59/ibm59n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 59
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P60/ibm60n01.xml
+%% ID: ibm-not-wf-P60-ibm60n01.xml
+%% Type: not-wf
+%% Sections: 3.3.2
+'ibm-not-wf-P60-ibm60n01'(suite) -> [];
+'ibm-not-wf-P60-ibm60n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P60/ibm60n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P60/ibm60n02.xml
+%% ID: ibm-not-wf-P60-ibm60n02.xml
+%% Type: not-wf
+%% Sections: 3.3.2
+'ibm-not-wf-P60-ibm60n02'(suite) -> [];
+'ibm-not-wf-P60-ibm60n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P60/ibm60n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P60/ibm60n03.xml
+%% ID: ibm-not-wf-P60-ibm60n03.xml
+%% Type: not-wf
+%% Sections: 3.3.2
+'ibm-not-wf-P60-ibm60n03'(suite) -> [];
+'ibm-not-wf-P60-ibm60n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P60/ibm60n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P60/ibm60n04.xml
+%% ID: ibm-not-wf-P60-ibm60n04.xml
+%% Type: not-wf
+%% Sections: 3.3.2
+'ibm-not-wf-P60-ibm60n04'(suite) -> [];
+'ibm-not-wf-P60-ibm60n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P60/ibm60n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P60/ibm60n05.xml
+%% ID: ibm-not-wf-P60-ibm60n05.xml
+%% Type: not-wf
+%% Sections: 3.3.2
+'ibm-not-wf-P60-ibm60n05'(suite) -> [];
+'ibm-not-wf-P60-ibm60n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P60/ibm60n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P60/ibm60n06.xml
+%% ID: ibm-not-wf-P60-ibm60n06.xml
+%% Type: not-wf
+%% Sections: 3.3.2
+'ibm-not-wf-P60-ibm60n06'(suite) -> [];
+'ibm-not-wf-P60-ibm60n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P60/ibm60n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P60/ibm60n07.xml
+%% ID: ibm-not-wf-P60-ibm60n07.xml
+%% Type: not-wf
+%% Sections: 3.3.2
+'ibm-not-wf-P60-ibm60n07'(suite) -> [];
+'ibm-not-wf-P60-ibm60n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P60/ibm60n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P60/ibm60n08.xml
+%% ID: ibm-not-wf-P60-ibm60n08.xml
+%% Type: not-wf
+%% Sections: 3.3.2
+'ibm-not-wf-P60-ibm60n08'(suite) -> [];
+'ibm-not-wf-P60-ibm60n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P60/ibm60n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 60
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P61/ibm61n01.xml
+%% ID: ibm-not-wf-P61-ibm61n01.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P61-ibm61n01'(suite) -> [];
+'ibm-not-wf-P61-ibm61n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P61/ibm61n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 61
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P62/ibm62n01.xml
+%% ID: ibm-not-wf-P62-ibm62n01.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P62-ibm62n01'(suite) -> [];
+'ibm-not-wf-P62-ibm62n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P62/ibm62n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P62/ibm62n02.xml
+%% ID: ibm-not-wf-P62-ibm62n02.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P62-ibm62n02'(suite) -> [];
+'ibm-not-wf-P62-ibm62n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P62/ibm62n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P62/ibm62n03.xml
+%% ID: ibm-not-wf-P62-ibm62n03.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P62-ibm62n03'(suite) -> [];
+'ibm-not-wf-P62-ibm62n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P62/ibm62n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P62/ibm62n04.xml
+%% ID: ibm-not-wf-P62-ibm62n04.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P62-ibm62n04'(suite) -> [];
+'ibm-not-wf-P62-ibm62n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P62/ibm62n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P62/ibm62n05.xml
+%% ID: ibm-not-wf-P62-ibm62n05.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P62-ibm62n05'(suite) -> [];
+'ibm-not-wf-P62-ibm62n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P62/ibm62n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P62/ibm62n06.xml
+%% ID: ibm-not-wf-P62-ibm62n06.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P62-ibm62n06'(suite) -> [];
+'ibm-not-wf-P62-ibm62n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P62/ibm62n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P62/ibm62n07.xml
+%% ID: ibm-not-wf-P62-ibm62n07.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P62-ibm62n07'(suite) -> [];
+'ibm-not-wf-P62-ibm62n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P62/ibm62n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P62/ibm62n08.xml
+%% ID: ibm-not-wf-P62-ibm62n08.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P62-ibm62n08'(suite) -> [];
+'ibm-not-wf-P62-ibm62n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P62/ibm62n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 62
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P63/ibm63n01.xml
+%% ID: ibm-not-wf-P63-ibm63n01.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P63-ibm63n01'(suite) -> [];
+'ibm-not-wf-P63-ibm63n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P63/ibm63n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P63/ibm63n02.xml
+%% ID: ibm-not-wf-P63-ibm63n02.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P63-ibm63n02'(suite) -> [];
+'ibm-not-wf-P63-ibm63n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P63/ibm63n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P63/ibm63n03.xml
+%% ID: ibm-not-wf-P63-ibm63n03.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P63-ibm63n03'(suite) -> [];
+'ibm-not-wf-P63-ibm63n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P63/ibm63n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P63/ibm63n04.xml
+%% ID: ibm-not-wf-P63-ibm63n04.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P63-ibm63n04'(suite) -> [];
+'ibm-not-wf-P63-ibm63n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P63/ibm63n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P63/ibm63n05.xml
+%% ID: ibm-not-wf-P63-ibm63n05.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P63-ibm63n05'(suite) -> [];
+'ibm-not-wf-P63-ibm63n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P63/ibm63n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P63/ibm63n06.xml
+%% ID: ibm-not-wf-P63-ibm63n06.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P63-ibm63n06'(suite) -> [];
+'ibm-not-wf-P63-ibm63n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P63/ibm63n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P63/ibm63n07.xml
+%% ID: ibm-not-wf-P63-ibm63n07.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P63-ibm63n07'(suite) -> [];
+'ibm-not-wf-P63-ibm63n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P63/ibm63n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 63
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P64/ibm64n01.xml
+%% ID: ibm-not-wf-P64-ibm64n01.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P64-ibm64n01'(suite) -> [];
+'ibm-not-wf-P64-ibm64n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P64/ibm64n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P64/ibm64n02.xml
+%% ID: ibm-not-wf-P64-ibm64n02.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P64-ibm64n02'(suite) -> [];
+'ibm-not-wf-P64-ibm64n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P64/ibm64n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P64/ibm64n03.xml
+%% ID: ibm-not-wf-P64-ibm64n03.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P64-ibm64n03'(suite) -> [];
+'ibm-not-wf-P64-ibm64n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P64/ibm64n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 64
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P65/ibm65n01.xml
+%% ID: ibm-not-wf-P65-ibm65n01.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P65-ibm65n01'(suite) -> [];
+'ibm-not-wf-P65-ibm65n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P65/ibm65n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P65/ibm65n02.xml
+%% ID: ibm-not-wf-P65-ibm65n02.xml
+%% Type: not-wf
+%% Sections: 3.4
+'ibm-not-wf-P65-ibm65n02'(suite) -> [];
+'ibm-not-wf-P65-ibm65n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P65/ibm65n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 65
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n01.xml
+%% ID: ibm-not-wf-P66-ibm66n01.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n01'(suite) -> [];
+'ibm-not-wf-P66-ibm66n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n02.xml
+%% ID: ibm-not-wf-P66-ibm66n02.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n02'(suite) -> [];
+'ibm-not-wf-P66-ibm66n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n03.xml
+%% ID: ibm-not-wf-P66-ibm66n03.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n03'(suite) -> [];
+'ibm-not-wf-P66-ibm66n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n04.xml
+%% ID: ibm-not-wf-P66-ibm66n04.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n04'(suite) -> [];
+'ibm-not-wf-P66-ibm66n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n05.xml
+%% ID: ibm-not-wf-P66-ibm66n05.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n05'(suite) -> [];
+'ibm-not-wf-P66-ibm66n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n06.xml
+%% ID: ibm-not-wf-P66-ibm66n06.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n06'(suite) -> [];
+'ibm-not-wf-P66-ibm66n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n07.xml
+%% ID: ibm-not-wf-P66-ibm66n07.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n07'(suite) -> [];
+'ibm-not-wf-P66-ibm66n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n08.xml
+%% ID: ibm-not-wf-P66-ibm66n08.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n08'(suite) -> [];
+'ibm-not-wf-P66-ibm66n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n09.xml
+%% ID: ibm-not-wf-P66-ibm66n09.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n09'(suite) -> [];
+'ibm-not-wf-P66-ibm66n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n10.xml
+%% ID: ibm-not-wf-P66-ibm66n10.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n10'(suite) -> [];
+'ibm-not-wf-P66-ibm66n10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n11.xml
+%% ID: ibm-not-wf-P66-ibm66n11.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n11'(suite) -> [];
+'ibm-not-wf-P66-ibm66n11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n12.xml
+%% ID: ibm-not-wf-P66-ibm66n12.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n12'(suite) -> [];
+'ibm-not-wf-P66-ibm66n12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n13.xml
+%% ID: ibm-not-wf-P66-ibm66n13.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n13'(suite) -> [];
+'ibm-not-wf-P66-ibm66n13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n14.xml
+%% ID: ibm-not-wf-P66-ibm66n14.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n14'(suite) -> [];
+'ibm-not-wf-P66-ibm66n14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P66/ibm66n15.xml
+%% ID: ibm-not-wf-P66-ibm66n15.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P66-ibm66n15'(suite) -> [];
+'ibm-not-wf-P66-ibm66n15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P66/ibm66n15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 66
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n01.xml
+%% ID: ibm-not-wf-P68-ibm68n01.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n01'(suite) -> [];
+'ibm-not-wf-P68-ibm68n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n02.xml
+%% ID: ibm-not-wf-P68-ibm68n02.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n02'(suite) -> [];
+'ibm-not-wf-P68-ibm68n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n03.xml
+%% ID: ibm-not-wf-P68-ibm68n03.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n03'(suite) -> [];
+'ibm-not-wf-P68-ibm68n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n04.xml
+%% ID: ibm-not-wf-P68-ibm68n04.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n04'(suite) -> [];
+'ibm-not-wf-P68-ibm68n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n05.xml
+%% ID: ibm-not-wf-P68-ibm68n05.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n05'(suite) -> [];
+'ibm-not-wf-P68-ibm68n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n06.xml
+%% ID: ibm-not-wf-P68-ibm68n06.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n06'(suite) -> [];
+'ibm-not-wf-P68-ibm68n06'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n06.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n07.xml
+%% ID: ibm-not-wf-P68-ibm68n07.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n07'(suite) -> [];
+'ibm-not-wf-P68-ibm68n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n08.xml
+%% ID: ibm-not-wf-P68-ibm68n08.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n08'(suite) -> [];
+'ibm-not-wf-P68-ibm68n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n09.xml
+%% ID: ibm-not-wf-P68-ibm68n09.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n09'(suite) -> [];
+'ibm-not-wf-P68-ibm68n09'(_Config) -> {skip, "No loop detection yet"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n09.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P68/ibm68n10.xml
+%% ID: ibm-not-wf-P68-ibm68n10.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P68-ibm68n10'(suite) -> [];
+'ibm-not-wf-P68-ibm68n10'(_Config) -> {skip, "No loop detection yet"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P68/ibm68n10.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 68
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P69/ibm69n01.xml
+%% ID: ibm-not-wf-P69-ibm69n01.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P69-ibm69n01'(suite) -> [];
+'ibm-not-wf-P69-ibm69n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P69/ibm69n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P69/ibm69n02.xml
+%% ID: ibm-not-wf-P69-ibm69n02.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P69-ibm69n02'(suite) -> [];
+'ibm-not-wf-P69-ibm69n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P69/ibm69n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P69/ibm69n03.xml
+%% ID: ibm-not-wf-P69-ibm69n03.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P69-ibm69n03'(suite) -> [];
+'ibm-not-wf-P69-ibm69n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P69/ibm69n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P69/ibm69n04.xml
+%% ID: ibm-not-wf-P69-ibm69n04.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P69-ibm69n04'(suite) -> [];
+'ibm-not-wf-P69-ibm69n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P69/ibm69n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P69/ibm69n05.xml
+%% ID: ibm-not-wf-P69-ibm69n05.xml
+%% Type: error
+%% Sections: 4.1
+'ibm-not-wf-P69-ibm69n05'(suite) -> [];
+'ibm-not-wf-P69-ibm69n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P69/ibm69n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "error").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P69/ibm69n06.xml
+%% ID: ibm-not-wf-P69-ibm69n06.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P69-ibm69n06'(suite) -> [];
+'ibm-not-wf-P69-ibm69n06'(_Config) -> {skip, "No loop detection yet"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P69/ibm69n06.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P69/ibm69n07.xml
+%% ID: ibm-not-wf-P69-ibm69n07.xml
+%% Type: not-wf
+%% Sections: 4.1
+'ibm-not-wf-P69-ibm69n07'(suite) -> [];
+'ibm-not-wf-P69-ibm69n07'(_Config) -> {skip, "No loop detection yet"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P69/ibm69n07.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 69
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P71/ibm70n01.xml
+%% ID: ibm-not-wf-P71-ibm70n01.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P71-ibm70n01'(suite) -> [];
+'ibm-not-wf-P71-ibm70n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P71/ibm70n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P71/ibm71n01.xml
+%% ID: ibm-not-wf-P71-ibm71n01.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P71-ibm71n01'(suite) -> [];
+'ibm-not-wf-P71-ibm71n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P71/ibm71n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P71/ibm71n02.xml
+%% ID: ibm-not-wf-P71-ibm71n02.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P71-ibm71n02'(suite) -> [];
+'ibm-not-wf-P71-ibm71n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P71/ibm71n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P71/ibm71n03.xml
+%% ID: ibm-not-wf-P71-ibm71n03.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P71-ibm71n03'(suite) -> [];
+'ibm-not-wf-P71-ibm71n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P71/ibm71n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P71/ibm71n04.xml
+%% ID: ibm-not-wf-P71-ibm71n04.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P71-ibm71n04'(suite) -> [];
+'ibm-not-wf-P71-ibm71n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P71/ibm71n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P71/ibm71n05.xml
+%% ID: ibm-not-wf-P71-ibm71n05.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P71-ibm71n05'(suite) -> [];
+'ibm-not-wf-P71-ibm71n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P71/ibm71n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P71/ibm71n06.xml
+%% ID: ibm-not-wf-P71-ibm71n06.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P71-ibm71n06'(suite) -> [];
+'ibm-not-wf-P71-ibm71n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P71/ibm71n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P71/ibm71n07.xml
+%% ID: ibm-not-wf-P71-ibm71n07.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P71-ibm71n07'(suite) -> [];
+'ibm-not-wf-P71-ibm71n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P71/ibm71n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P71/ibm71n08.xml
+%% ID: ibm-not-wf-P71-ibm71n08.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P71-ibm71n08'(suite) -> [];
+'ibm-not-wf-P71-ibm71n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P71/ibm71n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 71
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P72/ibm72n01.xml
+%% ID: ibm-not-wf-P72-ibm72n01.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P72-ibm72n01'(suite) -> [];
+'ibm-not-wf-P72-ibm72n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P72/ibm72n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P72/ibm72n02.xml
+%% ID: ibm-not-wf-P72-ibm72n02.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P72-ibm72n02'(suite) -> [];
+'ibm-not-wf-P72-ibm72n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P72/ibm72n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P72/ibm72n03.xml
+%% ID: ibm-not-wf-P72-ibm72n03.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P72-ibm72n03'(suite) -> [];
+'ibm-not-wf-P72-ibm72n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P72/ibm72n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P72/ibm72n04.xml
+%% ID: ibm-not-wf-P72-ibm72n04.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P72-ibm72n04'(suite) -> [];
+'ibm-not-wf-P72-ibm72n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P72/ibm72n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P72/ibm72n05.xml
+%% ID: ibm-not-wf-P72-ibm72n05.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P72-ibm72n05'(suite) -> [];
+'ibm-not-wf-P72-ibm72n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P72/ibm72n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P72/ibm72n06.xml
+%% ID: ibm-not-wf-P72-ibm72n06.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P72-ibm72n06'(suite) -> [];
+'ibm-not-wf-P72-ibm72n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P72/ibm72n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P72/ibm72n07.xml
+%% ID: ibm-not-wf-P72-ibm72n07.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P72-ibm72n07'(suite) -> [];
+'ibm-not-wf-P72-ibm72n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P72/ibm72n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P72/ibm72n08.xml
+%% ID: ibm-not-wf-P72-ibm72n08.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P72-ibm72n08'(suite) -> [];
+'ibm-not-wf-P72-ibm72n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P72/ibm72n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P72/ibm72n09.xml
+%% ID: ibm-not-wf-P72-ibm72n09.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P72-ibm72n09'(suite) -> [];
+'ibm-not-wf-P72-ibm72n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P72/ibm72n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 72
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P73/ibm73n01.xml
+%% ID: ibm-not-wf-P73-ibm73n01.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P73-ibm73n01'(suite) -> [];
+'ibm-not-wf-P73-ibm73n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P73/ibm73n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P73/ibm73n03.xml
+%% ID: ibm-not-wf-P73-ibm73n03.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P73-ibm73n03'(suite) -> [];
+'ibm-not-wf-P73-ibm73n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P73/ibm73n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 73
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P74/ibm74n01.xml
+%% ID: ibm-not-wf-P74-ibm74n01.xml
+%% Type: not-wf
+%% Sections: 4.2
+'ibm-not-wf-P74-ibm74n01'(suite) -> [];
+'ibm-not-wf-P74-ibm74n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P74/ibm74n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 74
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n01.xml
+%% ID: ibm-not-wf-P75-ibm75n01.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n01'(suite) -> [];
+'ibm-not-wf-P75-ibm75n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n02.xml
+%% ID: ibm-not-wf-P75-ibm75n02.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n02'(suite) -> [];
+'ibm-not-wf-P75-ibm75n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n03.xml
+%% ID: ibm-not-wf-P75-ibm75n03.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n03'(suite) -> [];
+'ibm-not-wf-P75-ibm75n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n04.xml
+%% ID: ibm-not-wf-P75-ibm75n04.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n04'(suite) -> [];
+'ibm-not-wf-P75-ibm75n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n05.xml
+%% ID: ibm-not-wf-P75-ibm75n05.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n05'(suite) -> [];
+'ibm-not-wf-P75-ibm75n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n06.xml
+%% ID: ibm-not-wf-P75-ibm75n06.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n06'(suite) -> [];
+'ibm-not-wf-P75-ibm75n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n07.xml
+%% ID: ibm-not-wf-P75-ibm75n07.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n07'(suite) -> [];
+'ibm-not-wf-P75-ibm75n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n08.xml
+%% ID: ibm-not-wf-P75-ibm75n08.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n08'(suite) -> [];
+'ibm-not-wf-P75-ibm75n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n09.xml
+%% ID: ibm-not-wf-P75-ibm75n09.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n09'(suite) -> [];
+'ibm-not-wf-P75-ibm75n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n10.xml
+%% ID: ibm-not-wf-P75-ibm75n10.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n10'(suite) -> [];
+'ibm-not-wf-P75-ibm75n10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n11.xml
+%% ID: ibm-not-wf-P75-ibm75n11.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n11'(suite) -> [];
+'ibm-not-wf-P75-ibm75n11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n12.xml
+%% ID: ibm-not-wf-P75-ibm75n12.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n12'(suite) -> [];
+'ibm-not-wf-P75-ibm75n12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P75/ibm75n13.xml
+%% ID: ibm-not-wf-P75-ibm75n13.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P75-ibm75n13'(suite) -> [];
+'ibm-not-wf-P75-ibm75n13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P75/ibm75n13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 75
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P76/ibm76n01.xml
+%% ID: ibm-not-wf-P76-ibm76n01.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P76-ibm76n01'(suite) -> [];
+'ibm-not-wf-P76-ibm76n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P76/ibm76n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P76/ibm76n02.xml
+%% ID: ibm-not-wf-P76-ibm76n02.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P76-ibm76n02'(suite) -> [];
+'ibm-not-wf-P76-ibm76n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P76/ibm76n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P76/ibm76n03.xml
+%% ID: ibm-not-wf-P76-ibm76n03.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P76-ibm76n03'(suite) -> [];
+'ibm-not-wf-P76-ibm76n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P76/ibm76n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P76/ibm76n04.xml
+%% ID: ibm-not-wf-P76-ibm76n04.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P76-ibm76n04'(suite) -> [];
+'ibm-not-wf-P76-ibm76n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P76/ibm76n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P76/ibm76n05.xml
+%% ID: ibm-not-wf-P76-ibm76n05.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P76-ibm76n05'(suite) -> [];
+'ibm-not-wf-P76-ibm76n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P76/ibm76n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P76/ibm76n06.xml
+%% ID: ibm-not-wf-P76-ibm76n06.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P76-ibm76n06'(suite) -> [];
+'ibm-not-wf-P76-ibm76n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P76/ibm76n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P76/ibm76n07.xml
+%% ID: ibm-not-wf-P76-ibm76n07.xml
+%% Type: not-wf
+%% Sections: 4.2.2
+'ibm-not-wf-P76-ibm76n07'(suite) -> [];
+'ibm-not-wf-P76-ibm76n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P76/ibm76n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 76
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P77/ibm77n01.xml
+%% ID: ibm-not-wf-P77-ibm77n01.xml
+%% Type: not-wf
+%% Sections: 4.3.1
+'ibm-not-wf-P77-ibm77n01'(suite) -> [];
+'ibm-not-wf-P77-ibm77n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P77/ibm77n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P77/ibm77n02.xml
+%% ID: ibm-not-wf-P77-ibm77n02.xml
+%% Type: not-wf
+%% Sections: 4.3.1
+'ibm-not-wf-P77-ibm77n02'(suite) -> [];
+'ibm-not-wf-P77-ibm77n02'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P77/ibm77n02.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P77/ibm77n03.xml
+%% ID: ibm-not-wf-P77-ibm77n03.xml
+%% Type: not-wf
+%% Sections: 4.3.1
+'ibm-not-wf-P77-ibm77n03'(suite) -> [];
+'ibm-not-wf-P77-ibm77n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P77/ibm77n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P77/ibm77n04.xml
+%% ID: ibm-not-wf-P77-ibm77n04.xml
+%% Type: not-wf
+%% Sections: 4.3.1
+'ibm-not-wf-P77-ibm77n04'(suite) -> [];
+'ibm-not-wf-P77-ibm77n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P77/ibm77n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 77
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P78/ibm78n01.xml
+%% ID: ibm-not-wf-P78-ibm78n01.xml
+%% Type: not-wf
+%% Sections: 4.3.2
+'ibm-not-wf-P78-ibm78n01'(suite) -> [];
+'ibm-not-wf-P78-ibm78n01'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P78/ibm78n01.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P78/ibm78n02.xml
+%% ID: ibm-not-wf-P78-ibm78n02.xml
+%% Type: not-wf
+%% Sections: 4.3.2
+'ibm-not-wf-P78-ibm78n02'(suite) -> [];
+'ibm-not-wf-P78-ibm78n02'(Config) -> {skip, "Fix 3"}.
+ %%?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ %%?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P78/ibm78n02.xml"]),
+ %%?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ %%?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 78
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P79/ibm79n01.xml
+%% ID: ibm-not-wf-P79-ibm79n01.xml
+%% Type: not-wf
+%% Sections: 4.3.2
+'ibm-not-wf-P79-ibm79n01'(suite) -> [];
+'ibm-not-wf-P79-ibm79n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P79/ibm79n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P79/ibm79n02.xml
+%% ID: ibm-not-wf-P79-ibm79n02.xml
+%% Type: not-wf
+%% Sections: 4.3.2
+'ibm-not-wf-P79-ibm79n02'(suite) -> [];
+'ibm-not-wf-P79-ibm79n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P79/ibm79n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 79
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P80/ibm80n01.xml
+%% ID: ibm-not-wf-P80-ibm80n01.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P80-ibm80n01'(suite) -> [];
+'ibm-not-wf-P80-ibm80n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P80/ibm80n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P80/ibm80n02.xml
+%% ID: ibm-not-wf-P80-ibm80n02.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P80-ibm80n02'(suite) -> [];
+'ibm-not-wf-P80-ibm80n02'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P80/ibm80n02.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P80/ibm80n03.xml
+%% ID: ibm-not-wf-P80-ibm80n03.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P80-ibm80n03'(suite) -> [];
+'ibm-not-wf-P80-ibm80n03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P80/ibm80n03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P80/ibm80n04.xml
+%% ID: ibm-not-wf-P80-ibm80n04.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P80-ibm80n04'(suite) -> [];
+'ibm-not-wf-P80-ibm80n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P80/ibm80n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P80/ibm80n05.xml
+%% ID: ibm-not-wf-P80-ibm80n05.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P80-ibm80n05'(suite) -> [];
+'ibm-not-wf-P80-ibm80n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P80/ibm80n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P80/ibm80n06.xml
+%% ID: ibm-not-wf-P80-ibm80n06.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P80-ibm80n06'(suite) -> [];
+'ibm-not-wf-P80-ibm80n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P80/ibm80n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 80
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P81/ibm81n01.xml
+%% ID: ibm-not-wf-P81-ibm81n01.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P81-ibm81n01'(suite) -> [];
+'ibm-not-wf-P81-ibm81n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P81/ibm81n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P81/ibm81n02.xml
+%% ID: ibm-not-wf-P81-ibm81n02.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P81-ibm81n02'(suite) -> [];
+'ibm-not-wf-P81-ibm81n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P81/ibm81n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P81/ibm81n03.xml
+%% ID: ibm-not-wf-P81-ibm81n03.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P81-ibm81n03'(suite) -> [];
+'ibm-not-wf-P81-ibm81n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P81/ibm81n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P81/ibm81n04.xml
+%% ID: ibm-not-wf-P81-ibm81n04.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P81-ibm81n04'(suite) -> [];
+'ibm-not-wf-P81-ibm81n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P81/ibm81n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P81/ibm81n05.xml
+%% ID: ibm-not-wf-P81-ibm81n05.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P81-ibm81n05'(suite) -> [];
+'ibm-not-wf-P81-ibm81n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P81/ibm81n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P81/ibm81n06.xml
+%% ID: ibm-not-wf-P81-ibm81n06.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P81-ibm81n06'(suite) -> [];
+'ibm-not-wf-P81-ibm81n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P81/ibm81n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P81/ibm81n07.xml
+%% ID: ibm-not-wf-P81-ibm81n07.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P81-ibm81n07'(suite) -> [];
+'ibm-not-wf-P81-ibm81n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P81/ibm81n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P81/ibm81n08.xml
+%% ID: ibm-not-wf-P81-ibm81n08.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P81-ibm81n08'(suite) -> [];
+'ibm-not-wf-P81-ibm81n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P81/ibm81n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P81/ibm81n09.xml
+%% ID: ibm-not-wf-P81-ibm81n09.xml
+%% Type: not-wf
+%% Sections: 4.3.3
+'ibm-not-wf-P81-ibm81n09'(suite) -> [];
+'ibm-not-wf-P81-ibm81n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P81/ibm81n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 81
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P82/ibm82n01.xml
+%% ID: ibm-not-wf-P82-ibm82n01.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P82-ibm82n01'(suite) -> [];
+'ibm-not-wf-P82-ibm82n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P82/ibm82n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P82/ibm82n02.xml
+%% ID: ibm-not-wf-P82-ibm82n02.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P82-ibm82n02'(suite) -> [];
+'ibm-not-wf-P82-ibm82n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P82/ibm82n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P82/ibm82n03.xml
+%% ID: ibm-not-wf-P82-ibm82n03.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P82-ibm82n03'(suite) -> [];
+'ibm-not-wf-P82-ibm82n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P82/ibm82n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P82/ibm82n04.xml
+%% ID: ibm-not-wf-P82-ibm82n04.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P82-ibm82n04'(suite) -> [];
+'ibm-not-wf-P82-ibm82n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P82/ibm82n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P82/ibm82n05.xml
+%% ID: ibm-not-wf-P82-ibm82n05.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P82-ibm82n05'(suite) -> [];
+'ibm-not-wf-P82-ibm82n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P82/ibm82n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P82/ibm82n06.xml
+%% ID: ibm-not-wf-P82-ibm82n06.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P82-ibm82n06'(suite) -> [];
+'ibm-not-wf-P82-ibm82n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P82/ibm82n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P82/ibm82n07.xml
+%% ID: ibm-not-wf-P82-ibm82n07.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P82-ibm82n07'(suite) -> [];
+'ibm-not-wf-P82-ibm82n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P82/ibm82n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P82/ibm82n08.xml
+%% ID: ibm-not-wf-P82-ibm82n08.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P82-ibm82n08'(suite) -> [];
+'ibm-not-wf-P82-ibm82n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P82/ibm82n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 82
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P83/ibm83n01.xml
+%% ID: ibm-not-wf-P83-ibm83n01.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P83-ibm83n01'(suite) -> [];
+'ibm-not-wf-P83-ibm83n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P83/ibm83n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P83/ibm83n02.xml
+%% ID: ibm-not-wf-P83-ibm83n02.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P83-ibm83n02'(suite) -> [];
+'ibm-not-wf-P83-ibm83n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P83/ibm83n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P83/ibm83n03.xml
+%% ID: ibm-not-wf-P83-ibm83n03.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P83-ibm83n03'(suite) -> [];
+'ibm-not-wf-P83-ibm83n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P83/ibm83n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P83/ibm83n04.xml
+%% ID: ibm-not-wf-P83-ibm83n04.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P83-ibm83n04'(suite) -> [];
+'ibm-not-wf-P83-ibm83n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P83/ibm83n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P83/ibm83n05.xml
+%% ID: ibm-not-wf-P83-ibm83n05.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P83-ibm83n05'(suite) -> [];
+'ibm-not-wf-P83-ibm83n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P83/ibm83n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P83/ibm83n06.xml
+%% ID: ibm-not-wf-P83-ibm83n06.xml
+%% Type: not-wf
+%% Sections: 4.7
+'ibm-not-wf-P83-ibm83n06'(suite) -> [];
+'ibm-not-wf-P83-ibm83n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P83/ibm83n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 83
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n01.xml
+%% ID: ibm-not-wf-P85-ibm85n01.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n01'(suite) -> [];
+'ibm-not-wf-P85-ibm85n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n02.xml
+%% ID: ibm-not-wf-P85-ibm85n02.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n02'(suite) -> [];
+'ibm-not-wf-P85-ibm85n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n03.xml
+%% ID: ibm-not-wf-P85-ibm85n03.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n03'(suite) -> [];
+'ibm-not-wf-P85-ibm85n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n04.xml
+%% ID: ibm-not-wf-P85-ibm85n04.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n04'(suite) -> [];
+'ibm-not-wf-P85-ibm85n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n05.xml
+%% ID: ibm-not-wf-P85-ibm85n05.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n05'(suite) -> [];
+'ibm-not-wf-P85-ibm85n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n06.xml
+%% ID: ibm-not-wf-P85-ibm85n06.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n06'(suite) -> [];
+'ibm-not-wf-P85-ibm85n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n07.xml
+%% ID: ibm-not-wf-P85-ibm85n07.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n07'(suite) -> [];
+'ibm-not-wf-P85-ibm85n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n08.xml
+%% ID: ibm-not-wf-P85-ibm85n08.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n08'(suite) -> [];
+'ibm-not-wf-P85-ibm85n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n09.xml
+%% ID: ibm-not-wf-P85-ibm85n09.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n09'(suite) -> [];
+'ibm-not-wf-P85-ibm85n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n10.xml
+%% ID: ibm-not-wf-P85-ibm85n10.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n10'(suite) -> [];
+'ibm-not-wf-P85-ibm85n10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n100.xml
+%% ID: ibm-not-wf-P85-ibm85n100.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n100'(suite) -> [];
+'ibm-not-wf-P85-ibm85n100'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n100.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n101.xml
+%% ID: ibm-not-wf-P85-ibm85n101.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n101'(suite) -> [];
+'ibm-not-wf-P85-ibm85n101'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n101.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n102.xml
+%% ID: ibm-not-wf-P85-ibm85n102.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n102'(suite) -> [];
+'ibm-not-wf-P85-ibm85n102'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n102.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n103.xml
+%% ID: ibm-not-wf-P85-ibm85n103.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n103'(suite) -> [];
+'ibm-not-wf-P85-ibm85n103'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n103.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n104.xml
+%% ID: ibm-not-wf-P85-ibm85n104.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n104'(suite) -> [];
+'ibm-not-wf-P85-ibm85n104'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n104.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n105.xml
+%% ID: ibm-not-wf-P85-ibm85n105.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n105'(suite) -> [];
+'ibm-not-wf-P85-ibm85n105'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n105.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n106.xml
+%% ID: ibm-not-wf-P85-ibm85n106.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n106'(suite) -> [];
+'ibm-not-wf-P85-ibm85n106'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n106.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n107.xml
+%% ID: ibm-not-wf-P85-ibm85n107.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n107'(suite) -> [];
+'ibm-not-wf-P85-ibm85n107'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n107.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n108.xml
+%% ID: ibm-not-wf-P85-ibm85n108.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n108'(suite) -> [];
+'ibm-not-wf-P85-ibm85n108'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n108.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n109.xml
+%% ID: ibm-not-wf-P85-ibm85n109.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n109'(suite) -> [];
+'ibm-not-wf-P85-ibm85n109'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n109.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n11.xml
+%% ID: ibm-not-wf-P85-ibm85n11.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n11'(suite) -> [];
+'ibm-not-wf-P85-ibm85n11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n110.xml
+%% ID: ibm-not-wf-P85-ibm85n110.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n110'(suite) -> [];
+'ibm-not-wf-P85-ibm85n110'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n110.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n111.xml
+%% ID: ibm-not-wf-P85-ibm85n111.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n111'(suite) -> [];
+'ibm-not-wf-P85-ibm85n111'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n111.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n112.xml
+%% ID: ibm-not-wf-P85-ibm85n112.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n112'(suite) -> [];
+'ibm-not-wf-P85-ibm85n112'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n112.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n113.xml
+%% ID: ibm-not-wf-P85-ibm85n113.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n113'(suite) -> [];
+'ibm-not-wf-P85-ibm85n113'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n113.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n114.xml
+%% ID: ibm-not-wf-P85-ibm85n114.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n114'(suite) -> [];
+'ibm-not-wf-P85-ibm85n114'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n114.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n115.xml
+%% ID: ibm-not-wf-P85-ibm85n115.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n115'(suite) -> [];
+'ibm-not-wf-P85-ibm85n115'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n115.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n116.xml
+%% ID: ibm-not-wf-P85-ibm85n116.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n116'(suite) -> [];
+'ibm-not-wf-P85-ibm85n116'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n116.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n117.xml
+%% ID: ibm-not-wf-P85-ibm85n117.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n117'(suite) -> [];
+'ibm-not-wf-P85-ibm85n117'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n117.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n118.xml
+%% ID: ibm-not-wf-P85-ibm85n118.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n118'(suite) -> [];
+'ibm-not-wf-P85-ibm85n118'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n118.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n119.xml
+%% ID: ibm-not-wf-P85-ibm85n119.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n119'(suite) -> [];
+'ibm-not-wf-P85-ibm85n119'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n119.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n12.xml
+%% ID: ibm-not-wf-P85-ibm85n12.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n12'(suite) -> [];
+'ibm-not-wf-P85-ibm85n12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n120.xml
+%% ID: ibm-not-wf-P85-ibm85n120.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n120'(suite) -> [];
+'ibm-not-wf-P85-ibm85n120'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n120.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n121.xml
+%% ID: ibm-not-wf-P85-ibm85n121.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n121'(suite) -> [];
+'ibm-not-wf-P85-ibm85n121'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n121.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n122.xml
+%% ID: ibm-not-wf-P85-ibm85n122.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n122'(suite) -> [];
+'ibm-not-wf-P85-ibm85n122'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n122.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n123.xml
+%% ID: ibm-not-wf-P85-ibm85n123.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n123'(suite) -> [];
+'ibm-not-wf-P85-ibm85n123'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n123.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n124.xml
+%% ID: ibm-not-wf-P85-ibm85n124.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n124'(suite) -> [];
+'ibm-not-wf-P85-ibm85n124'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n124.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n125.xml
+%% ID: ibm-not-wf-P85-ibm85n125.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n125'(suite) -> [];
+'ibm-not-wf-P85-ibm85n125'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n125.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n126.xml
+%% ID: ibm-not-wf-P85-ibm85n126.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n126'(suite) -> [];
+'ibm-not-wf-P85-ibm85n126'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n126.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n127.xml
+%% ID: ibm-not-wf-P85-ibm85n127.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n127'(suite) -> [];
+'ibm-not-wf-P85-ibm85n127'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n127.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n128.xml
+%% ID: ibm-not-wf-P85-ibm85n128.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n128'(suite) -> [];
+'ibm-not-wf-P85-ibm85n128'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n128.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n129.xml
+%% ID: ibm-not-wf-P85-ibm85n129.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n129'(suite) -> [];
+'ibm-not-wf-P85-ibm85n129'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n129.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n13.xml
+%% ID: ibm-not-wf-P85-ibm85n13.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n13'(suite) -> [];
+'ibm-not-wf-P85-ibm85n13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n130.xml
+%% ID: ibm-not-wf-P85-ibm85n130.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n130'(suite) -> [];
+'ibm-not-wf-P85-ibm85n130'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n130.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n131.xml
+%% ID: ibm-not-wf-P85-ibm85n131.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n131'(suite) -> [];
+'ibm-not-wf-P85-ibm85n131'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n131.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n132.xml
+%% ID: ibm-not-wf-P85-ibm85n132.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n132'(suite) -> [];
+'ibm-not-wf-P85-ibm85n132'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n132.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n133.xml
+%% ID: ibm-not-wf-P85-ibm85n133.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n133'(suite) -> [];
+'ibm-not-wf-P85-ibm85n133'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n133.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n134.xml
+%% ID: ibm-not-wf-P85-ibm85n134.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n134'(suite) -> [];
+'ibm-not-wf-P85-ibm85n134'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n134.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n135.xml
+%% ID: ibm-not-wf-P85-ibm85n135.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n135'(suite) -> [];
+'ibm-not-wf-P85-ibm85n135'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n135.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n136.xml
+%% ID: ibm-not-wf-P85-ibm85n136.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n136'(suite) -> [];
+'ibm-not-wf-P85-ibm85n136'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n136.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n137.xml
+%% ID: ibm-not-wf-P85-ibm85n137.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n137'(suite) -> [];
+'ibm-not-wf-P85-ibm85n137'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n137.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n138.xml
+%% ID: ibm-not-wf-P85-ibm85n138.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n138'(suite) -> [];
+'ibm-not-wf-P85-ibm85n138'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n138.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n139.xml
+%% ID: ibm-not-wf-P85-ibm85n139.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n139'(suite) -> [];
+'ibm-not-wf-P85-ibm85n139'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n139.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n14.xml
+%% ID: ibm-not-wf-P85-ibm85n14.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n14'(suite) -> [];
+'ibm-not-wf-P85-ibm85n14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n140.xml
+%% ID: ibm-not-wf-P85-ibm85n140.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n140'(suite) -> [];
+'ibm-not-wf-P85-ibm85n140'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n140.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n141.xml
+%% ID: ibm-not-wf-P85-ibm85n141.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n141'(suite) -> [];
+'ibm-not-wf-P85-ibm85n141'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n141.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n142.xml
+%% ID: ibm-not-wf-P85-ibm85n142.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n142'(suite) -> [];
+'ibm-not-wf-P85-ibm85n142'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n142.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n143.xml
+%% ID: ibm-not-wf-P85-ibm85n143.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n143'(suite) -> [];
+'ibm-not-wf-P85-ibm85n143'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n143.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n144.xml
+%% ID: ibm-not-wf-P85-ibm85n144.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n144'(suite) -> [];
+'ibm-not-wf-P85-ibm85n144'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n144.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n145.xml
+%% ID: ibm-not-wf-P85-ibm85n145.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n145'(suite) -> [];
+'ibm-not-wf-P85-ibm85n145'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n145.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n146.xml
+%% ID: ibm-not-wf-P85-ibm85n146.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n146'(suite) -> [];
+'ibm-not-wf-P85-ibm85n146'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n146.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n147.xml
+%% ID: ibm-not-wf-P85-ibm85n147.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n147'(suite) -> [];
+'ibm-not-wf-P85-ibm85n147'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n147.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n148.xml
+%% ID: ibm-not-wf-P85-ibm85n148.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n148'(suite) -> [];
+'ibm-not-wf-P85-ibm85n148'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n148.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n149.xml
+%% ID: ibm-not-wf-P85-ibm85n149.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n149'(suite) -> [];
+'ibm-not-wf-P85-ibm85n149'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n149.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n15.xml
+%% ID: ibm-not-wf-P85-ibm85n15.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n15'(suite) -> [];
+'ibm-not-wf-P85-ibm85n15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n150.xml
+%% ID: ibm-not-wf-P85-ibm85n150.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n150'(suite) -> [];
+'ibm-not-wf-P85-ibm85n150'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n150.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n151.xml
+%% ID: ibm-not-wf-P85-ibm85n151.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n151'(suite) -> [];
+'ibm-not-wf-P85-ibm85n151'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n151.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n152.xml
+%% ID: ibm-not-wf-P85-ibm85n152.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n152'(suite) -> [];
+'ibm-not-wf-P85-ibm85n152'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n152.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n153.xml
+%% ID: ibm-not-wf-P85-ibm85n153.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n153'(suite) -> [];
+'ibm-not-wf-P85-ibm85n153'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n153.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n154.xml
+%% ID: ibm-not-wf-P85-ibm85n154.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n154'(suite) -> [];
+'ibm-not-wf-P85-ibm85n154'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n154.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n155.xml
+%% ID: ibm-not-wf-P85-ibm85n155.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n155'(suite) -> [];
+'ibm-not-wf-P85-ibm85n155'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n155.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n156.xml
+%% ID: ibm-not-wf-P85-ibm85n156.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n156'(suite) -> [];
+'ibm-not-wf-P85-ibm85n156'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n156.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n157.xml
+%% ID: ibm-not-wf-P85-ibm85n157.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n157'(suite) -> [];
+'ibm-not-wf-P85-ibm85n157'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n157.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n158.xml
+%% ID: ibm-not-wf-P85-ibm85n158.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n158'(suite) -> [];
+'ibm-not-wf-P85-ibm85n158'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n158.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n159.xml
+%% ID: ibm-not-wf-P85-ibm85n159.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n159'(suite) -> [];
+'ibm-not-wf-P85-ibm85n159'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n159.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n16.xml
+%% ID: ibm-not-wf-P85-ibm85n16.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n16'(suite) -> [];
+'ibm-not-wf-P85-ibm85n16'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n16.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n160.xml
+%% ID: ibm-not-wf-P85-ibm85n160.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n160'(suite) -> [];
+'ibm-not-wf-P85-ibm85n160'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n160.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n161.xml
+%% ID: ibm-not-wf-P85-ibm85n161.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n161'(suite) -> [];
+'ibm-not-wf-P85-ibm85n161'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n161.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n162.xml
+%% ID: ibm-not-wf-P85-ibm85n162.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n162'(suite) -> [];
+'ibm-not-wf-P85-ibm85n162'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n162.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n163.xml
+%% ID: ibm-not-wf-P85-ibm85n163.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n163'(suite) -> [];
+'ibm-not-wf-P85-ibm85n163'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n163.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n164.xml
+%% ID: ibm-not-wf-P85-ibm85n164.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n164'(suite) -> [];
+'ibm-not-wf-P85-ibm85n164'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n164.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n165.xml
+%% ID: ibm-not-wf-P85-ibm85n165.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n165'(suite) -> [];
+'ibm-not-wf-P85-ibm85n165'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n165.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n166.xml
+%% ID: ibm-not-wf-P85-ibm85n166.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n166'(suite) -> [];
+'ibm-not-wf-P85-ibm85n166'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n166.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n167.xml
+%% ID: ibm-not-wf-P85-ibm85n167.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n167'(suite) -> [];
+'ibm-not-wf-P85-ibm85n167'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n167.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n168.xml
+%% ID: ibm-not-wf-P85-ibm85n168.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n168'(suite) -> [];
+'ibm-not-wf-P85-ibm85n168'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n168.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n169.xml
+%% ID: ibm-not-wf-P85-ibm85n169.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n169'(suite) -> [];
+'ibm-not-wf-P85-ibm85n169'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n169.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n17.xml
+%% ID: ibm-not-wf-P85-ibm85n17.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n17'(suite) -> [];
+'ibm-not-wf-P85-ibm85n17'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n17.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n170.xml
+%% ID: ibm-not-wf-P85-ibm85n170.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n170'(suite) -> [];
+'ibm-not-wf-P85-ibm85n170'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n170.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n171.xml
+%% ID: ibm-not-wf-P85-ibm85n171.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n171'(suite) -> [];
+'ibm-not-wf-P85-ibm85n171'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n171.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n172.xml
+%% ID: ibm-not-wf-P85-ibm85n172.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n172'(suite) -> [];
+'ibm-not-wf-P85-ibm85n172'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n172.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n173.xml
+%% ID: ibm-not-wf-P85-ibm85n173.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n173'(suite) -> [];
+'ibm-not-wf-P85-ibm85n173'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n173.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n174.xml
+%% ID: ibm-not-wf-P85-ibm85n174.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n174'(suite) -> [];
+'ibm-not-wf-P85-ibm85n174'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n174.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n175.xml
+%% ID: ibm-not-wf-P85-ibm85n175.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n175'(suite) -> [];
+'ibm-not-wf-P85-ibm85n175'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n175.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n176.xml
+%% ID: ibm-not-wf-P85-ibm85n176.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n176'(suite) -> [];
+'ibm-not-wf-P85-ibm85n176'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n176.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n177.xml
+%% ID: ibm-not-wf-P85-ibm85n177.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n177'(suite) -> [];
+'ibm-not-wf-P85-ibm85n177'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n177.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n178.xml
+%% ID: ibm-not-wf-P85-ibm85n178.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n178'(suite) -> [];
+'ibm-not-wf-P85-ibm85n178'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n178.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n179.xml
+%% ID: ibm-not-wf-P85-ibm85n179.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n179'(suite) -> [];
+'ibm-not-wf-P85-ibm85n179'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n179.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n18.xml
+%% ID: ibm-not-wf-P85-ibm85n18.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n18'(suite) -> [];
+'ibm-not-wf-P85-ibm85n18'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n18.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n180.xml
+%% ID: ibm-not-wf-P85-ibm85n180.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n180'(suite) -> [];
+'ibm-not-wf-P85-ibm85n180'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n180.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n181.xml
+%% ID: ibm-not-wf-P85-ibm85n181.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n181'(suite) -> [];
+'ibm-not-wf-P85-ibm85n181'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n181.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n182.xml
+%% ID: ibm-not-wf-P85-ibm85n182.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n182'(suite) -> [];
+'ibm-not-wf-P85-ibm85n182'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n182.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n183.xml
+%% ID: ibm-not-wf-P85-ibm85n183.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n183'(suite) -> [];
+'ibm-not-wf-P85-ibm85n183'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n183.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n184.xml
+%% ID: ibm-not-wf-P85-ibm85n184.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n184'(suite) -> [];
+'ibm-not-wf-P85-ibm85n184'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n184.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n185.xml
+%% ID: ibm-not-wf-P85-ibm85n185.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n185'(suite) -> [];
+'ibm-not-wf-P85-ibm85n185'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n185.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n186.xml
+%% ID: ibm-not-wf-P85-ibm85n186.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n186'(suite) -> [];
+'ibm-not-wf-P85-ibm85n186'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n186.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n187.xml
+%% ID: ibm-not-wf-P85-ibm85n187.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n187'(suite) -> [];
+'ibm-not-wf-P85-ibm85n187'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n187.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n188.xml
+%% ID: ibm-not-wf-P85-ibm85n188.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n188'(suite) -> [];
+'ibm-not-wf-P85-ibm85n188'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n188.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n189.xml
+%% ID: ibm-not-wf-P85-ibm85n189.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n189'(suite) -> [];
+'ibm-not-wf-P85-ibm85n189'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n189.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n19.xml
+%% ID: ibm-not-wf-P85-ibm85n19.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n19'(suite) -> [];
+'ibm-not-wf-P85-ibm85n19'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n19.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n190.xml
+%% ID: ibm-not-wf-P85-ibm85n190.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n190'(suite) -> [];
+'ibm-not-wf-P85-ibm85n190'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n190.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n191.xml
+%% ID: ibm-not-wf-P85-ibm85n191.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n191'(suite) -> [];
+'ibm-not-wf-P85-ibm85n191'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n191.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n192.xml
+%% ID: ibm-not-wf-P85-ibm85n192.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n192'(suite) -> [];
+'ibm-not-wf-P85-ibm85n192'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n192.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n193.xml
+%% ID: ibm-not-wf-P85-ibm85n193.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n193'(suite) -> [];
+'ibm-not-wf-P85-ibm85n193'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n193.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n194.xml
+%% ID: ibm-not-wf-P85-ibm85n194.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n194'(suite) -> [];
+'ibm-not-wf-P85-ibm85n194'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n194.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n195.xml
+%% ID: ibm-not-wf-P85-ibm85n195.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n195'(suite) -> [];
+'ibm-not-wf-P85-ibm85n195'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n195.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n196.xml
+%% ID: ibm-not-wf-P85-ibm85n196.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n196'(suite) -> [];
+'ibm-not-wf-P85-ibm85n196'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n196.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n197.xml
+%% ID: ibm-not-wf-P85-ibm85n197.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n197'(suite) -> [];
+'ibm-not-wf-P85-ibm85n197'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n197.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n198.xml
+%% ID: ibm-not-wf-P85-ibm85n198.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n198'(suite) -> [];
+'ibm-not-wf-P85-ibm85n198'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n198.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n20.xml
+%% ID: ibm-not-wf-P85-ibm85n20.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n20'(suite) -> [];
+'ibm-not-wf-P85-ibm85n20'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n20.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n21.xml
+%% ID: ibm-not-wf-P85-ibm85n21.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n21'(suite) -> [];
+'ibm-not-wf-P85-ibm85n21'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n21.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n22.xml
+%% ID: ibm-not-wf-P85-ibm85n22.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n22'(suite) -> [];
+'ibm-not-wf-P85-ibm85n22'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n22.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n23.xml
+%% ID: ibm-not-wf-P85-ibm85n23.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n23'(suite) -> [];
+'ibm-not-wf-P85-ibm85n23'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n23.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n24.xml
+%% ID: ibm-not-wf-P85-ibm85n24.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n24'(suite) -> [];
+'ibm-not-wf-P85-ibm85n24'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n24.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n25.xml
+%% ID: ibm-not-wf-P85-ibm85n25.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n25'(suite) -> [];
+'ibm-not-wf-P85-ibm85n25'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n25.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n26.xml
+%% ID: ibm-not-wf-P85-ibm85n26.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n26'(suite) -> [];
+'ibm-not-wf-P85-ibm85n26'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n26.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n27.xml
+%% ID: ibm-not-wf-P85-ibm85n27.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n27'(suite) -> [];
+'ibm-not-wf-P85-ibm85n27'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n27.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n28.xml
+%% ID: ibm-not-wf-P85-ibm85n28.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n28'(suite) -> [];
+'ibm-not-wf-P85-ibm85n28'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n28.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n29.xml
+%% ID: ibm-not-wf-P85-ibm85n29.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n29'(suite) -> [];
+'ibm-not-wf-P85-ibm85n29'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n29.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n30.xml
+%% ID: ibm-not-wf-P85-ibm85n30.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n30'(suite) -> [];
+'ibm-not-wf-P85-ibm85n30'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n30.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n31.xml
+%% ID: ibm-not-wf-P85-ibm85n31.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n31'(suite) -> [];
+'ibm-not-wf-P85-ibm85n31'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n31.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n32.xml
+%% ID: ibm-not-wf-P85-ibm85n32.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n32'(suite) -> [];
+'ibm-not-wf-P85-ibm85n32'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n32.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n33.xml
+%% ID: ibm-not-wf-P85-ibm85n33.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n33'(suite) -> [];
+'ibm-not-wf-P85-ibm85n33'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n33.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n34.xml
+%% ID: ibm-not-wf-P85-ibm85n34.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n34'(suite) -> [];
+'ibm-not-wf-P85-ibm85n34'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n34.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n35.xml
+%% ID: ibm-not-wf-P85-ibm85n35.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n35'(suite) -> [];
+'ibm-not-wf-P85-ibm85n35'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n35.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n36.xml
+%% ID: ibm-not-wf-P85-ibm85n36.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n36'(suite) -> [];
+'ibm-not-wf-P85-ibm85n36'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n36.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n37.xml
+%% ID: ibm-not-wf-P85-ibm85n37.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n37'(suite) -> [];
+'ibm-not-wf-P85-ibm85n37'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n37.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n38.xml
+%% ID: ibm-not-wf-P85-ibm85n38.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n38'(suite) -> [];
+'ibm-not-wf-P85-ibm85n38'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n38.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n39.xml
+%% ID: ibm-not-wf-P85-ibm85n39.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n39'(suite) -> [];
+'ibm-not-wf-P85-ibm85n39'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n39.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n40.xml
+%% ID: ibm-not-wf-P85-ibm85n40.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n40'(suite) -> [];
+'ibm-not-wf-P85-ibm85n40'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n40.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n41.xml
+%% ID: ibm-not-wf-P85-ibm85n41.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n41'(suite) -> [];
+'ibm-not-wf-P85-ibm85n41'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n41.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n42.xml
+%% ID: ibm-not-wf-P85-ibm85n42.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n42'(suite) -> [];
+'ibm-not-wf-P85-ibm85n42'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n42.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n43.xml
+%% ID: ibm-not-wf-P85-ibm85n43.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n43'(suite) -> [];
+'ibm-not-wf-P85-ibm85n43'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n43.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n44.xml
+%% ID: ibm-not-wf-P85-ibm85n44.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n44'(suite) -> [];
+'ibm-not-wf-P85-ibm85n44'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n44.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n45.xml
+%% ID: ibm-not-wf-P85-ibm85n45.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n45'(suite) -> [];
+'ibm-not-wf-P85-ibm85n45'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n45.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n46.xml
+%% ID: ibm-not-wf-P85-ibm85n46.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n46'(suite) -> [];
+'ibm-not-wf-P85-ibm85n46'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n46.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n47.xml
+%% ID: ibm-not-wf-P85-ibm85n47.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n47'(suite) -> [];
+'ibm-not-wf-P85-ibm85n47'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n47.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n48.xml
+%% ID: ibm-not-wf-P85-ibm85n48.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n48'(suite) -> [];
+'ibm-not-wf-P85-ibm85n48'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n48.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n49.xml
+%% ID: ibm-not-wf-P85-ibm85n49.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n49'(suite) -> [];
+'ibm-not-wf-P85-ibm85n49'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n49.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n50.xml
+%% ID: ibm-not-wf-P85-ibm85n50.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n50'(suite) -> [];
+'ibm-not-wf-P85-ibm85n50'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n50.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n51.xml
+%% ID: ibm-not-wf-P85-ibm85n51.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n51'(suite) -> [];
+'ibm-not-wf-P85-ibm85n51'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n51.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n52.xml
+%% ID: ibm-not-wf-P85-ibm85n52.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n52'(suite) -> [];
+'ibm-not-wf-P85-ibm85n52'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n52.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n53.xml
+%% ID: ibm-not-wf-P85-ibm85n53.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n53'(suite) -> [];
+'ibm-not-wf-P85-ibm85n53'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n53.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n54.xml
+%% ID: ibm-not-wf-P85-ibm85n54.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n54'(suite) -> [];
+'ibm-not-wf-P85-ibm85n54'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n54.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n55.xml
+%% ID: ibm-not-wf-P85-ibm85n55.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n55'(suite) -> [];
+'ibm-not-wf-P85-ibm85n55'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n55.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n56.xml
+%% ID: ibm-not-wf-P85-ibm85n56.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n56'(suite) -> [];
+'ibm-not-wf-P85-ibm85n56'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n56.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n57.xml
+%% ID: ibm-not-wf-P85-ibm85n57.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n57'(suite) -> [];
+'ibm-not-wf-P85-ibm85n57'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n57.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n58.xml
+%% ID: ibm-not-wf-P85-ibm85n58.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n58'(suite) -> [];
+'ibm-not-wf-P85-ibm85n58'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n58.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n59.xml
+%% ID: ibm-not-wf-P85-ibm85n59.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n59'(suite) -> [];
+'ibm-not-wf-P85-ibm85n59'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n59.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n60.xml
+%% ID: ibm-not-wf-P85-ibm85n60.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n60'(suite) -> [];
+'ibm-not-wf-P85-ibm85n60'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n60.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n61.xml
+%% ID: ibm-not-wf-P85-ibm85n61.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n61'(suite) -> [];
+'ibm-not-wf-P85-ibm85n61'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n61.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n62.xml
+%% ID: ibm-not-wf-P85-ibm85n62.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n62'(suite) -> [];
+'ibm-not-wf-P85-ibm85n62'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n62.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n63.xml
+%% ID: ibm-not-wf-P85-ibm85n63.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n63'(suite) -> [];
+'ibm-not-wf-P85-ibm85n63'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n63.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n64.xml
+%% ID: ibm-not-wf-P85-ibm85n64.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n64'(suite) -> [];
+'ibm-not-wf-P85-ibm85n64'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n64.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n65.xml
+%% ID: ibm-not-wf-P85-ibm85n65.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n65'(suite) -> [];
+'ibm-not-wf-P85-ibm85n65'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n65.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n66.xml
+%% ID: ibm-not-wf-P85-ibm85n66.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n66'(suite) -> [];
+'ibm-not-wf-P85-ibm85n66'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n66.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n67.xml
+%% ID: ibm-not-wf-P85-ibm85n67.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n67'(suite) -> [];
+'ibm-not-wf-P85-ibm85n67'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n67.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n68.xml
+%% ID: ibm-not-wf-P85-ibm85n68.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n68'(suite) -> [];
+'ibm-not-wf-P85-ibm85n68'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n68.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n69.xml
+%% ID: ibm-not-wf-P85-ibm85n69.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n69'(suite) -> [];
+'ibm-not-wf-P85-ibm85n69'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n69.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n70.xml
+%% ID: ibm-not-wf-P85-ibm85n70.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n70'(suite) -> [];
+'ibm-not-wf-P85-ibm85n70'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n70.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n71.xml
+%% ID: ibm-not-wf-P85-ibm85n71.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n71'(suite) -> [];
+'ibm-not-wf-P85-ibm85n71'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n71.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n72.xml
+%% ID: ibm-not-wf-P85-ibm85n72.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n72'(suite) -> [];
+'ibm-not-wf-P85-ibm85n72'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n72.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n73.xml
+%% ID: ibm-not-wf-P85-ibm85n73.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n73'(suite) -> [];
+'ibm-not-wf-P85-ibm85n73'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n73.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n74.xml
+%% ID: ibm-not-wf-P85-ibm85n74.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n74'(suite) -> [];
+'ibm-not-wf-P85-ibm85n74'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n74.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n75.xml
+%% ID: ibm-not-wf-P85-ibm85n75.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n75'(suite) -> [];
+'ibm-not-wf-P85-ibm85n75'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n75.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n76.xml
+%% ID: ibm-not-wf-P85-ibm85n76.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n76'(suite) -> [];
+'ibm-not-wf-P85-ibm85n76'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n76.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n77.xml
+%% ID: ibm-not-wf-P85-ibm85n77.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n77'(suite) -> [];
+'ibm-not-wf-P85-ibm85n77'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n77.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n78.xml
+%% ID: ibm-not-wf-P85-ibm85n78.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n78'(suite) -> [];
+'ibm-not-wf-P85-ibm85n78'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n78.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n79.xml
+%% ID: ibm-not-wf-P85-ibm85n79.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n79'(suite) -> [];
+'ibm-not-wf-P85-ibm85n79'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n79.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n80.xml
+%% ID: ibm-not-wf-P85-ibm85n80.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n80'(suite) -> [];
+'ibm-not-wf-P85-ibm85n80'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n80.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n81.xml
+%% ID: ibm-not-wf-P85-ibm85n81.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n81'(suite) -> [];
+'ibm-not-wf-P85-ibm85n81'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n81.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n82.xml
+%% ID: ibm-not-wf-P85-ibm85n82.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n82'(suite) -> [];
+'ibm-not-wf-P85-ibm85n82'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n82.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n83.xml
+%% ID: ibm-not-wf-P85-ibm85n83.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n83'(suite) -> [];
+'ibm-not-wf-P85-ibm85n83'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n83.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n84.xml
+%% ID: ibm-not-wf-P85-ibm85n84.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n84'(suite) -> [];
+'ibm-not-wf-P85-ibm85n84'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n84.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n85.xml
+%% ID: ibm-not-wf-P85-ibm85n85.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n85'(suite) -> [];
+'ibm-not-wf-P85-ibm85n85'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n85.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n86.xml
+%% ID: ibm-not-wf-P85-ibm85n86.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n86'(suite) -> [];
+'ibm-not-wf-P85-ibm85n86'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n86.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n87.xml
+%% ID: ibm-not-wf-P85-ibm85n87.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n87'(suite) -> [];
+'ibm-not-wf-P85-ibm85n87'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n87.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n88.xml
+%% ID: ibm-not-wf-P85-ibm85n88.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n88'(suite) -> [];
+'ibm-not-wf-P85-ibm85n88'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n88.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n89.xml
+%% ID: ibm-not-wf-P85-ibm85n89.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n89'(suite) -> [];
+'ibm-not-wf-P85-ibm85n89'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n89.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n90.xml
+%% ID: ibm-not-wf-P85-ibm85n90.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n90'(suite) -> [];
+'ibm-not-wf-P85-ibm85n90'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n90.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n91.xml
+%% ID: ibm-not-wf-P85-ibm85n91.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n91'(suite) -> [];
+'ibm-not-wf-P85-ibm85n91'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n91.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n92.xml
+%% ID: ibm-not-wf-P85-ibm85n92.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n92'(suite) -> [];
+'ibm-not-wf-P85-ibm85n92'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n92.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n93.xml
+%% ID: ibm-not-wf-P85-ibm85n93.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n93'(suite) -> [];
+'ibm-not-wf-P85-ibm85n93'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n93.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n94.xml
+%% ID: ibm-not-wf-P85-ibm85n94.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n94'(suite) -> [];
+'ibm-not-wf-P85-ibm85n94'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n94.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n95.xml
+%% ID: ibm-not-wf-P85-ibm85n95.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n95'(suite) -> [];
+'ibm-not-wf-P85-ibm85n95'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n95.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n96.xml
+%% ID: ibm-not-wf-P85-ibm85n96.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n96'(suite) -> [];
+'ibm-not-wf-P85-ibm85n96'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n96.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n97.xml
+%% ID: ibm-not-wf-P85-ibm85n97.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n97'(suite) -> [];
+'ibm-not-wf-P85-ibm85n97'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n97.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n98.xml
+%% ID: ibm-not-wf-P85-ibm85n98.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n98'(suite) -> [];
+'ibm-not-wf-P85-ibm85n98'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n98.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P85/ibm85n99.xml
+%% ID: ibm-not-wf-P85-ibm85n99.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P85-ibm85n99'(suite) -> [];
+'ibm-not-wf-P85-ibm85n99'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P85/ibm85n99.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 85
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P86/ibm86n01.xml
+%% ID: ibm-not-wf-P86-ibm86n01.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P86-ibm86n01'(suite) -> [];
+'ibm-not-wf-P86-ibm86n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P86/ibm86n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P86/ibm86n02.xml
+%% ID: ibm-not-wf-P86-ibm86n02.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P86-ibm86n02'(suite) -> [];
+'ibm-not-wf-P86-ibm86n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P86/ibm86n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P86/ibm86n03.xml
+%% ID: ibm-not-wf-P86-ibm86n03.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P86-ibm86n03'(suite) -> [];
+'ibm-not-wf-P86-ibm86n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P86/ibm86n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P86/ibm86n04.xml
+%% ID: ibm-not-wf-P86-ibm86n04.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P86-ibm86n04'(suite) -> [];
+'ibm-not-wf-P86-ibm86n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P86/ibm86n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 86
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n01.xml
+%% ID: ibm-not-wf-P87-ibm87n01.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n01'(suite) -> [];
+'ibm-not-wf-P87-ibm87n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n02.xml
+%% ID: ibm-not-wf-P87-ibm87n02.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n02'(suite) -> [];
+'ibm-not-wf-P87-ibm87n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n03.xml
+%% ID: ibm-not-wf-P87-ibm87n03.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n03'(suite) -> [];
+'ibm-not-wf-P87-ibm87n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n04.xml
+%% ID: ibm-not-wf-P87-ibm87n04.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n04'(suite) -> [];
+'ibm-not-wf-P87-ibm87n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n05.xml
+%% ID: ibm-not-wf-P87-ibm87n05.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n05'(suite) -> [];
+'ibm-not-wf-P87-ibm87n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n06.xml
+%% ID: ibm-not-wf-P87-ibm87n06.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n06'(suite) -> [];
+'ibm-not-wf-P87-ibm87n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n07.xml
+%% ID: ibm-not-wf-P87-ibm87n07.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n07'(suite) -> [];
+'ibm-not-wf-P87-ibm87n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n08.xml
+%% ID: ibm-not-wf-P87-ibm87n08.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n08'(suite) -> [];
+'ibm-not-wf-P87-ibm87n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n09.xml
+%% ID: ibm-not-wf-P87-ibm87n09.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n09'(suite) -> [];
+'ibm-not-wf-P87-ibm87n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n10.xml
+%% ID: ibm-not-wf-P87-ibm87n10.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n10'(suite) -> [];
+'ibm-not-wf-P87-ibm87n10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n11.xml
+%% ID: ibm-not-wf-P87-ibm87n11.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n11'(suite) -> [];
+'ibm-not-wf-P87-ibm87n11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n12.xml
+%% ID: ibm-not-wf-P87-ibm87n12.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n12'(suite) -> [];
+'ibm-not-wf-P87-ibm87n12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n13.xml
+%% ID: ibm-not-wf-P87-ibm87n13.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n13'(suite) -> [];
+'ibm-not-wf-P87-ibm87n13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n14.xml
+%% ID: ibm-not-wf-P87-ibm87n14.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n14'(suite) -> [];
+'ibm-not-wf-P87-ibm87n14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n15.xml
+%% ID: ibm-not-wf-P87-ibm87n15.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n15'(suite) -> [];
+'ibm-not-wf-P87-ibm87n15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n16.xml
+%% ID: ibm-not-wf-P87-ibm87n16.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n16'(suite) -> [];
+'ibm-not-wf-P87-ibm87n16'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n16.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n17.xml
+%% ID: ibm-not-wf-P87-ibm87n17.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n17'(suite) -> [];
+'ibm-not-wf-P87-ibm87n17'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n17.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n18.xml
+%% ID: ibm-not-wf-P87-ibm87n18.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n18'(suite) -> [];
+'ibm-not-wf-P87-ibm87n18'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n18.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n19.xml
+%% ID: ibm-not-wf-P87-ibm87n19.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n19'(suite) -> [];
+'ibm-not-wf-P87-ibm87n19'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n19.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n20.xml
+%% ID: ibm-not-wf-P87-ibm87n20.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n20'(suite) -> [];
+'ibm-not-wf-P87-ibm87n20'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n20.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n21.xml
+%% ID: ibm-not-wf-P87-ibm87n21.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n21'(suite) -> [];
+'ibm-not-wf-P87-ibm87n21'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n21.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n22.xml
+%% ID: ibm-not-wf-P87-ibm87n22.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n22'(suite) -> [];
+'ibm-not-wf-P87-ibm87n22'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n22.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n23.xml
+%% ID: ibm-not-wf-P87-ibm87n23.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n23'(suite) -> [];
+'ibm-not-wf-P87-ibm87n23'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n23.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n24.xml
+%% ID: ibm-not-wf-P87-ibm87n24.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n24'(suite) -> [];
+'ibm-not-wf-P87-ibm87n24'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n24.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n25.xml
+%% ID: ibm-not-wf-P87-ibm87n25.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n25'(suite) -> [];
+'ibm-not-wf-P87-ibm87n25'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n25.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n26.xml
+%% ID: ibm-not-wf-P87-ibm87n26.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n26'(suite) -> [];
+'ibm-not-wf-P87-ibm87n26'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n26.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n27.xml
+%% ID: ibm-not-wf-P87-ibm87n27.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n27'(suite) -> [];
+'ibm-not-wf-P87-ibm87n27'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n27.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n28.xml
+%% ID: ibm-not-wf-P87-ibm87n28.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n28'(suite) -> [];
+'ibm-not-wf-P87-ibm87n28'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n28.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n29.xml
+%% ID: ibm-not-wf-P87-ibm87n29.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n29'(suite) -> [];
+'ibm-not-wf-P87-ibm87n29'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n29.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n30.xml
+%% ID: ibm-not-wf-P87-ibm87n30.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n30'(suite) -> [];
+'ibm-not-wf-P87-ibm87n30'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n30.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n31.xml
+%% ID: ibm-not-wf-P87-ibm87n31.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n31'(suite) -> [];
+'ibm-not-wf-P87-ibm87n31'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n31.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n32.xml
+%% ID: ibm-not-wf-P87-ibm87n32.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n32'(suite) -> [];
+'ibm-not-wf-P87-ibm87n32'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n32.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n33.xml
+%% ID: ibm-not-wf-P87-ibm87n33.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n33'(suite) -> [];
+'ibm-not-wf-P87-ibm87n33'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n33.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n34.xml
+%% ID: ibm-not-wf-P87-ibm87n34.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n34'(suite) -> [];
+'ibm-not-wf-P87-ibm87n34'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n34.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n35.xml
+%% ID: ibm-not-wf-P87-ibm87n35.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n35'(suite) -> [];
+'ibm-not-wf-P87-ibm87n35'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n35.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n36.xml
+%% ID: ibm-not-wf-P87-ibm87n36.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n36'(suite) -> [];
+'ibm-not-wf-P87-ibm87n36'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n36.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n37.xml
+%% ID: ibm-not-wf-P87-ibm87n37.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n37'(suite) -> [];
+'ibm-not-wf-P87-ibm87n37'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n37.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n38.xml
+%% ID: ibm-not-wf-P87-ibm87n38.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n38'(suite) -> [];
+'ibm-not-wf-P87-ibm87n38'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n38.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n39.xml
+%% ID: ibm-not-wf-P87-ibm87n39.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n39'(suite) -> [];
+'ibm-not-wf-P87-ibm87n39'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n39.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n40.xml
+%% ID: ibm-not-wf-P87-ibm87n40.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n40'(suite) -> [];
+'ibm-not-wf-P87-ibm87n40'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n40.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n41.xml
+%% ID: ibm-not-wf-P87-ibm87n41.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n41'(suite) -> [];
+'ibm-not-wf-P87-ibm87n41'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n41.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n42.xml
+%% ID: ibm-not-wf-P87-ibm87n42.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n42'(suite) -> [];
+'ibm-not-wf-P87-ibm87n42'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n42.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n43.xml
+%% ID: ibm-not-wf-P87-ibm87n43.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n43'(suite) -> [];
+'ibm-not-wf-P87-ibm87n43'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n43.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n44.xml
+%% ID: ibm-not-wf-P87-ibm87n44.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n44'(suite) -> [];
+'ibm-not-wf-P87-ibm87n44'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n44.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n45.xml
+%% ID: ibm-not-wf-P87-ibm87n45.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n45'(suite) -> [];
+'ibm-not-wf-P87-ibm87n45'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n45.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n46.xml
+%% ID: ibm-not-wf-P87-ibm87n46.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n46'(suite) -> [];
+'ibm-not-wf-P87-ibm87n46'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n46.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n47.xml
+%% ID: ibm-not-wf-P87-ibm87n47.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n47'(suite) -> [];
+'ibm-not-wf-P87-ibm87n47'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n47.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n48.xml
+%% ID: ibm-not-wf-P87-ibm87n48.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n48'(suite) -> [];
+'ibm-not-wf-P87-ibm87n48'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n48.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n49.xml
+%% ID: ibm-not-wf-P87-ibm87n49.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n49'(suite) -> [];
+'ibm-not-wf-P87-ibm87n49'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n49.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n50.xml
+%% ID: ibm-not-wf-P87-ibm87n50.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n50'(suite) -> [];
+'ibm-not-wf-P87-ibm87n50'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n50.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n51.xml
+%% ID: ibm-not-wf-P87-ibm87n51.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n51'(suite) -> [];
+'ibm-not-wf-P87-ibm87n51'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n51.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n52.xml
+%% ID: ibm-not-wf-P87-ibm87n52.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n52'(suite) -> [];
+'ibm-not-wf-P87-ibm87n52'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n52.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n53.xml
+%% ID: ibm-not-wf-P87-ibm87n53.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n53'(suite) -> [];
+'ibm-not-wf-P87-ibm87n53'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n53.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n54.xml
+%% ID: ibm-not-wf-P87-ibm87n54.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n54'(suite) -> [];
+'ibm-not-wf-P87-ibm87n54'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n54.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n55.xml
+%% ID: ibm-not-wf-P87-ibm87n55.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n55'(suite) -> [];
+'ibm-not-wf-P87-ibm87n55'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n55.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n56.xml
+%% ID: ibm-not-wf-P87-ibm87n56.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n56'(suite) -> [];
+'ibm-not-wf-P87-ibm87n56'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n56.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n57.xml
+%% ID: ibm-not-wf-P87-ibm87n57.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n57'(suite) -> [];
+'ibm-not-wf-P87-ibm87n57'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n57.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n58.xml
+%% ID: ibm-not-wf-P87-ibm87n58.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n58'(suite) -> [];
+'ibm-not-wf-P87-ibm87n58'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n58.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n59.xml
+%% ID: ibm-not-wf-P87-ibm87n59.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n59'(suite) -> [];
+'ibm-not-wf-P87-ibm87n59'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n59.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n60.xml
+%% ID: ibm-not-wf-P87-ibm87n60.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n60'(suite) -> [];
+'ibm-not-wf-P87-ibm87n60'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n60.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n61.xml
+%% ID: ibm-not-wf-P87-ibm87n61.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n61'(suite) -> [];
+'ibm-not-wf-P87-ibm87n61'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n61.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n62.xml
+%% ID: ibm-not-wf-P87-ibm87n62.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n62'(suite) -> [];
+'ibm-not-wf-P87-ibm87n62'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n62.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n63.xml
+%% ID: ibm-not-wf-P87-ibm87n63.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n63'(suite) -> [];
+'ibm-not-wf-P87-ibm87n63'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n63.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n64.xml
+%% ID: ibm-not-wf-P87-ibm87n64.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n64'(suite) -> [];
+'ibm-not-wf-P87-ibm87n64'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n64.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n66.xml
+%% ID: ibm-not-wf-P87-ibm87n66.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n66'(suite) -> [];
+'ibm-not-wf-P87-ibm87n66'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n66.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n67.xml
+%% ID: ibm-not-wf-P87-ibm87n67.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n67'(suite) -> [];
+'ibm-not-wf-P87-ibm87n67'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n67.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n68.xml
+%% ID: ibm-not-wf-P87-ibm87n68.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n68'(suite) -> [];
+'ibm-not-wf-P87-ibm87n68'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n68.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n69.xml
+%% ID: ibm-not-wf-P87-ibm87n69.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n69'(suite) -> [];
+'ibm-not-wf-P87-ibm87n69'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n69.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n70.xml
+%% ID: ibm-not-wf-P87-ibm87n70.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n70'(suite) -> [];
+'ibm-not-wf-P87-ibm87n70'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n70.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n71.xml
+%% ID: ibm-not-wf-P87-ibm87n71.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n71'(suite) -> [];
+'ibm-not-wf-P87-ibm87n71'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n71.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n72.xml
+%% ID: ibm-not-wf-P87-ibm87n72.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n72'(suite) -> [];
+'ibm-not-wf-P87-ibm87n72'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n72.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n73.xml
+%% ID: ibm-not-wf-P87-ibm87n73.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n73'(suite) -> [];
+'ibm-not-wf-P87-ibm87n73'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n73.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n74.xml
+%% ID: ibm-not-wf-P87-ibm87n74.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n74'(suite) -> [];
+'ibm-not-wf-P87-ibm87n74'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n74.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n75.xml
+%% ID: ibm-not-wf-P87-ibm87n75.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n75'(suite) -> [];
+'ibm-not-wf-P87-ibm87n75'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n75.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n76.xml
+%% ID: ibm-not-wf-P87-ibm87n76.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n76'(suite) -> [];
+'ibm-not-wf-P87-ibm87n76'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n76.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n77.xml
+%% ID: ibm-not-wf-P87-ibm87n77.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n77'(suite) -> [];
+'ibm-not-wf-P87-ibm87n77'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n77.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n78.xml
+%% ID: ibm-not-wf-P87-ibm87n78.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n78'(suite) -> [];
+'ibm-not-wf-P87-ibm87n78'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n78.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n79.xml
+%% ID: ibm-not-wf-P87-ibm87n79.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n79'(suite) -> [];
+'ibm-not-wf-P87-ibm87n79'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n79.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n80.xml
+%% ID: ibm-not-wf-P87-ibm87n80.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n80'(suite) -> [];
+'ibm-not-wf-P87-ibm87n80'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n80.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n81.xml
+%% ID: ibm-not-wf-P87-ibm87n81.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n81'(suite) -> [];
+'ibm-not-wf-P87-ibm87n81'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n81.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n82.xml
+%% ID: ibm-not-wf-P87-ibm87n82.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n82'(suite) -> [];
+'ibm-not-wf-P87-ibm87n82'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n82.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n83.xml
+%% ID: ibm-not-wf-P87-ibm87n83.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n83'(suite) -> [];
+'ibm-not-wf-P87-ibm87n83'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n83.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n84.xml
+%% ID: ibm-not-wf-P87-ibm87n84.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n84'(suite) -> [];
+'ibm-not-wf-P87-ibm87n84'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n84.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P87/ibm87n85.xml
+%% ID: ibm-not-wf-P87-ibm87n85.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P87-ibm87n85'(suite) -> [];
+'ibm-not-wf-P87-ibm87n85'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P87/ibm87n85.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 87
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n01.xml
+%% ID: ibm-not-wf-P88-ibm88n01.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n01'(suite) -> [];
+'ibm-not-wf-P88-ibm88n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n02.xml
+%% ID: ibm-not-wf-P88-ibm88n02.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n02'(suite) -> [];
+'ibm-not-wf-P88-ibm88n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n03.xml
+%% ID: ibm-not-wf-P88-ibm88n03.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n03'(suite) -> [];
+'ibm-not-wf-P88-ibm88n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n04.xml
+%% ID: ibm-not-wf-P88-ibm88n04.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n04'(suite) -> [];
+'ibm-not-wf-P88-ibm88n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n05.xml
+%% ID: ibm-not-wf-P88-ibm88n05.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n05'(suite) -> [];
+'ibm-not-wf-P88-ibm88n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n06.xml
+%% ID: ibm-not-wf-P88-ibm88n06.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n06'(suite) -> [];
+'ibm-not-wf-P88-ibm88n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n08.xml
+%% ID: ibm-not-wf-P88-ibm88n08.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n08'(suite) -> [];
+'ibm-not-wf-P88-ibm88n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n09.xml
+%% ID: ibm-not-wf-P88-ibm88n09.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n09'(suite) -> [];
+'ibm-not-wf-P88-ibm88n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n10.xml
+%% ID: ibm-not-wf-P88-ibm88n10.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n10'(suite) -> [];
+'ibm-not-wf-P88-ibm88n10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n11.xml
+%% ID: ibm-not-wf-P88-ibm88n11.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n11'(suite) -> [];
+'ibm-not-wf-P88-ibm88n11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n12.xml
+%% ID: ibm-not-wf-P88-ibm88n12.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n12'(suite) -> [];
+'ibm-not-wf-P88-ibm88n12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n13.xml
+%% ID: ibm-not-wf-P88-ibm88n13.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n13'(suite) -> [];
+'ibm-not-wf-P88-ibm88n13'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n13.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n14.xml
+%% ID: ibm-not-wf-P88-ibm88n14.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n14'(suite) -> [];
+'ibm-not-wf-P88-ibm88n14'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n14.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n15.xml
+%% ID: ibm-not-wf-P88-ibm88n15.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n15'(suite) -> [];
+'ibm-not-wf-P88-ibm88n15'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n15.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P88/ibm88n16.xml
+%% ID: ibm-not-wf-P88-ibm88n16.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P88-ibm88n16'(suite) -> [];
+'ibm-not-wf-P88-ibm88n16'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P88/ibm88n16.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 88
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n01.xml
+%% ID: ibm-not-wf-P89-ibm89n01.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n01'(suite) -> [];
+'ibm-not-wf-P89-ibm89n01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n02.xml
+%% ID: ibm-not-wf-P89-ibm89n02.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n02'(suite) -> [];
+'ibm-not-wf-P89-ibm89n02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n03.xml
+%% ID: ibm-not-wf-P89-ibm89n03.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n03'(suite) -> [];
+'ibm-not-wf-P89-ibm89n03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n04.xml
+%% ID: ibm-not-wf-P89-ibm89n04.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n04'(suite) -> [];
+'ibm-not-wf-P89-ibm89n04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n05.xml
+%% ID: ibm-not-wf-P89-ibm89n05.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n05'(suite) -> [];
+'ibm-not-wf-P89-ibm89n05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n06.xml
+%% ID: ibm-not-wf-P89-ibm89n06.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n06'(suite) -> [];
+'ibm-not-wf-P89-ibm89n06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n07.xml
+%% ID: ibm-not-wf-P89-ibm89n07.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n07'(suite) -> [];
+'ibm-not-wf-P89-ibm89n07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n08.xml
+%% ID: ibm-not-wf-P89-ibm89n08.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n08'(suite) -> [];
+'ibm-not-wf-P89-ibm89n08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n09.xml
+%% ID: ibm-not-wf-P89-ibm89n09.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n09'(suite) -> [];
+'ibm-not-wf-P89-ibm89n09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n10.xml
+%% ID: ibm-not-wf-P89-ibm89n10.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n10'(suite) -> [];
+'ibm-not-wf-P89-ibm89n10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n11.xml
+%% ID: ibm-not-wf-P89-ibm89n11.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n11'(suite) -> [];
+'ibm-not-wf-P89-ibm89n11'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n11.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: not-wf/P89/ibm89n12.xml
+%% ID: ibm-not-wf-P89-ibm89n12.xml
+%% Type: not-wf
+%% Sections: B.
+'ibm-not-wf-P89-ibm89n12'(suite) -> [];
+'ibm-not-wf-P89-ibm89n12'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","not-wf/P89/ibm89n12.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "not-wf").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 89
+
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - not-wf tests
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P01/ibm01v01.xml
+%% ID: ibm-valid-P01-ibm01v01.xml
+%% Type: valid
+%% Sections: 2.1
+'ibm-valid-P01-ibm01v01'(suite) -> [];
+'ibm-valid-P01-ibm01v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P01/ibm01v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 1
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P02/ibm02v01.xml
+%% ID: ibm-valid-P02-ibm02v01.xml
+%% Type: valid
+%% Sections: 2.2
+'ibm-valid-P02-ibm02v01'(suite) -> [];
+'ibm-valid-P02-ibm02v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P02/ibm02v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 2
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P03/ibm03v01.xml
+%% ID: ibm-valid-P03-ibm03v01.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P03-ibm03v01'(suite) -> [];
+'ibm-valid-P03-ibm03v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P03/ibm03v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 3
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P09/ibm09v01.xml
+%% ID: ibm-valid-P09-ibm09v01.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P09-ibm09v01'(suite) -> [];
+'ibm-valid-P09-ibm09v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P09/ibm09v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P09/ibm09v02.xml
+%% ID: ibm-valid-P09-ibm09v02.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P09-ibm09v02'(suite) -> [];
+'ibm-valid-P09-ibm09v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P09/ibm09v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P09/ibm09v03.xml
+%% ID: ibm-valid-P09-ibm09v03.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P09-ibm09v03'(suite) -> [];
+'ibm-valid-P09-ibm09v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P09/ibm09v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P09/ibm09v04.xml
+%% ID: ibm-valid-P09-ibm09v04.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P09-ibm09v04'(suite) -> [];
+'ibm-valid-P09-ibm09v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P09/ibm09v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P09/ibm09v05.xml
+%% ID: ibm-valid-P09-ibm09v05.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P09-ibm09v05'(suite) -> [];
+'ibm-valid-P09-ibm09v05'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P09/ibm09v05.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 9
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P10/ibm10v01.xml
+%% ID: ibm-valid-P10-ibm10v01.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P10-ibm10v01'(suite) -> [];
+'ibm-valid-P10-ibm10v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P10/ibm10v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P10/ibm10v02.xml
+%% ID: ibm-valid-P10-ibm10v02.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P10-ibm10v02'(suite) -> [];
+'ibm-valid-P10-ibm10v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P10/ibm10v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P10/ibm10v03.xml
+%% ID: ibm-valid-P10-ibm10v03.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P10-ibm10v03'(suite) -> [];
+'ibm-valid-P10-ibm10v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P10/ibm10v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P10/ibm10v04.xml
+%% ID: ibm-valid-P10-ibm10v04.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P10-ibm10v04'(suite) -> [];
+'ibm-valid-P10-ibm10v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P10/ibm10v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P10/ibm10v05.xml
+%% ID: ibm-valid-P10-ibm10v05.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P10-ibm10v05'(suite) -> [];
+'ibm-valid-P10-ibm10v05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P10/ibm10v05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P10/ibm10v06.xml
+%% ID: ibm-valid-P10-ibm10v06.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P10-ibm10v06'(suite) -> [];
+'ibm-valid-P10-ibm10v06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P10/ibm10v06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P10/ibm10v07.xml
+%% ID: ibm-valid-P10-ibm10v07.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P10-ibm10v07'(suite) -> [];
+'ibm-valid-P10-ibm10v07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P10/ibm10v07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P10/ibm10v08.xml
+%% ID: ibm-valid-P10-ibm10v08.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P10-ibm10v08'(suite) -> [];
+'ibm-valid-P10-ibm10v08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P10/ibm10v08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 10
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P11/ibm11v01.xml
+%% ID: ibm-valid-P11-ibm11v01.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P11-ibm11v01'(suite) -> [];
+'ibm-valid-P11-ibm11v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P11/ibm11v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P11/ibm11v02.xml
+%% ID: ibm-valid-P11-ibm11v02.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P11-ibm11v02'(suite) -> [];
+'ibm-valid-P11-ibm11v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P11/ibm11v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P11/ibm11v03.xml
+%% ID: ibm-valid-P11-ibm11v03.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P11-ibm11v03'(suite) -> [];
+'ibm-valid-P11-ibm11v03'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P11/ibm11v03.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P11/ibm11v04.xml
+%% ID: ibm-valid-P11-ibm11v04.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P11-ibm11v04'(suite) -> [];
+'ibm-valid-P11-ibm11v04'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P11/ibm11v04.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 11
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P12/ibm12v01.xml
+%% ID: ibm-valid-P12-ibm12v01.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P12-ibm12v01'(suite) -> [];
+'ibm-valid-P12-ibm12v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P12/ibm12v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P12/ibm12v02.xml
+%% ID: ibm-valid-P12-ibm12v02.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P12-ibm12v02'(suite) -> [];
+'ibm-valid-P12-ibm12v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P12/ibm12v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P12/ibm12v03.xml
+%% ID: ibm-valid-P12-ibm12v03.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P12-ibm12v03'(suite) -> [];
+'ibm-valid-P12-ibm12v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P12/ibm12v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P12/ibm12v04.xml
+%% ID: ibm-valid-P12-ibm12v04.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P12-ibm12v04'(suite) -> [];
+'ibm-valid-P12-ibm12v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P12/ibm12v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 12
+
+testcases111(suite) -> [].
+%% ['ibm-valid-P12-ibm12v01','ibm-valid-P12-ibm12v02','ibm-valid-P12-ibm12v03','ibm-valid-P12-ibm12v04'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P13/ibm13v01.xml
+%% ID: ibm-valid-P13-ibm13v01.xml
+%% Type: valid
+%% Sections: 2.3
+'ibm-valid-P13-ibm13v01'(suite) -> [];
+'ibm-valid-P13-ibm13v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P13/ibm13v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 13
+
+testcases112(suite) -> [].
+%% ['ibm-valid-P13-ibm13v01'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P14/ibm14v01.xml
+%% ID: ibm-valid-P14-ibm14v01.xml
+%% Type: valid
+%% Sections: 2.4
+'ibm-valid-P14-ibm14v01'(suite) -> [];
+'ibm-valid-P14-ibm14v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P14/ibm14v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P14/ibm14v02.xml
+%% ID: ibm-valid-P14-ibm14v02.xml
+%% Type: valid
+%% Sections: 2.4
+'ibm-valid-P14-ibm14v02'(suite) -> [];
+'ibm-valid-P14-ibm14v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P14/ibm14v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P14/ibm14v03.xml
+%% ID: ibm-valid-P14-ibm14v03.xml
+%% Type: valid
+%% Sections: 2.4
+'ibm-valid-P14-ibm14v03'(suite) -> [];
+'ibm-valid-P14-ibm14v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P14/ibm14v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 14
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P15/ibm15v01.xml
+%% ID: ibm-valid-P15-ibm15v01.xml
+%% Type: valid
+%% Sections: 2.5
+'ibm-valid-P15-ibm15v01'(suite) -> [];
+'ibm-valid-P15-ibm15v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P15/ibm15v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P15/ibm15v02.xml
+%% ID: ibm-valid-P15-ibm15v02.xml
+%% Type: valid
+%% Sections: 2.5
+'ibm-valid-P15-ibm15v02'(suite) -> [];
+'ibm-valid-P15-ibm15v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P15/ibm15v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P15/ibm15v03.xml
+%% ID: ibm-valid-P15-ibm15v03.xml
+%% Type: valid
+%% Sections: 2.5
+'ibm-valid-P15-ibm15v03'(suite) -> [];
+'ibm-valid-P15-ibm15v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P15/ibm15v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P15/ibm15v04.xml
+%% ID: ibm-valid-P15-ibm15v04.xml
+%% Type: valid
+%% Sections: 2.5
+'ibm-valid-P15-ibm15v04'(suite) -> [];
+'ibm-valid-P15-ibm15v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P15/ibm15v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 15
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P16/ibm16v01.xml
+%% ID: ibm-valid-P16-ibm16v01.xml
+%% Type: valid
+%% Sections: 2.6
+'ibm-valid-P16-ibm16v01'(suite) -> [];
+'ibm-valid-P16-ibm16v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P16/ibm16v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P16/ibm16v02.xml
+%% ID: ibm-valid-P16-ibm16v02.xml
+%% Type: valid
+%% Sections: 2.6
+'ibm-valid-P16-ibm16v02'(suite) -> [];
+'ibm-valid-P16-ibm16v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P16/ibm16v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P16/ibm16v03.xml
+%% ID: ibm-valid-P16-ibm16v03.xml
+%% Type: valid
+%% Sections: 2.6
+'ibm-valid-P16-ibm16v03'(suite) -> [];
+'ibm-valid-P16-ibm16v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P16/ibm16v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 16
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P17/ibm17v01.xml
+%% ID: ibm-valid-P17-ibm17v01.xml
+%% Type: valid
+%% Sections: 2.6
+'ibm-valid-P17-ibm17v01'(suite) -> [];
+'ibm-valid-P17-ibm17v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P17/ibm17v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 17
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P18/ibm18v01.xml
+%% ID: ibm-valid-P18-ibm18v01.xml
+%% Type: valid
+%% Sections: 2.7
+'ibm-valid-P18-ibm18v01'(suite) -> [];
+'ibm-valid-P18-ibm18v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P18/ibm18v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 18
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P19/ibm19v01.xml
+%% ID: ibm-valid-P19-ibm19v01.xml
+%% Type: valid
+%% Sections: 2.7
+'ibm-valid-P19-ibm19v01'(suite) -> [];
+'ibm-valid-P19-ibm19v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P19/ibm19v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 19
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P20/ibm20v01.xml
+%% ID: ibm-valid-P20-ibm20v01.xml
+%% Type: valid
+%% Sections: 2.7
+'ibm-valid-P20-ibm20v01'(suite) -> [];
+'ibm-valid-P20-ibm20v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P20/ibm20v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P20/ibm20v02.xml
+%% ID: ibm-valid-P20-ibm20v02.xml
+%% Type: valid
+%% Sections: 2.7
+'ibm-valid-P20-ibm20v02'(suite) -> [];
+'ibm-valid-P20-ibm20v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P20/ibm20v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 20
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P21/ibm21v01.xml
+%% ID: ibm-valid-P21-ibm21v01.xml
+%% Type: valid
+%% Sections: 2.7
+'ibm-valid-P21-ibm21v01'(suite) -> [];
+'ibm-valid-P21-ibm21v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P21/ibm21v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 21
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P22/ibm22v01.xml
+%% ID: ibm-valid-P22-ibm22v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P22-ibm22v01'(suite) -> [];
+'ibm-valid-P22-ibm22v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P22/ibm22v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P22/ibm22v02.xml
+%% ID: ibm-valid-P22-ibm22v02.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P22-ibm22v02'(suite) -> [];
+'ibm-valid-P22-ibm22v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P22/ibm22v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P22/ibm22v03.xml
+%% ID: ibm-valid-P22-ibm22v03.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P22-ibm22v03'(suite) -> [];
+'ibm-valid-P22-ibm22v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P22/ibm22v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P22/ibm22v04.xml
+%% ID: ibm-valid-P22-ibm22v04.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P22-ibm22v04'(suite) -> [];
+'ibm-valid-P22-ibm22v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P22/ibm22v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P22/ibm22v05.xml
+%% ID: ibm-valid-P22-ibm22v05.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P22-ibm22v05'(suite) -> [];
+'ibm-valid-P22-ibm22v05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P22/ibm22v05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P22/ibm22v06.xml
+%% ID: ibm-valid-P22-ibm22v06.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P22-ibm22v06'(suite) -> [];
+'ibm-valid-P22-ibm22v06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P22/ibm22v06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P22/ibm22v07.xml
+%% ID: ibm-valid-P22-ibm22v07.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P22-ibm22v07'(suite) -> [];
+'ibm-valid-P22-ibm22v07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P22/ibm22v07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 22
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P23/ibm23v01.xml
+%% ID: ibm-valid-P23-ibm23v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P23-ibm23v01'(suite) -> [];
+'ibm-valid-P23-ibm23v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P23/ibm23v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P23/ibm23v02.xml
+%% ID: ibm-valid-P23-ibm23v02.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P23-ibm23v02'(suite) -> [];
+'ibm-valid-P23-ibm23v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P23/ibm23v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P23/ibm23v03.xml
+%% ID: ibm-valid-P23-ibm23v03.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P23-ibm23v03'(suite) -> [];
+'ibm-valid-P23-ibm23v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P23/ibm23v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P23/ibm23v04.xml
+%% ID: ibm-valid-P23-ibm23v04.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P23-ibm23v04'(suite) -> [];
+'ibm-valid-P23-ibm23v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P23/ibm23v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P23/ibm23v05.xml
+%% ID: ibm-valid-P23-ibm23v05.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P23-ibm23v05'(suite) -> [];
+'ibm-valid-P23-ibm23v05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P23/ibm23v05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P23/ibm23v06.xml
+%% ID: ibm-valid-P23-ibm23v06.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P23-ibm23v06'(suite) -> [];
+'ibm-valid-P23-ibm23v06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P23/ibm23v06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 23
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P24/ibm24v01.xml
+%% ID: ibm-valid-P24-ibm24v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P24-ibm24v01'(suite) -> [];
+'ibm-valid-P24-ibm24v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P24/ibm24v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P24/ibm24v02.xml
+%% ID: ibm-valid-P24-ibm24v02.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P24-ibm24v02'(suite) -> [];
+'ibm-valid-P24-ibm24v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P24/ibm24v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 24
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P25/ibm25v01.xml
+%% ID: ibm-valid-P25-ibm25v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P25-ibm25v01'(suite) -> [];
+'ibm-valid-P25-ibm25v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P25/ibm25v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P25/ibm25v02.xml
+%% ID: ibm-valid-P25-ibm25v02.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P25-ibm25v02'(suite) -> [];
+'ibm-valid-P25-ibm25v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P25/ibm25v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P25/ibm25v03.xml
+%% ID: ibm-valid-P25-ibm25v03.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P25-ibm25v03'(suite) -> [];
+'ibm-valid-P25-ibm25v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P25/ibm25v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P25/ibm25v04.xml
+%% ID: ibm-valid-P25-ibm25v04.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P25-ibm25v04'(suite) -> [];
+'ibm-valid-P25-ibm25v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P25/ibm25v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 25
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P26/ibm26v01.xml
+%% ID: ibm-valid-P26-ibm26v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P26-ibm26v01'(suite) -> [];
+'ibm-valid-P26-ibm26v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P26/ibm26v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 26
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P27/ibm27v01.xml
+%% ID: ibm-valid-P27-ibm27v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P27-ibm27v01'(suite) -> [];
+'ibm-valid-P27-ibm27v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P27/ibm27v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P27/ibm27v02.xml
+%% ID: ibm-valid-P27-ibm27v02.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P27-ibm27v02'(suite) -> [];
+'ibm-valid-P27-ibm27v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P27/ibm27v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P27/ibm27v03.xml
+%% ID: ibm-valid-P27-ibm27v03.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P27-ibm27v03'(suite) -> [];
+'ibm-valid-P27-ibm27v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P27/ibm27v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 27
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P28/ibm28v01.xml
+%% ID: ibm-valid-P28-ibm28v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P28-ibm28v01'(suite) -> [];
+'ibm-valid-P28-ibm28v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P28/ibm28v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P28/ibm28v02.xml
+%% ID: ibm-valid-P28-ibm28v02.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P28-ibm28v02'(suite) -> [];
+'ibm-valid-P28-ibm28v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P28/ibm28v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 28
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P29/ibm29v01.xml
+%% ID: ibm-valid-P29-ibm29v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P29-ibm29v01'(suite) -> [];
+'ibm-valid-P29-ibm29v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P29/ibm29v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P29/ibm29v02.xml
+%% ID: ibm-valid-P29-ibm29v02.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P29-ibm29v02'(suite) -> [];
+'ibm-valid-P29-ibm29v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P29/ibm29v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 29
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P30/ibm30v01.xml
+%% ID: ibm-valid-P30-ibm30v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P30-ibm30v01'(suite) -> [];
+'ibm-valid-P30-ibm30v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P30/ibm30v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P30/ibm30v02.xml
+%% ID: ibm-valid-P30-ibm30v02.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P30-ibm30v02'(suite) -> [];
+'ibm-valid-P30-ibm30v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P30/ibm30v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 30
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P31/ibm31v01.xml
+%% ID: ibm-valid-P31-ibm31v01.xml
+%% Type: valid
+%% Sections: 2.8
+'ibm-valid-P31-ibm31v01'(suite) -> [];
+'ibm-valid-P31-ibm31v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P31/ibm31v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 31
+
+testcases130(suite) -> [].
+%% ['ibm-valid-P31-ibm31v01'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P32/ibm32v01.xml
+%% ID: ibm-valid-P32-ibm32v01.xml
+%% Type: valid
+%% Sections: 2.9
+'ibm-valid-P32-ibm32v01'(suite) -> [];
+'ibm-valid-P32-ibm32v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P32/ibm32v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P32/ibm32v02.xml
+%% ID: ibm-valid-P32-ibm32v02.xml
+%% Type: valid
+%% Sections: 2.9
+'ibm-valid-P32-ibm32v02'(suite) -> [];
+'ibm-valid-P32-ibm32v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P32/ibm32v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P32/ibm32v03.xml
+%% ID: ibm-valid-P32-ibm32v03.xml
+%% Type: valid
+%% Sections: 2.9
+'ibm-valid-P32-ibm32v03'(suite) -> [];
+'ibm-valid-P32-ibm32v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P32/ibm32v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P32/ibm32v04.xml
+%% ID: ibm-valid-P32-ibm32v04.xml
+%% Type: valid
+%% Sections: 2.9
+'ibm-valid-P32-ibm32v04'(suite) -> [];
+'ibm-valid-P32-ibm32v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P32/ibm32v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 32
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P33/ibm33v01.xml
+%% ID: ibm-valid-P33-ibm33v01.xml
+%% Type: valid
+%% Sections: 2.12
+'ibm-valid-P33-ibm33v01'(suite) -> [];
+'ibm-valid-P33-ibm33v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P33/ibm33v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 33
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P34/ibm34v01.xml
+%% ID: ibm-valid-P34-ibm34v01.xml
+%% Type: valid
+%% Sections: 2.12
+'ibm-valid-P34-ibm34v01'(suite) -> [];
+'ibm-valid-P34-ibm34v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P34/ibm34v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 34
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P35/ibm35v01.xml
+%% ID: ibm-valid-P35-ibm35v01.xml
+%% Type: valid
+%% Sections: 2.12
+'ibm-valid-P35-ibm35v01'(suite) -> [];
+'ibm-valid-P35-ibm35v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P35/ibm35v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 35
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P36/ibm36v01.xml
+%% ID: ibm-valid-P36-ibm36v01.xml
+%% Type: valid
+%% Sections: 2.12
+'ibm-valid-P36-ibm36v01'(suite) -> [];
+'ibm-valid-P36-ibm36v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P36/ibm36v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 36
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P37/ibm37v01.xml
+%% ID: ibm-valid-P37-ibm37v01.xml
+%% Type: valid
+%% Sections: 2.12
+'ibm-valid-P37-ibm37v01'(suite) -> [];
+'ibm-valid-P37-ibm37v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P37/ibm37v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 37
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P38/ibm38v01.xml
+%% ID: ibm-valid-P38-ibm38v01.xml
+%% Type: valid
+%% Sections: 2.12
+'ibm-valid-P38-ibm38v01'(suite) -> [];
+'ibm-valid-P38-ibm38v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P38/ibm38v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 38
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P39/ibm39v01.xml
+%% ID: ibm-valid-P39-ibm39v01.xml
+%% Type: valid
+%% Sections: 3
+'ibm-valid-P39-ibm39v01'(suite) -> [];
+'ibm-valid-P39-ibm39v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P39/ibm39v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 39
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P40/ibm40v01.xml
+%% ID: ibm-valid-P40-ibm40v01.xml
+%% Type: valid
+%% Sections: 3.1
+'ibm-valid-P40-ibm40v01'(suite) -> [];
+'ibm-valid-P40-ibm40v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P40/ibm40v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 40
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P41/ibm41v01.xml
+%% ID: ibm-valid-P41-ibm41v01.xml
+%% Type: valid
+%% Sections: 3.1
+'ibm-valid-P41-ibm41v01'(suite) -> [];
+'ibm-valid-P41-ibm41v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P41/ibm41v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 41
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P42/ibm42v01.xml
+%% ID: ibm-valid-P42-ibm42v01.xml
+%% Type: valid
+%% Sections: 3.1
+'ibm-valid-P42-ibm42v01'(suite) -> [];
+'ibm-valid-P42-ibm42v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P42/ibm42v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 42
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P43/ibm43v01.xml
+%% ID: ibm-valid-P43-ibm43v01.xml
+%% Type: valid
+%% Sections: 3.1
+'ibm-valid-P43-ibm43v01'(suite) -> [];
+'ibm-valid-P43-ibm43v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P43/ibm43v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 43
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P44/ibm44v01.xml
+%% ID: ibm-valid-P44-ibm44v01.xml
+%% Type: valid
+%% Sections: 3.1
+'ibm-valid-P44-ibm44v01'(suite) -> [];
+'ibm-valid-P44-ibm44v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P44/ibm44v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 44
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P45/ibm45v01.xml
+%% ID: ibm-valid-P45-ibm45v01.xml
+%% Type: valid
+%% Sections: 3.2
+'ibm-valid-P45-ibm45v01'(suite) -> [];
+'ibm-valid-P45-ibm45v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P45/ibm45v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 45
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P47/ibm47v01.xml
+%% ID: ibm-valid-P47-ibm47v01.xml
+%% Type: valid
+%% Sections: 3.2.1
+'ibm-valid-P47-ibm47v01'(suite) -> [];
+'ibm-valid-P47-ibm47v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P47/ibm47v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 47
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P49/ibm49v01.xml
+%% ID: ibm-valid-P49-ibm49v01.xml
+%% Type: valid
+%% Sections: 3.2.1
+'ibm-valid-P49-ibm49v01'(suite) -> [];
+'ibm-valid-P49-ibm49v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P49/ibm49v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 49
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P50/ibm50v01.xml
+%% ID: ibm-valid-P50-ibm50v01.xml
+%% Type: valid
+%% Sections: 3.2.1
+'ibm-valid-P50-ibm50v01'(suite) -> [];
+'ibm-valid-P50-ibm50v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P50/ibm50v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 50
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P51/ibm51v01.xml
+%% ID: ibm-valid-P51-ibm51v01.xml
+%% Type: valid
+%% Sections: 3.2.2
+'ibm-valid-P51-ibm51v01'(suite) -> [];
+'ibm-valid-P51-ibm51v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P51/ibm51v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P51/ibm51v02.xml
+%% ID: ibm-valid-P51-ibm51v02.xml
+%% Type: valid
+%% Sections: 3.2.2
+'ibm-valid-P51-ibm51v02'(suite) -> [];
+'ibm-valid-P51-ibm51v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P51/ibm51v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 51
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P52/ibm52v01.xml
+%% ID: ibm-valid-P52-ibm52v01.xml
+%% Type: valid
+%% Sections: 3.3
+'ibm-valid-P52-ibm52v01'(suite) -> [];
+'ibm-valid-P52-ibm52v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P52/ibm52v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 52
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P54/ibm54v01.xml
+%% ID: ibm-valid-P54-ibm54v01.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P54-ibm54v01'(suite) -> [];
+'ibm-valid-P54-ibm54v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P54/ibm54v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P54/ibm54v02.xml
+%% ID: ibm-valid-P54-ibm54v02.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P54-ibm54v02'(suite) -> [];
+'ibm-valid-P54-ibm54v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P54/ibm54v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P54/ibm54v03.xml
+%% ID: ibm-valid-P54-ibm54v03.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P54-ibm54v03'(suite) -> [];
+'ibm-valid-P54-ibm54v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P54/ibm54v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 54
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P55/ibm55v01.xml
+%% ID: ibm-valid-P55-ibm55v01.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P55-ibm55v01'(suite) -> [];
+'ibm-valid-P55-ibm55v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P55/ibm55v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 55
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v01.xml
+%% ID: ibm-valid-P56-ibm56v01.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v01'(suite) -> [];
+'ibm-valid-P56-ibm56v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v02.xml
+%% ID: ibm-valid-P56-ibm56v02.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v02'(suite) -> [];
+'ibm-valid-P56-ibm56v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v03.xml
+%% ID: ibm-valid-P56-ibm56v03.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v03'(suite) -> [];
+'ibm-valid-P56-ibm56v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v04.xml
+%% ID: ibm-valid-P56-ibm56v04.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v04'(suite) -> [];
+'ibm-valid-P56-ibm56v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v05.xml
+%% ID: ibm-valid-P56-ibm56v05.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v05'(suite) -> [];
+'ibm-valid-P56-ibm56v05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v06.xml
+%% ID: ibm-valid-P56-ibm56v06.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v06'(suite) -> [];
+'ibm-valid-P56-ibm56v06'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v06.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v07.xml
+%% ID: ibm-valid-P56-ibm56v07.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v07'(suite) -> [];
+'ibm-valid-P56-ibm56v07'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v07.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v08.xml
+%% ID: ibm-valid-P56-ibm56v08.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v08'(suite) -> [];
+'ibm-valid-P56-ibm56v08'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v08.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v09.xml
+%% ID: ibm-valid-P56-ibm56v09.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v09'(suite) -> [];
+'ibm-valid-P56-ibm56v09'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v09.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P56/ibm56v10.xml
+%% ID: ibm-valid-P56-ibm56v10.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P56-ibm56v10'(suite) -> [];
+'ibm-valid-P56-ibm56v10'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P56/ibm56v10.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 56
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P57/ibm57v01.xml
+%% ID: ibm-valid-P57-ibm57v01.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P57-ibm57v01'(suite) -> [];
+'ibm-valid-P57-ibm57v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P57/ibm57v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 57
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P58/ibm58v01.xml
+%% ID: ibm-valid-P58-ibm58v01.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P58-ibm58v01'(suite) -> [];
+'ibm-valid-P58-ibm58v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P58/ibm58v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P58/ibm58v02.xml
+%% ID: ibm-valid-P58-ibm58v02.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P58-ibm58v02'(suite) -> [];
+'ibm-valid-P58-ibm58v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P58/ibm58v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 58
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P59/ibm59v01.xml
+%% ID: ibm-valid-P59-ibm59v01.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P59-ibm59v01'(suite) -> [];
+'ibm-valid-P59-ibm59v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P59/ibm59v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P59/ibm59v02.xml
+%% ID: ibm-valid-P59-ibm59v02.xml
+%% Type: valid
+%% Sections: 3.3.1
+'ibm-valid-P59-ibm59v02'(suite) -> [];
+'ibm-valid-P59-ibm59v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P59/ibm59v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 59
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P60/ibm60v01.xml
+%% ID: ibm-valid-P60-ibm60v01.xml
+%% Type: valid
+%% Sections: 3.3.2
+'ibm-valid-P60-ibm60v01'(suite) -> [];
+'ibm-valid-P60-ibm60v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P60/ibm60v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P60/ibm60v02.xml
+%% ID: ibm-valid-P60-ibm60v02.xml
+%% Type: valid
+%% Sections: 3.3.2
+'ibm-valid-P60-ibm60v02'(suite) -> [];
+'ibm-valid-P60-ibm60v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P60/ibm60v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P60/ibm60v03.xml
+%% ID: ibm-valid-P60-ibm60v03.xml
+%% Type: valid
+%% Sections: 3.3.2
+'ibm-valid-P60-ibm60v03'(suite) -> [];
+'ibm-valid-P60-ibm60v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P60/ibm60v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P60/ibm60v04.xml
+%% ID: ibm-valid-P60-ibm60v04.xml
+%% Type: valid
+%% Sections: 3.3.2
+'ibm-valid-P60-ibm60v04'(suite) -> [];
+'ibm-valid-P60-ibm60v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P60/ibm60v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 60
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P61/ibm61v01.xml
+%% ID: ibm-valid-P61-ibm61v01.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P61-ibm61v01'(suite) -> [];
+'ibm-valid-P61-ibm61v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P61/ibm61v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P61/ibm61v02.xml
+%% ID: ibm-valid-P61-ibm61v02.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P61-ibm61v02'(suite) -> [];
+'ibm-valid-P61-ibm61v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P61/ibm61v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 61
+
+testcases157(suite) -> [].
+%% ['ibm-valid-P61-ibm61v01','ibm-valid-P61-ibm61v02'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P62/ibm62v01.xml
+%% ID: ibm-valid-P62-ibm62v01.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P62-ibm62v01'(suite) -> [];
+'ibm-valid-P62-ibm62v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P62/ibm62v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P62/ibm62v02.xml
+%% ID: ibm-valid-P62-ibm62v02.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P62-ibm62v02'(suite) -> [];
+'ibm-valid-P62-ibm62v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P62/ibm62v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P62/ibm62v03.xml
+%% ID: ibm-valid-P62-ibm62v03.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P62-ibm62v03'(suite) -> [];
+'ibm-valid-P62-ibm62v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P62/ibm62v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P62/ibm62v04.xml
+%% ID: ibm-valid-P62-ibm62v04.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P62-ibm62v04'(suite) -> [];
+'ibm-valid-P62-ibm62v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P62/ibm62v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P62/ibm62v05.xml
+%% ID: ibm-valid-P62-ibm62v05.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P62-ibm62v05'(suite) -> [];
+'ibm-valid-P62-ibm62v05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P62/ibm62v05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 62
+
+testcases158(suite) -> [].
+%% ['ibm-valid-P62-ibm62v01','ibm-valid-P62-ibm62v02','ibm-valid-P62-ibm62v03','ibm-valid-P62-ibm62v04','ibm-valid-P62-ibm62v05'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P63/ibm63v01.xml
+%% ID: ibm-valid-P63-ibm63v01.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P63-ibm63v01'(suite) -> [];
+'ibm-valid-P63-ibm63v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P63/ibm63v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P63/ibm63v02.xml
+%% ID: ibm-valid-P63-ibm63v02.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P63-ibm63v02'(suite) -> [];
+'ibm-valid-P63-ibm63v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P63/ibm63v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P63/ibm63v03.xml
+%% ID: ibm-valid-P63-ibm63v03.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P63-ibm63v03'(suite) -> [];
+'ibm-valid-P63-ibm63v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P63/ibm63v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P63/ibm63v04.xml
+%% ID: ibm-valid-P63-ibm63v04.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P63-ibm63v04'(suite) -> [];
+'ibm-valid-P63-ibm63v04'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P63/ibm63v04.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P63/ibm63v05.xml
+%% ID: ibm-valid-P63-ibm63v05.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P63-ibm63v05'(suite) -> [];
+'ibm-valid-P63-ibm63v05'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P63/ibm63v05.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 63
+
+testcases159(suite) -> [].
+%% ['ibm-valid-P63-ibm63v01','ibm-valid-P63-ibm63v02','ibm-valid-P63-ibm63v03','ibm-valid-P63-ibm63v04','ibm-valid-P63-ibm63v05'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P64/ibm64v01.xml
+%% ID: ibm-valid-P64-ibm64v01.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P64-ibm64v01'(suite) -> [];
+'ibm-valid-P64-ibm64v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P64/ibm64v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P64/ibm64v02.xml
+%% ID: ibm-valid-P64-ibm64v02.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P64-ibm64v02'(suite) -> [];
+'ibm-valid-P64-ibm64v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P64/ibm64v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P64/ibm64v03.xml
+%% ID: ibm-valid-P64-ibm64v03.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P64-ibm64v03'(suite) -> [];
+'ibm-valid-P64-ibm64v03'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P64/ibm64v03.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 64
+
+testcases160(suite) -> [].
+%% ['ibm-valid-P64-ibm64v01','ibm-valid-P64-ibm64v02','ibm-valid-P64-ibm64v03'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P65/ibm65v01.xml
+%% ID: ibm-valid-P65-ibm65v01.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P65-ibm65v01'(suite) -> [];
+'ibm-valid-P65-ibm65v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P65/ibm65v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P65/ibm65v02.xml
+%% ID: ibm-valid-P65-ibm65v02.xml
+%% Type: valid
+%% Sections: 3.4
+'ibm-valid-P65-ibm65v02'(suite) -> [];
+'ibm-valid-P65-ibm65v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P65/ibm65v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 65
+
+testcases161(suite) -> [].
+%% ['ibm-valid-P65-ibm65v01','ibm-valid-P65-ibm65v02'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P66/ibm66v01.xml
+%% ID: ibm-valid-P66-ibm66v01.xml
+%% Type: valid
+%% Sections: 4.1
+'ibm-valid-P66-ibm66v01'(suite) -> [];
+'ibm-valid-P66-ibm66v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P66/ibm66v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 66
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P67/ibm67v01.xml
+%% ID: ibm-valid-P67-ibm67v01.xml
+%% Type: valid
+%% Sections: 4.1
+'ibm-valid-P67-ibm67v01'(suite) -> [];
+'ibm-valid-P67-ibm67v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P67/ibm67v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 67
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P68/ibm68v01.xml
+%% ID: ibm-valid-P68-ibm68v01.xml
+%% Type: valid
+%% Sections: 4.1
+'ibm-valid-P68-ibm68v01'(suite) -> [];
+'ibm-valid-P68-ibm68v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P68/ibm68v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P68/ibm68v02.xml
+%% ID: ibm-valid-P68-ibm68v02.xml
+%% Type: valid
+%% Sections: 4.1
+'ibm-valid-P68-ibm68v02'(suite) -> [];
+'ibm-valid-P68-ibm68v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P68/ibm68v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 68
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P69/ibm69v01.xml
+%% ID: ibm-valid-P69-ibm69v01.xml
+%% Type: valid
+%% Sections: 4.1
+'ibm-valid-P69-ibm69v01'(suite) -> [];
+'ibm-valid-P69-ibm69v01'(_Config) -> {skip, "NYI"}.
+%% ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+%% ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P69/ibm69v01.xml"]),
+%% ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+%% ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P69/ibm69v02.xml
+%% ID: ibm-valid-P69-ibm69v02.xml
+%% Type: valid
+%% Sections: 4.1
+'ibm-valid-P69-ibm69v02'(suite) -> [];
+'ibm-valid-P69-ibm69v02'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P69/ibm69v02.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 69
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P70/ibm70v01.xml
+%% ID: ibm-valid-P70-ibm70v01.xml
+%% Type: valid
+%% Sections: 4.2
+'ibm-valid-P70-ibm70v01'(suite) -> [];
+'ibm-valid-P70-ibm70v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P70/ibm70v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 70
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P78/ibm78v01.xml
+%% ID: ibm-valid-P78-ibm78v01.xml
+%% Type: valid
+%% Sections: 4.3.2
+'ibm-valid-P78-ibm78v01'(suite) -> [];
+'ibm-valid-P78-ibm78v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P78/ibm78v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 78
+
+testcases167(suite) -> [].
+%% ['ibm-valid-P78-ibm78v01'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P79/ibm79v01.xml
+%% ID: ibm-valid-P79-ibm79v01.xml
+%% Type: valid
+%% Sections: 4.3.2
+'ibm-valid-P79-ibm79v01'(suite) -> [];
+'ibm-valid-P79-ibm79v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P79/ibm79v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 79
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P82/ibm82v01.xml
+%% ID: ibm-valid-P82-ibm82v01.xml
+%% Type: valid
+%% Sections: 4.7
+'ibm-valid-P82-ibm82v01'(suite) -> [];
+'ibm-valid-P82-ibm82v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P82/ibm82v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 82
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P85/ibm85v01.xml
+%% ID: ibm-valid-P85-ibm85v01.xml
+%% Type: valid
+%% Sections: B.
+'ibm-valid-P85-ibm85v01'(suite) -> [];
+'ibm-valid-P85-ibm85v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P85/ibm85v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 85
+
+testcases170(suite) -> [].
+%% ['ibm-valid-P85-ibm85v01'].
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P86/ibm86v01.xml
+%% ID: ibm-valid-P86-ibm86v01.xml
+%% Type: valid
+%% Sections: B.
+'ibm-valid-P86-ibm86v01'(suite) -> [];
+'ibm-valid-P86-ibm86v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P86/ibm86v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 86
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P87/ibm87v01.xml
+%% ID: ibm-valid-P87-ibm87v01.xml
+%% Type: valid
+%% Sections: B.
+'ibm-valid-P87-ibm87v01'(suite) -> [];
+'ibm-valid-P87-ibm87v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P87/ibm87v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 87
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P88/ibm88v01.xml
+%% ID: ibm-valid-P88-ibm88v01.xml
+%% Type: valid
+%% Sections: B.
+'ibm-valid-P88-ibm88v01'(suite) -> [];
+'ibm-valid-P88-ibm88v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P88/ibm88v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 88
+
+
+%%----------------------------------------------------------------------
+%% Test Case
+%% Uri: valid/P89/ibm89v01.xml
+%% ID: ibm-valid-P89-ibm89v01.xml
+%% Type: valid
+%% Sections: B.
+'ibm-valid-P89-ibm89v01'(suite) -> [];
+'ibm-valid-P89-ibm89v01'(Config) ->
+ ?line file:set_cwd(xmerl_test_lib:get_data_dir(Config)),
+ ?line Path = filename:join([xmerl_test_lib:get_data_dir(Config),"ibm","valid/P89/ibm89v01.xml"]),
+ ?line R = xmerl_sax_parser:file(Path, [{event_fun, fun(_,_,S) -> S end}]),
+ ?line check_result(R, "valid").
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - Production 89
+
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML Conformance Test Suite - valid tests
+
+
+%%----------------------------------------------------------------------
+%% Test Cases
+%% Profile: IBM XML 1.0 Tests
+
+
+%%----------------------------------------------------------------------
+%% Test Suite
+%% Profile: XML 1.0 (2nd edition) W3C Conformance Test Suite, 6 October 2000
+
+all() ->
+ [{group, testcases1}, {group, testcases3},
+ {group, testcases5}, {group, testcases6},
+ {group, testcases8}].
+
+groups() ->
+ [{testcases2, [],
+ ['not-wf-sa-001', 'not-wf-sa-002', 'not-wf-sa-003',
+ 'not-wf-sa-004', 'not-wf-sa-005', 'not-wf-sa-006',
+ 'not-wf-sa-007', 'not-wf-sa-008', 'not-wf-sa-009',
+ 'not-wf-sa-010', 'not-wf-sa-011', 'not-wf-sa-012',
+ 'not-wf-sa-013', 'not-wf-sa-014', 'not-wf-sa-015',
+ 'not-wf-sa-016', 'not-wf-sa-017', 'not-wf-sa-018',
+ 'not-wf-sa-019', 'not-wf-sa-020', 'not-wf-sa-021',
+ 'not-wf-sa-022', 'not-wf-sa-023', 'not-wf-sa-024',
+ 'not-wf-sa-025', 'not-wf-sa-026', 'not-wf-sa-027',
+ 'not-wf-sa-028', 'not-wf-sa-029', 'not-wf-sa-030',
+ 'not-wf-sa-031', 'not-wf-sa-032', 'not-wf-sa-033',
+ 'not-wf-sa-034', 'not-wf-sa-035', 'not-wf-sa-036',
+ 'not-wf-sa-037', 'not-wf-sa-038', 'not-wf-sa-039',
+ 'not-wf-sa-040', 'not-wf-sa-041', 'not-wf-sa-042',
+ 'not-wf-sa-043', 'not-wf-sa-044', 'not-wf-sa-045',
+ 'not-wf-sa-046', 'not-wf-sa-047', 'not-wf-sa-048',
+ 'not-wf-sa-049', 'not-wf-sa-050', 'not-wf-sa-051',
+ 'not-wf-sa-052', 'not-wf-sa-053', 'not-wf-sa-054',
+ 'not-wf-sa-055', 'not-wf-sa-056', 'not-wf-sa-057',
+ 'not-wf-sa-058', 'not-wf-sa-059', 'not-wf-sa-060',
+ 'not-wf-sa-061', 'not-wf-sa-062', 'not-wf-sa-063',
+ 'not-wf-sa-064', 'not-wf-sa-065', 'not-wf-sa-066',
+ 'not-wf-sa-067', 'not-wf-sa-068', 'not-wf-sa-069',
+ 'not-wf-sa-070', 'not-wf-sa-071', 'not-wf-sa-072',
+ 'not-wf-sa-073', 'not-wf-sa-074', 'not-wf-sa-075',
+ 'not-wf-sa-076', 'not-wf-sa-077', 'not-wf-sa-078',
+ 'not-wf-sa-079', 'not-wf-sa-080', 'not-wf-sa-081',
+ 'not-wf-sa-082', 'not-wf-sa-083', 'not-wf-sa-084',
+ 'not-wf-sa-085', 'not-wf-sa-086', 'not-wf-sa-087',
+ 'not-wf-sa-088', 'not-wf-sa-089', 'not-wf-sa-090',
+ 'not-wf-sa-091', 'not-wf-sa-092', 'not-wf-sa-093',
+ 'not-wf-sa-094', 'not-wf-sa-095', 'not-wf-sa-096',
+ 'not-wf-sa-097', 'not-wf-sa-098', 'not-wf-sa-099',
+ 'not-wf-sa-100', 'not-wf-sa-101', 'not-wf-sa-102',
+ 'not-wf-sa-103', 'not-wf-sa-104', 'not-wf-sa-105',
+ 'not-wf-sa-106', 'not-wf-sa-107', 'not-wf-sa-108',
+ 'not-wf-sa-109', 'not-wf-sa-110', 'not-wf-sa-111',
+ 'not-wf-sa-112', 'not-wf-sa-113', 'not-wf-sa-114',
+ 'not-wf-sa-115', 'not-wf-sa-116', 'not-wf-sa-117',
+ 'not-wf-sa-118', 'not-wf-sa-119', 'not-wf-sa-120',
+ 'not-wf-sa-121', 'not-wf-sa-122', 'not-wf-sa-123',
+ 'not-wf-sa-124', 'not-wf-sa-125', 'not-wf-sa-126',
+ 'not-wf-sa-127', 'not-wf-sa-128', 'not-wf-sa-129',
+ 'not-wf-sa-130', 'not-wf-sa-131', 'not-wf-sa-132',
+ 'not-wf-sa-133', 'not-wf-sa-134', 'not-wf-sa-135',
+ 'not-wf-sa-136', 'not-wf-sa-137', 'not-wf-sa-138',
+ 'not-wf-sa-139', 'not-wf-sa-140', 'not-wf-sa-141',
+ 'not-wf-sa-142', 'not-wf-sa-143', 'not-wf-sa-144',
+ 'not-wf-sa-145', 'not-wf-sa-146', 'not-wf-sa-147',
+ 'not-wf-sa-148', 'not-wf-sa-149', 'not-wf-sa-150',
+ 'not-wf-sa-151', 'not-wf-sa-152', 'not-wf-sa-153',
+ 'not-wf-sa-154', 'not-wf-sa-155', 'not-wf-sa-156',
+ 'not-wf-sa-157', 'not-wf-sa-158', 'not-wf-sa-159',
+ 'not-wf-sa-160', 'not-wf-sa-161', 'not-wf-sa-162',
+ 'not-wf-sa-163', 'not-wf-sa-164', 'not-wf-sa-165',
+ 'not-wf-sa-166', 'not-wf-sa-167', 'not-wf-sa-168',
+ 'not-wf-sa-169', 'not-wf-sa-170', 'not-wf-sa-171',
+ 'not-wf-sa-172', 'not-wf-sa-173', 'not-wf-sa-174',
+ 'not-wf-sa-175', 'not-wf-sa-176', 'not-wf-sa-177',
+ 'not-wf-sa-178', 'not-wf-sa-179', 'not-wf-sa-180',
+ 'not-wf-sa-181', 'not-wf-sa-182', 'not-wf-sa-183',
+ 'not-wf-sa-184', 'not-wf-sa-185', 'not-wf-sa-186',
+ 'not-wf-not-sa-001', 'not-wf-not-sa-002',
+ 'not-wf-not-sa-003', 'not-wf-not-sa-004',
+ 'not-wf-not-sa-005', 'not-wf-not-sa-006',
+ 'not-wf-not-sa-007', 'not-wf-not-sa-008',
+ 'not-wf-not-sa-009', 'not-wf-ext-sa-001',
+ 'not-wf-ext-sa-002', 'not-wf-ext-sa-003',
+ 'invalid--002', 'invalid--005', 'invalid--006',
+ 'invalid-not-sa-022', 'valid-sa-001', 'valid-sa-002',
+ 'valid-sa-003', 'valid-sa-004', 'valid-sa-005',
+ 'valid-sa-006', 'valid-sa-007', 'valid-sa-008',
+ 'valid-sa-009', 'valid-sa-010', 'valid-sa-011',
+ 'valid-sa-012', 'valid-sa-013', 'valid-sa-014',
+ 'valid-sa-015', 'valid-sa-016', 'valid-sa-017',
+ 'valid-sa-018', 'valid-sa-019', 'valid-sa-020',
+ 'valid-sa-021', 'valid-sa-022', 'valid-sa-023',
+ 'valid-sa-024', 'valid-sa-025', 'valid-sa-026',
+ 'valid-sa-027', 'valid-sa-028', 'valid-sa-029',
+ 'valid-sa-030', 'valid-sa-031', 'valid-sa-032',
+ 'valid-sa-033', 'valid-sa-034', 'valid-sa-035',
+ 'valid-sa-036', 'valid-sa-037', 'valid-sa-038',
+ 'valid-sa-039', 'valid-sa-040', 'valid-sa-041',
+ 'valid-sa-042', 'valid-sa-043', 'valid-sa-044',
+ 'valid-sa-045', 'valid-sa-046', 'valid-sa-047',
+ 'valid-sa-048', 'valid-sa-049', 'valid-sa-050',
+ 'valid-sa-051', 'valid-sa-052', 'valid-sa-053',
+ 'valid-sa-054', 'valid-sa-055', 'valid-sa-056',
+ 'valid-sa-057', 'valid-sa-058', 'valid-sa-059',
+ 'valid-sa-060', 'valid-sa-061', 'valid-sa-062',
+ 'valid-sa-063', 'valid-sa-064', 'valid-sa-065',
+ 'valid-sa-066', 'valid-sa-067', 'valid-sa-068',
+ 'valid-sa-069', 'valid-sa-070', 'valid-sa-071',
+ 'valid-sa-072', 'valid-sa-073', 'valid-sa-074',
+ 'valid-sa-075', 'valid-sa-076', 'valid-sa-077',
+ 'valid-sa-078', 'valid-sa-079', 'valid-sa-080',
+ 'valid-sa-081', 'valid-sa-082', 'valid-sa-083',
+ 'valid-sa-084', 'valid-sa-085', 'valid-sa-086',
+ 'valid-sa-087', 'valid-sa-088', 'valid-sa-089',
+ 'valid-sa-090', 'valid-sa-091', 'valid-sa-092',
+ 'valid-sa-093', 'valid-sa-094', 'valid-sa-095',
+ 'valid-sa-096', 'valid-sa-097', 'valid-sa-098',
+ 'valid-sa-099', 'valid-sa-100', 'valid-sa-101',
+ 'valid-sa-102', 'valid-sa-103', 'valid-sa-104',
+ 'valid-sa-105', 'valid-sa-106', 'valid-sa-107',
+ 'valid-sa-108', 'valid-sa-109', 'valid-sa-110',
+ 'valid-sa-111', 'valid-sa-112', 'valid-sa-113',
+ 'valid-sa-114', 'valid-sa-115', 'valid-sa-116',
+ 'valid-sa-117', 'valid-sa-118', 'valid-sa-119',
+ 'valid-not-sa-001', 'valid-not-sa-002',
+ 'valid-not-sa-003', 'valid-not-sa-004',
+ 'valid-not-sa-005', 'valid-not-sa-006',
+ 'valid-not-sa-007', 'valid-not-sa-008',
+ 'valid-not-sa-009', 'valid-not-sa-010',
+ 'valid-not-sa-011', 'valid-not-sa-012',
+ 'valid-not-sa-013', 'valid-not-sa-014',
+ 'valid-not-sa-015', 'valid-not-sa-016',
+ 'valid-not-sa-017', 'valid-not-sa-018',
+ 'valid-not-sa-019', 'valid-not-sa-020',
+ 'valid-not-sa-021', 'valid-not-sa-023',
+ 'valid-not-sa-024', 'valid-not-sa-025',
+ 'valid-not-sa-026', 'valid-not-sa-027',
+ 'valid-not-sa-028', 'valid-not-sa-029',
+ 'valid-not-sa-030', 'valid-not-sa-031',
+ 'valid-ext-sa-001', 'valid-ext-sa-002',
+ 'valid-ext-sa-003', 'valid-ext-sa-004',
+ 'valid-ext-sa-005', 'valid-ext-sa-006',
+ 'valid-ext-sa-007', 'valid-ext-sa-008',
+ 'valid-ext-sa-009', 'valid-ext-sa-011',
+ 'valid-ext-sa-012', 'valid-ext-sa-013',
+ 'valid-ext-sa-014']},
+ {testcases1, [], [{group, testcases2}]},
+ {testcases4, [],
+ ['pr-xml-euc-jp', 'pr-xml-iso-2022-jp', 'pr-xml-little',
+ 'pr-xml-shift_jis', 'pr-xml-utf-16', 'pr-xml-utf-8',
+ 'weekly-euc-jp', 'weekly-iso-2022-jp', 'weekly-little',
+ 'weekly-shift_jis', 'weekly-utf-16', 'weekly-utf-8']},
+ {testcases3, [], [{group, testcases4}]},
+ {testcases5, [],
+ [pe01, dtd00, dtd01, element, ext01, ext02, 'not-sa01',
+ 'not-sa02', 'not-sa03', 'not-sa04', notation01,
+ optional, required00, sa01, sa02, sa03, sa04, sa05,
+ 'v-sgml01', 'v-lang01', 'v-lang02', 'v-lang03',
+ 'v-lang04', 'v-lang05', 'v-lang06', 'v-pe00', 'v-pe03',
+ 'v-pe02', 'inv-dtd01', 'inv-dtd02', 'inv-dtd03', el01,
+ el02, el03, el04, el05, el06, id01, id02, id03, id04,
+ id05, id06, id07, id08, id09, 'inv-not-sa01',
+ 'inv-not-sa02', 'inv-not-sa04', 'inv-not-sa05',
+ 'inv-not-sa06', 'inv-not-sa07', 'inv-not-sa08',
+ 'inv-not-sa09', 'inv-not-sa10', 'inv-not-sa11',
+ 'inv-not-sa12', 'inv-not-sa13', 'inv-not-sa14',
+ optional01, optional02, optional03, optional04,
+ optional05, optional06, optional07, optional08,
+ optional09, optional10, optional11, optional12,
+ optional13, optional14, optional20, optional21,
+ optional22, optional23, optional24, optional25,
+ 'inv-required00', 'inv-required01', 'inv-required02',
+ root, attr01, attr02, attr03, attr04, attr05, attr06,
+ attr07, attr08, attr09, attr10, attr11, attr12, attr13,
+ attr14, attr15, attr16, utf16b, utf16l, empty,
+ 'not-wf-sa03', attlist01, attlist02, attlist03,
+ attlist04, attlist05, attlist06, attlist07, attlist08,
+ attlist09, attlist10, attlist11, cond01, cond02,
+ content01, content02, content03, decl01, 'nwf-dtd00',
+ 'nwf-dtd01', dtd02, dtd03, dtd04, dtd05, dtd07,
+ element00, element01, element02, element03, element04,
+ encoding01, encoding02, encoding03, encoding04,
+ encoding05, encoding06, encoding07, pi, pubid01,
+ pubid02, pubid03, pubid04, pubid05, sgml01, sgml02,
+ sgml03, sgml04, sgml05, sgml06, sgml07, sgml08, sgml09,
+ sgml10, sgml11, sgml12, sgml13, uri01]},
+ {testcases7, [],
+ ['o-p01pass2', 'o-p06pass1', 'o-p07pass1', 'o-p08pass1',
+ 'o-p09pass1', 'o-p12pass1', 'o-p22pass4', 'o-p22pass5',
+ 'o-p22pass6', 'o-p28pass1', 'o-p28pass3', 'o-p28pass4',
+ 'o-p28pass5', 'o-p29pass1', 'o-p30pass1', 'o-p30pass2',
+ 'o-p31pass1', 'o-p31pass2', 'o-p43pass1', 'o-p45pass1',
+ 'o-p46pass1', 'o-p47pass1', 'o-p48pass1', 'o-p49pass1',
+ 'o-p50pass1', 'o-p51pass1', 'o-p52pass1', 'o-p53pass1',
+ 'o-p54pass1', 'o-p55pass1', 'o-p56pass1', 'o-p57pass1',
+ 'o-p58pass1', 'o-p59pass1', 'o-p60pass1', 'o-p61pass1',
+ 'o-p62pass1', 'o-p63pass1', 'o-p64pass1', 'o-p68pass1',
+ 'o-p69pass1', 'o-p70pass1', 'o-p71pass1', 'o-p72pass1',
+ 'o-p73pass1', 'o-p76pass1', 'o-p01pass1', 'o-p01pass3',
+ 'o-p03pass1', 'o-p04pass1', 'o-p05pass1', 'o-p06fail1',
+ 'o-p08fail1', 'o-p08fail2', 'o-p10pass1', 'o-p14pass1',
+ 'o-p15pass1', 'o-p16pass1', 'o-p16pass2', 'o-p16pass3',
+ 'o-p18pass1', 'o-p22pass1', 'o-p22pass2', 'o-p22pass3',
+ 'o-p23pass1', 'o-p23pass2', 'o-p23pass3', 'o-p23pass4',
+ 'o-p24pass1', 'o-p24pass2', 'o-p24pass3', 'o-p24pass4',
+ 'o-p25pass1', 'o-p25pass2', 'o-p26pass1', 'o-p27pass1',
+ 'o-p27pass2', 'o-p27pass3', 'o-p27pass4', 'o-p32pass1',
+ 'o-p32pass2', 'o-p39pass1', 'o-p39pass2', 'o-p40pass1',
+ 'o-p40pass2', 'o-p40pass3', 'o-p40pass4', 'o-p41pass1',
+ 'o-p41pass2', 'o-p42pass1', 'o-p42pass2', 'o-p44pass1',
+ 'o-p44pass2', 'o-p44pass3', 'o-p44pass4', 'o-p44pass5',
+ 'o-p66pass1', 'o-p74pass1', 'o-p75pass1', 'o-e2',
+ 'o-p01fail1', 'o-p01fail2', 'o-p01fail3', 'o-p01fail4',
+ 'o-p02fail1', 'o-p02fail10', 'o-p02fail11',
+ 'o-p02fail12', 'o-p02fail13', 'o-p02fail14',
+ 'o-p02fail15', 'o-p02fail16', 'o-p02fail17',
+ 'o-p02fail18', 'o-p02fail19', 'o-p02fail2',
+ 'o-p02fail20', 'o-p02fail21', 'o-p02fail22',
+ 'o-p02fail23', 'o-p02fail24', 'o-p02fail25',
+ 'o-p02fail26', 'o-p02fail27', 'o-p02fail28',
+ 'o-p02fail29', 'o-p02fail3', 'o-p02fail30',
+ 'o-p02fail31', 'o-p02fail4', 'o-p02fail5', 'o-p02fail6',
+ 'o-p02fail7', 'o-p02fail8', 'o-p02fail9', 'o-p03fail1',
+ 'o-p03fail10', 'o-p03fail11', 'o-p03fail12',
+ 'o-p03fail13', 'o-p03fail14', 'o-p03fail15',
+ 'o-p03fail16', 'o-p03fail17', 'o-p03fail18',
+ 'o-p03fail19', 'o-p03fail2', 'o-p03fail20',
+ 'o-p03fail21', 'o-p03fail22', 'o-p03fail23',
+ 'o-p03fail24', 'o-p03fail25', 'o-p03fail26',
+ 'o-p03fail27', 'o-p03fail28', 'o-p03fail29',
+ 'o-p03fail3', 'o-p03fail4', 'o-p03fail5', 'o-p03fail7',
+ 'o-p03fail8', 'o-p03fail9', 'o-p04fail1', 'o-p04fail2',
+ 'o-p04fail3', 'o-p05fail1', 'o-p05fail2', 'o-p05fail3',
+ 'o-p05fail4', 'o-p05fail5', 'o-p09fail1', 'o-p09fail2',
+ 'o-p09fail3', 'o-p09fail4', 'o-p09fail5', 'o-p10fail1',
+ 'o-p10fail2', 'o-p10fail3', 'o-p11fail1', 'o-p11fail2',
+ 'o-p12fail1', 'o-p12fail2', 'o-p12fail3', 'o-p12fail4',
+ 'o-p12fail5', 'o-p12fail6', 'o-p12fail7', 'o-p14fail1',
+ 'o-p14fail2', 'o-p14fail3', 'o-p15fail1', 'o-p15fail2',
+ 'o-p15fail3', 'o-p16fail1', 'o-p16fail2', 'o-p16fail3',
+ 'o-p18fail1', 'o-p18fail2', 'o-p18fail3', 'o-p22fail1',
+ 'o-p22fail2', 'o-p23fail1', 'o-p23fail2', 'o-p23fail3',
+ 'o-p23fail4', 'o-p23fail5', 'o-p24fail1', 'o-p24fail2',
+ 'o-p25fail1', 'o-p26fail1', 'o-p26fail2', 'o-p27fail1',
+ 'o-p28fail1', 'o-p29fail1', 'o-p30fail1', 'o-p31fail1',
+ 'o-p32fail1', 'o-p32fail2', 'o-p32fail3', 'o-p32fail4',
+ 'o-p32fail5', 'o-p39fail1', 'o-p39fail2', 'o-p39fail3',
+ 'o-p39fail4', 'o-p39fail5', 'o-p40fail1', 'o-p40fail2',
+ 'o-p40fail3', 'o-p40fail4', 'o-p41fail1', 'o-p41fail2',
+ 'o-p41fail3', 'o-p42fail1', 'o-p42fail2', 'o-p42fail3',
+ 'o-p43fail1', 'o-p43fail2', 'o-p43fail3', 'o-p44fail1',
+ 'o-p44fail2', 'o-p44fail3', 'o-p44fail4', 'o-p44fail5',
+ 'o-p45fail1', 'o-p45fail2', 'o-p45fail3', 'o-p45fail4',
+ 'o-p46fail1', 'o-p46fail2', 'o-p46fail3', 'o-p46fail4',
+ 'o-p46fail5', 'o-p46fail6', 'o-p47fail1', 'o-p47fail2',
+ 'o-p47fail3', 'o-p47fail4', 'o-p48fail1', 'o-p48fail2',
+ 'o-p49fail1', 'o-p50fail1', 'o-p51fail1', 'o-p51fail2',
+ 'o-p51fail3', 'o-p51fail4', 'o-p51fail5', 'o-p51fail6',
+ 'o-p51fail7', 'o-p52fail1', 'o-p52fail2', 'o-p53fail1',
+ 'o-p53fail2', 'o-p53fail3', 'o-p53fail4', 'o-p53fail5',
+ 'o-p54fail1', 'o-p55fail1', 'o-p56fail1', 'o-p56fail2',
+ 'o-p56fail3', 'o-p56fail4', 'o-p56fail5', 'o-p57fail1',
+ 'o-p58fail1', 'o-p58fail2', 'o-p58fail3', 'o-p58fail4',
+ 'o-p58fail5', 'o-p58fail6', 'o-p58fail7', 'o-p58fail8',
+ 'o-p59fail1', 'o-p59fail2', 'o-p59fail3', 'o-p60fail1',
+ 'o-p60fail2', 'o-p60fail3', 'o-p60fail4', 'o-p60fail5',
+ 'o-p61fail1', 'o-p62fail1', 'o-p62fail2', 'o-p63fail1',
+ 'o-p63fail2', 'o-p64fail1', 'o-p64fail2', 'o-p66fail1',
+ 'o-p66fail2', 'o-p66fail3', 'o-p66fail4', 'o-p66fail5',
+ 'o-p66fail6', 'o-p68fail1', 'o-p68fail2', 'o-p68fail3',
+ 'o-p69fail1', 'o-p69fail2', 'o-p69fail3', 'o-p70fail1',
+ 'o-p71fail1', 'o-p71fail2', 'o-p71fail3', 'o-p71fail4',
+ 'o-p72fail1', 'o-p72fail2', 'o-p72fail3', 'o-p72fail4',
+ 'o-p73fail1', 'o-p73fail2', 'o-p73fail3', 'o-p73fail4',
+ 'o-p73fail5', 'o-p74fail1', 'o-p74fail2', 'o-p74fail3',
+ 'o-p75fail1', 'o-p75fail2', 'o-p75fail3', 'o-p75fail4',
+ 'o-p75fail5', 'o-p75fail6', 'o-p76fail1', 'o-p76fail2',
+ 'o-p76fail3', 'o-p76fail4', 'o-p11pass1']},
+ {testcases6, [], [{group, testcases7}]},
+ {testcases10, [], ['ibm-invalid-P28-ibm28i01']},
+ {testcases11, [],
+ ['ibm-invalid-P32-ibm32i01', 'ibm-invalid-P32-ibm32i03',
+ 'ibm-invalid-P32-ibm32i04']},
+ {testcases12, [],
+ ['ibm-invalid-P39-ibm39i01', 'ibm-invalid-P39-ibm39i02',
+ 'ibm-invalid-P39-ibm39i03',
+ 'ibm-invalid-P39-ibm39i04']},
+ {testcases13, [],
+ ['ibm-invalid-P41-ibm41i01',
+ 'ibm-invalid-P41-ibm41i02']},
+ {testcases14, [], ['ibm-invalid-P45-ibm45i01']},
+ {testcases15, [], ['ibm-invalid-P49-ibm49i01']},
+ {testcases16, [], ['ibm-invalid-P50-ibm50i01']},
+ {testcases17, [],
+ ['ibm-invalid-P51-ibm51i01',
+ 'ibm-invalid-P51-ibm51i03']},
+ {testcases18, [],
+ ['ibm-invalid-P56-ibm56i01', 'ibm-invalid-P56-ibm56i02',
+ 'ibm-invalid-P56-ibm56i03', 'ibm-invalid-P56-ibm56i05',
+ 'ibm-invalid-P56-ibm56i06', 'ibm-invalid-P56-ibm56i07',
+ 'ibm-invalid-P56-ibm56i08', 'ibm-invalid-P56-ibm56i09',
+ 'ibm-invalid-P56-ibm56i10', 'ibm-invalid-P56-ibm56i11',
+ 'ibm-invalid-P56-ibm56i12', 'ibm-invalid-P56-ibm56i13',
+ 'ibm-invalid-P56-ibm56i14', 'ibm-invalid-P56-ibm56i15',
+ 'ibm-invalid-P56-ibm56i16', 'ibm-invalid-P56-ibm56i17',
+ 'ibm-invalid-P56-ibm56i18']},
+ {testcases19, [],
+ ['ibm-invalid-P58-ibm58i01',
+ 'ibm-invalid-P58-ibm58i02']},
+ {testcases20, [], ['ibm-invalid-P59-ibm59i01']},
+ {testcases21, [],
+ ['ibm-invalid-P60-ibm60i01', 'ibm-invalid-P60-ibm60i02',
+ 'ibm-invalid-P60-ibm60i03',
+ 'ibm-invalid-P60-ibm60i04']},
+ {testcases22, [],
+ ['ibm-invalid-P68-ibm68i01', 'ibm-invalid-P68-ibm68i02',
+ 'ibm-invalid-P68-ibm68i03',
+ 'ibm-invalid-P68-ibm68i04']},
+ {testcases23, [],
+ ['ibm-invalid-P69-ibm69i01', 'ibm-invalid-P69-ibm69i02',
+ 'ibm-invalid-P69-ibm69i03',
+ 'ibm-invalid-P69-ibm69i04']},
+ {testcases24, [], ['ibm-invalid-P76-ibm76i01']},
+ {testcases9, [],
+ [{group, testcases10}, {group, testcases11},
+ {group, testcases12}, {group, testcases13},
+ {group, testcases14}, {group, testcases15},
+ {group, testcases16}, {group, testcases17},
+ {group, testcases18}, {group, testcases19},
+ {group, testcases20}, {group, testcases21},
+ {group, testcases22}, {group, testcases23},
+ {group, testcases24}]},
+ {testcases26, [],
+ ['ibm-not-wf-P01-ibm01n01', 'ibm-not-wf-P01-ibm01n02',
+ 'ibm-not-wf-P01-ibm01n03']},
+ {testcases27, [],
+ ['ibm-not-wf-P02-ibm02n01', 'ibm-not-wf-P02-ibm02n02',
+ 'ibm-not-wf-P02-ibm02n03', 'ibm-not-wf-P02-ibm02n04',
+ 'ibm-not-wf-P02-ibm02n05', 'ibm-not-wf-P02-ibm02n06',
+ 'ibm-not-wf-P02-ibm02n07', 'ibm-not-wf-P02-ibm02n08',
+ 'ibm-not-wf-P02-ibm02n09', 'ibm-not-wf-P02-ibm02n10',
+ 'ibm-not-wf-P02-ibm02n11', 'ibm-not-wf-P02-ibm02n12',
+ 'ibm-not-wf-P02-ibm02n13', 'ibm-not-wf-P02-ibm02n14',
+ 'ibm-not-wf-P02-ibm02n15', 'ibm-not-wf-P02-ibm02n16',
+ 'ibm-not-wf-P02-ibm02n17', 'ibm-not-wf-P02-ibm02n18',
+ 'ibm-not-wf-P02-ibm02n19', 'ibm-not-wf-P02-ibm02n20',
+ 'ibm-not-wf-P02-ibm02n21', 'ibm-not-wf-P02-ibm02n22',
+ 'ibm-not-wf-P02-ibm02n23', 'ibm-not-wf-P02-ibm02n24',
+ 'ibm-not-wf-P02-ibm02n25', 'ibm-not-wf-P02-ibm02n26',
+ 'ibm-not-wf-P02-ibm02n27', 'ibm-not-wf-P02-ibm02n28',
+ 'ibm-not-wf-P02-ibm02n29', 'ibm-not-wf-P02-ibm02n30',
+ 'ibm-not-wf-P02-ibm02n31', 'ibm-not-wf-P02-ibm02n32',
+ 'ibm-not-wf-P02-ibm02n33']},
+ {testcases28, [], ['ibm-not-wf-P03-ibm03n01']},
+ {testcases29, [],
+ ['ibm-not-wf-P04-ibm04n01', 'ibm-not-wf-P04-ibm04n02',
+ 'ibm-not-wf-P04-ibm04n03', 'ibm-not-wf-P04-ibm04n04',
+ 'ibm-not-wf-P04-ibm04n05', 'ibm-not-wf-P04-ibm04n06',
+ 'ibm-not-wf-P04-ibm04n07', 'ibm-not-wf-P04-ibm04n08',
+ 'ibm-not-wf-P04-ibm04n09', 'ibm-not-wf-P04-ibm04n10',
+ 'ibm-not-wf-P04-ibm04n11', 'ibm-not-wf-P04-ibm04n12',
+ 'ibm-not-wf-P04-ibm04n13', 'ibm-not-wf-P04-ibm04n14',
+ 'ibm-not-wf-P04-ibm04n15', 'ibm-not-wf-P04-ibm04n16',
+ 'ibm-not-wf-P04-ibm04n17', 'ibm-not-wf-P04-ibm04n18']},
+ {testcases30, [],
+ ['ibm-not-wf-P05-ibm05n01', 'ibm-not-wf-P05-ibm05n02',
+ 'ibm-not-wf-P05-ibm05n03']},
+ {testcases31, [],
+ ['ibm-not-wf-P09-ibm09n01', 'ibm-not-wf-P09-ibm09n02',
+ 'ibm-not-wf-P09-ibm09n03', 'ibm-not-wf-P09-ibm09n04']},
+ {testcases32, [],
+ ['ibm-not-wf-P10-ibm10n01', 'ibm-not-wf-P10-ibm10n02',
+ 'ibm-not-wf-P10-ibm10n03', 'ibm-not-wf-P10-ibm10n04',
+ 'ibm-not-wf-P10-ibm10n05', 'ibm-not-wf-P10-ibm10n06',
+ 'ibm-not-wf-P10-ibm10n07', 'ibm-not-wf-P10-ibm10n08']},
+ {testcases33, [],
+ ['ibm-not-wf-P11-ibm11n01', 'ibm-not-wf-P11-ibm11n02',
+ 'ibm-not-wf-P11-ibm11n03', 'ibm-not-wf-P11-ibm11n04']},
+ {testcases34, [],
+ ['ibm-not-wf-P12-ibm12n01', 'ibm-not-wf-P12-ibm12n02',
+ 'ibm-not-wf-P12-ibm12n03']},
+ {testcases35, [],
+ ['ibm-not-wf-P13-ibm13n01', 'ibm-not-wf-P13-ibm13n02',
+ 'ibm-not-wf-P13-ibm13n03']},
+ {testcases36, [],
+ ['ibm-not-wf-P14-ibm14n01', 'ibm-not-wf-P14-ibm14n02',
+ 'ibm-not-wf-P14-ibm14n03']},
+ {testcases37, [],
+ ['ibm-not-wf-P15-ibm15n01', 'ibm-not-wf-P15-ibm15n02',
+ 'ibm-not-wf-P15-ibm15n03', 'ibm-not-wf-P15-ibm15n04']},
+ {testcases38, [],
+ ['ibm-not-wf-P16-ibm16n01', 'ibm-not-wf-P16-ibm16n02',
+ 'ibm-not-wf-P16-ibm16n03', 'ibm-not-wf-P16-ibm16n04']},
+ {testcases39, [],
+ ['ibm-not-wf-P17-ibm17n01', 'ibm-not-wf-P17-ibm17n02',
+ 'ibm-not-wf-P17-ibm17n03', 'ibm-not-wf-P17-ibm17n04']},
+ {testcases40, [],
+ ['ibm-not-wf-P18-ibm18n01', 'ibm-not-wf-P18-ibm18n02']},
+ {testcases41, [],
+ ['ibm-not-wf-P19-ibm19n01', 'ibm-not-wf-P19-ibm19n02',
+ 'ibm-not-wf-P19-ibm19n03']},
+ {testcases42, [], ['ibm-not-wf-P20-ibm20n01']},
+ {testcases43, [],
+ ['ibm-not-wf-P21-ibm21n01', 'ibm-not-wf-P21-ibm21n02',
+ 'ibm-not-wf-P21-ibm21n03']},
+ {testcases44, [],
+ ['ibm-not-wf-P22-ibm22n01', 'ibm-not-wf-P22-ibm22n02',
+ 'ibm-not-wf-P22-ibm22n03']},
+ {testcases45, [],
+ ['ibm-not-wf-P23-ibm23n01', 'ibm-not-wf-P23-ibm23n02',
+ 'ibm-not-wf-P23-ibm23n03', 'ibm-not-wf-P23-ibm23n04',
+ 'ibm-not-wf-P23-ibm23n05', 'ibm-not-wf-P23-ibm23n06']},
+ {testcases46, [],
+ ['ibm-not-wf-P24-ibm24n01', 'ibm-not-wf-P24-ibm24n02',
+ 'ibm-not-wf-P24-ibm24n03', 'ibm-not-wf-P24-ibm24n04',
+ 'ibm-not-wf-P24-ibm24n05', 'ibm-not-wf-P24-ibm24n06',
+ 'ibm-not-wf-P24-ibm24n07', 'ibm-not-wf-P24-ibm24n08',
+ 'ibm-not-wf-P24-ibm24n09']},
+ {testcases47, [],
+ ['ibm-not-wf-P25-ibm25n01', 'ibm-not-wf-P25-ibm25n02']},
+ {testcases48, [], ['ibm-not-wf-P26-ibm26n01']},
+ {testcases49, [], ['ibm-not-wf-P27-ibm27n01']},
+ {testcases50, [],
+ ['ibm-not-wf-P28-ibm28n01', 'ibm-not-wf-P28-ibm28n02',
+ 'ibm-not-wf-P28-ibm28n03', 'ibm-not-wf-P28-ibm28n04',
+ 'ibm-not-wf-P28-ibm28n05', 'ibm-not-wf-P28-ibm28n06',
+ 'ibm-not-wf-P28-ibm28n07', 'ibm-not-wf-P28-ibm28n08']},
+ {testcases51, [], ['ibm-not-wf-p28a-ibm28an01']},
+ {testcases52, [],
+ ['ibm-not-wf-P29-ibm29n01', 'ibm-not-wf-P29-ibm29n02',
+ 'ibm-not-wf-P29-ibm29n03', 'ibm-not-wf-P29-ibm29n04',
+ 'ibm-not-wf-P29-ibm29n05', 'ibm-not-wf-P29-ibm29n06',
+ 'ibm-not-wf-P29-ibm29n07']},
+ {testcases53, [], ['ibm-not-wf-P30-ibm30n01']},
+ {testcases54, [], ['ibm-not-wf-P31-ibm31n01']},
+ {testcases55, [],
+ ['ibm-not-wf-P32-ibm32n01', 'ibm-not-wf-P32-ibm32n02',
+ 'ibm-not-wf-P32-ibm32n03', 'ibm-not-wf-P32-ibm32n04',
+ 'ibm-not-wf-P32-ibm32n05', 'ibm-not-wf-P32-ibm32n06',
+ 'ibm-not-wf-P32-ibm32n07', 'ibm-not-wf-P32-ibm32n08',
+ 'ibm-not-wf-P32-ibm32n09']},
+ {testcases56, [],
+ ['ibm-not-wf-P39-ibm39n01', 'ibm-not-wf-P39-ibm39n02',
+ 'ibm-not-wf-P39-ibm39n03', 'ibm-not-wf-P39-ibm39n04',
+ 'ibm-not-wf-P39-ibm39n05', 'ibm-not-wf-P39-ibm39n06']},
+ {testcases57, [],
+ ['ibm-not-wf-P40-ibm40n01', 'ibm-not-wf-P40-ibm40n02',
+ 'ibm-not-wf-P40-ibm40n03', 'ibm-not-wf-P40-ibm40n04',
+ 'ibm-not-wf-P40-ibm40n05']},
+ {testcases58, [],
+ ['ibm-not-wf-P41-ibm41n01', 'ibm-not-wf-P41-ibm41n02',
+ 'ibm-not-wf-P41-ibm41n03', 'ibm-not-wf-P41-ibm41n04',
+ 'ibm-not-wf-P41-ibm41n05', 'ibm-not-wf-P41-ibm41n06',
+ 'ibm-not-wf-P41-ibm41n07', 'ibm-not-wf-P41-ibm41n08',
+ 'ibm-not-wf-P41-ibm41n09', 'ibm-not-wf-P41-ibm41n10',
+ 'ibm-not-wf-P41-ibm41n11', 'ibm-not-wf-P41-ibm41n12',
+ 'ibm-not-wf-P41-ibm41n13', 'ibm-not-wf-P41-ibm41n14']},
+ {testcases59, [],
+ ['ibm-not-wf-P42-ibm42n01', 'ibm-not-wf-P42-ibm42n02',
+ 'ibm-not-wf-P42-ibm42n03', 'ibm-not-wf-P42-ibm42n04',
+ 'ibm-not-wf-P42-ibm42n05']},
+ {testcases60, [],
+ ['ibm-not-wf-P43-ibm43n01', 'ibm-not-wf-P43-ibm43n02',
+ 'ibm-not-wf-P43-ibm43n04', 'ibm-not-wf-P43-ibm43n05']},
+ {testcases61, [],
+ ['ibm-not-wf-P44-ibm44n01', 'ibm-not-wf-P44-ibm44n02',
+ 'ibm-not-wf-P44-ibm44n03', 'ibm-not-wf-P44-ibm44n04']},
+ {testcases62, [],
+ ['ibm-not-wf-P45-ibm45n01', 'ibm-not-wf-P45-ibm45n02',
+ 'ibm-not-wf-P45-ibm45n03', 'ibm-not-wf-P45-ibm45n04',
+ 'ibm-not-wf-P45-ibm45n05', 'ibm-not-wf-P45-ibm45n06',
+ 'ibm-not-wf-P45-ibm45n07', 'ibm-not-wf-P45-ibm45n08',
+ 'ibm-not-wf-P45-ibm45n09']},
+ {testcases63, [],
+ ['ibm-not-wf-P46-ibm46n01', 'ibm-not-wf-P46-ibm46n02',
+ 'ibm-not-wf-P46-ibm46n03', 'ibm-not-wf-P46-ibm46n04',
+ 'ibm-not-wf-P46-ibm46n05']},
+ {testcases64, [],
+ ['ibm-not-wf-P47-ibm47n01', 'ibm-not-wf-P47-ibm47n02',
+ 'ibm-not-wf-P47-ibm47n03', 'ibm-not-wf-P47-ibm47n04',
+ 'ibm-not-wf-P47-ibm47n05', 'ibm-not-wf-P47-ibm47n06']},
+ {testcases65, [],
+ ['ibm-not-wf-P48-ibm48n01', 'ibm-not-wf-P48-ibm48n02',
+ 'ibm-not-wf-P48-ibm48n03', 'ibm-not-wf-P48-ibm48n04',
+ 'ibm-not-wf-P48-ibm48n05', 'ibm-not-wf-P48-ibm48n06',
+ 'ibm-not-wf-P48-ibm48n07']},
+ {testcases66, [],
+ ['ibm-not-wf-P49-ibm49n01', 'ibm-not-wf-P49-ibm49n02',
+ 'ibm-not-wf-P49-ibm49n03', 'ibm-not-wf-P49-ibm49n04',
+ 'ibm-not-wf-P49-ibm49n05', 'ibm-not-wf-P49-ibm49n06']},
+ {testcases67, [],
+ ['ibm-not-wf-P50-ibm50n01','ibm-not-wf-P50-ibm50n02',
+ 'ibm-not-wf-P50-ibm50n03','ibm-not-wf-P50-ibm50n04',
+ 'ibm-not-wf-P50-ibm50n05','ibm-not-wf-P50-ibm50n06',
+ 'ibm-not-wf-P50-ibm50n07']},
+ {testcases68, [],
+ ['ibm-not-wf-P51-ibm51n01','ibm-not-wf-P51-ibm51n02',
+ 'ibm-not-wf-P51-ibm51n03','ibm-not-wf-P51-ibm51n04',
+ 'ibm-not-wf-P51-ibm51n05','ibm-not-wf-P51-ibm51n06',
+ 'ibm-not-wf-P51-ibm51n07']},
+ {testcases69, [],
+ ['ibm-not-wf-P52-ibm52n01', 'ibm-not-wf-P52-ibm52n02',
+ 'ibm-not-wf-P52-ibm52n03', 'ibm-not-wf-P52-ibm52n04',
+ 'ibm-not-wf-P52-ibm52n05', 'ibm-not-wf-P52-ibm52n06']},
+ {testcases70, [],
+ ['ibm-not-wf-P53-ibm53n01', 'ibm-not-wf-P53-ibm53n02',
+ 'ibm-not-wf-P53-ibm53n03', 'ibm-not-wf-P53-ibm53n04',
+ 'ibm-not-wf-P53-ibm53n05', 'ibm-not-wf-P53-ibm53n06',
+ 'ibm-not-wf-P53-ibm53n07', 'ibm-not-wf-P53-ibm53n08']},
+ {testcases71, [],
+ ['ibm-not-wf-P54-ibm54n01', 'ibm-not-wf-P54-ibm54n02']},
+ {testcases72, [],
+ ['ibm-not-wf-P55-ibm55n01', 'ibm-not-wf-P55-ibm55n02',
+ 'ibm-not-wf-P55-ibm55n03']},
+ {testcases73, [],
+ ['ibm-not-wf-P56-ibm56n01', 'ibm-not-wf-P56-ibm56n02',
+ 'ibm-not-wf-P56-ibm56n03', 'ibm-not-wf-P56-ibm56n04',
+ 'ibm-not-wf-P56-ibm56n05', 'ibm-not-wf-P56-ibm56n06',
+ 'ibm-not-wf-P56-ibm56n07']},
+ {testcases74, [], ['ibm-not-wf-P57-ibm57n01']},
+ {testcases75, [],
+ ['ibm-not-wf-P58-ibm58n01', 'ibm-not-wf-P58-ibm58n02',
+ 'ibm-not-wf-P58-ibm58n03', 'ibm-not-wf-P58-ibm58n04',
+ 'ibm-not-wf-P58-ibm58n05', 'ibm-not-wf-P58-ibm58n06',
+ 'ibm-not-wf-P58-ibm58n07', 'ibm-not-wf-P58-ibm58n08']},
+ {testcases76, [],
+ ['ibm-not-wf-P59-ibm59n01', 'ibm-not-wf-P59-ibm59n02',
+ 'ibm-not-wf-P59-ibm59n03', 'ibm-not-wf-P59-ibm59n04',
+ 'ibm-not-wf-P59-ibm59n05', 'ibm-not-wf-P59-ibm59n06']},
+ {testcases77, [],
+ ['ibm-not-wf-P60-ibm60n01', 'ibm-not-wf-P60-ibm60n02',
+ 'ibm-not-wf-P60-ibm60n03', 'ibm-not-wf-P60-ibm60n04',
+ 'ibm-not-wf-P60-ibm60n05', 'ibm-not-wf-P60-ibm60n06',
+ 'ibm-not-wf-P60-ibm60n07', 'ibm-not-wf-P60-ibm60n08']},
+ {testcases78, [], ['ibm-not-wf-P61-ibm61n01']},
+ {testcases79, [],
+ ['ibm-not-wf-P62-ibm62n01', 'ibm-not-wf-P62-ibm62n02',
+ 'ibm-not-wf-P62-ibm62n03', 'ibm-not-wf-P62-ibm62n04',
+ 'ibm-not-wf-P62-ibm62n05', 'ibm-not-wf-P62-ibm62n06',
+ 'ibm-not-wf-P62-ibm62n07', 'ibm-not-wf-P62-ibm62n08']},
+ {testcases80, [],
+ ['ibm-not-wf-P63-ibm63n01', 'ibm-not-wf-P63-ibm63n02',
+ 'ibm-not-wf-P63-ibm63n03', 'ibm-not-wf-P63-ibm63n04',
+ 'ibm-not-wf-P63-ibm63n05', 'ibm-not-wf-P63-ibm63n06',
+ 'ibm-not-wf-P63-ibm63n07']},
+ {testcases81, [],
+ ['ibm-not-wf-P64-ibm64n01', 'ibm-not-wf-P64-ibm64n02',
+ 'ibm-not-wf-P64-ibm64n03']},
+ {testcases82, [],
+ ['ibm-not-wf-P65-ibm65n01', 'ibm-not-wf-P65-ibm65n02']},
+ {testcases83, [],
+ ['ibm-not-wf-P66-ibm66n01', 'ibm-not-wf-P66-ibm66n02',
+ 'ibm-not-wf-P66-ibm66n03', 'ibm-not-wf-P66-ibm66n04',
+ 'ibm-not-wf-P66-ibm66n05', 'ibm-not-wf-P66-ibm66n06',
+ 'ibm-not-wf-P66-ibm66n07', 'ibm-not-wf-P66-ibm66n08',
+ 'ibm-not-wf-P66-ibm66n09', 'ibm-not-wf-P66-ibm66n10',
+ 'ibm-not-wf-P66-ibm66n11', 'ibm-not-wf-P66-ibm66n12',
+ 'ibm-not-wf-P66-ibm66n13', 'ibm-not-wf-P66-ibm66n14',
+ 'ibm-not-wf-P66-ibm66n15']},
+ {testcases84, [],
+ ['ibm-not-wf-P68-ibm68n01', 'ibm-not-wf-P68-ibm68n02',
+ 'ibm-not-wf-P68-ibm68n03', 'ibm-not-wf-P68-ibm68n04',
+ 'ibm-not-wf-P68-ibm68n05', 'ibm-not-wf-P68-ibm68n06',
+ 'ibm-not-wf-P68-ibm68n07', 'ibm-not-wf-P68-ibm68n08',
+ 'ibm-not-wf-P68-ibm68n09', 'ibm-not-wf-P68-ibm68n10']},
+ {testcases85, [],
+ ['ibm-not-wf-P69-ibm69n01', 'ibm-not-wf-P69-ibm69n02',
+ 'ibm-not-wf-P69-ibm69n03', 'ibm-not-wf-P69-ibm69n04',
+ 'ibm-not-wf-P69-ibm69n05', 'ibm-not-wf-P69-ibm69n06',
+ 'ibm-not-wf-P69-ibm69n07']},
+ {testcases86, [],
+ ['ibm-not-wf-P71-ibm70n01', 'ibm-not-wf-P71-ibm71n01',
+ 'ibm-not-wf-P71-ibm71n02', 'ibm-not-wf-P71-ibm71n03',
+ 'ibm-not-wf-P71-ibm71n04', 'ibm-not-wf-P71-ibm71n05',
+ 'ibm-not-wf-P71-ibm71n06', 'ibm-not-wf-P71-ibm71n07',
+ 'ibm-not-wf-P71-ibm71n08']},
+ {testcases87, [],
+ ['ibm-not-wf-P72-ibm72n01', 'ibm-not-wf-P72-ibm72n02',
+ 'ibm-not-wf-P72-ibm72n03', 'ibm-not-wf-P72-ibm72n04',
+ 'ibm-not-wf-P72-ibm72n05', 'ibm-not-wf-P72-ibm72n06',
+ 'ibm-not-wf-P72-ibm72n07', 'ibm-not-wf-P72-ibm72n08',
+ 'ibm-not-wf-P72-ibm72n09']},
+ {testcases88, [],
+ ['ibm-not-wf-P73-ibm73n01', 'ibm-not-wf-P73-ibm73n03']},
+ {testcases89, [], ['ibm-not-wf-P74-ibm74n01']},
+ {testcases90, [],
+ ['ibm-not-wf-P75-ibm75n01', 'ibm-not-wf-P75-ibm75n02',
+ 'ibm-not-wf-P75-ibm75n03', 'ibm-not-wf-P75-ibm75n04',
+ 'ibm-not-wf-P75-ibm75n05', 'ibm-not-wf-P75-ibm75n06',
+ 'ibm-not-wf-P75-ibm75n07', 'ibm-not-wf-P75-ibm75n08',
+ 'ibm-not-wf-P75-ibm75n09', 'ibm-not-wf-P75-ibm75n10',
+ 'ibm-not-wf-P75-ibm75n11', 'ibm-not-wf-P75-ibm75n12',
+ 'ibm-not-wf-P75-ibm75n13']},
+ {testcases91, [],
+ ['ibm-not-wf-P76-ibm76n01', 'ibm-not-wf-P76-ibm76n02',
+ 'ibm-not-wf-P76-ibm76n03', 'ibm-not-wf-P76-ibm76n04',
+ 'ibm-not-wf-P76-ibm76n05', 'ibm-not-wf-P76-ibm76n06',
+ 'ibm-not-wf-P76-ibm76n07']},
+ {testcases92, [],
+ ['ibm-not-wf-P77-ibm77n01', 'ibm-not-wf-P77-ibm77n02',
+ 'ibm-not-wf-P77-ibm77n03', 'ibm-not-wf-P77-ibm77n04']},
+ {testcases93, [],
+ ['ibm-not-wf-P78-ibm78n01', 'ibm-not-wf-P78-ibm78n02']},
+ {testcases94, [],
+ ['ibm-not-wf-P79-ibm79n01', 'ibm-not-wf-P79-ibm79n02']},
+ {testcases95, [],
+ ['ibm-not-wf-P80-ibm80n01', 'ibm-not-wf-P80-ibm80n02',
+ 'ibm-not-wf-P80-ibm80n03', 'ibm-not-wf-P80-ibm80n04',
+ 'ibm-not-wf-P80-ibm80n05', 'ibm-not-wf-P80-ibm80n06']},
+ {testcases96, [],
+ ['ibm-not-wf-P81-ibm81n01', 'ibm-not-wf-P81-ibm81n02',
+ 'ibm-not-wf-P81-ibm81n03', 'ibm-not-wf-P81-ibm81n04',
+ 'ibm-not-wf-P81-ibm81n05', 'ibm-not-wf-P81-ibm81n06',
+ 'ibm-not-wf-P81-ibm81n07', 'ibm-not-wf-P81-ibm81n08',
+ 'ibm-not-wf-P81-ibm81n09']},
+ {testcases97, [],
+ ['ibm-not-wf-P82-ibm82n01', 'ibm-not-wf-P82-ibm82n02',
+ 'ibm-not-wf-P82-ibm82n03', 'ibm-not-wf-P82-ibm82n04',
+ 'ibm-not-wf-P82-ibm82n05', 'ibm-not-wf-P82-ibm82n06',
+ 'ibm-not-wf-P82-ibm82n07', 'ibm-not-wf-P82-ibm82n08']},
+ {testcases98, [],
+ ['ibm-not-wf-P83-ibm83n01', 'ibm-not-wf-P83-ibm83n02',
+ 'ibm-not-wf-P83-ibm83n03', 'ibm-not-wf-P83-ibm83n04',
+ 'ibm-not-wf-P83-ibm83n05', 'ibm-not-wf-P83-ibm83n06']},
+ {testcases99, [],
+ ['ibm-not-wf-P85-ibm85n01', 'ibm-not-wf-P85-ibm85n02',
+ 'ibm-not-wf-P85-ibm85n03', 'ibm-not-wf-P85-ibm85n04',
+ 'ibm-not-wf-P85-ibm85n05', 'ibm-not-wf-P85-ibm85n06',
+ 'ibm-not-wf-P85-ibm85n07', 'ibm-not-wf-P85-ibm85n08',
+ 'ibm-not-wf-P85-ibm85n09', 'ibm-not-wf-P85-ibm85n10',
+ 'ibm-not-wf-P85-ibm85n100', 'ibm-not-wf-P85-ibm85n101',
+ 'ibm-not-wf-P85-ibm85n102', 'ibm-not-wf-P85-ibm85n103',
+ 'ibm-not-wf-P85-ibm85n104', 'ibm-not-wf-P85-ibm85n105',
+ 'ibm-not-wf-P85-ibm85n106', 'ibm-not-wf-P85-ibm85n107',
+ 'ibm-not-wf-P85-ibm85n108', 'ibm-not-wf-P85-ibm85n109',
+ 'ibm-not-wf-P85-ibm85n11', 'ibm-not-wf-P85-ibm85n110',
+ 'ibm-not-wf-P85-ibm85n111', 'ibm-not-wf-P85-ibm85n112',
+ 'ibm-not-wf-P85-ibm85n113', 'ibm-not-wf-P85-ibm85n114',
+ 'ibm-not-wf-P85-ibm85n115', 'ibm-not-wf-P85-ibm85n116',
+ 'ibm-not-wf-P85-ibm85n117', 'ibm-not-wf-P85-ibm85n118',
+ 'ibm-not-wf-P85-ibm85n119', 'ibm-not-wf-P85-ibm85n12',
+ 'ibm-not-wf-P85-ibm85n120', 'ibm-not-wf-P85-ibm85n121',
+ 'ibm-not-wf-P85-ibm85n122', 'ibm-not-wf-P85-ibm85n123',
+ 'ibm-not-wf-P85-ibm85n124', 'ibm-not-wf-P85-ibm85n125',
+ 'ibm-not-wf-P85-ibm85n126', 'ibm-not-wf-P85-ibm85n127',
+ 'ibm-not-wf-P85-ibm85n128', 'ibm-not-wf-P85-ibm85n129',
+ 'ibm-not-wf-P85-ibm85n13', 'ibm-not-wf-P85-ibm85n130',
+ 'ibm-not-wf-P85-ibm85n131', 'ibm-not-wf-P85-ibm85n132',
+ 'ibm-not-wf-P85-ibm85n133', 'ibm-not-wf-P85-ibm85n134',
+ 'ibm-not-wf-P85-ibm85n135', 'ibm-not-wf-P85-ibm85n136',
+ 'ibm-not-wf-P85-ibm85n137', 'ibm-not-wf-P85-ibm85n138',
+ 'ibm-not-wf-P85-ibm85n139', 'ibm-not-wf-P85-ibm85n14',
+ 'ibm-not-wf-P85-ibm85n140', 'ibm-not-wf-P85-ibm85n141',
+ 'ibm-not-wf-P85-ibm85n142', 'ibm-not-wf-P85-ibm85n143',
+ 'ibm-not-wf-P85-ibm85n144', 'ibm-not-wf-P85-ibm85n145',
+ 'ibm-not-wf-P85-ibm85n146', 'ibm-not-wf-P85-ibm85n147',
+ 'ibm-not-wf-P85-ibm85n148', 'ibm-not-wf-P85-ibm85n149',
+ 'ibm-not-wf-P85-ibm85n15', 'ibm-not-wf-P85-ibm85n150',
+ 'ibm-not-wf-P85-ibm85n151', 'ibm-not-wf-P85-ibm85n152',
+ 'ibm-not-wf-P85-ibm85n153', 'ibm-not-wf-P85-ibm85n154',
+ 'ibm-not-wf-P85-ibm85n155', 'ibm-not-wf-P85-ibm85n156',
+ 'ibm-not-wf-P85-ibm85n157', 'ibm-not-wf-P85-ibm85n158',
+ 'ibm-not-wf-P85-ibm85n159', 'ibm-not-wf-P85-ibm85n16',
+ 'ibm-not-wf-P85-ibm85n160', 'ibm-not-wf-P85-ibm85n161',
+ 'ibm-not-wf-P85-ibm85n162', 'ibm-not-wf-P85-ibm85n163',
+ 'ibm-not-wf-P85-ibm85n164', 'ibm-not-wf-P85-ibm85n165',
+ 'ibm-not-wf-P85-ibm85n166', 'ibm-not-wf-P85-ibm85n167',
+ 'ibm-not-wf-P85-ibm85n168', 'ibm-not-wf-P85-ibm85n169',
+ 'ibm-not-wf-P85-ibm85n17', 'ibm-not-wf-P85-ibm85n170',
+ 'ibm-not-wf-P85-ibm85n171', 'ibm-not-wf-P85-ibm85n172',
+ 'ibm-not-wf-P85-ibm85n173', 'ibm-not-wf-P85-ibm85n174',
+ 'ibm-not-wf-P85-ibm85n175', 'ibm-not-wf-P85-ibm85n176',
+ 'ibm-not-wf-P85-ibm85n177', 'ibm-not-wf-P85-ibm85n178',
+ 'ibm-not-wf-P85-ibm85n179', 'ibm-not-wf-P85-ibm85n18',
+ 'ibm-not-wf-P85-ibm85n180', 'ibm-not-wf-P85-ibm85n181',
+ 'ibm-not-wf-P85-ibm85n182', 'ibm-not-wf-P85-ibm85n183',
+ 'ibm-not-wf-P85-ibm85n184', 'ibm-not-wf-P85-ibm85n185',
+ 'ibm-not-wf-P85-ibm85n186', 'ibm-not-wf-P85-ibm85n187',
+ 'ibm-not-wf-P85-ibm85n188', 'ibm-not-wf-P85-ibm85n189',
+ 'ibm-not-wf-P85-ibm85n19', 'ibm-not-wf-P85-ibm85n190',
+ 'ibm-not-wf-P85-ibm85n191', 'ibm-not-wf-P85-ibm85n192',
+ 'ibm-not-wf-P85-ibm85n193', 'ibm-not-wf-P85-ibm85n194',
+ 'ibm-not-wf-P85-ibm85n195', 'ibm-not-wf-P85-ibm85n196',
+ 'ibm-not-wf-P85-ibm85n197', 'ibm-not-wf-P85-ibm85n198',
+ 'ibm-not-wf-P85-ibm85n20', 'ibm-not-wf-P85-ibm85n21',
+ 'ibm-not-wf-P85-ibm85n22', 'ibm-not-wf-P85-ibm85n23',
+ 'ibm-not-wf-P85-ibm85n24', 'ibm-not-wf-P85-ibm85n25',
+ 'ibm-not-wf-P85-ibm85n26', 'ibm-not-wf-P85-ibm85n27',
+ 'ibm-not-wf-P85-ibm85n28', 'ibm-not-wf-P85-ibm85n29',
+ 'ibm-not-wf-P85-ibm85n30', 'ibm-not-wf-P85-ibm85n31',
+ 'ibm-not-wf-P85-ibm85n32', 'ibm-not-wf-P85-ibm85n33',
+ 'ibm-not-wf-P85-ibm85n34', 'ibm-not-wf-P85-ibm85n35',
+ 'ibm-not-wf-P85-ibm85n36', 'ibm-not-wf-P85-ibm85n37',
+ 'ibm-not-wf-P85-ibm85n38', 'ibm-not-wf-P85-ibm85n39',
+ 'ibm-not-wf-P85-ibm85n40', 'ibm-not-wf-P85-ibm85n41',
+ 'ibm-not-wf-P85-ibm85n42', 'ibm-not-wf-P85-ibm85n43',
+ 'ibm-not-wf-P85-ibm85n44', 'ibm-not-wf-P85-ibm85n45',
+ 'ibm-not-wf-P85-ibm85n46', 'ibm-not-wf-P85-ibm85n47',
+ 'ibm-not-wf-P85-ibm85n48', 'ibm-not-wf-P85-ibm85n49',
+ 'ibm-not-wf-P85-ibm85n50', 'ibm-not-wf-P85-ibm85n51',
+ 'ibm-not-wf-P85-ibm85n52', 'ibm-not-wf-P85-ibm85n53',
+ 'ibm-not-wf-P85-ibm85n54', 'ibm-not-wf-P85-ibm85n55',
+ 'ibm-not-wf-P85-ibm85n56', 'ibm-not-wf-P85-ibm85n57',
+ 'ibm-not-wf-P85-ibm85n58', 'ibm-not-wf-P85-ibm85n59',
+ 'ibm-not-wf-P85-ibm85n60', 'ibm-not-wf-P85-ibm85n61',
+ 'ibm-not-wf-P85-ibm85n62', 'ibm-not-wf-P85-ibm85n63',
+ 'ibm-not-wf-P85-ibm85n64', 'ibm-not-wf-P85-ibm85n65',
+ 'ibm-not-wf-P85-ibm85n66', 'ibm-not-wf-P85-ibm85n67',
+ 'ibm-not-wf-P85-ibm85n68', 'ibm-not-wf-P85-ibm85n69',
+ 'ibm-not-wf-P85-ibm85n70', 'ibm-not-wf-P85-ibm85n71',
+ 'ibm-not-wf-P85-ibm85n72', 'ibm-not-wf-P85-ibm85n73',
+ 'ibm-not-wf-P85-ibm85n74', 'ibm-not-wf-P85-ibm85n75',
+ 'ibm-not-wf-P85-ibm85n76', 'ibm-not-wf-P85-ibm85n77',
+ 'ibm-not-wf-P85-ibm85n78', 'ibm-not-wf-P85-ibm85n79',
+ 'ibm-not-wf-P85-ibm85n80', 'ibm-not-wf-P85-ibm85n81',
+ 'ibm-not-wf-P85-ibm85n82', 'ibm-not-wf-P85-ibm85n83',
+ 'ibm-not-wf-P85-ibm85n84', 'ibm-not-wf-P85-ibm85n85',
+ 'ibm-not-wf-P85-ibm85n86', 'ibm-not-wf-P85-ibm85n87',
+ 'ibm-not-wf-P85-ibm85n88', 'ibm-not-wf-P85-ibm85n89',
+ 'ibm-not-wf-P85-ibm85n90', 'ibm-not-wf-P85-ibm85n91',
+ 'ibm-not-wf-P85-ibm85n92', 'ibm-not-wf-P85-ibm85n93',
+ 'ibm-not-wf-P85-ibm85n94', 'ibm-not-wf-P85-ibm85n95',
+ 'ibm-not-wf-P85-ibm85n96', 'ibm-not-wf-P85-ibm85n97',
+ 'ibm-not-wf-P85-ibm85n98', 'ibm-not-wf-P85-ibm85n99']},
+ {testcases100, [],
+ ['ibm-not-wf-P86-ibm86n01', 'ibm-not-wf-P86-ibm86n02',
+ 'ibm-not-wf-P86-ibm86n03', 'ibm-not-wf-P86-ibm86n04']},
+ {testcases101, [],
+ ['ibm-not-wf-P87-ibm87n01', 'ibm-not-wf-P87-ibm87n02',
+ 'ibm-not-wf-P87-ibm87n03', 'ibm-not-wf-P87-ibm87n04',
+ 'ibm-not-wf-P87-ibm87n05', 'ibm-not-wf-P87-ibm87n06',
+ 'ibm-not-wf-P87-ibm87n07', 'ibm-not-wf-P87-ibm87n08',
+ 'ibm-not-wf-P87-ibm87n09', 'ibm-not-wf-P87-ibm87n10',
+ 'ibm-not-wf-P87-ibm87n11', 'ibm-not-wf-P87-ibm87n12',
+ 'ibm-not-wf-P87-ibm87n13', 'ibm-not-wf-P87-ibm87n14',
+ 'ibm-not-wf-P87-ibm87n15', 'ibm-not-wf-P87-ibm87n16',
+ 'ibm-not-wf-P87-ibm87n17', 'ibm-not-wf-P87-ibm87n18',
+ 'ibm-not-wf-P87-ibm87n19', 'ibm-not-wf-P87-ibm87n20',
+ 'ibm-not-wf-P87-ibm87n21', 'ibm-not-wf-P87-ibm87n22',
+ 'ibm-not-wf-P87-ibm87n23', 'ibm-not-wf-P87-ibm87n24',
+ 'ibm-not-wf-P87-ibm87n25', 'ibm-not-wf-P87-ibm87n26',
+ 'ibm-not-wf-P87-ibm87n27', 'ibm-not-wf-P87-ibm87n28',
+ 'ibm-not-wf-P87-ibm87n29', 'ibm-not-wf-P87-ibm87n30',
+ 'ibm-not-wf-P87-ibm87n31', 'ibm-not-wf-P87-ibm87n32',
+ 'ibm-not-wf-P87-ibm87n33', 'ibm-not-wf-P87-ibm87n34',
+ 'ibm-not-wf-P87-ibm87n35', 'ibm-not-wf-P87-ibm87n36',
+ 'ibm-not-wf-P87-ibm87n37', 'ibm-not-wf-P87-ibm87n38',
+ 'ibm-not-wf-P87-ibm87n39', 'ibm-not-wf-P87-ibm87n40',
+ 'ibm-not-wf-P87-ibm87n41', 'ibm-not-wf-P87-ibm87n42',
+ 'ibm-not-wf-P87-ibm87n43', 'ibm-not-wf-P87-ibm87n44',
+ 'ibm-not-wf-P87-ibm87n45', 'ibm-not-wf-P87-ibm87n46',
+ 'ibm-not-wf-P87-ibm87n47', 'ibm-not-wf-P87-ibm87n48',
+ 'ibm-not-wf-P87-ibm87n49', 'ibm-not-wf-P87-ibm87n50',
+ 'ibm-not-wf-P87-ibm87n51', 'ibm-not-wf-P87-ibm87n52',
+ 'ibm-not-wf-P87-ibm87n53', 'ibm-not-wf-P87-ibm87n54',
+ 'ibm-not-wf-P87-ibm87n55', 'ibm-not-wf-P87-ibm87n56',
+ 'ibm-not-wf-P87-ibm87n57', 'ibm-not-wf-P87-ibm87n58',
+ 'ibm-not-wf-P87-ibm87n59', 'ibm-not-wf-P87-ibm87n60',
+ 'ibm-not-wf-P87-ibm87n61', 'ibm-not-wf-P87-ibm87n62',
+ 'ibm-not-wf-P87-ibm87n63', 'ibm-not-wf-P87-ibm87n64',
+ 'ibm-not-wf-P87-ibm87n66', 'ibm-not-wf-P87-ibm87n67',
+ 'ibm-not-wf-P87-ibm87n68', 'ibm-not-wf-P87-ibm87n69',
+ 'ibm-not-wf-P87-ibm87n70', 'ibm-not-wf-P87-ibm87n71',
+ 'ibm-not-wf-P87-ibm87n72', 'ibm-not-wf-P87-ibm87n73',
+ 'ibm-not-wf-P87-ibm87n74', 'ibm-not-wf-P87-ibm87n75',
+ 'ibm-not-wf-P87-ibm87n76', 'ibm-not-wf-P87-ibm87n77',
+ 'ibm-not-wf-P87-ibm87n78', 'ibm-not-wf-P87-ibm87n79',
+ 'ibm-not-wf-P87-ibm87n80', 'ibm-not-wf-P87-ibm87n81',
+ 'ibm-not-wf-P87-ibm87n82', 'ibm-not-wf-P87-ibm87n83',
+ 'ibm-not-wf-P87-ibm87n84', 'ibm-not-wf-P87-ibm87n85']},
+ {testcases102, [],
+ ['ibm-not-wf-P88-ibm88n01', 'ibm-not-wf-P88-ibm88n02',
+ 'ibm-not-wf-P88-ibm88n03', 'ibm-not-wf-P88-ibm88n04',
+ 'ibm-not-wf-P88-ibm88n05', 'ibm-not-wf-P88-ibm88n06',
+ 'ibm-not-wf-P88-ibm88n08', 'ibm-not-wf-P88-ibm88n09',
+ 'ibm-not-wf-P88-ibm88n10', 'ibm-not-wf-P88-ibm88n11',
+ 'ibm-not-wf-P88-ibm88n12', 'ibm-not-wf-P88-ibm88n13',
+ 'ibm-not-wf-P88-ibm88n14', 'ibm-not-wf-P88-ibm88n15',
+ 'ibm-not-wf-P88-ibm88n16']},
+ {testcases103, [],
+ ['ibm-not-wf-P89-ibm89n01', 'ibm-not-wf-P89-ibm89n02',
+ 'ibm-not-wf-P89-ibm89n03', 'ibm-not-wf-P89-ibm89n04',
+ 'ibm-not-wf-P89-ibm89n05', 'ibm-not-wf-P89-ibm89n06',
+ 'ibm-not-wf-P89-ibm89n07', 'ibm-not-wf-P89-ibm89n08',
+ 'ibm-not-wf-P89-ibm89n09', 'ibm-not-wf-P89-ibm89n10',
+ 'ibm-not-wf-P89-ibm89n11', 'ibm-not-wf-P89-ibm89n12']},
+ {testcases25, [],
+ [{group, testcases26}, {group, testcases27},
+ {group, testcases28}, {group, testcases29},
+ {group, testcases30}, {group, testcases31},
+ {group, testcases32}, {group, testcases33},
+ {group, testcases34}, {group, testcases35},
+ {group, testcases36}, {group, testcases37},
+ {group, testcases38}, {group, testcases39},
+ {group, testcases40}, {group, testcases41},
+ {group, testcases42}, {group, testcases43},
+ {group, testcases44}, {group, testcases45},
+ {group, testcases46}, {group, testcases47},
+ {group, testcases48}, {group, testcases49},
+ {group, testcases50}, {group, testcases51},
+ {group, testcases52}, {group, testcases53},
+ {group, testcases54}, {group, testcases55},
+ {group, testcases56}, {group, testcases57},
+ {group, testcases58}, {group, testcases59},
+ {group, testcases60}, {group, testcases61},
+ {group, testcases62}, {group, testcases63},
+ {group, testcases64}, {group, testcases65},
+ {group, testcases66},
+% {group, testcases67}, {group, testcases68},
+ {group, testcases69}, {group, testcases70},
+ {group, testcases71}, {group, testcases72},
+ {group, testcases73}, {group, testcases74},
+ {group, testcases75}, {group, testcases76},
+ {group, testcases77}, {group, testcases78},
+ {group, testcases79}, {group, testcases80},
+ {group, testcases81}, {group, testcases82},
+ {group, testcases83}, {group, testcases84},
+ {group, testcases85}, {group, testcases86},
+ {group, testcases87}, {group, testcases88},
+ {group, testcases89}, {group, testcases90},
+ {group, testcases91}, {group, testcases92},
+ {group, testcases93}, {group, testcases94},
+ {group, testcases95}, {group, testcases96},
+ {group, testcases97}, {group, testcases98},
+ {group, testcases99}, {group, testcases100},
+ {group, testcases101}, {group, testcases102},
+ {group, testcases103}]},
+ {testcases105, [], ['ibm-valid-P01-ibm01v01']},
+ {testcases106, [], ['ibm-valid-P02-ibm02v01']},
+ {testcases107, [], ['ibm-valid-P03-ibm03v01']},
+ {testcases108, [],
+ ['ibm-valid-P09-ibm09v01', 'ibm-valid-P09-ibm09v02',
+ 'ibm-valid-P09-ibm09v03', 'ibm-valid-P09-ibm09v04',
+ 'ibm-valid-P09-ibm09v05']},
+ {testcases109, [],
+ ['ibm-valid-P10-ibm10v01', 'ibm-valid-P10-ibm10v02',
+ 'ibm-valid-P10-ibm10v03', 'ibm-valid-P10-ibm10v04',
+ 'ibm-valid-P10-ibm10v05', 'ibm-valid-P10-ibm10v06',
+ 'ibm-valid-P10-ibm10v07', 'ibm-valid-P10-ibm10v08']},
+ {testcases110, [],
+ ['ibm-valid-P11-ibm11v01', 'ibm-valid-P11-ibm11v02',
+ 'ibm-valid-P11-ibm11v03', 'ibm-valid-P11-ibm11v04']},
+ {testcases111, [],
+ ['ibm-valid-P12-ibm12v01','ibm-valid-P12-ibm12v02',
+ 'ibm-valid-P12-ibm12v03','ibm-valid-P12-ibm12v04']},
+ {testcases112, [], ['ibm-valid-P13-ibm13v01']},
+ {testcases113, [],
+ ['ibm-valid-P14-ibm14v01', 'ibm-valid-P14-ibm14v02',
+ 'ibm-valid-P14-ibm14v03']},
+ {testcases114, [],
+ ['ibm-valid-P15-ibm15v01', 'ibm-valid-P15-ibm15v02',
+ 'ibm-valid-P15-ibm15v03', 'ibm-valid-P15-ibm15v04']},
+ {testcases115, [],
+ ['ibm-valid-P16-ibm16v01', 'ibm-valid-P16-ibm16v02',
+ 'ibm-valid-P16-ibm16v03']},
+ {testcases116, [], ['ibm-valid-P17-ibm17v01']},
+ {testcases117, [], ['ibm-valid-P18-ibm18v01']},
+ {testcases118, [], ['ibm-valid-P19-ibm19v01']},
+ {testcases119, [],
+ ['ibm-valid-P20-ibm20v01', 'ibm-valid-P20-ibm20v02']},
+ {testcases120, [], ['ibm-valid-P21-ibm21v01']},
+ {testcases121, [],
+ ['ibm-valid-P22-ibm22v01', 'ibm-valid-P22-ibm22v02',
+ 'ibm-valid-P22-ibm22v03', 'ibm-valid-P22-ibm22v04',
+ 'ibm-valid-P22-ibm22v05', 'ibm-valid-P22-ibm22v06',
+ 'ibm-valid-P22-ibm22v07']},
+ {testcases122, [],
+ ['ibm-valid-P23-ibm23v01', 'ibm-valid-P23-ibm23v02',
+ 'ibm-valid-P23-ibm23v03', 'ibm-valid-P23-ibm23v04',
+ 'ibm-valid-P23-ibm23v05', 'ibm-valid-P23-ibm23v06']},
+ {testcases123, [],
+ ['ibm-valid-P24-ibm24v01', 'ibm-valid-P24-ibm24v02']},
+ {testcases124, [],
+ ['ibm-valid-P25-ibm25v01', 'ibm-valid-P25-ibm25v02',
+ 'ibm-valid-P25-ibm25v03', 'ibm-valid-P25-ibm25v04']},
+ {testcases125, [], ['ibm-valid-P26-ibm26v01']},
+ {testcases126, [],
+ ['ibm-valid-P27-ibm27v01', 'ibm-valid-P27-ibm27v02',
+ 'ibm-valid-P27-ibm27v03']},
+ {testcases127, [],
+ ['ibm-valid-P28-ibm28v01', 'ibm-valid-P28-ibm28v02']},
+ {testcases128, [],
+ ['ibm-valid-P29-ibm29v01', 'ibm-valid-P29-ibm29v02']},
+ {testcases129, [],
+ ['ibm-valid-P30-ibm30v01', 'ibm-valid-P30-ibm30v02']},
+ {testcases130, [],
+ ['ibm-valid-P31-ibm31v01']},
+ {testcases131, [],
+ ['ibm-valid-P32-ibm32v01', 'ibm-valid-P32-ibm32v02',
+ 'ibm-valid-P32-ibm32v03', 'ibm-valid-P32-ibm32v04']},
+ {testcases132, [], ['ibm-valid-P33-ibm33v01']},
+ {testcases133, [], ['ibm-valid-P34-ibm34v01']},
+ {testcases134, [], ['ibm-valid-P35-ibm35v01']},
+ {testcases135, [], ['ibm-valid-P36-ibm36v01']},
+ {testcases136, [], ['ibm-valid-P37-ibm37v01']},
+ {testcases137, [], ['ibm-valid-P38-ibm38v01']},
+ {testcases138, [], ['ibm-valid-P39-ibm39v01']},
+ {testcases139, [], ['ibm-valid-P40-ibm40v01']},
+ {testcases140, [], ['ibm-valid-P41-ibm41v01']},
+ {testcases141, [], ['ibm-valid-P42-ibm42v01']},
+ {testcases142, [], ['ibm-valid-P43-ibm43v01']},
+ {testcases143, [], ['ibm-valid-P44-ibm44v01']},
+ {testcases144, [], ['ibm-valid-P45-ibm45v01']},
+ {testcases145, [], ['ibm-valid-P47-ibm47v01']},
+ {testcases146, [], ['ibm-valid-P49-ibm49v01']},
+ {testcases147, [], ['ibm-valid-P50-ibm50v01']},
+ {testcases148, [],
+ ['ibm-valid-P51-ibm51v01', 'ibm-valid-P51-ibm51v02']},
+ {testcases149, [], ['ibm-valid-P52-ibm52v01']},
+ {testcases150, [],
+ ['ibm-valid-P54-ibm54v01', 'ibm-valid-P54-ibm54v02',
+ 'ibm-valid-P54-ibm54v03']},
+ {testcases151, [], ['ibm-valid-P55-ibm55v01']},
+ {testcases152, [],
+ ['ibm-valid-P56-ibm56v01', 'ibm-valid-P56-ibm56v02',
+ 'ibm-valid-P56-ibm56v03', 'ibm-valid-P56-ibm56v04',
+ 'ibm-valid-P56-ibm56v05', 'ibm-valid-P56-ibm56v06',
+ 'ibm-valid-P56-ibm56v07', 'ibm-valid-P56-ibm56v08',
+ 'ibm-valid-P56-ibm56v09', 'ibm-valid-P56-ibm56v10']},
+ {testcases153, [], ['ibm-valid-P57-ibm57v01']},
+ {testcases154, [],
+ ['ibm-valid-P58-ibm58v01', 'ibm-valid-P58-ibm58v02']},
+ {testcases155, [],
+ ['ibm-valid-P59-ibm59v01', 'ibm-valid-P59-ibm59v02']},
+ {testcases156, [],
+ ['ibm-valid-P60-ibm60v01', 'ibm-valid-P60-ibm60v02',
+ 'ibm-valid-P60-ibm60v03', 'ibm-valid-P60-ibm60v04']},
+ {testcases157, [],
+ ['ibm-valid-P61-ibm61v01','ibm-valid-P61-ibm61v02']},
+ {testcases158, [],
+ ['ibm-valid-P62-ibm62v01','ibm-valid-P62-ibm62v02',
+ 'ibm-valid-P62-ibm62v03','ibm-valid-P62-ibm62v04',
+ 'ibm-valid-P62-ibm62v05']},
+ {testcases159, [],
+ ['ibm-valid-P63-ibm63v01','ibm-valid-P63-ibm63v02',
+ 'ibm-valid-P63-ibm63v03','ibm-valid-P63-ibm63v04',
+ 'ibm-valid-P63-ibm63v05']},
+ {testcases160, [],
+ ['ibm-valid-P64-ibm64v01','ibm-valid-P64-ibm64v02',
+ 'ibm-valid-P64-ibm64v03']},
+ {testcases161, [], ['ibm-valid-P65-ibm65v01','ibm-valid-P65-ibm65v02']},
+ {testcases162, [], ['ibm-valid-P66-ibm66v01']},
+ {testcases163, [], ['ibm-valid-P67-ibm67v01']},
+ {testcases164, [],
+ ['ibm-valid-P68-ibm68v01', 'ibm-valid-P68-ibm68v02']},
+ {testcases165, [],
+ ['ibm-valid-P69-ibm69v01', 'ibm-valid-P69-ibm69v02']},
+ {testcases166, [], ['ibm-valid-P70-ibm70v01']},
+ {testcases167, [], ['ibm-valid-P78-ibm78v01']},
+ {testcases168, [], ['ibm-valid-P79-ibm79v01']},
+ {testcases169, [], ['ibm-valid-P82-ibm82v01']},
+ {testcases170, [], ['ibm-valid-P85-ibm85v01']},
+ {testcases171, [], ['ibm-valid-P86-ibm86v01']},
+ {testcases172, [], ['ibm-valid-P87-ibm87v01']},
+ {testcases173, [], ['ibm-valid-P88-ibm88v01']},
+ {testcases174, [], ['ibm-valid-P89-ibm89v01']},
+ {testcases104, [],
+ [{group, testcases105}, {group, testcases106},
+ {group, testcases107}, {group, testcases108},
+ {group, testcases109}, {group, testcases110},
+% {group, testcases111}, {group,testcases112},
+ {group, testcases113},
+ {group, testcases114}, {group, testcases115},
+ {group, testcases116}, {group, testcases117},
+ {group, testcases118}, {group, testcases119},
+ {group, testcases120}, {group, testcases121},
+ {group, testcases122}, {group, testcases123},
+ {group, testcases124}, {group, testcases125},
+ {group, testcases126}, {group, testcases127},
+ {group, testcases128}, {group, testcases129},
+% {group, testcases130},
+ {group, testcases131},
+ {group, testcases132}, {group, testcases133},
+ {group, testcases134}, {group, testcases135},
+ {group, testcases136}, {group, testcases137},
+ {group, testcases138}, {group, testcases139},
+ {group, testcases140}, {group, testcases141},
+ {group, testcases142}, {group, testcases143},
+ {group, testcases144}, {group, testcases145},
+ {group, testcases146}, {group, testcases147},
+ {group, testcases148}, {group, testcases149},
+ {group, testcases150}, {group, testcases151},
+ {group, testcases152}, {group, testcases153},
+ {group, testcases154}, {group, testcases155},
+ {group, testcases156}, % {group, testcases157},
+% {group, testcases158}, {group, testcases159},
+% {group, testcases160}, {group, testcases161},
+ {group, testcases162}, {group, testcases163},
+ {group, testcases164}, {group, testcases165},
+ {group, testcases166}, %{group, testcases167},
+ {group, testcases168}, {group, testcases169},
+% {group, testcases170},
+ {group, testcases171},
+ {group, testcases172}, {group, testcases173},
+ {group, testcases174}]},
+ {testcases8, [],
+ [{group, testcases9}, {group, testcases25},
+ {group, testcases104}]}].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+%%======================================================================
+%% Support Functions
+%%======================================================================
+
+%% Dir is a directory
+rm_f_(Dir) ->
+ ?line {ok,CWD} = file:get_cwd(),
+ ?line {ok,FileList} = file:list_dir(Dir),
+ ?line file:set_cwd(filename:join([CWD,Dir])),
+ rm_files(FileList),
+ ?line file:set_cwd(CWD),
+ ? line ok = file:del_dir(Dir).
+
+rm_files([])->
+ ok;
+rm_files([F|Fs]) ->
+ case filelib:is_dir(F) of
+ true ->
+ rm_f_(F);
+ _ ->
+ ?line ok = file:delete(F)
+ end,
+ rm_files(Fs).
+
+
+change_mode(Files) ->
+ change_mode3(Files).
+change_mode2(Dir)->
+ ?line {ok,CWD} = file:get_cwd(),
+ ?line {ok,FileList} = file:list_dir(Dir),
+ ?line file:set_cwd(filename:join([CWD,Dir])),
+ change_mode3(FileList),
+ ?line file:set_cwd(CWD).
+change_mode3([]) ->
+ ok;
+change_mode3([F|Fs]) ->
+ case filelib:is_dir(F) of
+ true ->
+ chmod(F),
+ change_mode2(F);
+ _ ->
+ chmod(F)
+ end,
+ change_mode3(Fs).
+
+chmod(F) ->
+ case file:read_file_info(F) of
+ {ok,FileInfo} ->
+ Mode= FileInfo#file_info.mode,
+ file:write_file_info(F,FileInfo#file_info{mode=8#00777 bor Mode});
+ _ ->
+ ok
+ end.
+
+%%----------------------------------------------------------------------
+%% check_result
+check_result({fatal_error,_,_,_,_}, "error") ->
+ ok;
+check_result({ok, _, _}, "invalid") ->
+ ok;
+check_result({fatal_error,_,_,_,_}, "not-wf") ->
+ ok;
+check_result({ok, _, _}, "valid") ->
+ ok.
+
diff --git a/lib/xmerl/test/xmerl_std_SUITE.erl b/lib/xmerl/test/xmerl_std_SUITE.erl
new file mode 100644
index 0000000000..c3cc9007d3
--- /dev/null
+++ b/lib/xmerl/test/xmerl_std_SUITE.erl
@@ -0,0 +1,11799 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2004-2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%----------------------------------------------------------------------
+-module(xmerl_std_SUITE).
+
+-compile(export_all).
+
+%%----------------------------------------------------------------------
+%% Include files
+%%----------------------------------------------------------------------
+-include_lib("test_server/include/test_server.hrl").
+%%-include("xmerl.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+
+-define(ibm_dir,"ibm").
+-define(sun_dir,"sun").
+-define(japanese_dir,"japanese").
+-define(oasis_dir,"oasis").
+-define(xmltest_dir,"xmltest").
+
+%%======================================================================
+%% Tests
+%%======================================================================
+
+%%----------------------------------------------------------------------
+%% Test groups
+%%----------------------------------------------------------------------
+%% totally 1788 test cases
+all() ->
+ ['sun-valid'(suite), 'sun-invalid'(suite),
+ 'sun-not-wf'(suite), 'sun-error'(suite),
+ 'jclark-xmltest'(suite), 'xerox-japanese'(suite),
+ 'nist-oasis'(suite), 'ibm-invalid'(suite),
+ 'ibm-not-wf'(suite), 'ibm-valid'(suite)].
+
+groups() ->
+ [{sun_test_cases, [],
+ 'sun-valid'(suite) ++
+ 'sun-invalid'(suite) ++
+ 'sun-not-wf'(suite) ++ 'sun-error'(suite)},
+ {ibm_test_cases, [],
+ 'ibm-invalid'(suite) ++
+ 'ibm-not-wf'(suite) ++ 'ibm-valid'(suite)},
+ {xmltest_test_cases, [], 'jclark-xmltest'(suite)},
+ {japanese_test_cases, [], 'xerox-japanese'(suite)},
+ {oasis_test_cases, [], 'nist-oasis'(suite)}].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+
+'sun-valid'(suite) -> %% 28 test cases
+ ['v-pe02','v-pe03','v-pe00','v-lang06','v-lang05','v-lang04',
+ 'v-lang03','v-lang02','v-lang01','v-sgml01',sa05,sa04,sa03,sa02,
+ sa01,required00,optional,notation01,'not-sa04','not-sa03',
+ 'not-sa02','not-sa01',ext02,ext01,element,dtd01,dtd00,pe01].
+'sun-invalid'(suite) -> %% 74 test cases
+ [empty,utf16l,utf16b,attr16,attr15,attr14,attr13,attr12,attr11,
+ attr10,attr09,attr08,attr07,attr06,attr05,attr04,attr03,attr02,
+ attr01,root,'inv-required02','inv-required01','inv-required00',
+ optional25,optional24,optional23,optional22,optional21,optional20,
+ optional14,optional13,optional12,optional11,optional10,optional09,
+ optional08,optional07,optional06,optional05,optional04,optional03,
+ optional02,optional01,'inv-not-sa14','inv-not-sa13','inv-not-sa12',
+ 'inv-not-sa11','inv-not-sa10','inv-not-sa09','inv-not-sa08',
+ 'inv-not-sa07','inv-not-sa06','inv-not-sa05','inv-not-sa04',
+ 'inv-not-sa02','inv-not-sa01',id09,id08,id07,id06,id05,id04,id03,
+ id02,id01,el06,el05,el04,el03,el02,el01,'inv-dtd03','inv-dtd02',
+ 'inv-dtd01'].
+'sun-not-wf'(suite)-> %% 56 test cases
+ [sgml13,sgml12,sgml11,sgml10,sgml09,sgml08,sgml07,sgml06,sgml05,
+ sgml04,sgml03,sgml02,sgml01,pubid05,pubid04,pubid03,pubid02,pubid01,
+ pi,encoding07,encoding06,encoding05,encoding04,encoding03,encoding02,
+ encoding01,element04,element03,element02,element01,element00,dtd07,
+ dtd05,dtd04,dtd03,dtd02,'nwf-dtd01','nwf-dtd00',decl01,content03,
+ content02,content01,cond02,cond01,attlist11,attlist10,attlist09,
+ attlist08,attlist07,attlist06,attlist05,attlist04,attlist03,
+ attlist02,attlist01,'not-wf-sa03'].
+'sun-error'(suite)->
+ %% 1 test case
+ [uri01].
+'jclark-xmltest'(suite) ->
+ %% 364 test cases
+ ['valid-ext-sa-014','valid-ext-sa-013','valid-ext-sa-012',
+ 'valid-ext-sa-011','valid-ext-sa-009','valid-ext-sa-008',
+ 'valid-ext-sa-007','valid-ext-sa-006','valid-ext-sa-005',
+ 'valid-ext-sa-004','valid-ext-sa-003','valid-ext-sa-002',
+ 'valid-ext-sa-001','valid-not-sa-031','valid-not-sa-030',
+ 'valid-not-sa-029','valid-not-sa-028','valid-not-sa-027',
+ 'valid-not-sa-026','valid-not-sa-025','valid-not-sa-024',
+ 'valid-not-sa-023','valid-not-sa-021','valid-not-sa-020',
+ 'valid-not-sa-019','valid-not-sa-018','valid-not-sa-017',
+ 'valid-not-sa-016','valid-not-sa-015','valid-not-sa-014',
+ 'valid-not-sa-013','valid-not-sa-012','valid-not-sa-011',
+ 'valid-not-sa-010','valid-not-sa-009','valid-not-sa-008',
+ 'valid-not-sa-007','valid-not-sa-006','valid-not-sa-005',
+ 'valid-not-sa-004','valid-not-sa-003','valid-not-sa-002',
+ 'valid-not-sa-001','valid-sa-119','valid-sa-118','valid-sa-117',
+ 'valid-sa-116','valid-sa-115','valid-sa-114','valid-sa-113',
+ 'valid-sa-112','valid-sa-111','valid-sa-110','valid-sa-109',
+ 'valid-sa-108','valid-sa-107','valid-sa-106','valid-sa-105',
+ 'valid-sa-104','valid-sa-103','valid-sa-102','valid-sa-101',
+ 'valid-sa-100','valid-sa-099','valid-sa-098','valid-sa-097',
+ 'valid-sa-096','valid-sa-095','valid-sa-094','valid-sa-093',
+ 'valid-sa-092','valid-sa-091','valid-sa-090','valid-sa-089',
+ 'valid-sa-088','valid-sa-087','valid-sa-086','valid-sa-085',
+ 'valid-sa-084','valid-sa-083','valid-sa-082','valid-sa-081',
+ 'valid-sa-080','valid-sa-079','valid-sa-078','valid-sa-077',
+ 'valid-sa-076','valid-sa-075','valid-sa-074','valid-sa-073',
+ 'valid-sa-072','valid-sa-071','valid-sa-070','valid-sa-069',
+ 'valid-sa-068','valid-sa-067','valid-sa-066','valid-sa-065',
+ 'valid-sa-064','valid-sa-063','valid-sa-062','valid-sa-061',
+ 'valid-sa-060','valid-sa-059','valid-sa-058','valid-sa-057',
+ 'valid-sa-056','valid-sa-055','valid-sa-054','valid-sa-053',
+ 'valid-sa-052','valid-sa-051','valid-sa-050','valid-sa-049',
+ 'valid-sa-048','valid-sa-047','valid-sa-046','valid-sa-045',
+ 'valid-sa-044','valid-sa-043','valid-sa-042','valid-sa-041',
+ 'valid-sa-040','valid-sa-039','valid-sa-038','valid-sa-037',
+ 'valid-sa-036','valid-sa-035','valid-sa-034','valid-sa-033',
+ 'valid-sa-032','valid-sa-031','valid-sa-030','valid-sa-029',
+ 'valid-sa-028','valid-sa-027','valid-sa-026','valid-sa-025',
+ 'valid-sa-024','valid-sa-023','valid-sa-022','valid-sa-021',
+ 'valid-sa-020','valid-sa-019','valid-sa-018','valid-sa-017',
+ 'valid-sa-016','valid-sa-015','valid-sa-014','valid-sa-013',
+ 'valid-sa-012','valid-sa-011','valid-sa-010','valid-sa-009',
+ 'valid-sa-008','valid-sa-007','valid-sa-006','valid-sa-005',
+ 'valid-sa-004','valid-sa-003','valid-sa-002','valid-sa-001',
+ 'invalid-not-sa-022','invalid--006','invalid--005','invalid--002',
+ 'not-wf-ext-sa-003','not-wf-ext-sa-002','not-wf-ext-sa-001',
+ 'not-wf-not-sa-009','not-wf-not-sa-008','not-wf-not-sa-007',
+ 'not-wf-not-sa-006','not-wf-not-sa-005','not-wf-not-sa-004',
+ 'not-wf-not-sa-003','not-wf-not-sa-002','not-wf-not-sa-001',
+ 'not-wf-sa-186','not-wf-sa-185','not-wf-sa-184','not-wf-sa-183',
+ 'not-wf-sa-182','not-wf-sa-181','not-wf-sa-180','not-wf-sa-179',
+ 'not-wf-sa-178','not-wf-sa-177','not-wf-sa-176','not-wf-sa-175',
+ 'not-wf-sa-174','not-wf-sa-173','not-wf-sa-172','not-wf-sa-171',
+ 'not-wf-sa-170','not-wf-sa-169','not-wf-sa-168','not-wf-sa-167',
+ 'not-wf-sa-166','not-wf-sa-165','not-wf-sa-164','not-wf-sa-163',
+ 'not-wf-sa-162','not-wf-sa-161','not-wf-sa-160','not-wf-sa-159',
+ 'not-wf-sa-158','not-wf-sa-157','not-wf-sa-156','not-wf-sa-155',
+ 'not-wf-sa-154','not-wf-sa-153','not-wf-sa-152','not-wf-sa-151',
+ 'not-wf-sa-150','not-wf-sa-149','not-wf-sa-148','not-wf-sa-147',
+ 'not-wf-sa-146','not-wf-sa-145','not-wf-sa-144','not-wf-sa-143',
+ 'not-wf-sa-142','not-wf-sa-141','not-wf-sa-140','not-wf-sa-139',
+ 'not-wf-sa-138','not-wf-sa-137','not-wf-sa-136','not-wf-sa-135',
+ 'not-wf-sa-134','not-wf-sa-133','not-wf-sa-132','not-wf-sa-131',
+ 'not-wf-sa-130','not-wf-sa-129','not-wf-sa-128','not-wf-sa-127',
+ 'not-wf-sa-126','not-wf-sa-125','not-wf-sa-124','not-wf-sa-123',
+ 'not-wf-sa-122','not-wf-sa-121','not-wf-sa-120','not-wf-sa-119',
+ 'not-wf-sa-118','not-wf-sa-117','not-wf-sa-116','not-wf-sa-115',
+ 'not-wf-sa-114','not-wf-sa-113','not-wf-sa-112','not-wf-sa-111',
+ 'not-wf-sa-110','not-wf-sa-109','not-wf-sa-108','not-wf-sa-107',
+ 'not-wf-sa-106','not-wf-sa-105','not-wf-sa-104','not-wf-sa-103',
+ 'not-wf-sa-102','not-wf-sa-101','not-wf-sa-100','not-wf-sa-099',
+ 'not-wf-sa-098','not-wf-sa-097','not-wf-sa-096','not-wf-sa-095',
+ 'not-wf-sa-094','not-wf-sa-093','not-wf-sa-092','not-wf-sa-091',
+ 'not-wf-sa-090','not-wf-sa-089','not-wf-sa-088','not-wf-sa-087',
+ 'not-wf-sa-086','not-wf-sa-085','not-wf-sa-084','not-wf-sa-083',
+ 'not-wf-sa-082','not-wf-sa-081','not-wf-sa-080','not-wf-sa-079',
+ 'not-wf-sa-078','not-wf-sa-077','not-wf-sa-076','not-wf-sa-075',
+ 'not-wf-sa-074','not-wf-sa-073','not-wf-sa-072','not-wf-sa-071',
+ 'not-wf-sa-070','not-wf-sa-069','not-wf-sa-068','not-wf-sa-067',
+ 'not-wf-sa-066','not-wf-sa-065','not-wf-sa-064','not-wf-sa-063',
+ 'not-wf-sa-062','not-wf-sa-061','not-wf-sa-060','not-wf-sa-059',
+ 'not-wf-sa-058','not-wf-sa-057','not-wf-sa-056','not-wf-sa-055',
+ 'not-wf-sa-054','not-wf-sa-053','not-wf-sa-052','not-wf-sa-051',
+ 'not-wf-sa-050','not-wf-sa-049','not-wf-sa-048','not-wf-sa-047',
+ 'not-wf-sa-046','not-wf-sa-045','not-wf-sa-044','not-wf-sa-043',
+ 'not-wf-sa-042','not-wf-sa-041','not-wf-sa-040','not-wf-sa-039',
+ 'not-wf-sa-038','not-wf-sa-037','not-wf-sa-036','not-wf-sa-035',
+ 'not-wf-sa-034','not-wf-sa-033','not-wf-sa-032','not-wf-sa-031',
+ 'not-wf-sa-030','not-wf-sa-029','not-wf-sa-028','not-wf-sa-027',
+ 'not-wf-sa-026','not-wf-sa-025','not-wf-sa-024','not-wf-sa-023',
+ 'not-wf-sa-022','not-wf-sa-021','not-wf-sa-020','not-wf-sa-019',
+ 'not-wf-sa-018','not-wf-sa-017','not-wf-sa-016','not-wf-sa-015',
+ 'not-wf-sa-014','not-wf-sa-013','not-wf-sa-012','not-wf-sa-011',
+ 'not-wf-sa-010','not-wf-sa-009','not-wf-sa-008','not-wf-sa-007',
+ 'not-wf-sa-006','not-wf-sa-005','not-wf-sa-004','not-wf-sa-003',
+ 'not-wf-sa-002','not-wf-sa-001'].
+'xerox-japanese'(suite) ->
+ %% 12 test cases
+ ['japanese-weekly-utf-8','japanese-weekly-utf-16',
+ 'japanese-weekly-shift_jis','japanese-weekly-little',
+ 'japanese-weekly-iso-2022-jp','japanese-weekly-euc-jp',
+ 'japanese-pr-xml-utf-8','japanese-pr-xml-utf-16',
+ 'japanese-pr-xml-shift_jis','japanese-pr-xml-little',
+ 'japanese-pr-xml-iso-2022-jp','japanese-pr-xml-euc-jp'].
+'nist-oasis'(suite) ->
+ %% 348 test cases
+ ['o-p11pass1','o-p76fail4','o-p76fail3','o-p76fail2','o-p76fail1',
+ 'o-p75fail6','o-p75fail5','o-p75fail4','o-p75fail3','o-p75fail2',
+ 'o-p75fail1','o-p74fail3','o-p74fail2','o-p74fail1','o-p73fail5',
+ 'o-p73fail4','o-p73fail3','o-p73fail2','o-p73fail1','o-p72fail4',
+ 'o-p72fail3','o-p72fail2','o-p72fail1','o-p71fail4','o-p71fail3',
+ 'o-p71fail2','o-p71fail1','o-p70fail1','o-p69fail3','o-p69fail2',
+ 'o-p69fail1','o-p68fail3','o-p68fail2','o-p68fail1','o-p66fail6',
+ 'o-p66fail5','o-p66fail4','o-p66fail3','o-p66fail2','o-p66fail1',
+ 'o-p64fail2','o-p64fail1','o-p63fail2','o-p63fail1','o-p62fail2',
+ 'o-p62fail1','o-p61fail1','o-p60fail5','o-p60fail4','o-p60fail3',
+ 'o-p60fail2','o-p60fail1','o-p59fail3','o-p59fail2','o-p59fail1',
+ 'o-p58fail8','o-p58fail7','o-p58fail6','o-p58fail5','o-p58fail4',
+ 'o-p58fail3','o-p58fail2','o-p58fail1','o-p57fail1','o-p56fail5',
+ 'o-p56fail4','o-p56fail3','o-p56fail2','o-p56fail1','o-p55fail1',
+ 'o-p54fail1','o-p53fail5','o-p53fail4','o-p53fail3','o-p53fail2',
+ 'o-p53fail1','o-p52fail2','o-p52fail1','o-p51fail7','o-p51fail6',
+ 'o-p51fail5','o-p51fail4','o-p51fail3','o-p51fail2','o-p51fail1',
+ 'o-p50fail1','o-p49fail1','o-p48fail2','o-p48fail1','o-p47fail4',
+ 'o-p47fail3','o-p47fail2','o-p47fail1','o-p46fail6','o-p46fail5',
+ 'o-p46fail4','o-p46fail3','o-p46fail2','o-p46fail1','o-p45fail4',
+ 'o-p45fail3','o-p45fail2','o-p45fail1','o-p44fail5','o-p44fail4',
+ 'o-p44fail3','o-p44fail2','o-p44fail1','o-p43fail3','o-p43fail2',
+ 'o-p43fail1','o-p42fail3','o-p42fail2','o-p42fail1','o-p41fail3',
+ 'o-p41fail2','o-p41fail1','o-p40fail4','o-p40fail3','o-p40fail2',
+ 'o-p40fail1','o-p39fail5','o-p39fail4','o-p39fail3','o-p39fail2',
+ 'o-p39fail1','o-p32fail5','o-p32fail4','o-p32fail3','o-p32fail2',
+ 'o-p32fail1','o-p31fail1','o-p30fail1','o-p29fail1','o-p28fail1',
+ 'o-p27fail1','o-p26fail2','o-p26fail1','o-p25fail1','o-p24fail2',
+ 'o-p24fail1','o-p23fail5','o-p23fail4','o-p23fail3','o-p23fail2',
+ 'o-p23fail1','o-p22fail2','o-p22fail1','o-p18fail3','o-p18fail2',
+ 'o-p18fail1','o-p16fail3','o-p16fail2','o-p16fail1','o-p15fail3',
+ 'o-p15fail2','o-p15fail1','o-p14fail3','o-p14fail2','o-p14fail1',
+ 'o-p12fail7','o-p12fail6','o-p12fail5','o-p12fail4','o-p12fail3',
+ 'o-p12fail2','o-p12fail1','o-p11fail2','o-p11fail1','o-p10fail3',
+ 'o-p10fail2','o-p10fail1','o-p09fail5','o-p09fail4','o-p09fail3',
+ 'o-p09fail2','o-p09fail1','o-p05fail5','o-p05fail4','o-p05fail3',
+ 'o-p05fail2','o-p05fail1','o-p04fail3','o-p04fail2','o-p04fail1',
+ 'o-p03fail9','o-p03fail8','o-p03fail7','o-p03fail5','o-p03fail4',
+ 'o-p03fail3','o-p03fail29','o-p03fail28','o-p03fail27','o-p03fail26',
+ 'o-p03fail25','o-p03fail24','o-p03fail23','o-p03fail22','o-p03fail21',
+ 'o-p03fail20','o-p03fail2','o-p03fail19','o-p03fail18','o-p03fail17',
+ 'o-p03fail16','o-p03fail15','o-p03fail14','o-p03fail13','o-p03fail12',
+ 'o-p03fail11','o-p03fail10','o-p03fail1','o-p02fail9','o-p02fail8',
+ 'o-p02fail7','o-p02fail6','o-p02fail5','o-p02fail4','o-p02fail31',
+ 'o-p02fail30','o-p02fail3','o-p02fail29','o-p02fail28','o-p02fail27',
+ 'o-p02fail26','o-p02fail25','o-p02fail24','o-p02fail23','o-p02fail22',
+ 'o-p02fail21','o-p02fail20','o-p02fail2','o-p02fail19','o-p02fail18',
+ 'o-p02fail17','o-p02fail16','o-p02fail15','o-p02fail14','o-p02fail13',
+ 'o-p02fail12','o-p02fail11','o-p02fail10','o-p02fail1','o-p01fail4',
+ 'o-p01fail3','o-p01fail2','o-p01fail1','o-e2','o-p75pass1',
+ 'o-p74pass1','o-p66pass1','o-p44pass5','o-p44pass4','o-p44pass3',
+ 'o-p44pass2','o-p44pass1','o-p42pass2','o-p42pass1','o-p41pass2',
+ 'o-p41pass1','o-p40pass4','o-p40pass3','o-p40pass2','o-p40pass1',
+ 'o-p39pass2','o-p39pass1','o-p32pass2','o-p32pass1','o-p27pass4',
+ 'o-p27pass3','o-p27pass2','o-p27pass1','o-p26pass1','o-p25pass2',
+ 'o-p25pass1','o-p24pass4','o-p24pass3','o-p24pass2','o-p24pass1',
+ 'o-p23pass4','o-p23pass3','o-p23pass2','o-p23pass1','o-p22pass3',
+ 'o-p22pass2','o-p22pass1','o-p18pass1','o-p16pass3','o-p16pass2',
+ 'o-p16pass1','o-p15pass1','o-p14pass1','o-p10pass1','o-p08fail2',
+ 'o-p08fail1','o-p06fail1','o-p05pass1','o-p04pass1','o-p03pass1',
+ 'o-p01pass3','o-p01pass1','o-p76pass1','o-p73pass1','o-p72pass1',
+ 'o-p71pass1','o-p70pass1','o-p69pass1','o-p68pass1','o-p64pass1',
+ 'o-p63pass1','o-p62pass1','o-p61pass1','o-p60pass1','o-p59pass1',
+ 'o-p58pass1','o-p57pass1','o-p56pass1','o-p55pass1','o-p54pass1',
+ 'o-p53pass1','o-p52pass1','o-p51pass1','o-p50pass1','o-p49pass1',
+ 'o-p48pass1','o-p47pass1','o-p46pass1','o-p45pass1','o-p43pass1',
+ 'o-p31pass2','o-p31pass1','o-p30pass2','o-p30pass1','o-p29pass1',
+ 'o-p28pass5','o-p28pass4','o-p28pass3','o-p28pass1','o-p22pass6',
+ 'o-p22pass5','o-p22pass4','o-p12pass1','o-p09pass1','o-p08pass1',
+ 'o-p07pass1','o-p06pass1','o-p01pass2'].
+'ibm-invalid'(suite) ->
+ %% 48 test cases
+ ['ibm-invalid-P76-ibm76i01','ibm-invalid-P69-ibm69i04',
+ 'ibm-invalid-P69-ibm69i03','ibm-invalid-P69-ibm69i02',
+ 'ibm-invalid-P69-ibm69i01','ibm-invalid-P68-ibm68i04',
+ 'ibm-invalid-P68-ibm68i03','ibm-invalid-P68-ibm68i02',
+ 'ibm-invalid-P68-ibm68i01','ibm-invalid-P60-ibm60i04',
+ 'ibm-invalid-P60-ibm60i03','ibm-invalid-P60-ibm60i02',
+ 'ibm-invalid-P60-ibm60i01','ibm-invalid-P59-ibm59i01',
+ 'ibm-invalid-P58-ibm58i02','ibm-invalid-P58-ibm58i01',
+ 'ibm-invalid-P56-ibm56i18','ibm-invalid-P56-ibm56i17',
+ 'ibm-invalid-P56-ibm56i16','ibm-invalid-P56-ibm56i15',
+ 'ibm-invalid-P56-ibm56i14','ibm-invalid-P56-ibm56i13',
+ 'ibm-invalid-P56-ibm56i12','ibm-invalid-P56-ibm56i11',
+ 'ibm-invalid-P56-ibm56i10','ibm-invalid-P56-ibm56i09',
+ 'ibm-invalid-P56-ibm56i08','ibm-invalid-P56-ibm56i07',
+ 'ibm-invalid-P56-ibm56i06','ibm-invalid-P56-ibm56i05',
+ 'ibm-invalid-P56-ibm56i03','ibm-invalid-P56-ibm56i02',
+ 'ibm-invalid-P56-ibm56i01','ibm-invalid-P51-ibm51i03',
+ 'ibm-invalid-P51-ibm51i01','ibm-invalid-P50-ibm50i01',
+ 'ibm-invalid-P49-ibm49i01','ibm-invalid-P45-ibm45i01',
+ 'ibm-invalid-P41-ibm41i02','ibm-invalid-P41-ibm41i01',
+ 'ibm-invalid-P39-ibm39i04','ibm-invalid-P39-ibm39i03',
+ 'ibm-invalid-P39-ibm39i02','ibm-invalid-P39-ibm39i01',
+ 'ibm-invalid-P32-ibm32i04','ibm-invalid-P32-ibm32i03',
+ 'ibm-invalid-P32-ibm32i01','ibm-invalid-P28-ibm28i01'].
+'ibm-not-wf'(suite) ->
+ %% 731 test cases
+ ['ibm-not-wf-P89-ibm89n12','ibm-not-wf-P89-ibm89n11',
+ 'ibm-not-wf-P89-ibm89n10','ibm-not-wf-P89-ibm89n09',
+ 'ibm-not-wf-P89-ibm89n08','ibm-not-wf-P89-ibm89n07',
+ 'ibm-not-wf-P89-ibm89n06','ibm-not-wf-P89-ibm89n05',
+ 'ibm-not-wf-P89-ibm89n04','ibm-not-wf-P89-ibm89n03',
+ 'ibm-not-wf-P89-ibm89n02','ibm-not-wf-P89-ibm89n01',
+ 'ibm-not-wf-P88-ibm88n16','ibm-not-wf-P88-ibm88n15',
+ 'ibm-not-wf-P88-ibm88n14','ibm-not-wf-P88-ibm88n13',
+ 'ibm-not-wf-P88-ibm88n12','ibm-not-wf-P88-ibm88n11',
+ 'ibm-not-wf-P88-ibm88n10','ibm-not-wf-P88-ibm88n09',
+ 'ibm-not-wf-P88-ibm88n08','ibm-not-wf-P88-ibm88n06',
+ 'ibm-not-wf-P88-ibm88n05','ibm-not-wf-P88-ibm88n04',
+ 'ibm-not-wf-P88-ibm88n03','ibm-not-wf-P88-ibm88n02',
+ 'ibm-not-wf-P88-ibm88n01','ibm-not-wf-P87-ibm87n85',
+ 'ibm-not-wf-P87-ibm87n84','ibm-not-wf-P87-ibm87n83',
+ 'ibm-not-wf-P87-ibm87n82','ibm-not-wf-P87-ibm87n81',
+ 'ibm-not-wf-P87-ibm87n80','ibm-not-wf-P87-ibm87n79',
+ 'ibm-not-wf-P87-ibm87n78','ibm-not-wf-P87-ibm87n77',
+ 'ibm-not-wf-P87-ibm87n76','ibm-not-wf-P87-ibm87n75',
+ 'ibm-not-wf-P87-ibm87n74','ibm-not-wf-P87-ibm87n73',
+ 'ibm-not-wf-P87-ibm87n72','ibm-not-wf-P87-ibm87n71',
+ 'ibm-not-wf-P87-ibm87n70','ibm-not-wf-P87-ibm87n69',
+ 'ibm-not-wf-P87-ibm87n68','ibm-not-wf-P87-ibm87n67',
+ 'ibm-not-wf-P87-ibm87n66','ibm-not-wf-P87-ibm87n64',
+ 'ibm-not-wf-P87-ibm87n63','ibm-not-wf-P87-ibm87n62',
+ 'ibm-not-wf-P87-ibm87n61','ibm-not-wf-P87-ibm87n60',
+ 'ibm-not-wf-P87-ibm87n59','ibm-not-wf-P87-ibm87n58',
+ 'ibm-not-wf-P87-ibm87n57','ibm-not-wf-P87-ibm87n56',
+ 'ibm-not-wf-P87-ibm87n55','ibm-not-wf-P87-ibm87n54',
+ 'ibm-not-wf-P87-ibm87n53','ibm-not-wf-P87-ibm87n52',
+ 'ibm-not-wf-P87-ibm87n51','ibm-not-wf-P87-ibm87n50',
+ 'ibm-not-wf-P87-ibm87n49','ibm-not-wf-P87-ibm87n48',
+ 'ibm-not-wf-P87-ibm87n47','ibm-not-wf-P87-ibm87n46',
+ 'ibm-not-wf-P87-ibm87n45','ibm-not-wf-P87-ibm87n44',
+ 'ibm-not-wf-P87-ibm87n43','ibm-not-wf-P87-ibm87n42',
+ 'ibm-not-wf-P87-ibm87n41','ibm-not-wf-P87-ibm87n40',
+ 'ibm-not-wf-P87-ibm87n39','ibm-not-wf-P87-ibm87n38',
+ 'ibm-not-wf-P87-ibm87n37','ibm-not-wf-P87-ibm87n36',
+ 'ibm-not-wf-P87-ibm87n35','ibm-not-wf-P87-ibm87n34',
+ 'ibm-not-wf-P87-ibm87n33','ibm-not-wf-P87-ibm87n32',
+ 'ibm-not-wf-P87-ibm87n31','ibm-not-wf-P87-ibm87n30',
+ 'ibm-not-wf-P87-ibm87n29','ibm-not-wf-P87-ibm87n28',
+ 'ibm-not-wf-P87-ibm87n27','ibm-not-wf-P87-ibm87n26',
+ 'ibm-not-wf-P87-ibm87n25','ibm-not-wf-P87-ibm87n24',
+ 'ibm-not-wf-P87-ibm87n23','ibm-not-wf-P87-ibm87n22',
+ 'ibm-not-wf-P87-ibm87n21','ibm-not-wf-P87-ibm87n20',
+ 'ibm-not-wf-P87-ibm87n19','ibm-not-wf-P87-ibm87n18',
+ 'ibm-not-wf-P87-ibm87n17','ibm-not-wf-P87-ibm87n16',
+ 'ibm-not-wf-P87-ibm87n15','ibm-not-wf-P87-ibm87n14',
+ 'ibm-not-wf-P87-ibm87n13','ibm-not-wf-P87-ibm87n12',
+ 'ibm-not-wf-P87-ibm87n11','ibm-not-wf-P87-ibm87n10',
+ 'ibm-not-wf-P87-ibm87n09','ibm-not-wf-P87-ibm87n08',
+ 'ibm-not-wf-P87-ibm87n07','ibm-not-wf-P87-ibm87n06',
+ 'ibm-not-wf-P87-ibm87n05','ibm-not-wf-P87-ibm87n04',
+ 'ibm-not-wf-P87-ibm87n03','ibm-not-wf-P87-ibm87n02',
+ 'ibm-not-wf-P87-ibm87n01','ibm-not-wf-P86-ibm86n04',
+ 'ibm-not-wf-P86-ibm86n03','ibm-not-wf-P86-ibm86n02',
+ 'ibm-not-wf-P86-ibm86n01','ibm-not-wf-P85-ibm85n99',
+ 'ibm-not-wf-P85-ibm85n98','ibm-not-wf-P85-ibm85n97',
+ 'ibm-not-wf-P85-ibm85n96','ibm-not-wf-P85-ibm85n95',
+ 'ibm-not-wf-P85-ibm85n94','ibm-not-wf-P85-ibm85n93',
+ 'ibm-not-wf-P85-ibm85n92','ibm-not-wf-P85-ibm85n91',
+ 'ibm-not-wf-P85-ibm85n90','ibm-not-wf-P85-ibm85n89',
+ 'ibm-not-wf-P85-ibm85n88','ibm-not-wf-P85-ibm85n87',
+ 'ibm-not-wf-P85-ibm85n86','ibm-not-wf-P85-ibm85n85',
+ 'ibm-not-wf-P85-ibm85n84','ibm-not-wf-P85-ibm85n83',
+ 'ibm-not-wf-P85-ibm85n82','ibm-not-wf-P85-ibm85n81',
+ 'ibm-not-wf-P85-ibm85n80','ibm-not-wf-P85-ibm85n79',
+ 'ibm-not-wf-P85-ibm85n78','ibm-not-wf-P85-ibm85n77',
+ 'ibm-not-wf-P85-ibm85n76','ibm-not-wf-P85-ibm85n75',
+ 'ibm-not-wf-P85-ibm85n74','ibm-not-wf-P85-ibm85n73',
+ 'ibm-not-wf-P85-ibm85n72','ibm-not-wf-P85-ibm85n71',
+ 'ibm-not-wf-P85-ibm85n70','ibm-not-wf-P85-ibm85n69',
+ 'ibm-not-wf-P85-ibm85n68','ibm-not-wf-P85-ibm85n67',
+ 'ibm-not-wf-P85-ibm85n66','ibm-not-wf-P85-ibm85n65',
+ 'ibm-not-wf-P85-ibm85n64','ibm-not-wf-P85-ibm85n63',
+ 'ibm-not-wf-P85-ibm85n62','ibm-not-wf-P85-ibm85n61',
+ 'ibm-not-wf-P85-ibm85n60','ibm-not-wf-P85-ibm85n59',
+ 'ibm-not-wf-P85-ibm85n58','ibm-not-wf-P85-ibm85n57',
+ 'ibm-not-wf-P85-ibm85n56','ibm-not-wf-P85-ibm85n55',
+ 'ibm-not-wf-P85-ibm85n54','ibm-not-wf-P85-ibm85n53',
+ 'ibm-not-wf-P85-ibm85n52','ibm-not-wf-P85-ibm85n51',
+ 'ibm-not-wf-P85-ibm85n50','ibm-not-wf-P85-ibm85n49',
+ 'ibm-not-wf-P85-ibm85n48','ibm-not-wf-P85-ibm85n47',
+ 'ibm-not-wf-P85-ibm85n46','ibm-not-wf-P85-ibm85n45',
+ 'ibm-not-wf-P85-ibm85n44','ibm-not-wf-P85-ibm85n43',
+ 'ibm-not-wf-P85-ibm85n42','ibm-not-wf-P85-ibm85n41',
+ 'ibm-not-wf-P85-ibm85n40','ibm-not-wf-P85-ibm85n39',
+ 'ibm-not-wf-P85-ibm85n38','ibm-not-wf-P85-ibm85n37',
+ 'ibm-not-wf-P85-ibm85n36','ibm-not-wf-P85-ibm85n35',
+ 'ibm-not-wf-P85-ibm85n34','ibm-not-wf-P85-ibm85n33',
+ 'ibm-not-wf-P85-ibm85n32','ibm-not-wf-P85-ibm85n31',
+ 'ibm-not-wf-P85-ibm85n30','ibm-not-wf-P85-ibm85n29',
+ 'ibm-not-wf-P85-ibm85n28','ibm-not-wf-P85-ibm85n27',
+ 'ibm-not-wf-P85-ibm85n26','ibm-not-wf-P85-ibm85n25',
+ 'ibm-not-wf-P85-ibm85n24','ibm-not-wf-P85-ibm85n23',
+ 'ibm-not-wf-P85-ibm85n22','ibm-not-wf-P85-ibm85n21',
+ 'ibm-not-wf-P85-ibm85n20','ibm-not-wf-P85-ibm85n198',
+ 'ibm-not-wf-P85-ibm85n197','ibm-not-wf-P85-ibm85n196',
+ 'ibm-not-wf-P85-ibm85n195','ibm-not-wf-P85-ibm85n194',
+ 'ibm-not-wf-P85-ibm85n193','ibm-not-wf-P85-ibm85n192',
+ 'ibm-not-wf-P85-ibm85n191','ibm-not-wf-P85-ibm85n190',
+ 'ibm-not-wf-P85-ibm85n19','ibm-not-wf-P85-ibm85n189',
+ 'ibm-not-wf-P85-ibm85n188','ibm-not-wf-P85-ibm85n187',
+ 'ibm-not-wf-P85-ibm85n186','ibm-not-wf-P85-ibm85n185',
+ 'ibm-not-wf-P85-ibm85n184','ibm-not-wf-P85-ibm85n183',
+ 'ibm-not-wf-P85-ibm85n182','ibm-not-wf-P85-ibm85n181',
+ 'ibm-not-wf-P85-ibm85n180','ibm-not-wf-P85-ibm85n18',
+ 'ibm-not-wf-P85-ibm85n179','ibm-not-wf-P85-ibm85n178',
+ 'ibm-not-wf-P85-ibm85n177','ibm-not-wf-P85-ibm85n176',
+ 'ibm-not-wf-P85-ibm85n175','ibm-not-wf-P85-ibm85n174',
+ 'ibm-not-wf-P85-ibm85n173','ibm-not-wf-P85-ibm85n172',
+ 'ibm-not-wf-P85-ibm85n171','ibm-not-wf-P85-ibm85n170',
+ 'ibm-not-wf-P85-ibm85n17','ibm-not-wf-P85-ibm85n169',
+ 'ibm-not-wf-P85-ibm85n168','ibm-not-wf-P85-ibm85n167',
+ 'ibm-not-wf-P85-ibm85n166','ibm-not-wf-P85-ibm85n165',
+ 'ibm-not-wf-P85-ibm85n164','ibm-not-wf-P85-ibm85n163',
+ 'ibm-not-wf-P85-ibm85n162','ibm-not-wf-P85-ibm85n161',
+ 'ibm-not-wf-P85-ibm85n160','ibm-not-wf-P85-ibm85n16',
+ 'ibm-not-wf-P85-ibm85n159','ibm-not-wf-P85-ibm85n158',
+ 'ibm-not-wf-P85-ibm85n157','ibm-not-wf-P85-ibm85n156',
+ 'ibm-not-wf-P85-ibm85n155','ibm-not-wf-P85-ibm85n154',
+ 'ibm-not-wf-P85-ibm85n153','ibm-not-wf-P85-ibm85n152',
+ 'ibm-not-wf-P85-ibm85n151','ibm-not-wf-P85-ibm85n150',
+ 'ibm-not-wf-P85-ibm85n15','ibm-not-wf-P85-ibm85n149',
+ 'ibm-not-wf-P85-ibm85n148','ibm-not-wf-P85-ibm85n147',
+ 'ibm-not-wf-P85-ibm85n146','ibm-not-wf-P85-ibm85n145',
+ 'ibm-not-wf-P85-ibm85n144','ibm-not-wf-P85-ibm85n143',
+ 'ibm-not-wf-P85-ibm85n142','ibm-not-wf-P85-ibm85n141',
+ 'ibm-not-wf-P85-ibm85n140','ibm-not-wf-P85-ibm85n14',
+ 'ibm-not-wf-P85-ibm85n139','ibm-not-wf-P85-ibm85n138',
+ 'ibm-not-wf-P85-ibm85n137','ibm-not-wf-P85-ibm85n136',
+ 'ibm-not-wf-P85-ibm85n135','ibm-not-wf-P85-ibm85n134',
+ 'ibm-not-wf-P85-ibm85n133','ibm-not-wf-P85-ibm85n132',
+ 'ibm-not-wf-P85-ibm85n131','ibm-not-wf-P85-ibm85n130',
+ 'ibm-not-wf-P85-ibm85n13','ibm-not-wf-P85-ibm85n129',
+ 'ibm-not-wf-P85-ibm85n128','ibm-not-wf-P85-ibm85n127',
+ 'ibm-not-wf-P85-ibm85n126','ibm-not-wf-P85-ibm85n125',
+ 'ibm-not-wf-P85-ibm85n124','ibm-not-wf-P85-ibm85n123',
+ 'ibm-not-wf-P85-ibm85n122','ibm-not-wf-P85-ibm85n121',
+ 'ibm-not-wf-P85-ibm85n120','ibm-not-wf-P85-ibm85n12',
+ 'ibm-not-wf-P85-ibm85n119','ibm-not-wf-P85-ibm85n118',
+ 'ibm-not-wf-P85-ibm85n117','ibm-not-wf-P85-ibm85n116',
+ 'ibm-not-wf-P85-ibm85n115','ibm-not-wf-P85-ibm85n114',
+ 'ibm-not-wf-P85-ibm85n113','ibm-not-wf-P85-ibm85n112',
+ 'ibm-not-wf-P85-ibm85n111','ibm-not-wf-P85-ibm85n110',
+ 'ibm-not-wf-P85-ibm85n11','ibm-not-wf-P85-ibm85n109',
+ 'ibm-not-wf-P85-ibm85n108','ibm-not-wf-P85-ibm85n107',
+ 'ibm-not-wf-P85-ibm85n106','ibm-not-wf-P85-ibm85n105',
+ 'ibm-not-wf-P85-ibm85n104','ibm-not-wf-P85-ibm85n103',
+ 'ibm-not-wf-P85-ibm85n102','ibm-not-wf-P85-ibm85n101',
+ 'ibm-not-wf-P85-ibm85n100','ibm-not-wf-P85-ibm85n10',
+ 'ibm-not-wf-P85-ibm85n09','ibm-not-wf-P85-ibm85n08',
+ 'ibm-not-wf-P85-ibm85n07','ibm-not-wf-P85-ibm85n06',
+ 'ibm-not-wf-P85-ibm85n05','ibm-not-wf-P85-ibm85n04',
+ 'ibm-not-wf-P85-ibm85n03','ibm-not-wf-P85-ibm85n02',
+ 'ibm-not-wf-P85-ibm85n01','ibm-not-wf-P83-ibm83n06',
+ 'ibm-not-wf-P83-ibm83n05','ibm-not-wf-P83-ibm83n04',
+ 'ibm-not-wf-P83-ibm83n03','ibm-not-wf-P83-ibm83n02',
+ 'ibm-not-wf-P83-ibm83n01','ibm-not-wf-P82-ibm82n08',
+ 'ibm-not-wf-P82-ibm82n07','ibm-not-wf-P82-ibm82n06',
+ 'ibm-not-wf-P82-ibm82n05','ibm-not-wf-P82-ibm82n04',
+ 'ibm-not-wf-P82-ibm82n03','ibm-not-wf-P82-ibm82n02',
+ 'ibm-not-wf-P82-ibm82n01','ibm-not-wf-P81-ibm81n09',
+ 'ibm-not-wf-P81-ibm81n08','ibm-not-wf-P81-ibm81n07',
+ 'ibm-not-wf-P81-ibm81n06','ibm-not-wf-P81-ibm81n05',
+ 'ibm-not-wf-P81-ibm81n04','ibm-not-wf-P81-ibm81n03',
+ 'ibm-not-wf-P81-ibm81n02','ibm-not-wf-P81-ibm81n01',
+ 'ibm-not-wf-P80-ibm80n06','ibm-not-wf-P80-ibm80n05',
+ 'ibm-not-wf-P80-ibm80n04','ibm-not-wf-P80-ibm80n03',
+ 'ibm-not-wf-P80-ibm80n02','ibm-not-wf-P80-ibm80n01',
+ 'ibm-not-wf-P79-ibm79n02','ibm-not-wf-P79-ibm79n01',
+ 'ibm-not-wf-P78-ibm78n02','ibm-not-wf-P78-ibm78n01',
+ 'ibm-not-wf-P77-ibm77n04','ibm-not-wf-P77-ibm77n03',
+ 'ibm-not-wf-P77-ibm77n02','ibm-not-wf-P77-ibm77n01',
+ 'ibm-not-wf-P76-ibm76n07','ibm-not-wf-P76-ibm76n06',
+ 'ibm-not-wf-P76-ibm76n05','ibm-not-wf-P76-ibm76n04',
+ 'ibm-not-wf-P76-ibm76n03','ibm-not-wf-P76-ibm76n02',
+ 'ibm-not-wf-P76-ibm76n01','ibm-not-wf-P75-ibm75n13',
+ 'ibm-not-wf-P75-ibm75n12','ibm-not-wf-P75-ibm75n11',
+ 'ibm-not-wf-P75-ibm75n10','ibm-not-wf-P75-ibm75n09',
+ 'ibm-not-wf-P75-ibm75n08','ibm-not-wf-P75-ibm75n07',
+ 'ibm-not-wf-P75-ibm75n06','ibm-not-wf-P75-ibm75n05',
+ 'ibm-not-wf-P75-ibm75n04','ibm-not-wf-P75-ibm75n03',
+ 'ibm-not-wf-P75-ibm75n02','ibm-not-wf-P75-ibm75n01',
+ 'ibm-not-wf-P74-ibm74n01','ibm-not-wf-P73-ibm73n03',
+ 'ibm-not-wf-P73-ibm73n01','ibm-not-wf-P72-ibm72n09',
+ 'ibm-not-wf-P72-ibm72n08','ibm-not-wf-P72-ibm72n07',
+ 'ibm-not-wf-P72-ibm72n06','ibm-not-wf-P72-ibm72n05',
+ 'ibm-not-wf-P72-ibm72n04','ibm-not-wf-P72-ibm72n03',
+ 'ibm-not-wf-P72-ibm72n02','ibm-not-wf-P72-ibm72n01',
+ 'ibm-not-wf-P71-ibm71n08','ibm-not-wf-P71-ibm71n07',
+ 'ibm-not-wf-P71-ibm71n06','ibm-not-wf-P71-ibm71n05',
+ 'ibm-not-wf-P71-ibm71n04','ibm-not-wf-P71-ibm71n03',
+ 'ibm-not-wf-P71-ibm71n02','ibm-not-wf-P71-ibm71n01',
+ 'ibm-not-wf-P71-ibm70n01','ibm-not-wf-P69-ibm69n07',
+ 'ibm-not-wf-P69-ibm69n06','ibm-not-wf-P69-ibm69n05',
+ 'ibm-not-wf-P69-ibm69n04','ibm-not-wf-P69-ibm69n03',
+ 'ibm-not-wf-P69-ibm69n02','ibm-not-wf-P69-ibm69n01',
+ 'ibm-not-wf-P68-ibm68n10','ibm-not-wf-P68-ibm68n09',
+ 'ibm-not-wf-P68-ibm68n08','ibm-not-wf-P68-ibm68n07',
+ 'ibm-not-wf-P68-ibm68n06','ibm-not-wf-P68-ibm68n05',
+ 'ibm-not-wf-P68-ibm68n04','ibm-not-wf-P68-ibm68n03',
+ 'ibm-not-wf-P68-ibm68n02','ibm-not-wf-P68-ibm68n01',
+ 'ibm-not-wf-P66-ibm66n15','ibm-not-wf-P66-ibm66n14',
+ 'ibm-not-wf-P66-ibm66n13','ibm-not-wf-P66-ibm66n12',
+ 'ibm-not-wf-P66-ibm66n11','ibm-not-wf-P66-ibm66n10',
+ 'ibm-not-wf-P66-ibm66n09','ibm-not-wf-P66-ibm66n08',
+ 'ibm-not-wf-P66-ibm66n07','ibm-not-wf-P66-ibm66n06',
+ 'ibm-not-wf-P66-ibm66n05','ibm-not-wf-P66-ibm66n04',
+ 'ibm-not-wf-P66-ibm66n03','ibm-not-wf-P66-ibm66n02',
+ 'ibm-not-wf-P66-ibm66n01','ibm-not-wf-P65-ibm65n02',
+ 'ibm-not-wf-P65-ibm65n01','ibm-not-wf-P64-ibm64n03',
+ 'ibm-not-wf-P64-ibm64n02','ibm-not-wf-P64-ibm64n01',
+ 'ibm-not-wf-P63-ibm63n07','ibm-not-wf-P63-ibm63n06',
+ 'ibm-not-wf-P63-ibm63n05','ibm-not-wf-P63-ibm63n04',
+ 'ibm-not-wf-P63-ibm63n03','ibm-not-wf-P63-ibm63n02',
+ 'ibm-not-wf-P63-ibm63n01','ibm-not-wf-P62-ibm62n08',
+ 'ibm-not-wf-P62-ibm62n07','ibm-not-wf-P62-ibm62n06',
+ 'ibm-not-wf-P62-ibm62n05','ibm-not-wf-P62-ibm62n04',
+ 'ibm-not-wf-P62-ibm62n03','ibm-not-wf-P62-ibm62n02',
+ 'ibm-not-wf-P62-ibm62n01','ibm-not-wf-P61-ibm61n01',
+ 'ibm-not-wf-P60-ibm60n08','ibm-not-wf-P60-ibm60n07',
+ 'ibm-not-wf-P60-ibm60n06','ibm-not-wf-P60-ibm60n05',
+ 'ibm-not-wf-P60-ibm60n04','ibm-not-wf-P60-ibm60n03',
+ 'ibm-not-wf-P60-ibm60n02','ibm-not-wf-P60-ibm60n01',
+ 'ibm-not-wf-P59-ibm59n06','ibm-not-wf-P59-ibm59n05',
+ 'ibm-not-wf-P59-ibm59n04','ibm-not-wf-P59-ibm59n03',
+ 'ibm-not-wf-P59-ibm59n02','ibm-not-wf-P59-ibm59n01',
+ 'ibm-not-wf-P58-ibm58n08','ibm-not-wf-P58-ibm58n07',
+ 'ibm-not-wf-P58-ibm58n06','ibm-not-wf-P58-ibm58n05',
+ 'ibm-not-wf-P58-ibm58n04','ibm-not-wf-P58-ibm58n03',
+ 'ibm-not-wf-P58-ibm58n02','ibm-not-wf-P58-ibm58n01',
+ 'ibm-not-wf-P57-ibm57n01','ibm-not-wf-P56-ibm56n07',
+ 'ibm-not-wf-P56-ibm56n06','ibm-not-wf-P56-ibm56n05',
+ 'ibm-not-wf-P56-ibm56n04','ibm-not-wf-P56-ibm56n03',
+ 'ibm-not-wf-P56-ibm56n02','ibm-not-wf-P56-ibm56n01',
+ 'ibm-not-wf-P55-ibm55n03','ibm-not-wf-P55-ibm55n02',
+ 'ibm-not-wf-P55-ibm55n01','ibm-not-wf-P54-ibm54n02',
+ 'ibm-not-wf-P54-ibm54n01','ibm-not-wf-P53-ibm53n08',
+ 'ibm-not-wf-P53-ibm53n07','ibm-not-wf-P53-ibm53n06',
+ 'ibm-not-wf-P53-ibm53n05','ibm-not-wf-P53-ibm53n04',
+ 'ibm-not-wf-P53-ibm53n03','ibm-not-wf-P53-ibm53n02',
+ 'ibm-not-wf-P53-ibm53n01','ibm-not-wf-P52-ibm52n06',
+ 'ibm-not-wf-P52-ibm52n05','ibm-not-wf-P52-ibm52n04',
+ 'ibm-not-wf-P52-ibm52n03','ibm-not-wf-P52-ibm52n02',
+ 'ibm-not-wf-P52-ibm52n01','ibm-not-wf-P51-ibm51n07',
+ 'ibm-not-wf-P51-ibm51n06','ibm-not-wf-P51-ibm51n05',
+ 'ibm-not-wf-P51-ibm51n04','ibm-not-wf-P51-ibm51n03',
+ 'ibm-not-wf-P51-ibm51n02','ibm-not-wf-P51-ibm51n01',
+ 'ibm-not-wf-P50-ibm50n07','ibm-not-wf-P50-ibm50n06',
+ 'ibm-not-wf-P50-ibm50n05','ibm-not-wf-P50-ibm50n04',
+ 'ibm-not-wf-P50-ibm50n03','ibm-not-wf-P50-ibm50n02',
+ 'ibm-not-wf-P50-ibm50n01','ibm-not-wf-P49-ibm49n06',
+ 'ibm-not-wf-P49-ibm49n05','ibm-not-wf-P49-ibm49n04',
+ 'ibm-not-wf-P49-ibm49n03','ibm-not-wf-P49-ibm49n02',
+ 'ibm-not-wf-P49-ibm49n01','ibm-not-wf-P48-ibm48n07',
+ 'ibm-not-wf-P48-ibm48n06','ibm-not-wf-P48-ibm48n05',
+ 'ibm-not-wf-P48-ibm48n04','ibm-not-wf-P48-ibm48n03',
+ 'ibm-not-wf-P48-ibm48n02','ibm-not-wf-P48-ibm48n01',
+ 'ibm-not-wf-P47-ibm47n06','ibm-not-wf-P47-ibm47n05',
+ 'ibm-not-wf-P47-ibm47n04','ibm-not-wf-P47-ibm47n03',
+ 'ibm-not-wf-P47-ibm47n02','ibm-not-wf-P47-ibm47n01',
+ 'ibm-not-wf-P46-ibm46n05','ibm-not-wf-P46-ibm46n04',
+ 'ibm-not-wf-P46-ibm46n03','ibm-not-wf-P46-ibm46n02',
+ 'ibm-not-wf-P46-ibm46n01','ibm-not-wf-P45-ibm45n09',
+ 'ibm-not-wf-P45-ibm45n08','ibm-not-wf-P45-ibm45n07',
+ 'ibm-not-wf-P45-ibm45n06','ibm-not-wf-P45-ibm45n05',
+ 'ibm-not-wf-P45-ibm45n04','ibm-not-wf-P45-ibm45n03',
+ 'ibm-not-wf-P45-ibm45n02','ibm-not-wf-P45-ibm45n01',
+ 'ibm-not-wf-P44-ibm44n04','ibm-not-wf-P44-ibm44n03',
+ 'ibm-not-wf-P44-ibm44n02','ibm-not-wf-P44-ibm44n01',
+ 'ibm-not-wf-P43-ibm43n05','ibm-not-wf-P43-ibm43n04',
+ 'ibm-not-wf-P43-ibm43n02','ibm-not-wf-P43-ibm43n01',
+ 'ibm-not-wf-P42-ibm42n05','ibm-not-wf-P42-ibm42n04',
+ 'ibm-not-wf-P42-ibm42n03','ibm-not-wf-P42-ibm42n02',
+ 'ibm-not-wf-P42-ibm42n01','ibm-not-wf-P41-ibm41n14',
+ 'ibm-not-wf-P41-ibm41n13','ibm-not-wf-P41-ibm41n12',
+ 'ibm-not-wf-P41-ibm41n11','ibm-not-wf-P41-ibm41n10',
+ 'ibm-not-wf-P41-ibm41n09','ibm-not-wf-P41-ibm41n08',
+ 'ibm-not-wf-P41-ibm41n07','ibm-not-wf-P41-ibm41n06',
+ 'ibm-not-wf-P41-ibm41n05','ibm-not-wf-P41-ibm41n04',
+ 'ibm-not-wf-P41-ibm41n03','ibm-not-wf-P41-ibm41n02',
+ 'ibm-not-wf-P41-ibm41n01','ibm-not-wf-P40-ibm40n05',
+ 'ibm-not-wf-P40-ibm40n04','ibm-not-wf-P40-ibm40n03',
+ 'ibm-not-wf-P40-ibm40n02','ibm-not-wf-P40-ibm40n01',
+ 'ibm-not-wf-P39-ibm39n06','ibm-not-wf-P39-ibm39n05',
+ 'ibm-not-wf-P39-ibm39n04','ibm-not-wf-P39-ibm39n03',
+ 'ibm-not-wf-P39-ibm39n02','ibm-not-wf-P39-ibm39n01',
+ 'ibm-not-wf-P32-ibm32n09','ibm-not-wf-P32-ibm32n08',
+ 'ibm-not-wf-P32-ibm32n07','ibm-not-wf-P32-ibm32n06',
+ 'ibm-not-wf-P32-ibm32n05','ibm-not-wf-P32-ibm32n04',
+ 'ibm-not-wf-P32-ibm32n03','ibm-not-wf-P32-ibm32n02',
+ 'ibm-not-wf-P32-ibm32n01','ibm-not-wf-P31-ibm31n01',
+ 'ibm-not-wf-P30-ibm30n01','ibm-not-wf-P29-ibm29n07',
+ 'ibm-not-wf-P29-ibm29n06','ibm-not-wf-P29-ibm29n05',
+ 'ibm-not-wf-P29-ibm29n04','ibm-not-wf-P29-ibm29n03',
+ 'ibm-not-wf-P29-ibm29n02','ibm-not-wf-P29-ibm29n01',
+ 'ibm-not-wf-P28a-ibm28an01','ibm-not-wf-P28-ibm28n08',
+ 'ibm-not-wf-P28-ibm28n07','ibm-not-wf-P28-ibm28n06',
+ 'ibm-not-wf-P28-ibm28n05','ibm-not-wf-P28-ibm28n04',
+ 'ibm-not-wf-P28-ibm28n03','ibm-not-wf-P28-ibm28n02',
+ 'ibm-not-wf-P28-ibm28n01','ibm-not-wf-P27-ibm27n01',
+ 'ibm-not-wf-P26-ibm26n01','ibm-not-wf-P25-ibm25n02',
+ 'ibm-not-wf-P25-ibm25n01','ibm-not-wf-P24-ibm24n09',
+ 'ibm-not-wf-P24-ibm24n08','ibm-not-wf-P24-ibm24n07',
+ 'ibm-not-wf-P24-ibm24n06','ibm-not-wf-P24-ibm24n05',
+ 'ibm-not-wf-P24-ibm24n04','ibm-not-wf-P24-ibm24n03',
+ 'ibm-not-wf-P24-ibm24n02','ibm-not-wf-P24-ibm24n01',
+ 'ibm-not-wf-P23-ibm23n06','ibm-not-wf-P23-ibm23n05',
+ 'ibm-not-wf-P23-ibm23n04','ibm-not-wf-P23-ibm23n03',
+ 'ibm-not-wf-P23-ibm23n02','ibm-not-wf-P23-ibm23n01',
+ 'ibm-not-wf-P22-ibm22n03','ibm-not-wf-P22-ibm22n02',
+ 'ibm-not-wf-P22-ibm22n01','ibm-not-wf-P21-ibm21n03',
+ 'ibm-not-wf-P21-ibm21n02','ibm-not-wf-P21-ibm21n01',
+ 'ibm-not-wf-P20-ibm20n01','ibm-not-wf-P19-ibm19n03',
+ 'ibm-not-wf-P19-ibm19n02','ibm-not-wf-P19-ibm19n01',
+ 'ibm-not-wf-P18-ibm18n02','ibm-not-wf-P18-ibm18n01',
+ 'ibm-not-wf-P17-ibm17n04','ibm-not-wf-P17-ibm17n03',
+ 'ibm-not-wf-P17-ibm17n02','ibm-not-wf-P17-ibm17n01',
+ 'ibm-not-wf-P16-ibm16n04','ibm-not-wf-P16-ibm16n03',
+ 'ibm-not-wf-P16-ibm16n02','ibm-not-wf-P16-ibm16n01',
+ 'ibm-not-wf-P15-ibm15n04','ibm-not-wf-P15-ibm15n03',
+ 'ibm-not-wf-P15-ibm15n02','ibm-not-wf-P15-ibm15n01',
+ 'ibm-not-wf-P14-ibm14n03','ibm-not-wf-P14-ibm14n02',
+ 'ibm-not-wf-P14-ibm14n01','ibm-not-wf-P13-ibm13n03',
+ 'ibm-not-wf-P13-ibm13n02','ibm-not-wf-P13-ibm13n01',
+ 'ibm-not-wf-P12-ibm12n03','ibm-not-wf-P12-ibm12n02',
+ 'ibm-not-wf-P12-ibm12n01','ibm-not-wf-P11-ibm11n04',
+ 'ibm-not-wf-P11-ibm11n03','ibm-not-wf-P11-ibm11n02',
+ 'ibm-not-wf-P11-ibm11n01','ibm-not-wf-P10-ibm10n08',
+ 'ibm-not-wf-P10-ibm10n07','ibm-not-wf-P10-ibm10n06',
+ 'ibm-not-wf-P10-ibm10n05','ibm-not-wf-P10-ibm10n04',
+ 'ibm-not-wf-P10-ibm10n03','ibm-not-wf-P10-ibm10n02',
+ 'ibm-not-wf-P10-ibm10n01','ibm-not-wf-P09-ibm09n04',
+ 'ibm-not-wf-P09-ibm09n03','ibm-not-wf-P09-ibm09n02',
+ 'ibm-not-wf-P09-ibm09n01','ibm-not-wf-P05-ibm05n03',
+ 'ibm-not-wf-P05-ibm05n02','ibm-not-wf-P05-ibm05n01',
+ 'ibm-not-wf-P04-ibm04n18','ibm-not-wf-P04-ibm04n17',
+ 'ibm-not-wf-P04-ibm04n16','ibm-not-wf-P04-ibm04n15',
+ 'ibm-not-wf-P04-ibm04n14','ibm-not-wf-P04-ibm04n13',
+ 'ibm-not-wf-P04-ibm04n12','ibm-not-wf-P04-ibm04n11',
+ 'ibm-not-wf-P04-ibm04n10','ibm-not-wf-P04-ibm04n09',
+ 'ibm-not-wf-P04-ibm04n08','ibm-not-wf-P04-ibm04n07',
+ 'ibm-not-wf-P04-ibm04n06','ibm-not-wf-P04-ibm04n05',
+ 'ibm-not-wf-P04-ibm04n04','ibm-not-wf-P04-ibm04n03',
+ 'ibm-not-wf-P04-ibm04n02','ibm-not-wf-P04-ibm04n01',
+ 'ibm-not-wf-P03-ibm03n01','ibm-not-wf-P02-ibm02n33',
+ 'ibm-not-wf-P02-ibm02n32','ibm-not-wf-P02-ibm02n31',
+ 'ibm-not-wf-P02-ibm02n30','ibm-not-wf-P02-ibm02n29',
+ 'ibm-not-wf-P02-ibm02n28','ibm-not-wf-P02-ibm02n27',
+ 'ibm-not-wf-P02-ibm02n26','ibm-not-wf-P02-ibm02n25',
+ 'ibm-not-wf-P02-ibm02n24','ibm-not-wf-P02-ibm02n23',
+ 'ibm-not-wf-P02-ibm02n22','ibm-not-wf-P02-ibm02n21',
+ 'ibm-not-wf-P02-ibm02n20','ibm-not-wf-P02-ibm02n19',
+ 'ibm-not-wf-P02-ibm02n18','ibm-not-wf-P02-ibm02n17',
+ 'ibm-not-wf-P02-ibm02n16','ibm-not-wf-P02-ibm02n15',
+ 'ibm-not-wf-P02-ibm02n14','ibm-not-wf-P02-ibm02n13',
+ 'ibm-not-wf-P02-ibm02n12','ibm-not-wf-P02-ibm02n11',
+ 'ibm-not-wf-P02-ibm02n10','ibm-not-wf-P02-ibm02n09',
+ 'ibm-not-wf-P02-ibm02n08','ibm-not-wf-P02-ibm02n07',
+ 'ibm-not-wf-P02-ibm02n06','ibm-not-wf-P02-ibm02n05',
+ 'ibm-not-wf-P02-ibm02n04','ibm-not-wf-P02-ibm02n03',
+ 'ibm-not-wf-P02-ibm02n02','ibm-not-wf-P02-ibm02n01',
+ 'ibm-not-wf-P01-ibm01n03','ibm-not-wf-P01-ibm01n02',
+ 'ibm-not-wf-P01-ibm01n01'].
+
+'ibm-valid'(suite) ->
+ %% 149 test cases
+ ['ibm-valid-P89-ibm89v01','ibm-valid-P88-ibm88v01',
+ 'ibm-valid-P87-ibm87v01','ibm-valid-P86-ibm86v01',
+ 'ibm-valid-P85-ibm85v01','ibm-valid-P82-ibm82v01',
+ 'ibm-valid-P79-ibm79v01','ibm-valid-P78-ibm78v01',
+ 'ibm-valid-P70-ibm70v01','ibm-valid-P69-ibm69v02',
+ 'ibm-valid-P69-ibm69v01','ibm-valid-P68-ibm68v02',
+ 'ibm-valid-P68-ibm68v01','ibm-valid-P67-ibm67v01',
+ 'ibm-valid-P66-ibm66v01','ibm-valid-P65-ibm65v02',
+ 'ibm-valid-P65-ibm65v01','ibm-valid-P64-ibm64v03',
+ 'ibm-valid-P64-ibm64v02','ibm-valid-P64-ibm64v01',
+ 'ibm-valid-P63-ibm63v05','ibm-valid-P63-ibm63v04',
+ 'ibm-valid-P63-ibm63v03','ibm-valid-P63-ibm63v02',
+ 'ibm-valid-P63-ibm63v01','ibm-valid-P62-ibm62v05',
+ 'ibm-valid-P62-ibm62v04','ibm-valid-P62-ibm62v03',
+ 'ibm-valid-P62-ibm62v02','ibm-valid-P62-ibm62v01',
+ 'ibm-valid-P61-ibm61v02','ibm-valid-P61-ibm61v01',
+ 'ibm-valid-P60-ibm60v04','ibm-valid-P60-ibm60v03',
+ 'ibm-valid-P60-ibm60v02','ibm-valid-P60-ibm60v01',
+ 'ibm-valid-P59-ibm59v02','ibm-valid-P59-ibm59v01',
+ 'ibm-valid-P58-ibm58v02','ibm-valid-P58-ibm58v01',
+ 'ibm-valid-P57-ibm57v01','ibm-valid-P56-ibm56v10',
+ 'ibm-valid-P56-ibm56v09','ibm-valid-P56-ibm56v08',
+ 'ibm-valid-P56-ibm56v07','ibm-valid-P56-ibm56v06',
+ 'ibm-valid-P56-ibm56v05','ibm-valid-P56-ibm56v04',
+ 'ibm-valid-P56-ibm56v03','ibm-valid-P56-ibm56v02',
+ 'ibm-valid-P56-ibm56v01','ibm-valid-P55-ibm55v01',
+ 'ibm-valid-P54-ibm54v03','ibm-valid-P54-ibm54v02',
+ 'ibm-valid-P54-ibm54v01','ibm-valid-P52-ibm52v01',
+ 'ibm-valid-P51-ibm51v02','ibm-valid-P51-ibm51v01',
+ 'ibm-valid-P50-ibm50v01','ibm-valid-P49-ibm49v01',
+ 'ibm-valid-P47-ibm47v01','ibm-valid-P45-ibm45v01',
+ 'ibm-valid-P44-ibm44v01','ibm-valid-P43-ibm43v01',
+ 'ibm-valid-P42-ibm42v01','ibm-valid-P41-ibm41v01',
+ 'ibm-valid-P40-ibm40v01','ibm-valid-P39-ibm39v01',
+ 'ibm-valid-P38-ibm38v01','ibm-valid-P37-ibm37v01',
+ 'ibm-valid-P36-ibm36v01','ibm-valid-P35-ibm35v01',
+ 'ibm-valid-P34-ibm34v01','ibm-valid-P33-ibm33v01',
+ 'ibm-valid-P32-ibm32v04','ibm-valid-P32-ibm32v03',
+ 'ibm-valid-P32-ibm32v02','ibm-valid-P32-ibm32v01',
+ 'ibm-valid-P31-ibm31v01','ibm-valid-P30-ibm30v02',
+ 'ibm-valid-P30-ibm30v01','ibm-valid-P29-ibm29v02',
+ 'ibm-valid-P29-ibm29v01','ibm-valid-P28-ibm28v02',
+ 'ibm-valid-P28-ibm28v01','ibm-valid-P27-ibm27v03',
+ 'ibm-valid-P27-ibm27v02','ibm-valid-P27-ibm27v01',
+ 'ibm-valid-P26-ibm26v01','ibm-valid-P25-ibm25v04',
+ 'ibm-valid-P25-ibm25v03','ibm-valid-P25-ibm25v02',
+ 'ibm-valid-P25-ibm25v01','ibm-valid-P24-ibm24v02',
+ 'ibm-valid-P24-ibm24v01','ibm-valid-P23-ibm23v06',
+ 'ibm-valid-P23-ibm23v05','ibm-valid-P23-ibm23v04',
+ 'ibm-valid-P23-ibm23v03','ibm-valid-P23-ibm23v02',
+ 'ibm-valid-P23-ibm23v01','ibm-valid-P22-ibm22v07',
+ 'ibm-valid-P22-ibm22v06','ibm-valid-P22-ibm22v05',
+ 'ibm-valid-P22-ibm22v04','ibm-valid-P22-ibm22v03',
+ 'ibm-valid-P22-ibm22v02','ibm-valid-P22-ibm22v01',
+ 'ibm-valid-P21-ibm21v01','ibm-valid-P20-ibm20v02',
+ 'ibm-valid-P20-ibm20v01','ibm-valid-P19-ibm19v01',
+ 'ibm-valid-P18-ibm18v01','ibm-valid-P17-ibm17v01',
+ 'ibm-valid-P16-ibm16v03','ibm-valid-P16-ibm16v02',
+ 'ibm-valid-P16-ibm16v01','ibm-valid-P15-ibm15v04',
+ 'ibm-valid-P15-ibm15v03','ibm-valid-P15-ibm15v02',
+ 'ibm-valid-P15-ibm15v01','ibm-valid-P14-ibm14v03',
+ 'ibm-valid-P14-ibm14v02','ibm-valid-P14-ibm14v01',
+ 'ibm-valid-P13-ibm13v01','ibm-valid-P12-ibm12v04',
+ 'ibm-valid-P12-ibm12v03','ibm-valid-P12-ibm12v02',
+ 'ibm-valid-P12-ibm12v01','ibm-valid-P11-ibm11v04',
+ 'ibm-valid-P11-ibm11v03','ibm-valid-P11-ibm11v02',
+ 'ibm-valid-P11-ibm11v01','ibm-valid-P10-ibm10v08',
+ 'ibm-valid-P10-ibm10v07','ibm-valid-P10-ibm10v06',
+ 'ibm-valid-P10-ibm10v05','ibm-valid-P10-ibm10v04',
+ 'ibm-valid-P10-ibm10v03','ibm-valid-P10-ibm10v02',
+ 'ibm-valid-P10-ibm10v01','ibm-valid-P09-ibm09v05',
+ 'ibm-valid-P09-ibm09v04','ibm-valid-P09-ibm09v03',
+ 'ibm-valid-P09-ibm09v02','ibm-valid-P09-ibm09v01',
+ 'ibm-valid-P03-ibm03v01','ibm-valid-P02-ibm02v01',
+ 'ibm-valid-P01-ibm01v01'].
+
+%%----------------------------------------------------------------------
+%% Initializations
+%%----------------------------------------------------------------------
+
+init_per_suite(doc) ->
+ ["Starts the test suite"];
+init_per_suite(Config) ->
+ Dog=test_server:timetrap({minutes,10}),
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line ok=erl_tar:extract("ibm.tgz",[compressed]),
+ ?line ok=erl_tar:extract("japanese.tgz",[compressed]),
+ ?line ok=erl_tar:extract("oasis.tgz",[compressed]),
+ ?line ok=erl_tar:extract("sun.tgz",[compressed]),
+ ?line ok=erl_tar:extract("xmltest.tgz",[compressed]),
+ ?line ok = change_mode(["ibm","japanese","oasis",
+ "sun","xmltest"]),
+ [{watchdog, Dog}|Config].
+
+
+-ifndef(dont_rm_test_dirs).
+end_per_suite(doc) ->
+ ["Stops the test suite"];
+end_per_suite(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line ok=rm_files(["ibm","japanese","oasis","sun","xmltest"]),
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ lists:keydelete(watchdog,1,Config).
+
+-else.
+end_per_suite(doc) ->
+ ["Stops the test suite"];
+end_per_suite(Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ lists:keydelete(watchdog,1,Config).
+-endif.
+
+%% initialization before each testcase
+init_per_testcase(_TestCase,Config) ->
+ io:format("Config:~n~p",[Config]),
+ ?line {ok, _} = file:read_file_info(filename:join([?config(priv_dir,Config)])),
+ ?line code:add_patha(?config(priv_dir,Config)),
+ Dog=test_server:timetrap({minutes,10}),
+ [{watchdog, Dog}|Config].
+
+
+%% clean up after each testcase
+end_per_testcase(_Func,Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ ok.
+
+
+%%----------------------------------------------------------------------
+%% Test cases
+%%----------------------------------------------------------------------
+'v-pe02'(suite) -> [];
+'v-pe02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-pe02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'v-pe03'(suite) -> [];
+'v-pe03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-pe03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'v-pe00'(suite) -> [];
+'v-pe00'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-pe00.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'v-lang06'(suite) -> [];
+'v-lang06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-lang06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'v-lang05'(suite) -> [];
+'v-lang05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-lang05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'v-lang04'(suite) -> [];
+'v-lang04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-lang04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'v-lang03'(suite) -> [];
+'v-lang03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-lang03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'v-lang02'(suite) -> [];
+'v-lang02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-lang02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'v-lang01'(suite) -> [];
+'v-lang01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-lang01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'v-sgml01'(suite) -> [];
+'v-sgml01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"v-sgml01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sa05'(suite) -> [];
+'sa05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sa05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sa04'(suite) -> [];
+'sa04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sa04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sa03'(suite) -> [];
+'sa03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sa03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sa02'(suite) -> [];
+'sa02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sa02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sa01'(suite) -> [];
+'sa01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sa01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'required00'(suite) -> [];
+'required00'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"required00.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional'(suite) -> [];
+'optional'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'notation01'(suite) -> [];
+'notation01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"notation01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-sa04'(suite) -> [];
+'not-sa04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"not-sa04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-sa03'(suite) -> [];
+'not-sa03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"not-sa03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-sa02'(suite) -> [];
+'not-sa02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"not-sa02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-sa01'(suite) -> [];
+'not-sa01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"not-sa01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ext02'(suite) -> [];
+'ext02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"ext02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ext01'(suite) -> [];
+'ext01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"ext01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'element'(suite) -> [];
+'element'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"element.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'dtd01'(suite) -> [];
+'dtd01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"dtd01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'dtd00'(suite) -> [];
+'dtd00'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"dtd00.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'pe01'(suite) -> [];
+'pe01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"pe01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+%%----------------------------------------------------------------------
+
+'empty'(suite) -> [];
+'empty'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"empty.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'utf16l'(suite) -> [];
+'utf16l'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"utf16l.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'utf16b'(suite) -> [];
+'utf16b'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"utf16b.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr16'(suite) -> [];
+'attr16'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr16.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr15'(suite) -> [];
+'attr15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr14'(suite) -> [];
+'attr14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr13'(suite) -> [];
+'attr13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr12'(suite) -> [];
+'attr12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr11'(suite) -> [];
+'attr11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr10'(suite) -> [];
+'attr10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr09'(suite) -> [];
+'attr09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr08'(suite) -> [];
+'attr08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr07'(suite) -> [];
+'attr07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr06'(suite) -> [];
+'attr06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr05'(suite) -> [];
+'attr05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr04'(suite) -> [];
+'attr04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr03'(suite) -> [];
+'attr03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr02'(suite) -> [];
+'attr02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attr01'(suite) -> [];
+'attr01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attr01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'root'(suite) -> [];
+'root'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"root.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-required02'(suite) -> [];
+'inv-required02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-required02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-required01'(suite) -> [];
+'inv-required01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-required01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-required00'(suite) -> [];
+'inv-required00'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-required00.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional25'(suite) -> [];
+'optional25'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional25.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional24'(suite) -> [];
+'optional24'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional24.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional23'(suite) -> [];
+'optional23'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional23.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional22'(suite) -> [];
+'optional22'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional22.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional21'(suite) -> [];
+'optional21'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional21.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional20'(suite) -> [];
+'optional20'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional20.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional14'(suite) -> [];
+'optional14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional13'(suite) -> [];
+'optional13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional12'(suite) -> [];
+'optional12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional11'(suite) -> [];
+'optional11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional10'(suite) -> [];
+'optional10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional09'(suite) -> [];
+'optional09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional08'(suite) -> [];
+'optional08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional07'(suite) -> [];
+'optional07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional06'(suite) -> [];
+'optional06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional05'(suite) -> [];
+'optional05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional04'(suite) -> [];
+'optional04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional03'(suite) -> [];
+'optional03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional02'(suite) -> [];
+'optional02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'optional01'(suite) -> [];
+'optional01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"optional01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa14'(suite) -> [];
+'inv-not-sa14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa13'(suite) -> [];
+'inv-not-sa13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa12'(suite) -> [];
+'inv-not-sa12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa11'(suite) -> [];
+'inv-not-sa11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa10'(suite) -> [];
+'inv-not-sa10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa09'(suite) -> [];
+'inv-not-sa09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa08'(suite) -> [];
+'inv-not-sa08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa07'(suite) -> [];
+'inv-not-sa07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa06'(suite) -> [];
+'inv-not-sa06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa05'(suite) -> [];
+'inv-not-sa05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa04'(suite) -> [];
+'inv-not-sa04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa02'(suite) -> [];
+'inv-not-sa02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-not-sa01'(suite) -> [];
+'inv-not-sa01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-not-sa01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'id09'(suite) -> [];
+'id09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"id09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'id08'(suite) -> [];
+'id08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"id08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'id07'(suite) -> [];
+'id07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"id07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'id06'(suite) -> [];
+'id06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"id06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'id05'(suite) -> [];
+'id05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"id05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'id04'(suite) -> [];
+'id04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"id04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'id03'(suite) -> [];
+'id03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"id03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'id02'(suite) -> [];
+'id02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"id02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'id01'(suite) -> [];
+'id01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"id01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'el06'(suite) -> [];
+'el06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"el06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'el05'(suite) -> [];
+'el05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"el05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'el04'(suite) -> [];
+'el04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"el04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'el03'(suite) -> [];
+'el03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"el03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'el02'(suite) -> [];
+'el02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"el02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'el01'(suite) -> [];
+'el01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"el01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-dtd03'(suite) -> [];
+'inv-dtd03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-dtd03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-dtd02'(suite) -> [];
+'inv-dtd02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-dtd02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'inv-dtd01'(suite) -> [];
+'inv-dtd01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"inv-dtd01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+%%----------------------------------------------------------------------
+
+'sgml13'(suite) -> [];
+'sgml13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml12'(suite) -> [];
+'sgml12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml11'(suite) -> [];
+'sgml11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml10'(suite) -> [];
+'sgml10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml09'(suite) -> [];
+'sgml09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml08'(suite) -> [];
+'sgml08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml07'(suite) -> [];
+'sgml07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml06'(suite) -> [];
+'sgml06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml05'(suite) -> [];
+'sgml05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml04'(suite) -> [];
+'sgml04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml03'(suite) -> [];
+'sgml03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml02'(suite) -> [];
+'sgml02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'sgml01'(suite) -> [];
+'sgml01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"sgml01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'pubid05'(suite) -> [];
+'pubid05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"pubid05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'pubid04'(suite) -> [];
+'pubid04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"pubid04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'pubid03'(suite) -> [];
+'pubid03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"pubid03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'pubid02'(suite) -> [];
+'pubid02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"pubid02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'pubid01'(suite) -> [];
+'pubid01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"pubid01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'pi'(suite) -> [];
+'pi'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"pi.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'encoding07'(suite) -> [];
+'encoding07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"encoding07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'encoding06'(suite) -> [];
+'encoding06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"encoding06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'encoding05'(suite) -> [];
+'encoding05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"encoding05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'encoding04'(suite) -> [];
+'encoding04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"encoding04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'encoding03'(suite) -> [];
+'encoding03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"encoding03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'encoding02'(suite) -> [];
+'encoding02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"encoding02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'encoding01'(suite) -> [];
+'encoding01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"encoding01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'element04'(suite) -> [];
+'element04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"element04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'element03'(suite) -> [];
+'element03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"element03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'element02'(suite) -> [];
+'element02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"element02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'element01'(suite) -> [];
+'element01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"element01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'element00'(suite) -> [];
+'element00'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"element00.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'dtd07'(suite) -> [];
+'dtd07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"dtd07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'dtd05'(suite) -> [];
+'dtd05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"dtd05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'dtd04'(suite) -> [];
+'dtd04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"dtd04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'dtd03'(suite) -> [];
+'dtd03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"dtd03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'dtd02'(suite) -> [];
+'dtd02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"dtd02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'nwf-dtd01'(suite) -> [];
+'nwf-dtd01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"nwf-dtd01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'nwf-dtd00'(suite) -> [];
+'nwf-dtd00'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"nwf-dtd00.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'decl01'(suite) -> [];
+'decl01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"decl01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'content03'(suite) -> [];
+'content03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"content03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'content02'(suite) -> [];
+'content02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"content02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'content01'(suite) -> [];
+'content01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"content01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'cond02'(suite) -> [];
+'cond02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"cond02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'cond01'(suite) -> [];
+'cond01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"cond01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist11'(suite) -> [];
+'attlist11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist10'(suite) -> [];
+'attlist10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist09'(suite) -> [];
+'attlist09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist08'(suite) -> [];
+'attlist08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist07'(suite) -> [];
+'attlist07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist06'(suite) -> [];
+'attlist06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist05'(suite) -> [];
+'attlist05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist04'(suite) -> [];
+'attlist04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist03'(suite) -> [];
+'attlist03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist02'(suite) -> [];
+'attlist02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'attlist01'(suite) -> [];
+'attlist01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"attlist01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa03'(suite) -> [];
+'not-wf-sa03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"not-wf-sa03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+%%----------------------------------------------------------------------
+
+'uri01'(suite) -> [];
+'uri01'(doc) ->
+ ["URI fragments disallowed"];
+'uri01'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),sun,"uri01.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["URI fragments disallowed"]}.
+
+%%----------------------------------------------------------------------
+
+'valid-ext-sa-014'(suite) -> [];
+'valid-ext-sa-014'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-014.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-013'(suite) -> [];
+'valid-ext-sa-013'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-013.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-012'(suite) -> [];
+'valid-ext-sa-012'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-012.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-011'(suite) -> [];
+'valid-ext-sa-011'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-011.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-009'(suite) -> [];
+'valid-ext-sa-009'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-009.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-008'(suite) -> [];
+'valid-ext-sa-008'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-008.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-007'(suite) -> [];
+'valid-ext-sa-007'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-007.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-006'(suite) -> [];
+'valid-ext-sa-006'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-006.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-005'(suite) -> [];
+'valid-ext-sa-005'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-005.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-004'(suite) -> [];
+'valid-ext-sa-004'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-004.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-003'(suite) -> [];
+'valid-ext-sa-003'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-003.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-002'(suite) -> [];
+'valid-ext-sa-002'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-002.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-ext-sa-001'(suite) -> [];
+'valid-ext-sa-001'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-ext-sa-001.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-031'(suite) -> [];
+'valid-not-sa-031'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-031.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-030'(suite) -> [];
+'valid-not-sa-030'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-030.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-029'(suite) -> [];
+'valid-not-sa-029'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-029.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-028'(suite) -> [];
+'valid-not-sa-028'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-028.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-027'(suite) -> [];
+'valid-not-sa-027'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-027.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-026'(suite) -> [];
+'valid-not-sa-026'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-026.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-025'(suite) -> [];
+'valid-not-sa-025'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-025.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-024'(suite) -> [];
+'valid-not-sa-024'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-024.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-023'(suite) -> [];
+'valid-not-sa-023'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-023.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-021'(suite) -> [];
+'valid-not-sa-021'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-021.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-020'(suite) -> [];
+'valid-not-sa-020'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-020.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-019'(suite) -> [];
+'valid-not-sa-019'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-019.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-018'(suite) -> [];
+'valid-not-sa-018'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-018.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-017'(suite) -> [];
+'valid-not-sa-017'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-017.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-016'(suite) -> [];
+'valid-not-sa-016'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-016.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-015'(suite) -> [];
+'valid-not-sa-015'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-015.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-014'(suite) -> [];
+'valid-not-sa-014'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-014.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-013'(suite) -> [];
+'valid-not-sa-013'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-013.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-012'(suite) -> [];
+'valid-not-sa-012'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-012.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-011'(suite) -> [];
+'valid-not-sa-011'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-011.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-010'(suite) -> [];
+'valid-not-sa-010'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-010.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-009'(suite) -> [];
+'valid-not-sa-009'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-009.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-008'(suite) -> [];
+'valid-not-sa-008'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-008.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-007'(suite) -> [];
+'valid-not-sa-007'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-007.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-006'(suite) -> [];
+'valid-not-sa-006'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-006.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-005'(suite) -> [];
+'valid-not-sa-005'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-005.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-004'(suite) -> [];
+'valid-not-sa-004'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-004.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-003'(suite) -> [];
+'valid-not-sa-003'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-003.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-002'(suite) -> [];
+'valid-not-sa-002'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-002.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-not-sa-001'(suite) -> [];
+'valid-not-sa-001'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-not-sa-001.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-119'(suite) -> [];
+'valid-sa-119'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-119.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-118'(suite) -> [];
+'valid-sa-118'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-118.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-117'(suite) -> [];
+'valid-sa-117'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-117.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-116'(suite) -> [];
+'valid-sa-116'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-116.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-115'(suite) -> [];
+'valid-sa-115'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-115.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-114'(suite) -> [];
+'valid-sa-114'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-114.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-113'(suite) -> [];
+'valid-sa-113'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-113.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-112'(suite) -> [];
+'valid-sa-112'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-112.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-111'(suite) -> [];
+'valid-sa-111'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-111.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-110'(suite) -> [];
+'valid-sa-110'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-110.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-109'(suite) -> [];
+'valid-sa-109'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-109.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-108'(suite) -> [];
+'valid-sa-108'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-108.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-107'(suite) -> [];
+'valid-sa-107'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-107.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-106'(suite) -> [];
+'valid-sa-106'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-106.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-105'(suite) -> [];
+'valid-sa-105'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-105.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-104'(suite) -> [];
+'valid-sa-104'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-104.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-103'(suite) -> [];
+'valid-sa-103'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-103.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-102'(suite) -> [];
+'valid-sa-102'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-102.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-101'(suite) -> [];
+'valid-sa-101'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-101.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-100'(suite) -> [];
+'valid-sa-100'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-100.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["recursive xml spec"]}.
+
+'valid-sa-099'(suite) -> [];
+'valid-sa-099'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-099.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-098'(suite) -> [];
+'valid-sa-098'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-098.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-097'(suite) -> [];
+'valid-sa-097'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-097.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-096'(suite) -> [];
+'valid-sa-096'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-096.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-095'(suite) -> [];
+'valid-sa-095'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-095.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-094'(suite) -> [];
+'valid-sa-094'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-094.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-093'(suite) -> [];
+'valid-sa-093'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-093.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-092'(suite) -> [];
+'valid-sa-092'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-092.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-091'(suite) -> [];
+'valid-sa-091'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-091.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-090'(suite) -> [];
+'valid-sa-090'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-090.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-089'(suite) -> [];
+'valid-sa-089'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-089.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-088'(suite) -> [];
+'valid-sa-088'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-088.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-087'(suite) -> [];
+'valid-sa-087'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-087.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-086'(suite) -> [];
+'valid-sa-086'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-086.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-085'(suite) -> [];
+'valid-sa-085'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-085.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-084'(suite) -> [];
+'valid-sa-084'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-084.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-083'(suite) -> [];
+'valid-sa-083'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-083.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-082'(suite) -> [];
+'valid-sa-082'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-082.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-081'(suite) -> [];
+'valid-sa-081'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-081.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-080'(suite) -> [];
+'valid-sa-080'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-080.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-079'(suite) -> [];
+'valid-sa-079'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-079.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-078'(suite) -> [];
+'valid-sa-078'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-078.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-077'(suite) -> [];
+'valid-sa-077'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-077.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-076'(suite) -> [];
+'valid-sa-076'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-076.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-075'(suite) -> [];
+'valid-sa-075'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-075.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-074'(suite) -> [];
+'valid-sa-074'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-074.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-073'(suite) -> [];
+'valid-sa-073'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-073.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-072'(suite) -> [];
+'valid-sa-072'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-072.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-071'(suite) -> [];
+'valid-sa-071'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-071.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-070'(suite) -> [];
+'valid-sa-070'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-070.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-069'(suite) -> [];
+'valid-sa-069'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-069.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-068'(suite) -> [];
+'valid-sa-068'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-068.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-067'(suite) -> [];
+'valid-sa-067'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-067.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-066'(suite) -> [];
+'valid-sa-066'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-066.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-065'(suite) -> [];
+'valid-sa-065'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-065.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-064'(suite) -> [];
+'valid-sa-064'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-064.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Fails to handle UTF-8 encoded names, when they are converted to atoms"]}.
+
+'valid-sa-063'(suite) -> [];
+'valid-sa-063'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-063.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Fails to handle Unicode integer (UTF-8) encoded names, when they are converted to atoms"]}.
+
+'valid-sa-062'(suite) -> [];
+'valid-sa-062'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-062.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-061'(suite) -> [];
+'valid-sa-061'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-061.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-060'(suite) -> [];
+'valid-sa-060'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-060.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-059'(suite) -> [];
+'valid-sa-059'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-059.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-058'(suite) -> [];
+'valid-sa-058'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-058.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-057'(suite) -> [];
+'valid-sa-057'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-057.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-056'(suite) -> [];
+'valid-sa-056'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-056.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-055'(suite) -> [];
+'valid-sa-055'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-055.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-054'(suite) -> [];
+'valid-sa-054'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-054.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-053'(suite) -> [];
+'valid-sa-053'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-053.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-052'(suite) -> [];
+'valid-sa-052'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-052.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-051'(suite) -> [];
+'valid-sa-051'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-051.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Fails to handle Unicode integer (UTF-16) encoded names, when they are converted to atoms"]}.
+'valid-sa-050'(suite) -> [];
+'valid-sa-050'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-050.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-049'(suite) -> [];
+'valid-sa-049'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-049.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-048'(suite) -> [];
+'valid-sa-048'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-048.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-047'(suite) -> [];
+'valid-sa-047'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-047.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-046'(suite) -> [];
+'valid-sa-046'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-046.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-045'(suite) -> [];
+'valid-sa-045'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-045.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-044'(suite) -> [];
+'valid-sa-044'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-044.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-043'(suite) -> [];
+'valid-sa-043'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-043.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-042'(suite) -> [];
+'valid-sa-042'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-042.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-041'(suite) -> [];
+'valid-sa-041'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-041.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-040'(suite) -> [];
+'valid-sa-040'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-040.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-039'(suite) -> [];
+'valid-sa-039'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-039.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-038'(suite) -> [];
+'valid-sa-038'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-038.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-037'(suite) -> [];
+'valid-sa-037'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-037.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-036'(suite) -> [];
+'valid-sa-036'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-036.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-035'(suite) -> [];
+'valid-sa-035'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-035.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-034'(suite) -> [];
+'valid-sa-034'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-034.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-033'(suite) -> [];
+'valid-sa-033'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-033.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-032'(suite) -> [];
+'valid-sa-032'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-032.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-031'(suite) -> [];
+'valid-sa-031'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-031.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-030'(suite) -> [];
+'valid-sa-030'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-030.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-029'(suite) -> [];
+'valid-sa-029'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-029.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-028'(suite) -> [];
+'valid-sa-028'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-028.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-027'(suite) -> [];
+'valid-sa-027'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-027.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-026'(suite) -> [];
+'valid-sa-026'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-026.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-025'(suite) -> [];
+'valid-sa-025'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-025.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-024'(suite) -> [];
+'valid-sa-024'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-024.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-023'(suite) -> [];
+'valid-sa-023'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-023.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-022'(suite) -> [];
+'valid-sa-022'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-022.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-021'(suite) -> [];
+'valid-sa-021'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-021.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-020'(suite) -> [];
+'valid-sa-020'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-020.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-019'(suite) -> [];
+'valid-sa-019'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-019.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-018'(suite) -> [];
+'valid-sa-018'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-018.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-017'(suite) -> [];
+'valid-sa-017'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-017.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-016'(suite) -> [];
+'valid-sa-016'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-016.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-015'(suite) -> [];
+'valid-sa-015'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-015.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-014'(suite) -> [];
+'valid-sa-014'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-014.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-013'(suite) -> [];
+'valid-sa-013'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-013.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-012'(suite) -> [];
+'valid-sa-012'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-012.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-011'(suite) -> [];
+'valid-sa-011'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-011.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-010'(suite) -> [];
+'valid-sa-010'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-010.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-009'(suite) -> [];
+'valid-sa-009'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-009.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-008'(suite) -> [];
+'valid-sa-008'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-008.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-007'(suite) -> [];
+'valid-sa-007'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-007.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-006'(suite) -> [];
+'valid-sa-006'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-006.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-005'(suite) -> [];
+'valid-sa-005'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-005.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-004'(suite) -> [];
+'valid-sa-004'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-004.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-003'(suite) -> [];
+'valid-sa-003'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-003.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-002'(suite) -> [];
+'valid-sa-002'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-002.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'valid-sa-001'(suite) -> [];
+'valid-sa-001'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"valid-sa-001.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'invalid-not-sa-022'(suite) -> [];
+'invalid-not-sa-022'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"invalid-not-sa-022.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'invalid--006'(suite) -> [];
+'invalid--006'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"invalid--006.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'invalid--005'(suite) -> [];
+'invalid--005'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"invalid--005.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'invalid--002'(suite) -> [];
+'invalid--002'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"invalid--002.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-ext-sa-003'(suite) -> [];
+'not-wf-ext-sa-003'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-ext-sa-003.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-ext-sa-002'(suite) -> [];
+'not-wf-ext-sa-002'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-ext-sa-002.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-ext-sa-001'(suite) -> [];
+'not-wf-ext-sa-001'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-ext-sa-001.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-not-sa-009'(suite) -> [];
+'not-wf-not-sa-009'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-not-sa-009.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-not-sa-008'(suite) -> [];
+'not-wf-not-sa-008'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-not-sa-008.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-not-sa-007'(suite) -> [];
+'not-wf-not-sa-007'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-not-sa-007.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-not-sa-006'(suite) -> [];
+'not-wf-not-sa-006'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-not-sa-006.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-not-sa-005'(suite) -> [];
+'not-wf-not-sa-005'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-not-sa-005.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-not-sa-004'(suite) -> [];
+'not-wf-not-sa-004'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-not-sa-004.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-not-sa-003'(suite) -> [];
+'not-wf-not-sa-003'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-not-sa-003.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-not-sa-002'(suite) -> [];
+'not-wf-not-sa-002'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-not-sa-002.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-not-sa-001'(suite) -> [];
+'not-wf-not-sa-001'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-not-sa-001.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-186'(suite) -> [];
+'not-wf-sa-186'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-186.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-185'(suite) -> [];
+'not-wf-sa-185'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-185.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-184'(suite) -> [];
+'not-wf-sa-184'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-184.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-183'(suite) -> [];
+'not-wf-sa-183'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-183.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-182'(suite) -> [];
+'not-wf-sa-182'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-182.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-181'(suite) -> [];
+'not-wf-sa-181'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-181.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-180'(suite) -> [];
+'not-wf-sa-180'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-180.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-179'(suite) -> [];
+'not-wf-sa-179'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-179.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-178'(suite) -> [];
+'not-wf-sa-178'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-178.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-177'(suite) -> [];
+'not-wf-sa-177'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-177.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["do not support UTF-8 (only Latin-1), therefore not ","able to check the illegal FFFF/FFFE (Unicode) characters"]}.
+
+'not-wf-sa-176'(suite) -> [];
+'not-wf-sa-176'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-176.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-175'(suite) -> [];
+'not-wf-sa-175'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-175.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["do not support UTF-8 (only Latin-1), therefore not ","able to check the illegal FFFF/FFFE (Unicode) characters"]}.
+
+'not-wf-sa-174'(suite) -> [];
+'not-wf-sa-174'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-174.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["do not support UTF-8 (only Latin-1), therefore not ","able to check the illegal FFFF/FFFE (Unicode) characters"]}.
+
+'not-wf-sa-173'(suite) -> [];
+'not-wf-sa-173'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-173.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["do not support UTF-8 (only Latin-1), therefore not ","able to check the illegal FFFF/FFFE (Unicode) characters"]}.
+
+'not-wf-sa-172'(suite) -> [];
+'not-wf-sa-172'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-172.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["do not support UTF-8 (only Latin-1), therefore not ","able to check the illegal FFFF/FFFE (Unicode) characters"]}.
+
+'not-wf-sa-171'(suite) -> [];
+'not-wf-sa-171'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-171.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["do not support UTF-8 (only Latin-1), therefore not ","able to check the illegal FFFF/FFFE (Unicode) characters"]}.
+
+'not-wf-sa-170'(suite) -> [];
+'not-wf-sa-170'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-170.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["UTF-8 encoding of UCS-4 characters"]}.
+
+'not-wf-sa-169'(suite) -> [];
+'not-wf-sa-169'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-169.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["UTF-8 encoding of an illegal unpaired surrogate (DC00)"]}.
+
+'not-wf-sa-168'(suite) -> [];
+'not-wf-sa-168'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-168.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["UTF-8 encoding of an illegal unpaired surrogate (D800)"]}.
+
+'not-wf-sa-167'(suite) -> [];
+'not-wf-sa-167'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-167.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["UTF-8 encoding of an illegal FFFE"]}.
+
+'not-wf-sa-166'(suite) -> [];
+'not-wf-sa-166'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-166.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["UTF-8 encoding of an illegal FFFE"]}.
+
+'not-wf-sa-165'(suite) -> [];
+'not-wf-sa-165'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-165.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-164'(suite) -> [];
+'not-wf-sa-164'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-164.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-163'(suite) -> [];
+'not-wf-sa-163'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-163.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-162'(suite) -> [];
+'not-wf-sa-162'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-162.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-161'(suite) -> [];
+'not-wf-sa-161'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-161.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-160'(suite) -> [];
+'not-wf-sa-160'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-160.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-159'(suite) -> [];
+'not-wf-sa-159'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-159.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-158'(suite) -> [];
+'not-wf-sa-158'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-158.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-157'(suite) -> [];
+'not-wf-sa-157'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-157.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-156'(suite) -> [];
+'not-wf-sa-156'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-156.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-155'(suite) -> [];
+'not-wf-sa-155'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-155.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-154'(suite) -> [];
+'not-wf-sa-154'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-154.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-153'(suite) -> [];
+'not-wf-sa-153'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-153.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-152'(suite) -> [];
+'not-wf-sa-152'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-152.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-151'(suite) -> [];
+'not-wf-sa-151'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-151.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["don't bother wath's in the Misc production"]}.
+
+'not-wf-sa-150'(suite) -> [];
+'not-wf-sa-150'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-150.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-149'(suite) -> [];
+'not-wf-sa-149'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-149.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-148'(suite) -> [];
+'not-wf-sa-148'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-148.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-147'(suite) -> [];
+'not-wf-sa-147'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-147.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-146'(suite) -> [];
+'not-wf-sa-146'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-146.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-145'(suite) -> [];
+'not-wf-sa-145'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-145.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-144'(suite) -> [];
+'not-wf-sa-144'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-144.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-143'(suite) -> [];
+'not-wf-sa-143'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-143.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-142'(suite) -> [];
+'not-wf-sa-142'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-142.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-141'(suite) -> [];
+'not-wf-sa-141'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-141.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-140'(suite) -> [];
+'not-wf-sa-140'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-140.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-139'(suite) -> [];
+'not-wf-sa-139'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-139.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-138'(suite) -> [];
+'not-wf-sa-138'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-138.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-137'(suite) -> [];
+'not-wf-sa-137'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-137.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-136'(suite) -> [];
+'not-wf-sa-136'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-136.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-135'(suite) -> [];
+'not-wf-sa-135'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-135.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-134'(suite) -> [];
+'not-wf-sa-134'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-134.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-133'(suite) -> [];
+'not-wf-sa-133'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-133.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-132'(suite) -> [];
+'not-wf-sa-132'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-132.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-131'(suite) -> [];
+'not-wf-sa-131'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-131.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-130'(suite) -> [];
+'not-wf-sa-130'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-130.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-129'(suite) -> [];
+'not-wf-sa-129'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-129.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-128'(suite) -> [];
+'not-wf-sa-128'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-128.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-127'(suite) -> [];
+'not-wf-sa-127'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-127.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-126'(suite) -> [];
+'not-wf-sa-126'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-126.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-125'(suite) -> [];
+'not-wf-sa-125'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-125.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-124'(suite) -> [];
+'not-wf-sa-124'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-124.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-123'(suite) -> [];
+'not-wf-sa-123'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-123.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-122'(suite) -> [];
+'not-wf-sa-122'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-122.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-121'(suite) -> [];
+'not-wf-sa-121'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-121.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-120'(suite) -> [];
+'not-wf-sa-120'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-120.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-119'(suite) -> [];
+'not-wf-sa-119'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-119.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-118'(suite) -> [];
+'not-wf-sa-118'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-118.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-117'(suite) -> [];
+'not-wf-sa-117'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-117.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-116'(suite) -> [];
+'not-wf-sa-116'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-116.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-115'(suite) -> [];
+'not-wf-sa-115'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-115.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-114'(suite) -> [];
+'not-wf-sa-114'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-114.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-113'(suite) -> [];
+'not-wf-sa-113'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-113.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-112'(suite) -> [];
+'not-wf-sa-112'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-112.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-111'(suite) -> [];
+'not-wf-sa-111'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-111.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-110'(suite) -> [];
+'not-wf-sa-110'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-110.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-109'(suite) -> [];
+'not-wf-sa-109'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-109.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-108'(suite) -> [];
+'not-wf-sa-108'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-108.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-107'(suite) -> [];
+'not-wf-sa-107'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-107.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-106'(suite) -> [];
+'not-wf-sa-106'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-106.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-105'(suite) -> [];
+'not-wf-sa-105'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-105.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-104'(suite) -> [];
+'not-wf-sa-104'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-104.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-103'(suite) -> [];
+'not-wf-sa-103'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-103.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-102'(suite) -> [];
+'not-wf-sa-102'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-102.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-101'(suite) -> [];
+'not-wf-sa-101'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-101.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-100'(suite) -> [];
+'not-wf-sa-100'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-100.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-099'(suite) -> [];
+'not-wf-sa-099'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-099.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-098'(suite) -> [];
+'not-wf-sa-098'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-098.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-097'(suite) -> [];
+'not-wf-sa-097'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-097.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-096'(suite) -> [];
+'not-wf-sa-096'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-096.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-095'(suite) -> [];
+'not-wf-sa-095'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-095.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-094'(suite) -> [];
+'not-wf-sa-094'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-094.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-093'(suite) -> [];
+'not-wf-sa-093'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-093.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-092'(suite) -> [];
+'not-wf-sa-092'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-092.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-091'(suite) -> [];
+'not-wf-sa-091'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-091.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-090'(suite) -> [];
+'not-wf-sa-090'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-090.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-089'(suite) -> [];
+'not-wf-sa-089'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-089.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-088'(suite) -> [];
+'not-wf-sa-088'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-088.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-087'(suite) -> [];
+'not-wf-sa-087'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-087.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-086'(suite) -> [];
+'not-wf-sa-086'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-086.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-085'(suite) -> [];
+'not-wf-sa-085'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-085.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-084'(suite) -> [];
+'not-wf-sa-084'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-084.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-083'(suite) -> [];
+'not-wf-sa-083'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-083.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-082'(suite) -> [];
+'not-wf-sa-082'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-082.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-081'(suite) -> [];
+'not-wf-sa-081'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-081.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-080'(suite) -> [];
+'not-wf-sa-080'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-080.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-079'(suite) -> [];
+'not-wf-sa-079'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-079.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-078'(suite) -> [];
+'not-wf-sa-078'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-078.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-077'(suite) -> [];
+'not-wf-sa-077'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-077.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-076'(suite) -> [];
+'not-wf-sa-076'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-076.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-075'(suite) -> [];
+'not-wf-sa-075'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-075.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-074'(suite) -> [];
+'not-wf-sa-074'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-074.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-073'(suite) -> [];
+'not-wf-sa-073'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-073.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-072'(suite) -> [];
+'not-wf-sa-072'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-072.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-071'(suite) -> [];
+'not-wf-sa-071'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-071.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-070'(suite) -> [];
+'not-wf-sa-070'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-070.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-069'(suite) -> [];
+'not-wf-sa-069'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-069.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-068'(suite) -> [];
+'not-wf-sa-068'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-068.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-067'(suite) -> [];
+'not-wf-sa-067'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-067.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-066'(suite) -> [];
+'not-wf-sa-066'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-066.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-065'(suite) -> [];
+'not-wf-sa-065'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-065.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-064'(suite) -> [];
+'not-wf-sa-064'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-064.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-063'(suite) -> [];
+'not-wf-sa-063'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-063.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-062'(suite) -> [];
+'not-wf-sa-062'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-062.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-061'(suite) -> [];
+'not-wf-sa-061'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-061.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-060'(suite) -> [];
+'not-wf-sa-060'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-060.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-059'(suite) -> [];
+'not-wf-sa-059'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-059.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-058'(suite) -> [];
+'not-wf-sa-058'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-058.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-057'(suite) -> [];
+'not-wf-sa-057'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-057.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-056'(suite) -> [];
+'not-wf-sa-056'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-056.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-055'(suite) -> [];
+'not-wf-sa-055'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-055.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-054'(suite) -> [];
+'not-wf-sa-054'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-054.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-053'(suite) -> [];
+'not-wf-sa-053'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-053.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-052'(suite) -> [];
+'not-wf-sa-052'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-052.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-051'(suite) -> [];
+'not-wf-sa-051'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-051.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-050'(suite) -> [];
+'not-wf-sa-050'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-050.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-049'(suite) -> [];
+'not-wf-sa-049'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-049.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-048'(suite) -> [];
+'not-wf-sa-048'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-048.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-047'(suite) -> [];
+'not-wf-sa-047'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-047.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-046'(suite) -> [];
+'not-wf-sa-046'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-046.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-045'(suite) -> [];
+'not-wf-sa-045'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-045.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-044'(suite) -> [];
+'not-wf-sa-044'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-044.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-043'(suite) -> [];
+'not-wf-sa-043'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-043.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-042'(suite) -> [];
+'not-wf-sa-042'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-042.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-041'(suite) -> [];
+'not-wf-sa-041'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-041.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-040'(suite) -> [];
+'not-wf-sa-040'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-040.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-039'(suite) -> [];
+'not-wf-sa-039'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-039.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-038'(suite) -> [];
+'not-wf-sa-038'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-038.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-037'(suite) -> [];
+'not-wf-sa-037'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-037.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-036'(suite) -> [];
+'not-wf-sa-036'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-036.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-035'(suite) -> [];
+'not-wf-sa-035'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-035.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-034'(suite) -> [];
+'not-wf-sa-034'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-034.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-033'(suite) -> [];
+'not-wf-sa-033'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-033.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-032'(suite) -> [];
+'not-wf-sa-032'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-032.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-031'(suite) -> [];
+'not-wf-sa-031'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-031.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-030'(suite) -> [];
+'not-wf-sa-030'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-030.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-029'(suite) -> [];
+'not-wf-sa-029'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-029.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-028'(suite) -> [];
+'not-wf-sa-028'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-028.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-027'(suite) -> [];
+'not-wf-sa-027'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-027.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-026'(suite) -> [];
+'not-wf-sa-026'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-026.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-025'(suite) -> [];
+'not-wf-sa-025'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-025.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-024'(suite) -> [];
+'not-wf-sa-024'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-024.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-023'(suite) -> [];
+'not-wf-sa-023'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-023.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-022'(suite) -> [];
+'not-wf-sa-022'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-022.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-021'(suite) -> [];
+'not-wf-sa-021'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-021.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-020'(suite) -> [];
+'not-wf-sa-020'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-020.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-019'(suite) -> [];
+'not-wf-sa-019'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-019.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-018'(suite) -> [];
+'not-wf-sa-018'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-018.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-017'(suite) -> [];
+'not-wf-sa-017'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-017.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-016'(suite) -> [];
+'not-wf-sa-016'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-016.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-015'(suite) -> [];
+'not-wf-sa-015'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-015.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-014'(suite) -> [];
+'not-wf-sa-014'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-014.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-013'(suite) -> [];
+'not-wf-sa-013'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-013.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-012'(suite) -> [];
+'not-wf-sa-012'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-012.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-011'(suite) -> [];
+'not-wf-sa-011'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-011.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-010'(suite) -> [];
+'not-wf-sa-010'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-010.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-009'(suite) -> [];
+'not-wf-sa-009'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-009.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-008'(suite) -> [];
+'not-wf-sa-008'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-008.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-007'(suite) -> [];
+'not-wf-sa-007'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-007.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-006'(suite) -> [];
+'not-wf-sa-006'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-006.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-005'(suite) -> [];
+'not-wf-sa-005'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-005.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-004'(suite) -> [];
+'not-wf-sa-004'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-004.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-003'(suite) -> [];
+'not-wf-sa-003'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-003.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-002'(suite) -> [];
+'not-wf-sa-002'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-002.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'not-wf-sa-001'(suite) -> [];
+'not-wf-sa-001'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),xmltest,"not-wf-sa-001.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+%%----------------------------------------------------------------------
+
+'japanese-weekly-utf-8'(suite) -> [];
+'japanese-weekly-utf-8'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-weekly-utf-8.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["UTF-8 encoding of japanese characters"]}.
+
+'japanese-weekly-utf-16'(suite) -> [];
+'japanese-weekly-utf-16'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-weekly-utf-16.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Test support for UTF-16 encoding, and XML names which contain Japanese characters."]}.
+
+'japanese-weekly-shift_jis'(suite) -> [];
+'japanese-weekly-shift_jis'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-weekly-shift_jis.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'japanese-weekly-little'(suite) -> [];
+'japanese-weekly-little'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-weekly-little.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Test support for little-endian UTF-16 encoding, and XML names which contain Japanese characters."]}.
+
+'japanese-weekly-iso-2022-jp'(suite) -> [];
+'japanese-weekly-iso-2022-jp'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-weekly-iso-2022-jp.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'japanese-weekly-euc-jp'(suite) -> [];
+'japanese-weekly-euc-jp'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-weekly-euc-jp.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'japanese-pr-xml-utf-8'(suite) -> [];
+'japanese-pr-xml-utf-8'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-pr-xml-utf-8.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Test support for UTF-8 text which relies on Japanese characters"]}.
+
+'japanese-pr-xml-utf-16'(suite) -> [];
+'japanese-pr-xml-utf-16'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-pr-xml-utf-16.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Test support UTF-16 text which relies on Japanese characters."]}.
+
+'japanese-pr-xml-shift_jis'(suite) -> [];
+'japanese-pr-xml-shift_jis'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-pr-xml-shift_jis.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'japanese-pr-xml-little'(suite) -> [];
+'japanese-pr-xml-little'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-pr-xml-little.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Test support for little-endian UTF-16 text which relies on Japanese characters."]}.
+
+'japanese-pr-xml-iso-2022-jp'(suite) -> [];
+'japanese-pr-xml-iso-2022-jp'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-pr-xml-iso-2022-jp.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'japanese-pr-xml-euc-jp'(suite) -> [];
+'japanese-pr-xml-euc-jp'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),japanese,"japanese-pr-xml-euc-jp.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+%%----------------------------------------------------------------------
+
+'o-p11pass1'(suite) -> [];
+'o-p11pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p11pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p76fail4'(suite) -> [];
+'o-p76fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p76fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p76fail3'(suite) -> [];
+'o-p76fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p76fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p76fail2'(suite) -> [];
+'o-p76fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p76fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p76fail1'(suite) -> [];
+'o-p76fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p76fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p75fail6'(suite) -> [];
+'o-p75fail6'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p75fail6.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p75fail5'(suite) -> [];
+'o-p75fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p75fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p75fail4'(suite) -> [];
+'o-p75fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p75fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p75fail3'(suite) -> [];
+'o-p75fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p75fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p75fail2'(suite) -> [];
+'o-p75fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p75fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p75fail1'(suite) -> [];
+'o-p75fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p75fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p74fail3'(suite) -> [];
+'o-p74fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p74fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p74fail2'(suite) -> [];
+'o-p74fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p74fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p74fail1'(suite) -> [];
+'o-p74fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p74fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p73fail5'(suite) -> [];
+'o-p73fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p73fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p73fail4'(suite) -> [];
+'o-p73fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p73fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p73fail3'(suite) -> [];
+'o-p73fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p73fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p73fail2'(suite) -> [];
+'o-p73fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p73fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p73fail1'(suite) -> [];
+'o-p73fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p73fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p72fail4'(suite) -> [];
+'o-p72fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p72fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p72fail3'(suite) -> [];
+'o-p72fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p72fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p72fail2'(suite) -> [];
+'o-p72fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p72fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p72fail1'(suite) -> [];
+'o-p72fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p72fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p71fail4'(suite) -> [];
+'o-p71fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p71fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p71fail3'(suite) -> [];
+'o-p71fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p71fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p71fail2'(suite) -> [];
+'o-p71fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p71fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p71fail1'(suite) -> [];
+'o-p71fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p71fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p70fail1'(suite) -> [];
+'o-p70fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p70fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p69fail3'(suite) -> [];
+'o-p69fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p69fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p69fail2'(suite) -> [];
+'o-p69fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p69fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p69fail1'(suite) -> [];
+'o-p69fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p69fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p68fail3'(suite) -> [];
+'o-p68fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p68fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p68fail2'(suite) -> [];
+'o-p68fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p68fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p68fail1'(suite) -> [];
+'o-p68fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p68fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p66fail6'(suite) -> [];
+'o-p66fail6'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p66fail6.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p66fail5'(suite) -> [];
+'o-p66fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p66fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p66fail4'(suite) -> [];
+'o-p66fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p66fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p66fail3'(suite) -> [];
+'o-p66fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p66fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p66fail2'(suite) -> [];
+'o-p66fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p66fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p66fail1'(suite) -> [];
+'o-p66fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p66fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p64fail2'(suite) -> [];
+'o-p64fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p64fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p64fail1'(suite) -> [];
+'o-p64fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p64fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p63fail2'(suite) -> [];
+'o-p63fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p63fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p63fail1'(suite) -> [];
+'o-p63fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p63fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p62fail2'(suite) -> [];
+'o-p62fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p62fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p62fail1'(suite) -> [];
+'o-p62fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p62fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p61fail1'(suite) -> [];
+'o-p61fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p61fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p60fail5'(suite) -> [];
+'o-p60fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p60fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p60fail4'(suite) -> [];
+'o-p60fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p60fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p60fail3'(suite) -> [];
+'o-p60fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p60fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p60fail2'(suite) -> [];
+'o-p60fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p60fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p60fail1'(suite) -> [];
+'o-p60fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p60fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p59fail3'(suite) -> [];
+'o-p59fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p59fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p59fail2'(suite) -> [];
+'o-p59fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p59fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p59fail1'(suite) -> [];
+'o-p59fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p59fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p58fail8'(suite) -> [];
+'o-p58fail8'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p58fail8.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p58fail7'(suite) -> [];
+'o-p58fail7'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p58fail7.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p58fail6'(suite) -> [];
+'o-p58fail6'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p58fail6.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p58fail5'(suite) -> [];
+'o-p58fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p58fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p58fail4'(suite) -> [];
+'o-p58fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p58fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p58fail3'(suite) -> [];
+'o-p58fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p58fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p58fail2'(suite) -> [];
+'o-p58fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p58fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p58fail1'(suite) -> [];
+'o-p58fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p58fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p57fail1'(suite) -> [];
+'o-p57fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p57fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p56fail5'(suite) -> [];
+'o-p56fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p56fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p56fail4'(suite) -> [];
+'o-p56fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p56fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p56fail3'(suite) -> [];
+'o-p56fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p56fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p56fail2'(suite) -> [];
+'o-p56fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p56fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p56fail1'(suite) -> [];
+'o-p56fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p56fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p55fail1'(suite) -> [];
+'o-p55fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p55fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p54fail1'(suite) -> [];
+'o-p54fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p54fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p53fail5'(suite) -> [];
+'o-p53fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p53fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p53fail4'(suite) -> [];
+'o-p53fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p53fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p53fail3'(suite) -> [];
+'o-p53fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p53fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p53fail2'(suite) -> [];
+'o-p53fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p53fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p53fail1'(suite) -> [];
+'o-p53fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p53fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p52fail2'(suite) -> [];
+'o-p52fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p52fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p52fail1'(suite) -> [];
+'o-p52fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p52fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p51fail7'(suite) -> [];
+'o-p51fail7'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p51fail7.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p51fail6'(suite) -> [];
+'o-p51fail6'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p51fail6.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p51fail5'(suite) -> [];
+'o-p51fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p51fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p51fail4'(suite) -> [];
+'o-p51fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p51fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p51fail3'(suite) -> [];
+'o-p51fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p51fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p51fail2'(suite) -> [];
+'o-p51fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p51fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p51fail1'(suite) -> [];
+'o-p51fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p51fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p50fail1'(suite) -> [];
+'o-p50fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p50fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p49fail1'(suite) -> [];
+'o-p49fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p49fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p48fail2'(suite) -> [];
+'o-p48fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p48fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p48fail1'(suite) -> [];
+'o-p48fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p48fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p47fail4'(suite) -> [];
+'o-p47fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p47fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p47fail3'(suite) -> [];
+'o-p47fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p47fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p47fail2'(suite) -> [];
+'o-p47fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p47fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p47fail1'(suite) -> [];
+'o-p47fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p47fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p46fail6'(suite) -> [];
+'o-p46fail6'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p46fail6.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p46fail5'(suite) -> [];
+'o-p46fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p46fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p46fail4'(suite) -> [];
+'o-p46fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p46fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p46fail3'(suite) -> [];
+'o-p46fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p46fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p46fail2'(suite) -> [];
+'o-p46fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p46fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p46fail1'(suite) -> [];
+'o-p46fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p46fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p45fail4'(suite) -> [];
+'o-p45fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p45fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p45fail3'(suite) -> [];
+'o-p45fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p45fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p45fail2'(suite) -> [];
+'o-p45fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p45fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p45fail1'(suite) -> [];
+'o-p45fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p45fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44fail5'(suite) -> [];
+'o-p44fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44fail4'(suite) -> [];
+'o-p44fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44fail3'(suite) -> [];
+'o-p44fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44fail2'(suite) -> [];
+'o-p44fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44fail1'(suite) -> [];
+'o-p44fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p43fail3'(suite) -> [];
+'o-p43fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p43fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p43fail2'(suite) -> [];
+'o-p43fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p43fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p43fail1'(suite) -> [];
+'o-p43fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p43fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p42fail3'(suite) -> [];
+'o-p42fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p42fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p42fail2'(suite) -> [];
+'o-p42fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p42fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p42fail1'(suite) -> [];
+'o-p42fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p42fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p41fail3'(suite) -> [];
+'o-p41fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p41fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p41fail2'(suite) -> [];
+'o-p41fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p41fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p41fail1'(suite) -> [];
+'o-p41fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p41fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p40fail4'(suite) -> [];
+'o-p40fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p40fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p40fail3'(suite) -> [];
+'o-p40fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p40fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p40fail2'(suite) -> [];
+'o-p40fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p40fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p40fail1'(suite) -> [];
+'o-p40fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p40fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p39fail5'(suite) -> [];
+'o-p39fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p39fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p39fail4'(suite) -> [];
+'o-p39fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p39fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p39fail3'(suite) -> [];
+'o-p39fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p39fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p39fail2'(suite) -> [];
+'o-p39fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p39fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p39fail1'(suite) -> [];
+'o-p39fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p39fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p32fail5'(suite) -> [];
+'o-p32fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p32fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p32fail4'(suite) -> [];
+'o-p32fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p32fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p32fail3'(suite) -> [];
+'o-p32fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p32fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p32fail2'(suite) -> [];
+'o-p32fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p32fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p32fail1'(suite) -> [];
+'o-p32fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p32fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p31fail1'(suite) -> [];
+'o-p31fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p31fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p30fail1'(suite) -> [];
+'o-p30fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p30fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p29fail1'(suite) -> [];
+'o-p29fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p29fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p28fail1'(suite) -> [];
+'o-p28fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p28fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p27fail1'(suite) -> [];
+'o-p27fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p27fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p26fail2'(suite) -> [];
+'o-p26fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p26fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p26fail1'(suite) -> [];
+'o-p26fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p26fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p25fail1'(suite) -> [];
+'o-p25fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p25fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p24fail2'(suite) -> [];
+'o-p24fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p24fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p24fail1'(suite) -> [];
+'o-p24fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p24fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p23fail5'(suite) -> [];
+'o-p23fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p23fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p23fail4'(suite) -> [];
+'o-p23fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p23fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p23fail3'(suite) -> [];
+'o-p23fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p23fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p23fail2'(suite) -> [];
+'o-p23fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p23fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p23fail1'(suite) -> [];
+'o-p23fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p23fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p22fail2'(suite) -> [];
+'o-p22fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p22fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p22fail1'(suite) -> [];
+'o-p22fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p22fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p18fail3'(suite) -> [];
+'o-p18fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p18fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p18fail2'(suite) -> [];
+'o-p18fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p18fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p18fail1'(suite) -> [];
+'o-p18fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p18fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p16fail3'(suite) -> [];
+'o-p16fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p16fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p16fail2'(suite) -> [];
+'o-p16fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p16fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p16fail1'(suite) -> [];
+'o-p16fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p16fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p15fail3'(suite) -> [];
+'o-p15fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p15fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p15fail2'(suite) -> [];
+'o-p15fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p15fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p15fail1'(suite) -> [];
+'o-p15fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p15fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p14fail3'(suite) -> [];
+'o-p14fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p14fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p14fail2'(suite) -> [];
+'o-p14fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p14fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p14fail1'(suite) -> [];
+'o-p14fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p14fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p12fail7'(suite) -> [];
+'o-p12fail7'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p12fail7.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p12fail6'(suite) -> [];
+'o-p12fail6'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p12fail6.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p12fail5'(suite) -> [];
+'o-p12fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p12fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p12fail4'(suite) -> [];
+'o-p12fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p12fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p12fail3'(suite) -> [];
+'o-p12fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p12fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p12fail2'(suite) -> [];
+'o-p12fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p12fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p12fail1'(suite) -> [];
+'o-p12fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p12fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p11fail2'(suite) -> [];
+'o-p11fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p11fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p11fail1'(suite) -> [];
+'o-p11fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p11fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p10fail3'(suite) -> [];
+'o-p10fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p10fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p10fail2'(suite) -> [];
+'o-p10fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p10fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p10fail1'(suite) -> [];
+'o-p10fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p10fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p09fail5'(suite) -> [];
+'o-p09fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p09fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p09fail4'(suite) -> [];
+'o-p09fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p09fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p09fail3'(suite) -> [];
+'o-p09fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p09fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p09fail2'(suite) -> [];
+'o-p09fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p09fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p09fail1'(suite) -> [];
+'o-p09fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p09fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p05fail5'(suite) -> [];
+'o-p05fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p05fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p05fail4'(suite) -> [];
+'o-p05fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p05fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p05fail3'(suite) -> [];
+'o-p05fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p05fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p05fail2'(suite) -> [];
+'o-p05fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p05fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p05fail1'(suite) -> [];
+'o-p05fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p05fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p04fail3'(suite) -> [];
+'o-p04fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p04fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p04fail2'(suite) -> [];
+'o-p04fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p04fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p04fail1'(suite) -> [];
+'o-p04fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p04fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail9'(suite) -> [];
+'o-p03fail9'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail9.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail8'(suite) -> [];
+'o-p03fail8'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail8.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail7'(suite) -> [];
+'o-p03fail7'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail7.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail5'(suite) -> [];
+'o-p03fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail4'(suite) -> [];
+'o-p03fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail3'(suite) -> [];
+'o-p03fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail29'(suite) -> [];
+'o-p03fail29'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail29.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail28'(suite) -> [];
+'o-p03fail28'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail28.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail27'(suite) -> [];
+'o-p03fail27'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail27.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail26'(suite) -> [];
+'o-p03fail26'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail26.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail25'(suite) -> [];
+'o-p03fail25'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail25.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail24'(suite) -> [];
+'o-p03fail24'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail24.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail23'(suite) -> [];
+'o-p03fail23'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail23.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail22'(suite) -> [];
+'o-p03fail22'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail22.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail21'(suite) -> [];
+'o-p03fail21'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail21.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail20'(suite) -> [];
+'o-p03fail20'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail20.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail2'(suite) -> [];
+'o-p03fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail19'(suite) -> [];
+'o-p03fail19'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail19.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail18'(suite) -> [];
+'o-p03fail18'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail18.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail17'(suite) -> [];
+'o-p03fail17'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail17.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail16'(suite) -> [];
+'o-p03fail16'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail16.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail15'(suite) -> [];
+'o-p03fail15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail14'(suite) -> [];
+'o-p03fail14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail13'(suite) -> [];
+'o-p03fail13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail12'(suite) -> [];
+'o-p03fail12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail11'(suite) -> [];
+'o-p03fail11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail10'(suite) -> [];
+'o-p03fail10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p03fail1'(suite) -> [];
+'o-p03fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail9'(suite) -> [];
+'o-p02fail9'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail9.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail8'(suite) -> [];
+'o-p02fail8'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail8.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail7'(suite) -> [];
+'o-p02fail7'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail7.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail6'(suite) -> [];
+'o-p02fail6'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail6.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail5'(suite) -> [];
+'o-p02fail5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail4'(suite) -> [];
+'o-p02fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail31'(suite) -> [];
+'o-p02fail31'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail31.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail30'(suite) -> [];
+'o-p02fail30'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail30.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail3'(suite) -> [];
+'o-p02fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail29'(suite) -> [];
+'o-p02fail29'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail29.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail28'(suite) -> [];
+'o-p02fail28'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail28.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail27'(suite) -> [];
+'o-p02fail27'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail27.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail26'(suite) -> [];
+'o-p02fail26'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail26.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail25'(suite) -> [];
+'o-p02fail25'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail25.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail24'(suite) -> [];
+'o-p02fail24'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail24.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail23'(suite) -> [];
+'o-p02fail23'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail23.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail22'(suite) -> [];
+'o-p02fail22'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail22.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail21'(suite) -> [];
+'o-p02fail21'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail21.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail20'(suite) -> [];
+'o-p02fail20'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail20.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail2'(suite) -> [];
+'o-p02fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail19'(suite) -> [];
+'o-p02fail19'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail19.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail18'(suite) -> [];
+'o-p02fail18'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail18.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail17'(suite) -> [];
+'o-p02fail17'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail17.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail16'(suite) -> [];
+'o-p02fail16'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail16.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail15'(suite) -> [];
+'o-p02fail15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail14'(suite) -> [];
+'o-p02fail14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail13'(suite) -> [];
+'o-p02fail13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail12'(suite) -> [];
+'o-p02fail12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail11'(suite) -> [];
+'o-p02fail11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail10'(suite) -> [];
+'o-p02fail10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p02fail1'(suite) -> [];
+'o-p02fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p02fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p01fail4'(suite) -> [];
+'o-p01fail4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p01fail4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p01fail3'(suite) -> [];
+'o-p01fail3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p01fail3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p01fail2'(suite) -> [];
+'o-p01fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p01fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p01fail1'(suite) -> [];
+'o-p01fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p01fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-e2'(suite) -> [];
+'o-e2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-e2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p75pass1'(suite) -> [];
+'o-p75pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p75pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p74pass1'(suite) -> [];
+'o-p74pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p74pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p66pass1'(suite) -> [];
+'o-p66pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p66pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44pass5'(suite) -> [];
+'o-p44pass5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44pass5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44pass4'(suite) -> [];
+'o-p44pass4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44pass4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44pass3'(suite) -> [];
+'o-p44pass3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44pass3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44pass2'(suite) -> [];
+'o-p44pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p44pass1'(suite) -> [];
+'o-p44pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p44pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p42pass2'(suite) -> [];
+'o-p42pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p42pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p42pass1'(suite) -> [];
+'o-p42pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p42pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p41pass2'(suite) -> [];
+'o-p41pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p41pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p41pass1'(suite) -> [];
+'o-p41pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p41pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p40pass4'(suite) -> [];
+'o-p40pass4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p40pass4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p40pass3'(suite) -> [];
+'o-p40pass3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p40pass3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p40pass2'(suite) -> [];
+'o-p40pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p40pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p40pass1'(suite) -> [];
+'o-p40pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p40pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p39pass2'(suite) -> [];
+'o-p39pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p39pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p39pass1'(suite) -> [];
+'o-p39pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p39pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p32pass2'(suite) -> [];
+'o-p32pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p32pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p32pass1'(suite) -> [];
+'o-p32pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p32pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p27pass4'(suite) -> [];
+'o-p27pass4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p27pass4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p27pass3'(suite) -> [];
+'o-p27pass3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p27pass3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p27pass2'(suite) -> [];
+'o-p27pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p27pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p27pass1'(suite) -> [];
+'o-p27pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p27pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p26pass1'(suite) -> [];
+'o-p26pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p26pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p25pass2'(suite) -> [];
+'o-p25pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p25pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p25pass1'(suite) -> [];
+'o-p25pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p25pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p24pass4'(suite) -> [];
+'o-p24pass4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p24pass4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p24pass3'(suite) -> [];
+'o-p24pass3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p24pass3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p24pass2'(suite) -> [];
+'o-p24pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p24pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p24pass1'(suite) -> [];
+'o-p24pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p24pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p23pass4'(suite) -> [];
+'o-p23pass4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p23pass4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p23pass3'(suite) -> [];
+'o-p23pass3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p23pass3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p23pass2'(suite) -> [];
+'o-p23pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p23pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p23pass1'(suite) -> [];
+'o-p23pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p23pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p22pass3'(suite) -> [];
+'o-p22pass3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p22pass3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p22pass2'(suite) -> [];
+'o-p22pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p22pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p22pass1'(suite) -> [];
+'o-p22pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p22pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p18pass1'(suite) -> [];
+'o-p18pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p18pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p16pass3'(suite) -> [];
+'o-p16pass3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p16pass3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p16pass2'(suite) -> [];
+'o-p16pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p16pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p16pass1'(suite) -> [];
+'o-p16pass1'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p16pass1.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Hard to interpret the meaning of the XML1.0 spec. See section 2.6 and 2.3."]}.
+
+'o-p15pass1'(suite) -> [];
+'o-p15pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p15pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p14pass1'(suite) -> [];
+'o-p14pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p14pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p10pass1'(suite) -> [];
+'o-p10pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p10pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p08fail2'(suite) -> [];
+'o-p08fail2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p08fail2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p08fail1'(suite) -> [];
+'o-p08fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p08fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p06fail1'(suite) -> [];
+'o-p06fail1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p06fail1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p05pass1'(suite) -> [];
+'o-p05pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p05pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p04pass1'(suite) -> [];
+'o-p04pass1'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p04pass1.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Fails to handle name containing characters > x#ff, since they are converted to atoms"]}.
+'o-p03pass1'(suite) -> [];
+'o-p03pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p03pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p01pass3'(suite) -> [];
+'o-p01pass3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p01pass3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p01pass1'(suite) -> [];
+'o-p01pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p01pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p76pass1'(suite) -> [];
+'o-p76pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p76pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p73pass1'(suite) -> [];
+'o-p73pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p73pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p72pass1'(suite) -> [];
+'o-p72pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p72pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p71pass1'(suite) -> [];
+'o-p71pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p71pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p70pass1'(suite) -> [];
+'o-p70pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p70pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p69pass1'(suite) -> [];
+'o-p69pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p69pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p68pass1'(suite) -> [];
+'o-p68pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p68pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p64pass1'(suite) -> [];
+'o-p64pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p64pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p63pass1'(suite) -> [];
+'o-p63pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p63pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p62pass1'(suite) -> [];
+'o-p62pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p62pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p61pass1'(suite) -> [];
+'o-p61pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p61pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p60pass1'(suite) -> [];
+'o-p60pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p60pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p59pass1'(suite) -> [];
+'o-p59pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p59pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p58pass1'(suite) -> [];
+'o-p58pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p58pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p57pass1'(suite) -> [];
+'o-p57pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p57pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p56pass1'(suite) -> [];
+'o-p56pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p56pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p55pass1'(suite) -> [];
+'o-p55pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p55pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p54pass1'(suite) -> [];
+'o-p54pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p54pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p53pass1'(suite) -> [];
+'o-p53pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p53pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p52pass1'(suite) -> [];
+'o-p52pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p52pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p51pass1'(suite) -> [];
+'o-p51pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p51pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p50pass1'(suite) -> [];
+'o-p50pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p50pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p49pass1'(suite) -> [];
+'o-p49pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p49pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p48pass1'(suite) -> [];
+'o-p48pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p48pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p47pass1'(suite) -> [];
+'o-p47pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p47pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p46pass1'(suite) -> [];
+'o-p46pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p46pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p45pass1'(suite) -> [];
+'o-p45pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p45pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p43pass1'(suite) -> [];
+'o-p43pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p43pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p31pass2'(suite) -> [];
+'o-p31pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p31pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p31pass1'(suite) -> [];
+'o-p31pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p31pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p30pass2'(suite) -> [];
+'o-p30pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p30pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p30pass1'(suite) -> [];
+'o-p30pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p30pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p29pass1'(suite) -> [];
+'o-p29pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p29pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p28pass5'(suite) -> [];
+'o-p28pass5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p28pass5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p28pass4'(suite) -> [];
+'o-p28pass4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p28pass4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p28pass3'(suite) -> [];
+'o-p28pass3'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p28pass3.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p28pass1'(suite) -> [];
+'o-p28pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p28pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p22pass6'(suite) -> [];
+'o-p22pass6'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p22pass6.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p22pass5'(suite) -> [];
+'o-p22pass5'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p22pass5.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p22pass4'(suite) -> [];
+'o-p22pass4'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p22pass4.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p12pass1'(suite) -> [];
+'o-p12pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p12pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p09pass1'(suite) -> [];
+'o-p09pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p09pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p08pass1'(suite) -> [];
+'o-p08pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p08pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p07pass1'(suite) -> [];
+'o-p07pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p07pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p06pass1'(suite) -> [];
+'o-p06pass1'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p06pass1.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'o-p01pass2'(suite) -> [];
+'o-p01pass2'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),oasis,"o-p01pass2.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+%%----------------------------------------------------------------------
+
+'ibm-invalid-P76-ibm76i01'(suite) -> [];
+'ibm-invalid-P76-ibm76i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P76-ibm76i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P69-ibm69i04'(suite) -> [];
+'ibm-invalid-P69-ibm69i04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P69-ibm69i04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P69-ibm69i03'(suite) -> [];
+'ibm-invalid-P69-ibm69i03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P69-ibm69i03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P69-ibm69i02'(suite) -> [];
+'ibm-invalid-P69-ibm69i02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P69-ibm69i02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P69-ibm69i01'(suite) -> [];
+'ibm-invalid-P69-ibm69i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P69-ibm69i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P68-ibm68i04'(suite) -> [];
+'ibm-invalid-P68-ibm68i04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P68-ibm68i04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P68-ibm68i03'(suite) -> [];
+'ibm-invalid-P68-ibm68i03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P68-ibm68i03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P68-ibm68i02'(suite) -> [];
+'ibm-invalid-P68-ibm68i02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P68-ibm68i02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P68-ibm68i01'(suite) -> [];
+'ibm-invalid-P68-ibm68i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P68-ibm68i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P60-ibm60i04'(suite) -> [];
+'ibm-invalid-P60-ibm60i04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P60-ibm60i04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P60-ibm60i03'(suite) -> [];
+'ibm-invalid-P60-ibm60i03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P60-ibm60i03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P60-ibm60i02'(suite) -> [];
+'ibm-invalid-P60-ibm60i02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P60-ibm60i02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P60-ibm60i01'(suite) -> [];
+'ibm-invalid-P60-ibm60i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P60-ibm60i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P59-ibm59i01'(suite) -> [];
+'ibm-invalid-P59-ibm59i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P59-ibm59i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P58-ibm58i02'(suite) -> [];
+'ibm-invalid-P58-ibm58i02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P58-ibm58i02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P58-ibm58i01'(suite) -> [];
+'ibm-invalid-P58-ibm58i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P58-ibm58i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i18'(suite) -> [];
+'ibm-invalid-P56-ibm56i18'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i18.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i17'(suite) -> [];
+'ibm-invalid-P56-ibm56i17'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i17.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i16'(suite) -> [];
+'ibm-invalid-P56-ibm56i16'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i16.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i15'(suite) -> [];
+'ibm-invalid-P56-ibm56i15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i14'(suite) -> [];
+'ibm-invalid-P56-ibm56i14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i13'(suite) -> [];
+'ibm-invalid-P56-ibm56i13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i12'(suite) -> [];
+'ibm-invalid-P56-ibm56i12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i11'(suite) -> [];
+'ibm-invalid-P56-ibm56i11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i10'(suite) -> [];
+'ibm-invalid-P56-ibm56i10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i09'(suite) -> [];
+'ibm-invalid-P56-ibm56i09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i08'(suite) -> [];
+'ibm-invalid-P56-ibm56i08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i07'(suite) -> [];
+'ibm-invalid-P56-ibm56i07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i06'(suite) -> [];
+'ibm-invalid-P56-ibm56i06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i05'(suite) -> [];
+'ibm-invalid-P56-ibm56i05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i03'(suite) -> [];
+'ibm-invalid-P56-ibm56i03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i02'(suite) -> [];
+'ibm-invalid-P56-ibm56i02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P56-ibm56i01'(suite) -> [];
+'ibm-invalid-P56-ibm56i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P56-ibm56i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P51-ibm51i03'(suite) -> [];
+'ibm-invalid-P51-ibm51i03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P51-ibm51i03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P51-ibm51i01'(suite) -> [];
+'ibm-invalid-P51-ibm51i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P51-ibm51i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P50-ibm50i01'(suite) -> [];
+'ibm-invalid-P50-ibm50i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P50-ibm50i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P49-ibm49i01'(suite) -> [];
+'ibm-invalid-P49-ibm49i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P49-ibm49i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P45-ibm45i01'(suite) -> [];
+'ibm-invalid-P45-ibm45i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P45-ibm45i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P41-ibm41i02'(suite) -> [];
+'ibm-invalid-P41-ibm41i02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P41-ibm41i02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P41-ibm41i01'(suite) -> [];
+'ibm-invalid-P41-ibm41i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P41-ibm41i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P39-ibm39i04'(suite) -> [];
+'ibm-invalid-P39-ibm39i04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P39-ibm39i04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P39-ibm39i03'(suite) -> [];
+'ibm-invalid-P39-ibm39i03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P39-ibm39i03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P39-ibm39i02'(suite) -> [];
+'ibm-invalid-P39-ibm39i02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P39-ibm39i02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P39-ibm39i01'(suite) -> [];
+'ibm-invalid-P39-ibm39i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P39-ibm39i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P32-ibm32i04'(suite) -> [];
+'ibm-invalid-P32-ibm32i04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P32-ibm32i04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P32-ibm32i03'(suite) -> [];
+'ibm-invalid-P32-ibm32i03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P32-ibm32i03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P32-ibm32i01'(suite) -> [];
+'ibm-invalid-P32-ibm32i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P32-ibm32i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-invalid-P28-ibm28i01'(suite) -> [];
+'ibm-invalid-P28-ibm28i01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-invalid-P28-ibm28i01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+%%----------------------------------------------------------------------
+
+'ibm-not-wf-P89-ibm89n12'(suite) -> [];
+'ibm-not-wf-P89-ibm89n12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n11'(suite) -> [];
+'ibm-not-wf-P89-ibm89n11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n10'(suite) -> [];
+'ibm-not-wf-P89-ibm89n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n09'(suite) -> [];
+'ibm-not-wf-P89-ibm89n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n08'(suite) -> [];
+'ibm-not-wf-P89-ibm89n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n07'(suite) -> [];
+'ibm-not-wf-P89-ibm89n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n06'(suite) -> [];
+'ibm-not-wf-P89-ibm89n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n05'(suite) -> [];
+'ibm-not-wf-P89-ibm89n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n04'(suite) -> [];
+'ibm-not-wf-P89-ibm89n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n03'(suite) -> [];
+'ibm-not-wf-P89-ibm89n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n02'(suite) -> [];
+'ibm-not-wf-P89-ibm89n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P89-ibm89n01'(suite) -> [];
+'ibm-not-wf-P89-ibm89n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P89-ibm89n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n16'(suite) -> [];
+'ibm-not-wf-P88-ibm88n16'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n16.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n15'(suite) -> [];
+'ibm-not-wf-P88-ibm88n15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n14'(suite) -> [];
+'ibm-not-wf-P88-ibm88n14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n13'(suite) -> [];
+'ibm-not-wf-P88-ibm88n13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n12'(suite) -> [];
+'ibm-not-wf-P88-ibm88n12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n11'(suite) -> [];
+'ibm-not-wf-P88-ibm88n11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n10'(suite) -> [];
+'ibm-not-wf-P88-ibm88n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n09'(suite) -> [];
+'ibm-not-wf-P88-ibm88n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n08'(suite) -> [];
+'ibm-not-wf-P88-ibm88n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n06'(suite) -> [];
+'ibm-not-wf-P88-ibm88n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n05'(suite) -> [];
+'ibm-not-wf-P88-ibm88n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n04'(suite) -> [];
+'ibm-not-wf-P88-ibm88n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n03'(suite) -> [];
+'ibm-not-wf-P88-ibm88n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n02'(suite) -> [];
+'ibm-not-wf-P88-ibm88n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P88-ibm88n01'(suite) -> [];
+'ibm-not-wf-P88-ibm88n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P88-ibm88n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n85'(suite) -> [];
+'ibm-not-wf-P87-ibm87n85'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n85.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n84'(suite) -> [];
+'ibm-not-wf-P87-ibm87n84'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n84.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n83'(suite) -> [];
+'ibm-not-wf-P87-ibm87n83'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n83.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n82'(suite) -> [];
+'ibm-not-wf-P87-ibm87n82'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n82.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n81'(suite) -> [];
+'ibm-not-wf-P87-ibm87n81'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n81.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n80'(suite) -> [];
+'ibm-not-wf-P87-ibm87n80'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n80.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n79'(suite) -> [];
+'ibm-not-wf-P87-ibm87n79'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n79.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n78'(suite) -> [];
+'ibm-not-wf-P87-ibm87n78'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n78.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n77'(suite) -> [];
+'ibm-not-wf-P87-ibm87n77'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n77.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n76'(suite) -> [];
+'ibm-not-wf-P87-ibm87n76'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n76.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n75'(suite) -> [];
+'ibm-not-wf-P87-ibm87n75'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n75.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n74'(suite) -> [];
+'ibm-not-wf-P87-ibm87n74'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n74.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n73'(suite) -> [];
+'ibm-not-wf-P87-ibm87n73'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n73.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n72'(suite) -> [];
+'ibm-not-wf-P87-ibm87n72'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n72.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n71'(suite) -> [];
+'ibm-not-wf-P87-ibm87n71'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n71.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n70'(suite) -> [];
+'ibm-not-wf-P87-ibm87n70'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n70.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n69'(suite) -> [];
+'ibm-not-wf-P87-ibm87n69'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n69.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n68'(suite) -> [];
+'ibm-not-wf-P87-ibm87n68'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n68.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n67'(suite) -> [];
+'ibm-not-wf-P87-ibm87n67'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n67.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n66'(suite) -> [];
+'ibm-not-wf-P87-ibm87n66'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n66.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n64'(suite) -> [];
+'ibm-not-wf-P87-ibm87n64'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n64.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n63'(suite) -> [];
+'ibm-not-wf-P87-ibm87n63'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n63.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n62'(suite) -> [];
+'ibm-not-wf-P87-ibm87n62'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n62.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n61'(suite) -> [];
+'ibm-not-wf-P87-ibm87n61'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n61.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n60'(suite) -> [];
+'ibm-not-wf-P87-ibm87n60'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n60.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n59'(suite) -> [];
+'ibm-not-wf-P87-ibm87n59'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n59.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n58'(suite) -> [];
+'ibm-not-wf-P87-ibm87n58'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n58.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n57'(suite) -> [];
+'ibm-not-wf-P87-ibm87n57'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n57.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n56'(suite) -> [];
+'ibm-not-wf-P87-ibm87n56'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n56.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n55'(suite) -> [];
+'ibm-not-wf-P87-ibm87n55'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n55.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n54'(suite) -> [];
+'ibm-not-wf-P87-ibm87n54'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n54.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n53'(suite) -> [];
+'ibm-not-wf-P87-ibm87n53'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n53.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n52'(suite) -> [];
+'ibm-not-wf-P87-ibm87n52'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n52.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n51'(suite) -> [];
+'ibm-not-wf-P87-ibm87n51'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n51.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n50'(suite) -> [];
+'ibm-not-wf-P87-ibm87n50'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n50.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n49'(suite) -> [];
+'ibm-not-wf-P87-ibm87n49'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n49.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n48'(suite) -> [];
+'ibm-not-wf-P87-ibm87n48'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n48.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n47'(suite) -> [];
+'ibm-not-wf-P87-ibm87n47'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n47.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n46'(suite) -> [];
+'ibm-not-wf-P87-ibm87n46'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n46.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n45'(suite) -> [];
+'ibm-not-wf-P87-ibm87n45'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n45.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n44'(suite) -> [];
+'ibm-not-wf-P87-ibm87n44'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n44.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n43'(suite) -> [];
+'ibm-not-wf-P87-ibm87n43'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n43.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n42'(suite) -> [];
+'ibm-not-wf-P87-ibm87n42'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n42.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n41'(suite) -> [];
+'ibm-not-wf-P87-ibm87n41'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n41.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n40'(suite) -> [];
+'ibm-not-wf-P87-ibm87n40'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n40.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n39'(suite) -> [];
+'ibm-not-wf-P87-ibm87n39'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n39.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n38'(suite) -> [];
+'ibm-not-wf-P87-ibm87n38'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n38.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n37'(suite) -> [];
+'ibm-not-wf-P87-ibm87n37'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n37.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n36'(suite) -> [];
+'ibm-not-wf-P87-ibm87n36'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n36.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n35'(suite) -> [];
+'ibm-not-wf-P87-ibm87n35'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n35.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n34'(suite) -> [];
+'ibm-not-wf-P87-ibm87n34'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n34.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n33'(suite) -> [];
+'ibm-not-wf-P87-ibm87n33'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n33.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n32'(suite) -> [];
+'ibm-not-wf-P87-ibm87n32'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n32.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n31'(suite) -> [];
+'ibm-not-wf-P87-ibm87n31'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n31.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n30'(suite) -> [];
+'ibm-not-wf-P87-ibm87n30'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n30.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n29'(suite) -> [];
+'ibm-not-wf-P87-ibm87n29'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n29.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n28'(suite) -> [];
+'ibm-not-wf-P87-ibm87n28'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n28.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n27'(suite) -> [];
+'ibm-not-wf-P87-ibm87n27'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n27.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n26'(suite) -> [];
+'ibm-not-wf-P87-ibm87n26'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n26.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n25'(suite) -> [];
+'ibm-not-wf-P87-ibm87n25'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n25.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n24'(suite) -> [];
+'ibm-not-wf-P87-ibm87n24'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n24.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n23'(suite) -> [];
+'ibm-not-wf-P87-ibm87n23'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n23.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n22'(suite) -> [];
+'ibm-not-wf-P87-ibm87n22'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n22.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n21'(suite) -> [];
+'ibm-not-wf-P87-ibm87n21'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n21.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n20'(suite) -> [];
+'ibm-not-wf-P87-ibm87n20'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n20.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n19'(suite) -> [];
+'ibm-not-wf-P87-ibm87n19'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n19.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n18'(suite) -> [];
+'ibm-not-wf-P87-ibm87n18'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n18.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n17'(suite) -> [];
+'ibm-not-wf-P87-ibm87n17'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n17.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n16'(suite) -> [];
+'ibm-not-wf-P87-ibm87n16'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n16.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n15'(suite) -> [];
+'ibm-not-wf-P87-ibm87n15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n14'(suite) -> [];
+'ibm-not-wf-P87-ibm87n14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n13'(suite) -> [];
+'ibm-not-wf-P87-ibm87n13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n12'(suite) -> [];
+'ibm-not-wf-P87-ibm87n12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n11'(suite) -> [];
+'ibm-not-wf-P87-ibm87n11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n10'(suite) -> [];
+'ibm-not-wf-P87-ibm87n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n09'(suite) -> [];
+'ibm-not-wf-P87-ibm87n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n08'(suite) -> [];
+'ibm-not-wf-P87-ibm87n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n07'(suite) -> [];
+'ibm-not-wf-P87-ibm87n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n06'(suite) -> [];
+'ibm-not-wf-P87-ibm87n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n05'(suite) -> [];
+'ibm-not-wf-P87-ibm87n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n04'(suite) -> [];
+'ibm-not-wf-P87-ibm87n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n03'(suite) -> [];
+'ibm-not-wf-P87-ibm87n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n02'(suite) -> [];
+'ibm-not-wf-P87-ibm87n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P87-ibm87n01'(suite) -> [];
+'ibm-not-wf-P87-ibm87n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P87-ibm87n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P86-ibm86n04'(suite) -> [];
+'ibm-not-wf-P86-ibm86n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P86-ibm86n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P86-ibm86n03'(suite) -> [];
+'ibm-not-wf-P86-ibm86n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P86-ibm86n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P86-ibm86n02'(suite) -> [];
+'ibm-not-wf-P86-ibm86n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P86-ibm86n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P86-ibm86n01'(suite) -> [];
+'ibm-not-wf-P86-ibm86n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P86-ibm86n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n99'(suite) -> [];
+'ibm-not-wf-P85-ibm85n99'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n99.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n98'(suite) -> [];
+'ibm-not-wf-P85-ibm85n98'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n98.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n97'(suite) -> [];
+'ibm-not-wf-P85-ibm85n97'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n97.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n96'(suite) -> [];
+'ibm-not-wf-P85-ibm85n96'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n96.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n95'(suite) -> [];
+'ibm-not-wf-P85-ibm85n95'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n95.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n94'(suite) -> [];
+'ibm-not-wf-P85-ibm85n94'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n94.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n93'(suite) -> [];
+'ibm-not-wf-P85-ibm85n93'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n93.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n92'(suite) -> [];
+'ibm-not-wf-P85-ibm85n92'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n92.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n91'(suite) -> [];
+'ibm-not-wf-P85-ibm85n91'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n91.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n90'(suite) -> [];
+'ibm-not-wf-P85-ibm85n90'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n90.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n89'(suite) -> [];
+'ibm-not-wf-P85-ibm85n89'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n89.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n88'(suite) -> [];
+'ibm-not-wf-P85-ibm85n88'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n88.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n87'(suite) -> [];
+'ibm-not-wf-P85-ibm85n87'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n87.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n86'(suite) -> [];
+'ibm-not-wf-P85-ibm85n86'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n86.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n85'(suite) -> [];
+'ibm-not-wf-P85-ibm85n85'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n85.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n84'(suite) -> [];
+'ibm-not-wf-P85-ibm85n84'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n84.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n83'(suite) -> [];
+'ibm-not-wf-P85-ibm85n83'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n83.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n82'(suite) -> [];
+'ibm-not-wf-P85-ibm85n82'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n82.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n81'(suite) -> [];
+'ibm-not-wf-P85-ibm85n81'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n81.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n80'(suite) -> [];
+'ibm-not-wf-P85-ibm85n80'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n80.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n79'(suite) -> [];
+'ibm-not-wf-P85-ibm85n79'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n79.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n78'(suite) -> [];
+'ibm-not-wf-P85-ibm85n78'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n78.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n77'(suite) -> [];
+'ibm-not-wf-P85-ibm85n77'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n77.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n76'(suite) -> [];
+'ibm-not-wf-P85-ibm85n76'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n76.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n75'(suite) -> [];
+'ibm-not-wf-P85-ibm85n75'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n75.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n74'(suite) -> [];
+'ibm-not-wf-P85-ibm85n74'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n74.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n73'(suite) -> [];
+'ibm-not-wf-P85-ibm85n73'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n73.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n72'(suite) -> [];
+'ibm-not-wf-P85-ibm85n72'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n72.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n71'(suite) -> [];
+'ibm-not-wf-P85-ibm85n71'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n71.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n70'(suite) -> [];
+'ibm-not-wf-P85-ibm85n70'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n70.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n69'(suite) -> [];
+'ibm-not-wf-P85-ibm85n69'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n69.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n68'(suite) -> [];
+'ibm-not-wf-P85-ibm85n68'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n68.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n67'(suite) -> [];
+'ibm-not-wf-P85-ibm85n67'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n67.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n66'(suite) -> [];
+'ibm-not-wf-P85-ibm85n66'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n66.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n65'(suite) -> [];
+'ibm-not-wf-P85-ibm85n65'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n65.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n64'(suite) -> [];
+'ibm-not-wf-P85-ibm85n64'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n64.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n63'(suite) -> [];
+'ibm-not-wf-P85-ibm85n63'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n63.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n62'(suite) -> [];
+'ibm-not-wf-P85-ibm85n62'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n62.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n61'(suite) -> [];
+'ibm-not-wf-P85-ibm85n61'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n61.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n60'(suite) -> [];
+'ibm-not-wf-P85-ibm85n60'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n60.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n59'(suite) -> [];
+'ibm-not-wf-P85-ibm85n59'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n59.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n58'(suite) -> [];
+'ibm-not-wf-P85-ibm85n58'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n58.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n57'(suite) -> [];
+'ibm-not-wf-P85-ibm85n57'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n57.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n56'(suite) -> [];
+'ibm-not-wf-P85-ibm85n56'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n56.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n55'(suite) -> [];
+'ibm-not-wf-P85-ibm85n55'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n55.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n54'(suite) -> [];
+'ibm-not-wf-P85-ibm85n54'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n54.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n53'(suite) -> [];
+'ibm-not-wf-P85-ibm85n53'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n53.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n52'(suite) -> [];
+'ibm-not-wf-P85-ibm85n52'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n52.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n51'(suite) -> [];
+'ibm-not-wf-P85-ibm85n51'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n51.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n50'(suite) -> [];
+'ibm-not-wf-P85-ibm85n50'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n50.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n49'(suite) -> [];
+'ibm-not-wf-P85-ibm85n49'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n49.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n48'(suite) -> [];
+'ibm-not-wf-P85-ibm85n48'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n48.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n47'(suite) -> [];
+'ibm-not-wf-P85-ibm85n47'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n47.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n46'(suite) -> [];
+'ibm-not-wf-P85-ibm85n46'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n46.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n45'(suite) -> [];
+'ibm-not-wf-P85-ibm85n45'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n45.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n44'(suite) -> [];
+'ibm-not-wf-P85-ibm85n44'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n44.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n43'(suite) -> [];
+'ibm-not-wf-P85-ibm85n43'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n43.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n42'(suite) -> [];
+'ibm-not-wf-P85-ibm85n42'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n42.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n41'(suite) -> [];
+'ibm-not-wf-P85-ibm85n41'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n41.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n40'(suite) -> [];
+'ibm-not-wf-P85-ibm85n40'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n40.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n39'(suite) -> [];
+'ibm-not-wf-P85-ibm85n39'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n39.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n38'(suite) -> [];
+'ibm-not-wf-P85-ibm85n38'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n38.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n37'(suite) -> [];
+'ibm-not-wf-P85-ibm85n37'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n37.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n36'(suite) -> [];
+'ibm-not-wf-P85-ibm85n36'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n36.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n35'(suite) -> [];
+'ibm-not-wf-P85-ibm85n35'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n35.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n34'(suite) -> [];
+'ibm-not-wf-P85-ibm85n34'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n34.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n33'(suite) -> [];
+'ibm-not-wf-P85-ibm85n33'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n33.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n32'(suite) -> [];
+'ibm-not-wf-P85-ibm85n32'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n32.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n31'(suite) -> [];
+'ibm-not-wf-P85-ibm85n31'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n31.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n30'(suite) -> [];
+'ibm-not-wf-P85-ibm85n30'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n30.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n29'(suite) -> [];
+'ibm-not-wf-P85-ibm85n29'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n29.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n28'(suite) -> [];
+'ibm-not-wf-P85-ibm85n28'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n28.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n27'(suite) -> [];
+'ibm-not-wf-P85-ibm85n27'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n27.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n26'(suite) -> [];
+'ibm-not-wf-P85-ibm85n26'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n26.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n25'(suite) -> [];
+'ibm-not-wf-P85-ibm85n25'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n25.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n24'(suite) -> [];
+'ibm-not-wf-P85-ibm85n24'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n24.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n23'(suite) -> [];
+'ibm-not-wf-P85-ibm85n23'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n23.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n22'(suite) -> [];
+'ibm-not-wf-P85-ibm85n22'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n22.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n21'(suite) -> [];
+'ibm-not-wf-P85-ibm85n21'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n21.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n20'(suite) -> [];
+'ibm-not-wf-P85-ibm85n20'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n20.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n198'(suite) -> [];
+'ibm-not-wf-P85-ibm85n198'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n198.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n197'(suite) -> [];
+'ibm-not-wf-P85-ibm85n197'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n197.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n196'(suite) -> [];
+'ibm-not-wf-P85-ibm85n196'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n196.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n195'(suite) -> [];
+'ibm-not-wf-P85-ibm85n195'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n195.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n194'(suite) -> [];
+'ibm-not-wf-P85-ibm85n194'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n194.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n193'(suite) -> [];
+'ibm-not-wf-P85-ibm85n193'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n193.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n192'(suite) -> [];
+'ibm-not-wf-P85-ibm85n192'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n192.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n191'(suite) -> [];
+'ibm-not-wf-P85-ibm85n191'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n191.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n190'(suite) -> [];
+'ibm-not-wf-P85-ibm85n190'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n190.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n19'(suite) -> [];
+'ibm-not-wf-P85-ibm85n19'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n19.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n189'(suite) -> [];
+'ibm-not-wf-P85-ibm85n189'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n189.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n188'(suite) -> [];
+'ibm-not-wf-P85-ibm85n188'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n188.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n187'(suite) -> [];
+'ibm-not-wf-P85-ibm85n187'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n187.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n186'(suite) -> [];
+'ibm-not-wf-P85-ibm85n186'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n186.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n185'(suite) -> [];
+'ibm-not-wf-P85-ibm85n185'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n185.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n184'(suite) -> [];
+'ibm-not-wf-P85-ibm85n184'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n184.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n183'(suite) -> [];
+'ibm-not-wf-P85-ibm85n183'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n183.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n182'(suite) -> [];
+'ibm-not-wf-P85-ibm85n182'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n182.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n181'(suite) -> [];
+'ibm-not-wf-P85-ibm85n181'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n181.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n180'(suite) -> [];
+'ibm-not-wf-P85-ibm85n180'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n180.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n18'(suite) -> [];
+'ibm-not-wf-P85-ibm85n18'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n18.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n179'(suite) -> [];
+'ibm-not-wf-P85-ibm85n179'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n179.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n178'(suite) -> [];
+'ibm-not-wf-P85-ibm85n178'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n178.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n177'(suite) -> [];
+'ibm-not-wf-P85-ibm85n177'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n177.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n176'(suite) -> [];
+'ibm-not-wf-P85-ibm85n176'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n176.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n175'(suite) -> [];
+'ibm-not-wf-P85-ibm85n175'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n175.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n174'(suite) -> [];
+'ibm-not-wf-P85-ibm85n174'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n174.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n173'(suite) -> [];
+'ibm-not-wf-P85-ibm85n173'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n173.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n172'(suite) -> [];
+'ibm-not-wf-P85-ibm85n172'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n172.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n171'(suite) -> [];
+'ibm-not-wf-P85-ibm85n171'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n171.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n170'(suite) -> [];
+'ibm-not-wf-P85-ibm85n170'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n170.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n17'(suite) -> [];
+'ibm-not-wf-P85-ibm85n17'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n17.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n169'(suite) -> [];
+'ibm-not-wf-P85-ibm85n169'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n169.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n168'(suite) -> [];
+'ibm-not-wf-P85-ibm85n168'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n168.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n167'(suite) -> [];
+'ibm-not-wf-P85-ibm85n167'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n167.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n166'(suite) -> [];
+'ibm-not-wf-P85-ibm85n166'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n166.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n165'(suite) -> [];
+'ibm-not-wf-P85-ibm85n165'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n165.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n164'(suite) -> [];
+'ibm-not-wf-P85-ibm85n164'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n164.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n163'(suite) -> [];
+'ibm-not-wf-P85-ibm85n163'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n163.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n162'(suite) -> [];
+'ibm-not-wf-P85-ibm85n162'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n162.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n161'(suite) -> [];
+'ibm-not-wf-P85-ibm85n161'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n161.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n160'(suite) -> [];
+'ibm-not-wf-P85-ibm85n160'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n160.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n16'(suite) -> [];
+'ibm-not-wf-P85-ibm85n16'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n16.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n159'(suite) -> [];
+'ibm-not-wf-P85-ibm85n159'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n159.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n158'(suite) -> [];
+'ibm-not-wf-P85-ibm85n158'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n158.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n157'(suite) -> [];
+'ibm-not-wf-P85-ibm85n157'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n157.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n156'(suite) -> [];
+'ibm-not-wf-P85-ibm85n156'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n156.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n155'(suite) -> [];
+'ibm-not-wf-P85-ibm85n155'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n155.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n154'(suite) -> [];
+'ibm-not-wf-P85-ibm85n154'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n154.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n153'(suite) -> [];
+'ibm-not-wf-P85-ibm85n153'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n153.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n152'(suite) -> [];
+'ibm-not-wf-P85-ibm85n152'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n152.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n151'(suite) -> [];
+'ibm-not-wf-P85-ibm85n151'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n151.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n150'(suite) -> [];
+'ibm-not-wf-P85-ibm85n150'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n150.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n15'(suite) -> [];
+'ibm-not-wf-P85-ibm85n15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n149'(suite) -> [];
+'ibm-not-wf-P85-ibm85n149'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n149.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n148'(suite) -> [];
+'ibm-not-wf-P85-ibm85n148'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n148.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n147'(suite) -> [];
+'ibm-not-wf-P85-ibm85n147'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n147.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n146'(suite) -> [];
+'ibm-not-wf-P85-ibm85n146'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n146.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n145'(suite) -> [];
+'ibm-not-wf-P85-ibm85n145'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n145.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n144'(suite) -> [];
+'ibm-not-wf-P85-ibm85n144'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n144.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n143'(suite) -> [];
+'ibm-not-wf-P85-ibm85n143'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n143.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n142'(suite) -> [];
+'ibm-not-wf-P85-ibm85n142'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n142.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n141'(suite) -> [];
+'ibm-not-wf-P85-ibm85n141'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n141.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n140'(suite) -> [];
+'ibm-not-wf-P85-ibm85n140'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n140.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n14'(suite) -> [];
+'ibm-not-wf-P85-ibm85n14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n139'(suite) -> [];
+'ibm-not-wf-P85-ibm85n139'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n139.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n138'(suite) -> [];
+'ibm-not-wf-P85-ibm85n138'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n138.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n137'(suite) -> [];
+'ibm-not-wf-P85-ibm85n137'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n137.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n136'(suite) -> [];
+'ibm-not-wf-P85-ibm85n136'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n136.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n135'(suite) -> [];
+'ibm-not-wf-P85-ibm85n135'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n135.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n134'(suite) -> [];
+'ibm-not-wf-P85-ibm85n134'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n134.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n133'(suite) -> [];
+'ibm-not-wf-P85-ibm85n133'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n133.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n132'(suite) -> [];
+'ibm-not-wf-P85-ibm85n132'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n132.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n131'(suite) -> [];
+'ibm-not-wf-P85-ibm85n131'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n131.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n130'(suite) -> [];
+'ibm-not-wf-P85-ibm85n130'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n130.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n13'(suite) -> [];
+'ibm-not-wf-P85-ibm85n13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n129'(suite) -> [];
+'ibm-not-wf-P85-ibm85n129'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n129.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n128'(suite) -> [];
+'ibm-not-wf-P85-ibm85n128'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n128.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n127'(suite) -> [];
+'ibm-not-wf-P85-ibm85n127'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n127.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n126'(suite) -> [];
+'ibm-not-wf-P85-ibm85n126'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n126.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n125'(suite) -> [];
+'ibm-not-wf-P85-ibm85n125'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n125.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n124'(suite) -> [];
+'ibm-not-wf-P85-ibm85n124'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n124.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n123'(suite) -> [];
+'ibm-not-wf-P85-ibm85n123'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n123.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n122'(suite) -> [];
+'ibm-not-wf-P85-ibm85n122'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n122.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n121'(suite) -> [];
+'ibm-not-wf-P85-ibm85n121'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n121.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n120'(suite) -> [];
+'ibm-not-wf-P85-ibm85n120'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n120.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n12'(suite) -> [];
+'ibm-not-wf-P85-ibm85n12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n119'(suite) -> [];
+'ibm-not-wf-P85-ibm85n119'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n119.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n118'(suite) -> [];
+'ibm-not-wf-P85-ibm85n118'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n118.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n117'(suite) -> [];
+'ibm-not-wf-P85-ibm85n117'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n117.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n116'(suite) -> [];
+'ibm-not-wf-P85-ibm85n116'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n116.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n115'(suite) -> [];
+'ibm-not-wf-P85-ibm85n115'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n115.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n114'(suite) -> [];
+'ibm-not-wf-P85-ibm85n114'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n114.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n113'(suite) -> [];
+'ibm-not-wf-P85-ibm85n113'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n113.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n112'(suite) -> [];
+'ibm-not-wf-P85-ibm85n112'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n112.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n111'(suite) -> [];
+'ibm-not-wf-P85-ibm85n111'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n111.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n110'(suite) -> [];
+'ibm-not-wf-P85-ibm85n110'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n110.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n11'(suite) -> [];
+'ibm-not-wf-P85-ibm85n11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n109'(suite) -> [];
+'ibm-not-wf-P85-ibm85n109'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n109.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n108'(suite) -> [];
+'ibm-not-wf-P85-ibm85n108'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n108.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n107'(suite) -> [];
+'ibm-not-wf-P85-ibm85n107'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n107.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n106'(suite) -> [];
+'ibm-not-wf-P85-ibm85n106'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n106.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n105'(suite) -> [];
+'ibm-not-wf-P85-ibm85n105'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n105.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n104'(suite) -> [];
+'ibm-not-wf-P85-ibm85n104'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n104.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n103'(suite) -> [];
+'ibm-not-wf-P85-ibm85n103'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n103.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n102'(suite) -> [];
+'ibm-not-wf-P85-ibm85n102'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n102.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n101'(suite) -> [];
+'ibm-not-wf-P85-ibm85n101'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n101.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n100'(suite) -> [];
+'ibm-not-wf-P85-ibm85n100'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n100.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n10'(suite) -> [];
+'ibm-not-wf-P85-ibm85n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n09'(suite) -> [];
+'ibm-not-wf-P85-ibm85n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n08'(suite) -> [];
+'ibm-not-wf-P85-ibm85n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n07'(suite) -> [];
+'ibm-not-wf-P85-ibm85n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n06'(suite) -> [];
+'ibm-not-wf-P85-ibm85n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n05'(suite) -> [];
+'ibm-not-wf-P85-ibm85n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n04'(suite) -> [];
+'ibm-not-wf-P85-ibm85n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n03'(suite) -> [];
+'ibm-not-wf-P85-ibm85n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n02'(suite) -> [];
+'ibm-not-wf-P85-ibm85n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P85-ibm85n01'(suite) -> [];
+'ibm-not-wf-P85-ibm85n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P85-ibm85n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P83-ibm83n06'(suite) -> [];
+'ibm-not-wf-P83-ibm83n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P83-ibm83n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P83-ibm83n05'(suite) -> [];
+'ibm-not-wf-P83-ibm83n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P83-ibm83n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P83-ibm83n04'(suite) -> [];
+'ibm-not-wf-P83-ibm83n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P83-ibm83n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P83-ibm83n03'(suite) -> [];
+'ibm-not-wf-P83-ibm83n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P83-ibm83n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P83-ibm83n02'(suite) -> [];
+'ibm-not-wf-P83-ibm83n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P83-ibm83n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P83-ibm83n01'(suite) -> [];
+'ibm-not-wf-P83-ibm83n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P83-ibm83n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P82-ibm82n08'(suite) -> [];
+'ibm-not-wf-P82-ibm82n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P82-ibm82n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P82-ibm82n07'(suite) -> [];
+'ibm-not-wf-P82-ibm82n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P82-ibm82n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P82-ibm82n06'(suite) -> [];
+'ibm-not-wf-P82-ibm82n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P82-ibm82n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P82-ibm82n05'(suite) -> [];
+'ibm-not-wf-P82-ibm82n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P82-ibm82n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P82-ibm82n04'(suite) -> [];
+'ibm-not-wf-P82-ibm82n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P82-ibm82n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P82-ibm82n03'(suite) -> [];
+'ibm-not-wf-P82-ibm82n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P82-ibm82n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P82-ibm82n02'(suite) -> [];
+'ibm-not-wf-P82-ibm82n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P82-ibm82n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P82-ibm82n01'(suite) -> [];
+'ibm-not-wf-P82-ibm82n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P82-ibm82n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P81-ibm81n09'(suite) -> [];
+'ibm-not-wf-P81-ibm81n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P81-ibm81n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P81-ibm81n08'(suite) -> [];
+'ibm-not-wf-P81-ibm81n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P81-ibm81n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P81-ibm81n07'(suite) -> [];
+'ibm-not-wf-P81-ibm81n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P81-ibm81n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P81-ibm81n06'(suite) -> [];
+'ibm-not-wf-P81-ibm81n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P81-ibm81n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P81-ibm81n05'(suite) -> [];
+'ibm-not-wf-P81-ibm81n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P81-ibm81n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P81-ibm81n04'(suite) -> [];
+'ibm-not-wf-P81-ibm81n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P81-ibm81n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P81-ibm81n03'(suite) -> [];
+'ibm-not-wf-P81-ibm81n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P81-ibm81n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P81-ibm81n02'(suite) -> [];
+'ibm-not-wf-P81-ibm81n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P81-ibm81n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P81-ibm81n01'(suite) -> [];
+'ibm-not-wf-P81-ibm81n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P81-ibm81n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P80-ibm80n06'(suite) -> [];
+'ibm-not-wf-P80-ibm80n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P80-ibm80n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P80-ibm80n05'(suite) -> [];
+'ibm-not-wf-P80-ibm80n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P80-ibm80n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P80-ibm80n04'(suite) -> [];
+'ibm-not-wf-P80-ibm80n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P80-ibm80n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P80-ibm80n03'(suite) -> [];
+'ibm-not-wf-P80-ibm80n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P80-ibm80n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P80-ibm80n02'(suite) -> [];
+'ibm-not-wf-P80-ibm80n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P80-ibm80n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P80-ibm80n01'(suite) -> [];
+'ibm-not-wf-P80-ibm80n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P80-ibm80n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P79-ibm79n02'(suite) -> [];
+'ibm-not-wf-P79-ibm79n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P79-ibm79n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P79-ibm79n01'(suite) -> [];
+'ibm-not-wf-P79-ibm79n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P79-ibm79n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P78-ibm78n02'(suite) -> [];
+'ibm-not-wf-P78-ibm78n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P78-ibm78n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P78-ibm78n01'(suite) -> [];
+'ibm-not-wf-P78-ibm78n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P78-ibm78n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P77-ibm77n04'(suite) -> [];
+'ibm-not-wf-P77-ibm77n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P77-ibm77n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P77-ibm77n03'(suite) -> [];
+'ibm-not-wf-P77-ibm77n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P77-ibm77n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P77-ibm77n02'(suite) -> [];
+'ibm-not-wf-P77-ibm77n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P77-ibm77n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P77-ibm77n01'(suite) -> [];
+'ibm-not-wf-P77-ibm77n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P77-ibm77n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P76-ibm76n07'(suite) -> [];
+'ibm-not-wf-P76-ibm76n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P76-ibm76n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P76-ibm76n06'(suite) -> [];
+'ibm-not-wf-P76-ibm76n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P76-ibm76n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P76-ibm76n05'(suite) -> [];
+'ibm-not-wf-P76-ibm76n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P76-ibm76n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P76-ibm76n04'(suite) -> [];
+'ibm-not-wf-P76-ibm76n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P76-ibm76n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P76-ibm76n03'(suite) -> [];
+'ibm-not-wf-P76-ibm76n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P76-ibm76n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P76-ibm76n02'(suite) -> [];
+'ibm-not-wf-P76-ibm76n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P76-ibm76n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P76-ibm76n01'(suite) -> [];
+'ibm-not-wf-P76-ibm76n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P76-ibm76n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n13'(suite) -> [];
+'ibm-not-wf-P75-ibm75n13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n12'(suite) -> [];
+'ibm-not-wf-P75-ibm75n12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n11'(suite) -> [];
+'ibm-not-wf-P75-ibm75n11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n10'(suite) -> [];
+'ibm-not-wf-P75-ibm75n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n09'(suite) -> [];
+'ibm-not-wf-P75-ibm75n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n08'(suite) -> [];
+'ibm-not-wf-P75-ibm75n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n07'(suite) -> [];
+'ibm-not-wf-P75-ibm75n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n06'(suite) -> [];
+'ibm-not-wf-P75-ibm75n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n05'(suite) -> [];
+'ibm-not-wf-P75-ibm75n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n04'(suite) -> [];
+'ibm-not-wf-P75-ibm75n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n03'(suite) -> [];
+'ibm-not-wf-P75-ibm75n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n02'(suite) -> [];
+'ibm-not-wf-P75-ibm75n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P75-ibm75n01'(suite) -> [];
+'ibm-not-wf-P75-ibm75n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P75-ibm75n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P74-ibm74n01'(suite) -> [];
+'ibm-not-wf-P74-ibm74n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P74-ibm74n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P73-ibm73n03'(suite) -> [];
+'ibm-not-wf-P73-ibm73n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P73-ibm73n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P73-ibm73n01'(suite) -> [];
+'ibm-not-wf-P73-ibm73n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P73-ibm73n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P72-ibm72n09'(suite) -> [];
+'ibm-not-wf-P72-ibm72n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P72-ibm72n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P72-ibm72n08'(suite) -> [];
+'ibm-not-wf-P72-ibm72n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P72-ibm72n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P72-ibm72n07'(suite) -> [];
+'ibm-not-wf-P72-ibm72n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P72-ibm72n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P72-ibm72n06'(suite) -> [];
+'ibm-not-wf-P72-ibm72n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P72-ibm72n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P72-ibm72n05'(suite) -> [];
+'ibm-not-wf-P72-ibm72n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P72-ibm72n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P72-ibm72n04'(suite) -> [];
+'ibm-not-wf-P72-ibm72n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P72-ibm72n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P72-ibm72n03'(suite) -> [];
+'ibm-not-wf-P72-ibm72n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P72-ibm72n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P72-ibm72n02'(suite) -> [];
+'ibm-not-wf-P72-ibm72n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P72-ibm72n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P72-ibm72n01'(suite) -> [];
+'ibm-not-wf-P72-ibm72n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P72-ibm72n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P71-ibm71n08'(suite) -> [];
+'ibm-not-wf-P71-ibm71n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P71-ibm71n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P71-ibm71n07'(suite) -> [];
+'ibm-not-wf-P71-ibm71n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P71-ibm71n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P71-ibm71n06'(suite) -> [];
+'ibm-not-wf-P71-ibm71n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P71-ibm71n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P71-ibm71n05'(suite) -> [];
+'ibm-not-wf-P71-ibm71n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P71-ibm71n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P71-ibm71n04'(suite) -> [];
+'ibm-not-wf-P71-ibm71n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P71-ibm71n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P71-ibm71n03'(suite) -> [];
+'ibm-not-wf-P71-ibm71n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P71-ibm71n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P71-ibm71n02'(suite) -> [];
+'ibm-not-wf-P71-ibm71n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P71-ibm71n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P71-ibm71n01'(suite) -> [];
+'ibm-not-wf-P71-ibm71n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P71-ibm71n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P71-ibm70n01'(suite) -> [];
+'ibm-not-wf-P71-ibm70n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P71-ibm70n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P69-ibm69n07'(suite) -> [];
+'ibm-not-wf-P69-ibm69n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P69-ibm69n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P69-ibm69n06'(suite) -> [];
+'ibm-not-wf-P69-ibm69n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P69-ibm69n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P69-ibm69n05'(suite) -> [];
+'ibm-not-wf-P69-ibm69n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P69-ibm69n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P69-ibm69n04'(suite) -> [];
+'ibm-not-wf-P69-ibm69n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P69-ibm69n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P69-ibm69n03'(suite) -> [];
+'ibm-not-wf-P69-ibm69n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P69-ibm69n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P69-ibm69n02'(suite) -> [];
+'ibm-not-wf-P69-ibm69n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P69-ibm69n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P69-ibm69n01'(suite) -> [];
+'ibm-not-wf-P69-ibm69n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P69-ibm69n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n10'(suite) -> [];
+'ibm-not-wf-P68-ibm68n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n09'(suite) -> [];
+'ibm-not-wf-P68-ibm68n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n08'(suite) -> [];
+'ibm-not-wf-P68-ibm68n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n07'(suite) -> [];
+'ibm-not-wf-P68-ibm68n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n06'(suite) -> [];
+'ibm-not-wf-P68-ibm68n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n05'(suite) -> [];
+'ibm-not-wf-P68-ibm68n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n04'(suite) -> [];
+'ibm-not-wf-P68-ibm68n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n03'(suite) -> [];
+'ibm-not-wf-P68-ibm68n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n02'(suite) -> [];
+'ibm-not-wf-P68-ibm68n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P68-ibm68n01'(suite) -> [];
+'ibm-not-wf-P68-ibm68n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P68-ibm68n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n15'(suite) -> [];
+'ibm-not-wf-P66-ibm66n15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n14'(suite) -> [];
+'ibm-not-wf-P66-ibm66n14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n13'(suite) -> [];
+'ibm-not-wf-P66-ibm66n13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n12'(suite) -> [];
+'ibm-not-wf-P66-ibm66n12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n11'(suite) -> [];
+'ibm-not-wf-P66-ibm66n11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n10'(suite) -> [];
+'ibm-not-wf-P66-ibm66n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n09'(suite) -> [];
+'ibm-not-wf-P66-ibm66n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n08'(suite) -> [];
+'ibm-not-wf-P66-ibm66n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n07'(suite) -> [];
+'ibm-not-wf-P66-ibm66n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n06'(suite) -> [];
+'ibm-not-wf-P66-ibm66n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n05'(suite) -> [];
+'ibm-not-wf-P66-ibm66n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n04'(suite) -> [];
+'ibm-not-wf-P66-ibm66n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n03'(suite) -> [];
+'ibm-not-wf-P66-ibm66n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n02'(suite) -> [];
+'ibm-not-wf-P66-ibm66n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P66-ibm66n01'(suite) -> [];
+'ibm-not-wf-P66-ibm66n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P66-ibm66n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P65-ibm65n02'(suite) -> [];
+'ibm-not-wf-P65-ibm65n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P65-ibm65n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P65-ibm65n01'(suite) -> [];
+'ibm-not-wf-P65-ibm65n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P65-ibm65n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P64-ibm64n03'(suite) -> [];
+'ibm-not-wf-P64-ibm64n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P64-ibm64n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P64-ibm64n02'(suite) -> [];
+'ibm-not-wf-P64-ibm64n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P64-ibm64n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P64-ibm64n01'(suite) -> [];
+'ibm-not-wf-P64-ibm64n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P64-ibm64n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P63-ibm63n07'(suite) -> [];
+'ibm-not-wf-P63-ibm63n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P63-ibm63n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P63-ibm63n06'(suite) -> [];
+'ibm-not-wf-P63-ibm63n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P63-ibm63n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P63-ibm63n05'(suite) -> [];
+'ibm-not-wf-P63-ibm63n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P63-ibm63n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P63-ibm63n04'(suite) -> [];
+'ibm-not-wf-P63-ibm63n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P63-ibm63n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P63-ibm63n03'(suite) -> [];
+'ibm-not-wf-P63-ibm63n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P63-ibm63n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P63-ibm63n02'(suite) -> [];
+'ibm-not-wf-P63-ibm63n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P63-ibm63n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P63-ibm63n01'(suite) -> [];
+'ibm-not-wf-P63-ibm63n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P63-ibm63n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P62-ibm62n08'(suite) -> [];
+'ibm-not-wf-P62-ibm62n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P62-ibm62n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P62-ibm62n07'(suite) -> [];
+'ibm-not-wf-P62-ibm62n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P62-ibm62n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P62-ibm62n06'(suite) -> [];
+'ibm-not-wf-P62-ibm62n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P62-ibm62n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P62-ibm62n05'(suite) -> [];
+'ibm-not-wf-P62-ibm62n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P62-ibm62n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P62-ibm62n04'(suite) -> [];
+'ibm-not-wf-P62-ibm62n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P62-ibm62n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P62-ibm62n03'(suite) -> [];
+'ibm-not-wf-P62-ibm62n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P62-ibm62n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P62-ibm62n02'(suite) -> [];
+'ibm-not-wf-P62-ibm62n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P62-ibm62n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P62-ibm62n01'(suite) -> [];
+'ibm-not-wf-P62-ibm62n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P62-ibm62n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P61-ibm61n01'(suite) -> [];
+'ibm-not-wf-P61-ibm61n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P61-ibm61n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P60-ibm60n08'(suite) -> [];
+'ibm-not-wf-P60-ibm60n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P60-ibm60n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P60-ibm60n07'(suite) -> [];
+'ibm-not-wf-P60-ibm60n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P60-ibm60n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P60-ibm60n06'(suite) -> [];
+'ibm-not-wf-P60-ibm60n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P60-ibm60n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P60-ibm60n05'(suite) -> [];
+'ibm-not-wf-P60-ibm60n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P60-ibm60n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P60-ibm60n04'(suite) -> [];
+'ibm-not-wf-P60-ibm60n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P60-ibm60n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P60-ibm60n03'(suite) -> [];
+'ibm-not-wf-P60-ibm60n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P60-ibm60n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P60-ibm60n02'(suite) -> [];
+'ibm-not-wf-P60-ibm60n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P60-ibm60n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P60-ibm60n01'(suite) -> [];
+'ibm-not-wf-P60-ibm60n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P60-ibm60n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P59-ibm59n06'(suite) -> [];
+'ibm-not-wf-P59-ibm59n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P59-ibm59n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P59-ibm59n05'(suite) -> [];
+'ibm-not-wf-P59-ibm59n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P59-ibm59n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P59-ibm59n04'(suite) -> [];
+'ibm-not-wf-P59-ibm59n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P59-ibm59n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P59-ibm59n03'(suite) -> [];
+'ibm-not-wf-P59-ibm59n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P59-ibm59n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P59-ibm59n02'(suite) -> [];
+'ibm-not-wf-P59-ibm59n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P59-ibm59n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P59-ibm59n01'(suite) -> [];
+'ibm-not-wf-P59-ibm59n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P59-ibm59n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P58-ibm58n08'(suite) -> [];
+'ibm-not-wf-P58-ibm58n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P58-ibm58n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P58-ibm58n07'(suite) -> [];
+'ibm-not-wf-P58-ibm58n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P58-ibm58n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P58-ibm58n06'(suite) -> [];
+'ibm-not-wf-P58-ibm58n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P58-ibm58n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P58-ibm58n05'(suite) -> [];
+'ibm-not-wf-P58-ibm58n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P58-ibm58n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P58-ibm58n04'(suite) -> [];
+'ibm-not-wf-P58-ibm58n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P58-ibm58n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P58-ibm58n03'(suite) -> [];
+'ibm-not-wf-P58-ibm58n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P58-ibm58n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P58-ibm58n02'(suite) -> [];
+'ibm-not-wf-P58-ibm58n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P58-ibm58n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P58-ibm58n01'(suite) -> [];
+'ibm-not-wf-P58-ibm58n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P58-ibm58n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P57-ibm57n01'(suite) -> [];
+'ibm-not-wf-P57-ibm57n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P57-ibm57n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P56-ibm56n07'(suite) -> [];
+'ibm-not-wf-P56-ibm56n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P56-ibm56n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P56-ibm56n06'(suite) -> [];
+'ibm-not-wf-P56-ibm56n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P56-ibm56n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P56-ibm56n05'(suite) -> [];
+'ibm-not-wf-P56-ibm56n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P56-ibm56n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P56-ibm56n04'(suite) -> [];
+'ibm-not-wf-P56-ibm56n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P56-ibm56n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P56-ibm56n03'(suite) -> [];
+'ibm-not-wf-P56-ibm56n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P56-ibm56n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P56-ibm56n02'(suite) -> [];
+'ibm-not-wf-P56-ibm56n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P56-ibm56n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P56-ibm56n01'(suite) -> [];
+'ibm-not-wf-P56-ibm56n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P56-ibm56n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P55-ibm55n03'(suite) -> [];
+'ibm-not-wf-P55-ibm55n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P55-ibm55n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P55-ibm55n02'(suite) -> [];
+'ibm-not-wf-P55-ibm55n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P55-ibm55n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P55-ibm55n01'(suite) -> [];
+'ibm-not-wf-P55-ibm55n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P55-ibm55n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P54-ibm54n02'(suite) -> [];
+'ibm-not-wf-P54-ibm54n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P54-ibm54n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P54-ibm54n01'(suite) -> [];
+'ibm-not-wf-P54-ibm54n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P54-ibm54n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P53-ibm53n08'(suite) -> [];
+'ibm-not-wf-P53-ibm53n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P53-ibm53n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P53-ibm53n07'(suite) -> [];
+'ibm-not-wf-P53-ibm53n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P53-ibm53n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P53-ibm53n06'(suite) -> [];
+'ibm-not-wf-P53-ibm53n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P53-ibm53n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P53-ibm53n05'(suite) -> [];
+'ibm-not-wf-P53-ibm53n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P53-ibm53n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P53-ibm53n04'(suite) -> [];
+'ibm-not-wf-P53-ibm53n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P53-ibm53n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P53-ibm53n03'(suite) -> [];
+'ibm-not-wf-P53-ibm53n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P53-ibm53n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P53-ibm53n02'(suite) -> [];
+'ibm-not-wf-P53-ibm53n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P53-ibm53n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P53-ibm53n01'(suite) -> [];
+'ibm-not-wf-P53-ibm53n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P53-ibm53n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P52-ibm52n06'(suite) -> [];
+'ibm-not-wf-P52-ibm52n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P52-ibm52n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P52-ibm52n05'(suite) -> [];
+'ibm-not-wf-P52-ibm52n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P52-ibm52n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P52-ibm52n04'(suite) -> [];
+'ibm-not-wf-P52-ibm52n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P52-ibm52n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P52-ibm52n03'(suite) -> [];
+'ibm-not-wf-P52-ibm52n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P52-ibm52n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P52-ibm52n02'(suite) -> [];
+'ibm-not-wf-P52-ibm52n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P52-ibm52n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P52-ibm52n01'(suite) -> [];
+'ibm-not-wf-P52-ibm52n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P52-ibm52n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P51-ibm51n07'(suite) -> [];
+'ibm-not-wf-P51-ibm51n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P51-ibm51n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P51-ibm51n06'(suite) -> [];
+'ibm-not-wf-P51-ibm51n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P51-ibm51n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P51-ibm51n05'(suite) -> [];
+'ibm-not-wf-P51-ibm51n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P51-ibm51n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P51-ibm51n04'(suite) -> [];
+'ibm-not-wf-P51-ibm51n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P51-ibm51n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P51-ibm51n03'(suite) -> [];
+'ibm-not-wf-P51-ibm51n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P51-ibm51n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P51-ibm51n02'(suite) -> [];
+'ibm-not-wf-P51-ibm51n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P51-ibm51n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P51-ibm51n01'(suite) -> [];
+'ibm-not-wf-P51-ibm51n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P51-ibm51n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P50-ibm50n07'(suite) -> [];
+'ibm-not-wf-P50-ibm50n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P50-ibm50n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P50-ibm50n06'(suite) -> [];
+'ibm-not-wf-P50-ibm50n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P50-ibm50n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P50-ibm50n05'(suite) -> [];
+'ibm-not-wf-P50-ibm50n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P50-ibm50n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P50-ibm50n04'(suite) -> [];
+'ibm-not-wf-P50-ibm50n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P50-ibm50n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P50-ibm50n03'(suite) -> [];
+'ibm-not-wf-P50-ibm50n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P50-ibm50n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P50-ibm50n02'(suite) -> [];
+'ibm-not-wf-P50-ibm50n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P50-ibm50n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P50-ibm50n01'(suite) -> [];
+'ibm-not-wf-P50-ibm50n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P50-ibm50n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P49-ibm49n06'(suite) -> [];
+'ibm-not-wf-P49-ibm49n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P49-ibm49n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P49-ibm49n05'(suite) -> [];
+'ibm-not-wf-P49-ibm49n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P49-ibm49n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P49-ibm49n04'(suite) -> [];
+'ibm-not-wf-P49-ibm49n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P49-ibm49n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P49-ibm49n03'(suite) -> [];
+'ibm-not-wf-P49-ibm49n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P49-ibm49n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P49-ibm49n02'(suite) -> [];
+'ibm-not-wf-P49-ibm49n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P49-ibm49n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P49-ibm49n01'(suite) -> [];
+'ibm-not-wf-P49-ibm49n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P49-ibm49n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P48-ibm48n07'(suite) -> [];
+'ibm-not-wf-P48-ibm48n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P48-ibm48n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P48-ibm48n06'(suite) -> [];
+'ibm-not-wf-P48-ibm48n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P48-ibm48n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P48-ibm48n05'(suite) -> [];
+'ibm-not-wf-P48-ibm48n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P48-ibm48n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P48-ibm48n04'(suite) -> [];
+'ibm-not-wf-P48-ibm48n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P48-ibm48n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P48-ibm48n03'(suite) -> [];
+'ibm-not-wf-P48-ibm48n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P48-ibm48n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P48-ibm48n02'(suite) -> [];
+'ibm-not-wf-P48-ibm48n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P48-ibm48n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P48-ibm48n01'(suite) -> [];
+'ibm-not-wf-P48-ibm48n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P48-ibm48n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P47-ibm47n06'(suite) -> [];
+'ibm-not-wf-P47-ibm47n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P47-ibm47n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P47-ibm47n05'(suite) -> [];
+'ibm-not-wf-P47-ibm47n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P47-ibm47n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P47-ibm47n04'(suite) -> [];
+'ibm-not-wf-P47-ibm47n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P47-ibm47n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P47-ibm47n03'(suite) -> [];
+'ibm-not-wf-P47-ibm47n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P47-ibm47n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P47-ibm47n02'(suite) -> [];
+'ibm-not-wf-P47-ibm47n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P47-ibm47n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P47-ibm47n01'(suite) -> [];
+'ibm-not-wf-P47-ibm47n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P47-ibm47n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P46-ibm46n05'(suite) -> [];
+'ibm-not-wf-P46-ibm46n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P46-ibm46n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P46-ibm46n04'(suite) -> [];
+'ibm-not-wf-P46-ibm46n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P46-ibm46n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P46-ibm46n03'(suite) -> [];
+'ibm-not-wf-P46-ibm46n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P46-ibm46n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P46-ibm46n02'(suite) -> [];
+'ibm-not-wf-P46-ibm46n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P46-ibm46n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P46-ibm46n01'(suite) -> [];
+'ibm-not-wf-P46-ibm46n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P46-ibm46n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P45-ibm45n09'(suite) -> [];
+'ibm-not-wf-P45-ibm45n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P45-ibm45n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P45-ibm45n08'(suite) -> [];
+'ibm-not-wf-P45-ibm45n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P45-ibm45n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P45-ibm45n07'(suite) -> [];
+'ibm-not-wf-P45-ibm45n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P45-ibm45n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P45-ibm45n06'(suite) -> [];
+'ibm-not-wf-P45-ibm45n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P45-ibm45n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P45-ibm45n05'(suite) -> [];
+'ibm-not-wf-P45-ibm45n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P45-ibm45n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P45-ibm45n04'(suite) -> [];
+'ibm-not-wf-P45-ibm45n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P45-ibm45n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P45-ibm45n03'(suite) -> [];
+'ibm-not-wf-P45-ibm45n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P45-ibm45n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P45-ibm45n02'(suite) -> [];
+'ibm-not-wf-P45-ibm45n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P45-ibm45n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P45-ibm45n01'(suite) -> [];
+'ibm-not-wf-P45-ibm45n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P45-ibm45n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P44-ibm44n04'(suite) -> [];
+'ibm-not-wf-P44-ibm44n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P44-ibm44n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P44-ibm44n03'(suite) -> [];
+'ibm-not-wf-P44-ibm44n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P44-ibm44n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P44-ibm44n02'(suite) -> [];
+'ibm-not-wf-P44-ibm44n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P44-ibm44n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P44-ibm44n01'(suite) -> [];
+'ibm-not-wf-P44-ibm44n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P44-ibm44n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P43-ibm43n05'(suite) -> [];
+'ibm-not-wf-P43-ibm43n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P43-ibm43n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P43-ibm43n04'(suite) -> [];
+'ibm-not-wf-P43-ibm43n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P43-ibm43n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P43-ibm43n02'(suite) -> [];
+'ibm-not-wf-P43-ibm43n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P43-ibm43n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P43-ibm43n01'(suite) -> [];
+'ibm-not-wf-P43-ibm43n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P43-ibm43n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P42-ibm42n05'(suite) -> [];
+'ibm-not-wf-P42-ibm42n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P42-ibm42n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P42-ibm42n04'(suite) -> [];
+'ibm-not-wf-P42-ibm42n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P42-ibm42n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P42-ibm42n03'(suite) -> [];
+'ibm-not-wf-P42-ibm42n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P42-ibm42n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P42-ibm42n02'(suite) -> [];
+'ibm-not-wf-P42-ibm42n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P42-ibm42n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P42-ibm42n01'(suite) -> [];
+'ibm-not-wf-P42-ibm42n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P42-ibm42n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n14'(suite) -> [];
+'ibm-not-wf-P41-ibm41n14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n13'(suite) -> [];
+'ibm-not-wf-P41-ibm41n13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n12'(suite) -> [];
+'ibm-not-wf-P41-ibm41n12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n11'(suite) -> [];
+'ibm-not-wf-P41-ibm41n11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n10'(suite) -> [];
+'ibm-not-wf-P41-ibm41n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n09'(suite) -> [];
+'ibm-not-wf-P41-ibm41n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n08'(suite) -> [];
+'ibm-not-wf-P41-ibm41n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n07'(suite) -> [];
+'ibm-not-wf-P41-ibm41n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n06'(suite) -> [];
+'ibm-not-wf-P41-ibm41n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n05'(suite) -> [];
+'ibm-not-wf-P41-ibm41n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n04'(suite) -> [];
+'ibm-not-wf-P41-ibm41n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n03'(suite) -> [];
+'ibm-not-wf-P41-ibm41n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n02'(suite) -> [];
+'ibm-not-wf-P41-ibm41n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P41-ibm41n01'(suite) -> [];
+'ibm-not-wf-P41-ibm41n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P41-ibm41n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P40-ibm40n05'(suite) -> [];
+'ibm-not-wf-P40-ibm40n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P40-ibm40n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P40-ibm40n04'(suite) -> [];
+'ibm-not-wf-P40-ibm40n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P40-ibm40n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P40-ibm40n03'(suite) -> [];
+'ibm-not-wf-P40-ibm40n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P40-ibm40n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P40-ibm40n02'(suite) -> [];
+'ibm-not-wf-P40-ibm40n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P40-ibm40n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P40-ibm40n01'(suite) -> [];
+'ibm-not-wf-P40-ibm40n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P40-ibm40n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P39-ibm39n06'(suite) -> [];
+'ibm-not-wf-P39-ibm39n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P39-ibm39n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P39-ibm39n05'(suite) -> [];
+'ibm-not-wf-P39-ibm39n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P39-ibm39n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P39-ibm39n04'(suite) -> [];
+'ibm-not-wf-P39-ibm39n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P39-ibm39n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P39-ibm39n03'(suite) -> [];
+'ibm-not-wf-P39-ibm39n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P39-ibm39n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P39-ibm39n02'(suite) -> [];
+'ibm-not-wf-P39-ibm39n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P39-ibm39n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P39-ibm39n01'(suite) -> [];
+'ibm-not-wf-P39-ibm39n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P39-ibm39n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P32-ibm32n09'(suite) -> [];
+'ibm-not-wf-P32-ibm32n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P32-ibm32n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P32-ibm32n08'(suite) -> [];
+'ibm-not-wf-P32-ibm32n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P32-ibm32n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P32-ibm32n07'(suite) -> [];
+'ibm-not-wf-P32-ibm32n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P32-ibm32n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P32-ibm32n06'(suite) -> [];
+'ibm-not-wf-P32-ibm32n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P32-ibm32n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P32-ibm32n05'(suite) -> [];
+'ibm-not-wf-P32-ibm32n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P32-ibm32n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P32-ibm32n04'(suite) -> [];
+'ibm-not-wf-P32-ibm32n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P32-ibm32n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P32-ibm32n03'(suite) -> [];
+'ibm-not-wf-P32-ibm32n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P32-ibm32n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P32-ibm32n02'(suite) -> [];
+'ibm-not-wf-P32-ibm32n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P32-ibm32n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P32-ibm32n01'(suite) -> [];
+'ibm-not-wf-P32-ibm32n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P32-ibm32n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P31-ibm31n01'(suite) -> [];
+'ibm-not-wf-P31-ibm31n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P31-ibm31n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P30-ibm30n01'(suite) -> [];
+'ibm-not-wf-P30-ibm30n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P30-ibm30n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P29-ibm29n07'(suite) -> [];
+'ibm-not-wf-P29-ibm29n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P29-ibm29n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P29-ibm29n06'(suite) -> [];
+'ibm-not-wf-P29-ibm29n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P29-ibm29n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P29-ibm29n05'(suite) -> [];
+'ibm-not-wf-P29-ibm29n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P29-ibm29n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P29-ibm29n04'(suite) -> [];
+'ibm-not-wf-P29-ibm29n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P29-ibm29n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P29-ibm29n03'(suite) -> [];
+'ibm-not-wf-P29-ibm29n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P29-ibm29n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P29-ibm29n02'(suite) -> [];
+'ibm-not-wf-P29-ibm29n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P29-ibm29n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P29-ibm29n01'(suite) -> [];
+'ibm-not-wf-P29-ibm29n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P29-ibm29n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P28a-ibm28an01'(suite) -> [];
+'ibm-not-wf-P28a-ibm28an01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P28a-ibm28an01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P28-ibm28n08'(suite) -> [];
+'ibm-not-wf-P28-ibm28n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P28-ibm28n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P28-ibm28n07'(suite) -> [];
+'ibm-not-wf-P28-ibm28n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P28-ibm28n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P28-ibm28n06'(suite) -> [];
+'ibm-not-wf-P28-ibm28n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P28-ibm28n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P28-ibm28n05'(suite) -> [];
+'ibm-not-wf-P28-ibm28n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P28-ibm28n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P28-ibm28n04'(suite) -> [];
+'ibm-not-wf-P28-ibm28n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P28-ibm28n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P28-ibm28n03'(suite) -> [];
+'ibm-not-wf-P28-ibm28n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P28-ibm28n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P28-ibm28n02'(suite) -> [];
+'ibm-not-wf-P28-ibm28n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P28-ibm28n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P28-ibm28n01'(suite) -> [];
+'ibm-not-wf-P28-ibm28n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P28-ibm28n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P27-ibm27n01'(suite) -> [];
+'ibm-not-wf-P27-ibm27n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P27-ibm27n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P26-ibm26n01'(suite) -> [];
+'ibm-not-wf-P26-ibm26n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P26-ibm26n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P25-ibm25n02'(suite) -> [];
+'ibm-not-wf-P25-ibm25n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P25-ibm25n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P25-ibm25n01'(suite) -> [];
+'ibm-not-wf-P25-ibm25n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P25-ibm25n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P24-ibm24n09'(suite) -> [];
+'ibm-not-wf-P24-ibm24n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P24-ibm24n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P24-ibm24n08'(suite) -> [];
+'ibm-not-wf-P24-ibm24n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P24-ibm24n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P24-ibm24n07'(suite) -> [];
+'ibm-not-wf-P24-ibm24n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P24-ibm24n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P24-ibm24n06'(suite) -> [];
+'ibm-not-wf-P24-ibm24n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P24-ibm24n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P24-ibm24n05'(suite) -> [];
+'ibm-not-wf-P24-ibm24n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P24-ibm24n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P24-ibm24n04'(suite) -> [];
+'ibm-not-wf-P24-ibm24n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P24-ibm24n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P24-ibm24n03'(suite) -> [];
+'ibm-not-wf-P24-ibm24n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P24-ibm24n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P24-ibm24n02'(suite) -> [];
+'ibm-not-wf-P24-ibm24n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P24-ibm24n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P24-ibm24n01'(suite) -> [];
+'ibm-not-wf-P24-ibm24n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P24-ibm24n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P23-ibm23n06'(suite) -> [];
+'ibm-not-wf-P23-ibm23n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P23-ibm23n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P23-ibm23n05'(suite) -> [];
+'ibm-not-wf-P23-ibm23n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P23-ibm23n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P23-ibm23n04'(suite) -> [];
+'ibm-not-wf-P23-ibm23n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P23-ibm23n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P23-ibm23n03'(suite) -> [];
+'ibm-not-wf-P23-ibm23n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P23-ibm23n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P23-ibm23n02'(suite) -> [];
+'ibm-not-wf-P23-ibm23n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P23-ibm23n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P23-ibm23n01'(suite) -> [];
+'ibm-not-wf-P23-ibm23n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P23-ibm23n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P22-ibm22n03'(suite) -> [];
+'ibm-not-wf-P22-ibm22n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P22-ibm22n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P22-ibm22n02'(suite) -> [];
+'ibm-not-wf-P22-ibm22n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P22-ibm22n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P22-ibm22n01'(suite) -> [];
+'ibm-not-wf-P22-ibm22n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P22-ibm22n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P21-ibm21n03'(suite) -> [];
+'ibm-not-wf-P21-ibm21n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P21-ibm21n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P21-ibm21n02'(suite) -> [];
+'ibm-not-wf-P21-ibm21n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P21-ibm21n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P21-ibm21n01'(suite) -> [];
+'ibm-not-wf-P21-ibm21n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P21-ibm21n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P20-ibm20n01'(suite) -> [];
+'ibm-not-wf-P20-ibm20n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P20-ibm20n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P19-ibm19n03'(suite) -> [];
+'ibm-not-wf-P19-ibm19n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P19-ibm19n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P19-ibm19n02'(suite) -> [];
+'ibm-not-wf-P19-ibm19n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P19-ibm19n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P19-ibm19n01'(suite) -> [];
+'ibm-not-wf-P19-ibm19n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P19-ibm19n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P18-ibm18n02'(suite) -> [];
+'ibm-not-wf-P18-ibm18n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P18-ibm18n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P18-ibm18n01'(suite) -> [];
+'ibm-not-wf-P18-ibm18n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P18-ibm18n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P17-ibm17n04'(suite) -> [];
+'ibm-not-wf-P17-ibm17n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P17-ibm17n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P17-ibm17n03'(suite) -> [];
+'ibm-not-wf-P17-ibm17n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P17-ibm17n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P17-ibm17n02'(suite) -> [];
+'ibm-not-wf-P17-ibm17n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P17-ibm17n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P17-ibm17n01'(suite) -> [];
+'ibm-not-wf-P17-ibm17n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P17-ibm17n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P16-ibm16n04'(suite) -> [];
+'ibm-not-wf-P16-ibm16n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P16-ibm16n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P16-ibm16n03'(suite) -> [];
+'ibm-not-wf-P16-ibm16n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P16-ibm16n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P16-ibm16n02'(suite) -> [];
+'ibm-not-wf-P16-ibm16n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P16-ibm16n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P16-ibm16n01'(suite) -> [];
+'ibm-not-wf-P16-ibm16n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P16-ibm16n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P15-ibm15n04'(suite) -> [];
+'ibm-not-wf-P15-ibm15n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P15-ibm15n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P15-ibm15n03'(suite) -> [];
+'ibm-not-wf-P15-ibm15n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P15-ibm15n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P15-ibm15n02'(suite) -> [];
+'ibm-not-wf-P15-ibm15n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P15-ibm15n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P15-ibm15n01'(suite) -> [];
+'ibm-not-wf-P15-ibm15n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P15-ibm15n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P14-ibm14n03'(suite) -> [];
+'ibm-not-wf-P14-ibm14n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P14-ibm14n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P14-ibm14n02'(suite) -> [];
+'ibm-not-wf-P14-ibm14n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P14-ibm14n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P14-ibm14n01'(suite) -> [];
+'ibm-not-wf-P14-ibm14n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P14-ibm14n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P13-ibm13n03'(suite) -> [];
+'ibm-not-wf-P13-ibm13n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P13-ibm13n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P13-ibm13n02'(suite) -> [];
+'ibm-not-wf-P13-ibm13n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P13-ibm13n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P13-ibm13n01'(suite) -> [];
+'ibm-not-wf-P13-ibm13n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P13-ibm13n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P12-ibm12n03'(suite) -> [];
+'ibm-not-wf-P12-ibm12n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P12-ibm12n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P12-ibm12n02'(suite) -> [];
+'ibm-not-wf-P12-ibm12n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P12-ibm12n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P12-ibm12n01'(suite) -> [];
+'ibm-not-wf-P12-ibm12n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P12-ibm12n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P11-ibm11n04'(suite) -> [];
+'ibm-not-wf-P11-ibm11n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P11-ibm11n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P11-ibm11n03'(suite) -> [];
+'ibm-not-wf-P11-ibm11n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P11-ibm11n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P11-ibm11n02'(suite) -> [];
+'ibm-not-wf-P11-ibm11n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P11-ibm11n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P11-ibm11n01'(suite) -> [];
+'ibm-not-wf-P11-ibm11n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P11-ibm11n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P10-ibm10n08'(suite) -> [];
+'ibm-not-wf-P10-ibm10n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P10-ibm10n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P10-ibm10n07'(suite) -> [];
+'ibm-not-wf-P10-ibm10n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P10-ibm10n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P10-ibm10n06'(suite) -> [];
+'ibm-not-wf-P10-ibm10n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P10-ibm10n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P10-ibm10n05'(suite) -> [];
+'ibm-not-wf-P10-ibm10n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P10-ibm10n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P10-ibm10n04'(suite) -> [];
+'ibm-not-wf-P10-ibm10n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P10-ibm10n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P10-ibm10n03'(suite) -> [];
+'ibm-not-wf-P10-ibm10n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P10-ibm10n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P10-ibm10n02'(suite) -> [];
+'ibm-not-wf-P10-ibm10n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P10-ibm10n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P10-ibm10n01'(suite) -> [];
+'ibm-not-wf-P10-ibm10n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P10-ibm10n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P09-ibm09n04'(suite) -> [];
+'ibm-not-wf-P09-ibm09n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P09-ibm09n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P09-ibm09n03'(suite) -> [];
+'ibm-not-wf-P09-ibm09n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P09-ibm09n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P09-ibm09n02'(suite) -> [];
+'ibm-not-wf-P09-ibm09n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P09-ibm09n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P09-ibm09n01'(suite) -> [];
+'ibm-not-wf-P09-ibm09n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P09-ibm09n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P05-ibm05n03'(suite) -> [];
+'ibm-not-wf-P05-ibm05n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P05-ibm05n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P05-ibm05n02'(suite) -> [];
+'ibm-not-wf-P05-ibm05n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P05-ibm05n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P05-ibm05n01'(suite) -> [];
+'ibm-not-wf-P05-ibm05n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P05-ibm05n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n18'(suite) -> [];
+'ibm-not-wf-P04-ibm04n18'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n18.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n17'(suite) -> [];
+'ibm-not-wf-P04-ibm04n17'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n17.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n16'(suite) -> [];
+'ibm-not-wf-P04-ibm04n16'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n16.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n15'(suite) -> [];
+'ibm-not-wf-P04-ibm04n15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n14'(suite) -> [];
+'ibm-not-wf-P04-ibm04n14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n13'(suite) -> [];
+'ibm-not-wf-P04-ibm04n13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n12'(suite) -> [];
+'ibm-not-wf-P04-ibm04n12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n11'(suite) -> [];
+'ibm-not-wf-P04-ibm04n11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n10'(suite) -> [];
+'ibm-not-wf-P04-ibm04n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n09'(suite) -> [];
+'ibm-not-wf-P04-ibm04n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n08'(suite) -> [];
+'ibm-not-wf-P04-ibm04n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n07'(suite) -> [];
+'ibm-not-wf-P04-ibm04n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n06'(suite) -> [];
+'ibm-not-wf-P04-ibm04n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n05'(suite) -> [];
+'ibm-not-wf-P04-ibm04n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n04'(suite) -> [];
+'ibm-not-wf-P04-ibm04n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n03'(suite) -> [];
+'ibm-not-wf-P04-ibm04n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n02'(suite) -> [];
+'ibm-not-wf-P04-ibm04n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P04-ibm04n01'(suite) -> [];
+'ibm-not-wf-P04-ibm04n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P04-ibm04n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P03-ibm03n01'(suite) -> [];
+'ibm-not-wf-P03-ibm03n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P03-ibm03n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n33'(suite) -> [];
+'ibm-not-wf-P02-ibm02n33'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n33.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n32'(suite) -> [];
+'ibm-not-wf-P02-ibm02n32'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n32.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n31'(suite) -> [];
+'ibm-not-wf-P02-ibm02n31'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n31.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n30'(suite) -> [];
+'ibm-not-wf-P02-ibm02n30'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n30.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n29'(suite) -> [];
+'ibm-not-wf-P02-ibm02n29'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n29.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n28'(suite) -> [];
+'ibm-not-wf-P02-ibm02n28'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n28.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n27'(suite) -> [];
+'ibm-not-wf-P02-ibm02n27'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n27.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n26'(suite) -> [];
+'ibm-not-wf-P02-ibm02n26'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n26.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n25'(suite) -> [];
+'ibm-not-wf-P02-ibm02n25'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n25.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n24'(suite) -> [];
+'ibm-not-wf-P02-ibm02n24'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n24.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n23'(suite) -> [];
+'ibm-not-wf-P02-ibm02n23'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n23.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n22'(suite) -> [];
+'ibm-not-wf-P02-ibm02n22'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n22.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n21'(suite) -> [];
+'ibm-not-wf-P02-ibm02n21'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n21.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n20'(suite) -> [];
+'ibm-not-wf-P02-ibm02n20'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n20.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n19'(suite) -> [];
+'ibm-not-wf-P02-ibm02n19'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n19.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n18'(suite) -> [];
+'ibm-not-wf-P02-ibm02n18'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n18.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n17'(suite) -> [];
+'ibm-not-wf-P02-ibm02n17'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n17.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n16'(suite) -> [];
+'ibm-not-wf-P02-ibm02n16'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n16.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n15'(suite) -> [];
+'ibm-not-wf-P02-ibm02n15'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n15.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n14'(suite) -> [];
+'ibm-not-wf-P02-ibm02n14'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n14.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n13'(suite) -> [];
+'ibm-not-wf-P02-ibm02n13'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n13.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n12'(suite) -> [];
+'ibm-not-wf-P02-ibm02n12'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n12.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n11'(suite) -> [];
+'ibm-not-wf-P02-ibm02n11'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n11.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n10'(suite) -> [];
+'ibm-not-wf-P02-ibm02n10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n09'(suite) -> [];
+'ibm-not-wf-P02-ibm02n09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n08'(suite) -> [];
+'ibm-not-wf-P02-ibm02n08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n07'(suite) -> [];
+'ibm-not-wf-P02-ibm02n07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n06'(suite) -> [];
+'ibm-not-wf-P02-ibm02n06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n05'(suite) -> [];
+'ibm-not-wf-P02-ibm02n05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n04'(suite) -> [];
+'ibm-not-wf-P02-ibm02n04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n03'(suite) -> [];
+'ibm-not-wf-P02-ibm02n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n02'(suite) -> [];
+'ibm-not-wf-P02-ibm02n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P02-ibm02n01'(suite) -> [];
+'ibm-not-wf-P02-ibm02n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P02-ibm02n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P01-ibm01n03'(suite) -> [];
+'ibm-not-wf-P01-ibm01n03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P01-ibm01n03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P01-ibm01n02'(suite) -> [];
+'ibm-not-wf-P01-ibm01n02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P01-ibm01n02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-not-wf-P01-ibm01n01'(suite) -> [];
+'ibm-not-wf-P01-ibm01n01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-not-wf-P01-ibm01n01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+%%----------------------------------------------------------------------
+
+'ibm-valid-P89-ibm89v01'(suite) -> [];
+'ibm-valid-P89-ibm89v01'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P89-ibm89v01.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Fails to handle name containing characters > x#ff, since they are converted to atoms"]}.
+
+'ibm-valid-P88-ibm88v01'(suite) -> [];
+'ibm-valid-P88-ibm88v01'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P88-ibm88v01.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Fails to handle name containing characters > x#ff, since they are converted to atoms"]}.
+
+'ibm-valid-P87-ibm87v01'(suite) -> [];
+'ibm-valid-P87-ibm87v01'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P87-ibm87v01.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Fails to handle name containing characters > x#ff, since they are converted to atoms"]}.
+
+'ibm-valid-P86-ibm86v01'(suite) -> [];
+'ibm-valid-P86-ibm86v01'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P86-ibm86v01.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Fails to handle name containing characters > x#ff, since they are converted to atoms"]}.
+
+'ibm-valid-P85-ibm85v01'(suite) -> [];
+'ibm-valid-P85-ibm85v01'(_Config) ->
+% ?line file:set_cwd(?config(data_dir,Config)),
+% ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P85-ibm85v01.xml"]),[]),
+% ?line xmerl:export([A],xmerl_test).
+ {skip,["Fails to handle name containing characters > x#ff, since they are converted to atoms"]}.
+
+'ibm-valid-P82-ibm82v01'(suite) -> [];
+'ibm-valid-P82-ibm82v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P82-ibm82v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P79-ibm79v01'(suite) -> [];
+'ibm-valid-P79-ibm79v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P79-ibm79v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P78-ibm78v01'(suite) -> [];
+'ibm-valid-P78-ibm78v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P78-ibm78v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P70-ibm70v01'(suite) -> [];
+'ibm-valid-P70-ibm70v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P70-ibm70v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P69-ibm69v02'(suite) -> [];
+'ibm-valid-P69-ibm69v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P69-ibm69v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P69-ibm69v01'(suite) -> [];
+'ibm-valid-P69-ibm69v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P69-ibm69v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P68-ibm68v02'(suite) -> [];
+'ibm-valid-P68-ibm68v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P68-ibm68v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P68-ibm68v01'(suite) -> [];
+'ibm-valid-P68-ibm68v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P68-ibm68v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P67-ibm67v01'(suite) -> [];
+'ibm-valid-P67-ibm67v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P67-ibm67v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P66-ibm66v01'(suite) -> [];
+'ibm-valid-P66-ibm66v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P66-ibm66v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P65-ibm65v02'(suite) -> [];
+'ibm-valid-P65-ibm65v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P65-ibm65v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P65-ibm65v01'(suite) -> [];
+'ibm-valid-P65-ibm65v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P65-ibm65v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P64-ibm64v03'(suite) -> [];
+'ibm-valid-P64-ibm64v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P64-ibm64v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P64-ibm64v02'(suite) -> [];
+'ibm-valid-P64-ibm64v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P64-ibm64v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P64-ibm64v01'(suite) -> [];
+'ibm-valid-P64-ibm64v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P64-ibm64v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P63-ibm63v05'(suite) -> [];
+'ibm-valid-P63-ibm63v05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P63-ibm63v05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P63-ibm63v04'(suite) -> [];
+'ibm-valid-P63-ibm63v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P63-ibm63v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P63-ibm63v03'(suite) -> [];
+'ibm-valid-P63-ibm63v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P63-ibm63v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P63-ibm63v02'(suite) -> [];
+'ibm-valid-P63-ibm63v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P63-ibm63v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P63-ibm63v01'(suite) -> [];
+'ibm-valid-P63-ibm63v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P63-ibm63v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P62-ibm62v05'(suite) -> [];
+'ibm-valid-P62-ibm62v05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P62-ibm62v05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P62-ibm62v04'(suite) -> [];
+'ibm-valid-P62-ibm62v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P62-ibm62v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P62-ibm62v03'(suite) -> [];
+'ibm-valid-P62-ibm62v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P62-ibm62v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P62-ibm62v02'(suite) -> [];
+'ibm-valid-P62-ibm62v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P62-ibm62v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P62-ibm62v01'(suite) -> [];
+'ibm-valid-P62-ibm62v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P62-ibm62v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P61-ibm61v02'(suite) -> [];
+'ibm-valid-P61-ibm61v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P61-ibm61v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P61-ibm61v01'(suite) -> [];
+'ibm-valid-P61-ibm61v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P61-ibm61v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P60-ibm60v04'(suite) -> [];
+'ibm-valid-P60-ibm60v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P60-ibm60v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P60-ibm60v03'(suite) -> [];
+'ibm-valid-P60-ibm60v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P60-ibm60v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P60-ibm60v02'(suite) -> [];
+'ibm-valid-P60-ibm60v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P60-ibm60v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P60-ibm60v01'(suite) -> [];
+'ibm-valid-P60-ibm60v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P60-ibm60v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P59-ibm59v02'(suite) -> [];
+'ibm-valid-P59-ibm59v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P59-ibm59v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P59-ibm59v01'(suite) -> [];
+'ibm-valid-P59-ibm59v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P59-ibm59v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P58-ibm58v02'(suite) -> [];
+'ibm-valid-P58-ibm58v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P58-ibm58v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P58-ibm58v01'(suite) -> [];
+'ibm-valid-P58-ibm58v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P58-ibm58v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P57-ibm57v01'(suite) -> [];
+'ibm-valid-P57-ibm57v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P57-ibm57v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v10'(suite) -> [];
+'ibm-valid-P56-ibm56v10'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v10.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v09'(suite) -> [];
+'ibm-valid-P56-ibm56v09'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v09.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v08'(suite) -> [];
+'ibm-valid-P56-ibm56v08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v07'(suite) -> [];
+'ibm-valid-P56-ibm56v07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v06'(suite) -> [];
+'ibm-valid-P56-ibm56v06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v05'(suite) -> [];
+'ibm-valid-P56-ibm56v05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v04'(suite) -> [];
+'ibm-valid-P56-ibm56v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v03'(suite) -> [];
+'ibm-valid-P56-ibm56v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v02'(suite) -> [];
+'ibm-valid-P56-ibm56v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P56-ibm56v01'(suite) -> [];
+'ibm-valid-P56-ibm56v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P56-ibm56v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P55-ibm55v01'(suite) -> [];
+'ibm-valid-P55-ibm55v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P55-ibm55v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P54-ibm54v03'(suite) -> [];
+'ibm-valid-P54-ibm54v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P54-ibm54v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P54-ibm54v02'(suite) -> [];
+'ibm-valid-P54-ibm54v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P54-ibm54v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P54-ibm54v01'(suite) -> [];
+'ibm-valid-P54-ibm54v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P54-ibm54v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P52-ibm52v01'(suite) -> [];
+'ibm-valid-P52-ibm52v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P52-ibm52v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P51-ibm51v02'(suite) -> [];
+'ibm-valid-P51-ibm51v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P51-ibm51v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P51-ibm51v01'(suite) -> [];
+'ibm-valid-P51-ibm51v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P51-ibm51v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P50-ibm50v01'(suite) -> [];
+'ibm-valid-P50-ibm50v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P50-ibm50v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P49-ibm49v01'(suite) -> [];
+'ibm-valid-P49-ibm49v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P49-ibm49v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P47-ibm47v01'(suite) -> [];
+'ibm-valid-P47-ibm47v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P47-ibm47v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P45-ibm45v01'(suite) -> [];
+'ibm-valid-P45-ibm45v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P45-ibm45v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P44-ibm44v01'(suite) -> [];
+'ibm-valid-P44-ibm44v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P44-ibm44v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P43-ibm43v01'(suite) -> [];
+'ibm-valid-P43-ibm43v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P43-ibm43v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P42-ibm42v01'(suite) -> [];
+'ibm-valid-P42-ibm42v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P42-ibm42v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P41-ibm41v01'(suite) -> [];
+'ibm-valid-P41-ibm41v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P41-ibm41v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P40-ibm40v01'(suite) -> [];
+'ibm-valid-P40-ibm40v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P40-ibm40v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P39-ibm39v01'(suite) -> [];
+'ibm-valid-P39-ibm39v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P39-ibm39v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P38-ibm38v01'(suite) -> [];
+'ibm-valid-P38-ibm38v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P38-ibm38v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P37-ibm37v01'(suite) -> [];
+'ibm-valid-P37-ibm37v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P37-ibm37v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P36-ibm36v01'(suite) -> [];
+'ibm-valid-P36-ibm36v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P36-ibm36v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P35-ibm35v01'(suite) -> [];
+'ibm-valid-P35-ibm35v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P35-ibm35v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P34-ibm34v01'(suite) -> [];
+'ibm-valid-P34-ibm34v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P34-ibm34v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P33-ibm33v01'(suite) -> [];
+'ibm-valid-P33-ibm33v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P33-ibm33v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P32-ibm32v04'(suite) -> [];
+'ibm-valid-P32-ibm32v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P32-ibm32v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P32-ibm32v03'(suite) -> [];
+'ibm-valid-P32-ibm32v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P32-ibm32v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P32-ibm32v02'(suite) -> [];
+'ibm-valid-P32-ibm32v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P32-ibm32v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P32-ibm32v01'(suite) -> [];
+'ibm-valid-P32-ibm32v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P32-ibm32v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P31-ibm31v01'(suite) -> [];
+'ibm-valid-P31-ibm31v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P31-ibm31v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P30-ibm30v02'(suite) -> [];
+'ibm-valid-P30-ibm30v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P30-ibm30v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P30-ibm30v01'(suite) -> [];
+'ibm-valid-P30-ibm30v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P30-ibm30v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P29-ibm29v02'(suite) -> [];
+'ibm-valid-P29-ibm29v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P29-ibm29v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P29-ibm29v01'(suite) -> [];
+'ibm-valid-P29-ibm29v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P29-ibm29v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P28-ibm28v02'(suite) -> [];
+'ibm-valid-P28-ibm28v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P28-ibm28v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P28-ibm28v01'(suite) -> [];
+'ibm-valid-P28-ibm28v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P28-ibm28v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P27-ibm27v03'(suite) -> [];
+'ibm-valid-P27-ibm27v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P27-ibm27v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P27-ibm27v02'(suite) -> [];
+'ibm-valid-P27-ibm27v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P27-ibm27v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P27-ibm27v01'(suite) -> [];
+'ibm-valid-P27-ibm27v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P27-ibm27v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P26-ibm26v01'(suite) -> [];
+'ibm-valid-P26-ibm26v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P26-ibm26v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P25-ibm25v04'(suite) -> [];
+'ibm-valid-P25-ibm25v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P25-ibm25v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P25-ibm25v03'(suite) -> [];
+'ibm-valid-P25-ibm25v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P25-ibm25v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P25-ibm25v02'(suite) -> [];
+'ibm-valid-P25-ibm25v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P25-ibm25v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P25-ibm25v01'(suite) -> [];
+'ibm-valid-P25-ibm25v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P25-ibm25v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P24-ibm24v02'(suite) -> [];
+'ibm-valid-P24-ibm24v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P24-ibm24v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P24-ibm24v01'(suite) -> [];
+'ibm-valid-P24-ibm24v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P24-ibm24v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P23-ibm23v06'(suite) -> [];
+'ibm-valid-P23-ibm23v06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P23-ibm23v06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P23-ibm23v05'(suite) -> [];
+'ibm-valid-P23-ibm23v05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P23-ibm23v05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P23-ibm23v04'(suite) -> [];
+'ibm-valid-P23-ibm23v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P23-ibm23v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P23-ibm23v03'(suite) -> [];
+'ibm-valid-P23-ibm23v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P23-ibm23v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P23-ibm23v02'(suite) -> [];
+'ibm-valid-P23-ibm23v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P23-ibm23v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P23-ibm23v01'(suite) -> [];
+'ibm-valid-P23-ibm23v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P23-ibm23v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P22-ibm22v07'(suite) -> [];
+'ibm-valid-P22-ibm22v07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P22-ibm22v07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P22-ibm22v06'(suite) -> [];
+'ibm-valid-P22-ibm22v06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P22-ibm22v06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P22-ibm22v05'(suite) -> [];
+'ibm-valid-P22-ibm22v05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P22-ibm22v05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P22-ibm22v04'(suite) -> [];
+'ibm-valid-P22-ibm22v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P22-ibm22v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P22-ibm22v03'(suite) -> [];
+'ibm-valid-P22-ibm22v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P22-ibm22v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P22-ibm22v02'(suite) -> [];
+'ibm-valid-P22-ibm22v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P22-ibm22v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P22-ibm22v01'(suite) -> [];
+'ibm-valid-P22-ibm22v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P22-ibm22v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P21-ibm21v01'(suite) -> [];
+'ibm-valid-P21-ibm21v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P21-ibm21v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P20-ibm20v02'(suite) -> [];
+'ibm-valid-P20-ibm20v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P20-ibm20v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P20-ibm20v01'(suite) -> [];
+'ibm-valid-P20-ibm20v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P20-ibm20v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P19-ibm19v01'(suite) -> [];
+'ibm-valid-P19-ibm19v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P19-ibm19v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P18-ibm18v01'(suite) -> [];
+'ibm-valid-P18-ibm18v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P18-ibm18v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P17-ibm17v01'(suite) -> [];
+'ibm-valid-P17-ibm17v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P17-ibm17v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P16-ibm16v03'(suite) -> [];
+'ibm-valid-P16-ibm16v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P16-ibm16v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P16-ibm16v02'(suite) -> [];
+'ibm-valid-P16-ibm16v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P16-ibm16v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P16-ibm16v01'(suite) -> [];
+'ibm-valid-P16-ibm16v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P16-ibm16v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P15-ibm15v04'(suite) -> [];
+'ibm-valid-P15-ibm15v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P15-ibm15v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P15-ibm15v03'(suite) -> [];
+'ibm-valid-P15-ibm15v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P15-ibm15v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P15-ibm15v02'(suite) -> [];
+'ibm-valid-P15-ibm15v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P15-ibm15v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P15-ibm15v01'(suite) -> [];
+'ibm-valid-P15-ibm15v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P15-ibm15v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P14-ibm14v03'(suite) -> [];
+'ibm-valid-P14-ibm14v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P14-ibm14v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P14-ibm14v02'(suite) -> [];
+'ibm-valid-P14-ibm14v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P14-ibm14v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P14-ibm14v01'(suite) -> [];
+'ibm-valid-P14-ibm14v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P14-ibm14v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P13-ibm13v01'(suite) -> [];
+'ibm-valid-P13-ibm13v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P13-ibm13v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P12-ibm12v04'(suite) -> [];
+'ibm-valid-P12-ibm12v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P12-ibm12v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P12-ibm12v03'(suite) -> [];
+'ibm-valid-P12-ibm12v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P12-ibm12v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P12-ibm12v02'(suite) -> [];
+'ibm-valid-P12-ibm12v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P12-ibm12v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P12-ibm12v01'(suite) -> [];
+'ibm-valid-P12-ibm12v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P12-ibm12v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P11-ibm11v04'(suite) -> [];
+'ibm-valid-P11-ibm11v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P11-ibm11v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P11-ibm11v03'(suite) -> [];
+'ibm-valid-P11-ibm11v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P11-ibm11v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P11-ibm11v02'(suite) -> [];
+'ibm-valid-P11-ibm11v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P11-ibm11v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P11-ibm11v01'(suite) -> [];
+'ibm-valid-P11-ibm11v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P11-ibm11v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P10-ibm10v08'(suite) -> [];
+'ibm-valid-P10-ibm10v08'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P10-ibm10v08.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P10-ibm10v07'(suite) -> [];
+'ibm-valid-P10-ibm10v07'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P10-ibm10v07.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P10-ibm10v06'(suite) -> [];
+'ibm-valid-P10-ibm10v06'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P10-ibm10v06.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P10-ibm10v05'(suite) -> [];
+'ibm-valid-P10-ibm10v05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P10-ibm10v05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P10-ibm10v04'(suite) -> [];
+'ibm-valid-P10-ibm10v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P10-ibm10v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P10-ibm10v03'(suite) -> [];
+'ibm-valid-P10-ibm10v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P10-ibm10v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P10-ibm10v02'(suite) -> [];
+'ibm-valid-P10-ibm10v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P10-ibm10v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P10-ibm10v01'(suite) -> [];
+'ibm-valid-P10-ibm10v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P10-ibm10v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P09-ibm09v05'(suite) -> [];
+'ibm-valid-P09-ibm09v05'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P09-ibm09v05.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P09-ibm09v04'(suite) -> [];
+'ibm-valid-P09-ibm09v04'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P09-ibm09v04.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P09-ibm09v03'(suite) -> [];
+'ibm-valid-P09-ibm09v03'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P09-ibm09v03.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P09-ibm09v02'(suite) -> [];
+'ibm-valid-P09-ibm09v02'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P09-ibm09v02.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P09-ibm09v01'(suite) -> [];
+'ibm-valid-P09-ibm09v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P09-ibm09v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P03-ibm03v01'(suite) -> [];
+'ibm-valid-P03-ibm03v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P03-ibm03v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P02-ibm02v01'(suite) -> [];
+'ibm-valid-P02-ibm02v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P02-ibm02v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+'ibm-valid-P01-ibm01v01'(suite) -> [];
+'ibm-valid-P01-ibm01v01'(Config) ->
+ ?line file:set_cwd(?config(data_dir,Config)),
+ ?line {A,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),ibm,"ibm-valid-P01-ibm01v01.xml"]),[]),
+ ?line xmerl:export([A],xmerl_test).
+
+
+
+%%======================================================================
+%% Support Functions
+%%======================================================================
+
+%% Dir is a directory
+rm_f_(Dir) ->
+ ?line {ok,CWD} = file:get_cwd(),
+ ?line {ok,FileList} = file:list_dir(Dir),
+ ?line file:set_cwd(filename:join([CWD,Dir])),
+ rm_files(FileList),
+ ?line file:set_cwd(CWD),
+ ? line ok = file:del_dir(Dir).
+
+rm_files([])->
+ ok;
+rm_files([F|Fs]) ->
+ case filelib:is_dir(F) of
+ true ->
+ rm_f_(F);
+ _ ->
+ ?line ok = file:delete(F)
+ end,
+ rm_files(Fs).
+
+-include_lib("kernel/include/file.hrl").
+change_mode(Files) ->
+ change_mode3(Files).
+change_mode2(Dir)->
+ ?line {ok,CWD} = file:get_cwd(),
+ ?line {ok,FileList} = file:list_dir(Dir),
+ ?line file:set_cwd(filename:join([CWD,Dir])),
+ change_mode3(FileList),
+ ?line file:set_cwd(CWD).
+change_mode3([]) ->
+ ok;
+change_mode3([F|Fs]) ->
+ case filelib:is_dir(F) of
+ true ->
+ chmod(F),
+ change_mode2(F);
+ _ ->
+ chmod(F)
+ end,
+ change_mode3(Fs).
+
+chmod(F) ->
+ case file:read_file_info(F) of
+ {ok,FileInfo} ->
+ Mode= FileInfo#file_info.mode,
+ file:write_file_info(F,FileInfo#file_info{mode=8#00777 bor Mode});
+ _ ->
+ ok
+ end.
+
+
+
+
+
+%%add_xml_path(TestCase) ->
+%testcase_dir(TestCase) ->
+% add_xml_path(lists:member(TestCase,ibm_test_cases(suite)),?ibm_dir,TestCase,
+% [{fun japanese_test_cases/1,?japanese_dir},
+% {fun oasis_test_cases/1,?oasis_dir},
+% {fun sun_test_cases/1,?sun_dir},
+% {fun xmltest_test_cases/1,?xmltest_dir}]).
+%add_xml_path(true,Dir,_,_) ->
+% io:format("directory in path:~p~n",[Dir]),
+%% ?line code:add_patha(Dir);
+% Dir;
+%add_xml_path(_,_,TestCase,[{NextTCs,NextDir}|Rest]) ->
+% add_xml_path(lists:member(TestCase,NextTCs(suite)),NextDir,TestCase,Rest);
+%add_xml_path(false,_,TC,[]) ->
+% exit({error,{xmltests,uncovered_test_case,TC}}).
+
diff --git a/lib/xmerl/test/xmerl_std_SUITE_data/ibm.tgz b/lib/xmerl/test/xmerl_std_SUITE_data/ibm.tgz
new file mode 100644
index 0000000000..c36bcb5bd3
--- /dev/null
+++ b/lib/xmerl/test/xmerl_std_SUITE_data/ibm.tgz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_std_SUITE_data/japanese.tgz b/lib/xmerl/test/xmerl_std_SUITE_data/japanese.tgz
new file mode 100644
index 0000000000..cf1d71a2fd
--- /dev/null
+++ b/lib/xmerl/test/xmerl_std_SUITE_data/japanese.tgz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_std_SUITE_data/oasis.tgz b/lib/xmerl/test/xmerl_std_SUITE_data/oasis.tgz
new file mode 100644
index 0000000000..ab809a63e7
--- /dev/null
+++ b/lib/xmerl/test/xmerl_std_SUITE_data/oasis.tgz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_std_SUITE_data/sun.tgz b/lib/xmerl/test/xmerl_std_SUITE_data/sun.tgz
new file mode 100644
index 0000000000..022e64ab9e
--- /dev/null
+++ b/lib/xmerl/test/xmerl_std_SUITE_data/sun.tgz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_std_SUITE_data/w3c-copyright-19980720.html b/lib/xmerl/test/xmerl_std_SUITE_data/w3c-copyright-19980720.html
new file mode 100644
index 0000000000..bc5c62fdbc
--- /dev/null
+++ b/lib/xmerl/test/xmerl_std_SUITE_data/w3c-copyright-19980720.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+
+
+<meta name="generator" content="HTML Tidy, see www.w3.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" type="text/css" href="copyright-software-19980720_files/base.css"><title>W3C IPR SOFTWARE NOTICE</title></head><body bgcolor="#ffffff" text="#000000">
+<h1>W3C<sup>�</sup> SOFTWARE NOTICE AND LICENSE</h1>
+
+<h3>Copyright � 1994-2002 <a href="http://www.w3.org/">World
+Wide Web Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de
+Recherche en Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio University</a>). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/</h3>
+
+<p>This W3C work (including software, documents, or other related
+items) is being provided by the copyright holders under the
+following license. By obtaining, using and/or copying this work,
+you (the licensee) agree that you have read, understood, and will
+comply with the following terms and conditions:</p>
+
+<p>Permission to use, copy, modify, and distribute this software
+and its documentation, with or without modification,&nbsp; for any
+purpose and without fee or royalty is hereby granted, provided that
+you include the following on ALL copies of the software and
+documentation or portions thereof, including modifications, that
+you make:</p>
+
+<ol>
+<li>The full text of this NOTICE in a location viewable to users of
+the redistributed or derivative work.</li>
+
+<li>Any pre-existing intellectual property disclaimers, notices, or
+terms and conditions. If none exist, a short notice of the
+following form (hypertext is preferred, text is permitted) should
+be used within the body of any redistributed or derivative code:
+"Copyright � [$date-of-software] <a href="http://www.w3.org/">World Wide Web Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de
+Recherche en Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio University</a>). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/"</li>
+
+<li>Notice of any changes or modifications to the W3C files,
+including the date changes were made. (We recommend you provide
+URIs to the location from which the code is derived.)</li>
+</ol>
+
+<p>THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND
+COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
+USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
+PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
+
+<p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
+SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
+SOFTWARE OR DOCUMENTATION.</p>
+
+<p>The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without
+specific, written prior permission. Title to copyright in this
+software and any associated documentation will at all times remain
+with copyright holders.</p>
+
+<p>____________________________________</p>
+
+<p>This formulation of W3C's notice and license became active on
+August 14 1998 so as to improve compatibility with GPL. This
+version ensures that W3C software licensing terms are no more
+restrictive than GPL and consequently W3C software may be
+distributed in GPL packages. See the <a href="http://www.w3.org/Consortium/Legal/copyright-software-19980519.html">older formulation</a> for
+the policy prior to this date. Please see our <a href="http://www.w3.org/Consortium/Legal/IPR-FAQ.html">Copyright FAQ</a> for common questions about
+using materials from our site, including specific terms and
+conditions for packages like libwww, Amaya, and Jigsaw. Other
+questions about this notice can be directed to <a href="mailto:[email protected]">[email protected]</a>.<br>
+&nbsp;</p>
+
+<p>&nbsp;</p>
+
+<address><a href="http://www.w3.org/Help/Webmaster.html">webmaster</a><br>
+ (last updated $Date: 2002/02/13 14:08:32 $)</address>
+</body></html> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_std_SUITE_data/xmltest.tgz b/lib/xmerl/test/xmerl_std_SUITE_data/xmltest.tgz
new file mode 100644
index 0000000000..d49fe26ff0
--- /dev/null
+++ b/lib/xmerl/test/xmerl_std_SUITE_data/xmltest.tgz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_test_lib.erl b/lib/xmerl/test/xmerl_test_lib.erl
new file mode 100644
index 0000000000..16f438ca84
--- /dev/null
+++ b/lib/xmerl/test/xmerl_test_lib.erl
@@ -0,0 +1,92 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2006-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%%-------------------------------------------------------------------
+%%% File : xmerl_test_lib.erl
+%%% Author : Bertil Karlsson <bertil@finrod>
+%%% Description :
+%%%
+%%% Created : 28 Apr 2006 by Bertil Karlsson <bertil@finrod>
+%%%-------------------------------------------------------------------
+-module(xmerl_test_lib).
+
+-compile(export_all).
+
+-include_lib("test_server/include/test_server.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+
+%% cmp_element/2
+%% First argument result after parsing
+%% Second argument result after validation
+cmp_element(E,E) ->
+ ok;
+cmp_element(#xmlElement{name=N,attributes=A1,content=C1},
+ #xmlElement{name=N,attributes=A2,content=C2}) ->
+ case cmp_attributes(A1,A2) of
+ ok ->
+ cmp_elements(C1,C2);
+ Err -> Err
+ end;
+cmp_element(#xmlText{},#xmlText{}) ->
+ ok;
+cmp_element(A,B) ->
+ {error,{A,does_not_match,B}}.
+
+cmp_elements([H1|T1],[H2|T2]) ->
+ case cmp_element(H1,H2) of
+ ok ->
+ cmp_elements(T1,T2);
+ Err ->
+ Err
+ end;
+cmp_elements([],[]) ->
+ ok.
+
+%% All attributes in argument 1 must be present in 2
+cmp_attributes([A1|T1],Atts2) ->
+ case keysearch_delete(A1#xmlAttribute.name,#xmlAttribute.name,Atts2) of
+ {A2,NewAtts2} ->
+ case A1#xmlAttribute.value == A2#xmlAttribute.value of
+ true ->
+ cmp_attributes(T1,NewAtts2);
+ _ ->
+ {error,{mismatching_values_in_attsibutes,A1,A2}}
+ end;
+ _ ->
+ {error,{no_matching_attsibute,A1,in,Atts2}}
+ end;
+cmp_attributes([],_) ->
+ ok.
+
+keysearch_delete(Key,N,List) ->
+ case lists:keysearch(Key,N,List) of
+ {value,Res} ->
+ {Res,lists:keydelete(Key,N,List)};
+ _ ->
+ false
+ end.
+
+
+%% Some test suites use the same testdata ("xmerl_sax_std_SUITE" and "xmerl_std_SUITE"),
+%% so the data directory is not cloned. This function retrieves the path to
+%% the original data directory.
+
+get_data_dir(Config) ->
+ Data0 = ?config(data_dir, Config),
+ {ok,Data,_} = regexp:sub(Data0, "xmerl_sax_std_SUITE", "xmerl_std_SUITE"),
+ Data.
diff --git a/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE.erl b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE.erl
new file mode 100644
index 0000000000..44ec4b592d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE.erl
@@ -0,0 +1,24131 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2006-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%%% Purpose : Test suite for the xmerl application
+
+%% Do NOT edit this file. It is generated by the generate_xsd_suite module
+%% For more info read the comments in the header of that file.
+
+-module('xmerl_xsd_MS2002-01-16_SUITE').
+
+-compile(export_all).
+
+-include_lib("test_server/include/test_server.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+-include_lib("xmerl/include/xmerl_xsd.hrl").
+
+
+all() ->
+ [att, ct, elem, group, idc_, id, mgABCD, mgEFG, mgHIJ,
+ mgK, mgLM, mgN, mgOP, mgQR, mgS, particlesAB,
+ particlesCDE, particlesFHI, particlesJ,
+ particlesKOSRTQUVW, stABCDE, stFGH, stIJK, stZ,
+ wildABCDEF, wildGHI, wildJKLMNQOP, wildZ].
+
+groups() ->
+ [].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+
+%% initialization before the test suite
+init_per_suite(Config) ->
+ Dog=test_server:timetrap({minutes,10}),
+ xmerl_xsd_lib:unpack(Config,msx),
+ {ok,LogFile} = xmerl_xsd_lib:create_error_log_file(Config,msx),
+ test_server:timetrap_cancel(Dog),
+ [{suite,msx},{xmerl_error_log,LogFile}|Config].
+
+end_per_suite(Config) ->
+ xmerl_xsd_lib:rmdir(Config,msx),
+ xmerl_xsd_lib:close_error_log_file(Config),
+ ok.
+
+%% initialization before each testcase
+init_per_testcase(TestCase,Config) ->
+ Dog=test_server:timetrap({minutes,3}),
+ [{testcase,TestCase},{watchdog, Dog}|Config].
+
+%% clean up after each testcase
+end_per_testcase(_Func,Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ ok.
+
+%% Syntax Checking for Attribute Declaration
+
+att(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attA001.xsd','./msxsdtest/attribute',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attA002.xsd','./msxsdtest/attribute',invalid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attA003.xsd','./msxsdtest/attribute',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attA004.xsd','./msxsdtest/attribute',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attA005.xsd','./msxsdtest/attribute',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attA006.xsd','./msxsdtest/attribute',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attA007.xsd','./msxsdtest/attribute',valid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attA008.xsd','./msxsdtest/attribute',valid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attB001.xsd','./msxsdtest/attribute',valid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attB002.xsd','./msxsdtest/attribute',valid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attB003.xsd','./msxsdtest/attribute',valid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attB004.xsd','./msxsdtest/attribute',valid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attB005.xsd','./msxsdtest/attribute',invalid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attB006.xsd','./msxsdtest/attribute',invalid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attC001.xsd','./msxsdtest/attribute',valid),
+ STResList15 = [STRes14|STResList14],
+
+
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attC003.xsd','./msxsdtest/attribute',valid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attC004.xsd','./msxsdtest/attribute',invalid),
+ STResList17 = [STRes16|STResList16],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attC005.xsd','./msxsdtest/attribute',invalid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attC006.xsd','./msxsdtest/attribute',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attC007.xsd','./msxsdtest/attribute',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attC008.xsd','./msxsdtest/attribute',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attC009.xsd','./msxsdtest/attribute',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attC010.xsd','./msxsdtest/attribute',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attD001.xsd','./msxsdtest/attribute',valid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attD002.xsd','./msxsdtest/attribute',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attD003.xsd','./msxsdtest/attribute',valid),
+ STResList26 = [STRes25|STResList25],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attD003.xml','./msxsdtest/attribute',valid,S25),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attD004.xsd','./msxsdtest/attribute',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attD004.xml','./msxsdtest/attribute',valid,S26),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attD005.xsd','./msxsdtest/attribute',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attD006.xsd','./msxsdtest/attribute',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attD007.xsd','./msxsdtest/attribute',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attD007.xml','./msxsdtest/attribute',valid,S29),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attE001.xsd','./msxsdtest/attribute',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attE001.xml','./msxsdtest/attribute',valid,S30),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attE002.xsd','./msxsdtest/attribute',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attE003.xsd','./msxsdtest/attribute',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attE004.xsd','./msxsdtest/attribute',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attE005.xsd','./msxsdtest/attribute',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attE006.xsd','./msxsdtest/attribute',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attE007.xsd','./msxsdtest/attribute',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attE008.xsd','./msxsdtest/attribute',valid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,S38} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF001.xsd','./msxsdtest/attribute',valid),
+ STResList39 = [STRes38|STResList38],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attF001.xml','./msxsdtest/attribute',invalid,S38),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF002.xsd','./msxsdtest/attribute',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attF002.xml','./msxsdtest/attribute',valid,S39),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF003.xsd','./msxsdtest/attribute',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attF003.xml','./msxsdtest/attribute',valid,S40),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF004.xsd','./msxsdtest/attribute',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF005.xsd','./msxsdtest/attribute',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF006.xsd','./msxsdtest/attribute',invalid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF007.xsd','./msxsdtest/attribute',invalid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF008.xsd','./msxsdtest/attribute',invalid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF009.xsd','./msxsdtest/attribute',invalid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF010.xsd','./msxsdtest/attribute',invalid),
+ STResList48 = [STRes47|STResList47],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attF011.xsd','./msxsdtest/attribute',invalid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attG001.xsd','./msxsdtest/attribute',valid),
+ STResList50 = [STRes49|STResList49],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attG002.xsd','./msxsdtest/attribute',valid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attG003.xsd','./msxsdtest/attribute',valid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attH001.xsd','./msxsdtest/attribute',invalid),
+ STResList53 = [STRes52|STResList52],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attI001.xsd','./msxsdtest/attribute',valid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attI002.xsd','./msxsdtest/attribute',valid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,S55} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attI003.xsd','./msxsdtest/attribute',valid),
+ STResList56 = [STRes55|STResList55],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attI003.xml','./msxsdtest/attribute',valid,S55),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attI004.xsd','./msxsdtest/attribute',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attI005.xsd','./msxsdtest/attribute',invalid),
+ STResList58 = [STRes57|STResList57],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attI006.xsd','./msxsdtest/attribute',invalid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ001.xsd','./msxsdtest/attribute',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ001.xml','./msxsdtest/attribute',valid,S59),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes60,S60} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ002.xsd','./msxsdtest/attribute',valid),
+ STResList61 = [STRes60|STResList60],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ002.xml','./msxsdtest/attribute',invalid,S60),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes61,S61} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ003.xsd','./msxsdtest/attribute',valid),
+ STResList62 = [STRes61|STResList61],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ003.xml','./msxsdtest/attribute',invalid,S61),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes62,S62} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ004.xsd','./msxsdtest/attribute',valid),
+ STResList63 = [STRes62|STResList62],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ004.xml','./msxsdtest/attribute',valid,S62),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ005.xsd','./msxsdtest/attribute',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ005.xml','./msxsdtest/attribute',valid,S63),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes64,S64} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ006.xsd','./msxsdtest/attribute',valid),
+ STResList65 = [STRes64|STResList64],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ006.xml','./msxsdtest/attribute',valid,S64),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ007.xsd','./msxsdtest/attribute',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ007.xml','./msxsdtest/attribute',valid,S65),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes66,S66} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ008.xsd','./msxsdtest/attribute',valid),
+ STResList67 = [STRes66|STResList66],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ008.xml','./msxsdtest/attribute',invalid,S66),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes67,S67} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ009.xsd','./msxsdtest/attribute',valid),
+ STResList68 = [STRes67|STResList67],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ009.xml','./msxsdtest/attribute',invalid,S67),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes68,S68} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ010.xsd','./msxsdtest/attribute',valid),
+ STResList69 = [STRes68|STResList68],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ010.xml','./msxsdtest/attribute',invalid,S68),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes69,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ011.xsd','./msxsdtest/attribute',invalid),
+ STResList70 = [STRes69|STResList69],
+
+
+ ?line {STRes70,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ012.xsd','./msxsdtest/attribute',invalid),
+ STResList71 = [STRes70|STResList70],
+
+
+ ?line {STRes71,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ013.xsd','./msxsdtest/attribute',invalid),
+ STResList72 = [STRes71|STResList71],
+
+
+ ?line {STRes72,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ014.xsd','./msxsdtest/attribute',invalid),
+ STResList73 = [STRes72|STResList72],
+
+
+ ?line {STRes73,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ015.xsd','./msxsdtest/attribute',invalid),
+ STResList74 = [STRes73|STResList73],
+
+
+ ?line {STRes74,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ016.xsd','./msxsdtest/attribute',invalid),
+ STResList75 = [STRes74|STResList74],
+
+
+ ?line {STRes75,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ017.xsd','./msxsdtest/attribute',invalid),
+ STResList76 = [STRes75|STResList75],
+
+
+ ?line {STRes76,S76} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attJ018.xsd','./msxsdtest/attribute',valid),
+ STResList77 = [STRes76|STResList76],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attJ018.xml','./msxsdtest/attribute',valid,S76),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes77,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa001.xsd','./msxsdtest/attribute',invalid),
+ STResList78 = [STRes77|STResList77],
+
+
+ ?line {STRes78,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa002.xsd','./msxsdtest/attribute',valid),
+ STResList79 = [STRes78|STResList78],
+
+
+ ?line {STRes79,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa003.xsd','./msxsdtest/attribute',invalid),
+ STResList80 = [STRes79|STResList79],
+
+
+ ?line {STRes80,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa004.xsd','./msxsdtest/attribute',invalid),
+ STResList81 = [STRes80|STResList80],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa005.xsd','./msxsdtest/attribute',invalid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa006.xsd','./msxsdtest/attribute',valid),
+ STResList83 = [STRes82|STResList82],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa007.xsd','./msxsdtest/attribute',invalid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa008.xsd','./msxsdtest/attribute',invalid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa009.xsd','./msxsdtest/attribute',invalid),
+ STResList86 = [STRes85|STResList85],
+
+
+ ?line {STRes86,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa010.xsd','./msxsdtest/attribute',invalid),
+ STResList87 = [STRes86|STResList86],
+
+
+ ?line {STRes87,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa011.xsd','./msxsdtest/attribute',invalid),
+ STResList88 = [STRes87|STResList87],
+
+
+ ?line {STRes88,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa012.xsd','./msxsdtest/attribute',invalid),
+ STResList89 = [STRes88|STResList88],
+
+
+ ?line {STRes89,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa013.xsd','./msxsdtest/attribute',invalid),
+ STResList90 = [STRes89|STResList89],
+
+
+ ?line {STRes90,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa014.xsd','./msxsdtest/attribute',invalid),
+ STResList91 = [STRes90|STResList90],
+
+
+ ?line {STRes91,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKa015.xsd','./msxsdtest/attribute',invalid),
+ STResList92 = [STRes91|STResList91],
+
+
+ ?line {STRes92,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb001.xsd','./msxsdtest/attribute',invalid),
+ STResList93 = [STRes92|STResList92],
+
+
+ ?line {STRes93,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb002.xsd','./msxsdtest/attribute',valid),
+ STResList94 = [STRes93|STResList93],
+
+
+ ?line {STRes94,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb003.xsd','./msxsdtest/attribute',valid),
+ STResList95 = [STRes94|STResList94],
+
+
+ ?line {STRes95,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb004.xsd','./msxsdtest/attribute',invalid),
+ STResList96 = [STRes95|STResList95],
+
+
+ ?line {STRes96,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb005.xsd','./msxsdtest/attribute',invalid),
+ STResList97 = [STRes96|STResList96],
+
+
+ ?line {STRes97,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb006.xsd','./msxsdtest/attribute',valid),
+ STResList98 = [STRes97|STResList97],
+
+
+ ?line {STRes98,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb007.xsd','./msxsdtest/attribute',valid),
+ STResList99 = [STRes98|STResList98],
+
+
+ ?line {STRes99,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb008.xsd','./msxsdtest/attribute',valid),
+ STResList100 = [STRes99|STResList99],
+
+
+ ?line {STRes100,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb009.xsd','./msxsdtest/attribute',valid),
+ STResList101 = [STRes100|STResList100],
+
+
+ ?line {STRes101,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb010.xsd','./msxsdtest/attribute',invalid),
+ STResList102 = [STRes101|STResList101],
+
+
+ ?line {STRes102,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb011.xsd','./msxsdtest/attribute',invalid),
+ STResList103 = [STRes102|STResList102],
+
+
+ ?line {STRes103,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb012.xsd','./msxsdtest/attribute',invalid),
+ STResList104 = [STRes103|STResList103],
+
+
+ ?line {STRes104,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb013.xsd','./msxsdtest/attribute',invalid),
+ STResList105 = [STRes104|STResList104],
+
+
+ ?line {STRes105,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb014.xsd','./msxsdtest/attribute',invalid),
+ STResList106 = [STRes105|STResList105],
+
+
+ ?line {STRes106,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb015.xsd','./msxsdtest/attribute',invalid),
+ STResList107 = [STRes106|STResList106],
+
+
+ ?line {STRes107,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb016.xsd','./msxsdtest/attribute',invalid),
+ STResList108 = [STRes107|STResList107],
+
+
+ ?line {STRes108,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb017.xsd','./msxsdtest/attribute',invalid),
+ STResList109 = [STRes108|STResList108],
+
+
+ ?line {STRes109,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKb018.xsd','./msxsdtest/attribute',invalid),
+ STResList110 = [STRes109|STResList109],
+
+
+ ?line {STRes110,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc001.xsd','./msxsdtest/attribute',invalid),
+ STResList111 = [STRes110|STResList110],
+
+
+ ?line {STRes111,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc002.xsd','./msxsdtest/attribute',valid),
+ STResList112 = [STRes111|STResList111],
+
+
+ ?line {STRes112,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc003.xsd','./msxsdtest/attribute',valid),
+ STResList113 = [STRes112|STResList112],
+
+
+ ?line {STRes113,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc004.xsd','./msxsdtest/attribute',invalid),
+ STResList114 = [STRes113|STResList113],
+
+
+ ?line {STRes114,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc005.xsd','./msxsdtest/attribute',invalid),
+ STResList115 = [STRes114|STResList114],
+
+
+ ?line {STRes115,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc006.xsd','./msxsdtest/attribute',valid),
+ STResList116 = [STRes115|STResList115],
+
+
+ ?line {STRes116,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc007.xsd','./msxsdtest/attribute',valid),
+ STResList117 = [STRes116|STResList116],
+
+
+ ?line {STRes117,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc008.xsd','./msxsdtest/attribute',valid),
+ STResList118 = [STRes117|STResList117],
+
+
+ ?line {STRes118,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc009.xsd','./msxsdtest/attribute',valid),
+ STResList119 = [STRes118|STResList118],
+
+
+ ?line {STRes119,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc010.xsd','./msxsdtest/attribute',invalid),
+ STResList120 = [STRes119|STResList119],
+
+
+ ?line {STRes120,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc011.xsd','./msxsdtest/attribute',invalid),
+ STResList121 = [STRes120|STResList120],
+
+
+ ?line {STRes121,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc012.xsd','./msxsdtest/attribute',invalid),
+ STResList122 = [STRes121|STResList121],
+
+
+ ?line {STRes122,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc013.xsd','./msxsdtest/attribute',invalid),
+ STResList123 = [STRes122|STResList122],
+
+
+ ?line {STRes123,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc014.xsd','./msxsdtest/attribute',invalid),
+ STResList124 = [STRes123|STResList123],
+
+
+ ?line {STRes124,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc015.xsd','./msxsdtest/attribute',invalid),
+ STResList125 = [STRes124|STResList124],
+
+
+ ?line {STRes125,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc016.xsd','./msxsdtest/attribute',invalid),
+ STResList126 = [STRes125|STResList125],
+
+
+ ?line {STRes126,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc017.xsd','./msxsdtest/attribute',invalid),
+ STResList127 = [STRes126|STResList126],
+
+
+ ?line {STRes127,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attKc018.xsd','./msxsdtest/attribute',invalid),
+ STResList128 = [STRes127|STResList127],
+
+
+ ?line {STRes128,S128} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLa001.xsd','./msxsdtest/attribute',valid),
+ STResList129 = [STRes128|STResList128],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLa001.xml','./msxsdtest/attribute',valid,S128),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes129,S129} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLa002.xsd','./msxsdtest/attribute',valid),
+ STResList130 = [STRes129|STResList129],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLa002.xml','./msxsdtest/attribute',valid,S129),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes130,S130} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLa003.xsd','./msxsdtest/attribute',valid),
+ STResList131 = [STRes130|STResList130],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLa003.xml','./msxsdtest/attribute',valid,S130),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes131,S131} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLa004.xsd','./msxsdtest/attribute',valid),
+ STResList132 = [STRes131|STResList131],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLa004.xml','./msxsdtest/attribute',valid,S131),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes132,S132} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLa005.xsd','./msxsdtest/attribute',valid),
+ STResList133 = [STRes132|STResList132],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLa005.xml','./msxsdtest/attribute',invalid,S132),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes133,S133} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLa006.xsd','./msxsdtest/attribute',valid),
+ STResList134 = [STRes133|STResList133],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLa006.xml','./msxsdtest/attribute',valid,S133),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes134,S134} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLb001.xsd','./msxsdtest/attribute',valid),
+ STResList135 = [STRes134|STResList134],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLb001.xml','./msxsdtest/attribute',valid,S134),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes135,S135} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLb002.xsd','./msxsdtest/attribute',valid),
+ STResList136 = [STRes135|STResList135],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLb002.xml','./msxsdtest/attribute',valid,S135),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes136,S136} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLb003.xsd','./msxsdtest/attribute',valid),
+ STResList137 = [STRes136|STResList136],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLb003.xml','./msxsdtest/attribute',valid,S136),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes137,S137} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLb004.xsd','./msxsdtest/attribute',valid),
+ STResList138 = [STRes137|STResList137],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLb004.xml','./msxsdtest/attribute',valid,S137),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes138,S138} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLb005.xsd','./msxsdtest/attribute',valid),
+ STResList139 = [STRes138|STResList138],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLb005.xml','./msxsdtest/attribute',invalid,S138),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes139,S139} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLb006.xsd','./msxsdtest/attribute',valid),
+ STResList140 = [STRes139|STResList139],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLb006.xml','./msxsdtest/attribute',valid,S139),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes140,S140} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLc001.xsd','./msxsdtest/attribute',valid),
+ STResList141 = [STRes140|STResList140],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLc001.xml','./msxsdtest/attribute',valid,S140),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes141,S141} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLc002.xsd','./msxsdtest/attribute',valid),
+ STResList142 = [STRes141|STResList141],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLc002.xml','./msxsdtest/attribute',valid,S141),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes142,S142} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLc003.xsd','./msxsdtest/attribute',valid),
+ STResList143 = [STRes142|STResList142],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLc003.xml','./msxsdtest/attribute',valid,S142),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes143,S143} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLc004.xsd','./msxsdtest/attribute',valid),
+ STResList144 = [STRes143|STResList143],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLc004.xml','./msxsdtest/attribute',valid,S143),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes144,S144} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLc005.xsd','./msxsdtest/attribute',valid),
+ STResList145 = [STRes144|STResList144],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLc005.xml','./msxsdtest/attribute',invalid,S144),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes145,S145} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attLc006.xsd','./msxsdtest/attribute',valid),
+ STResList146 = [STRes145|STResList145],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attLc006.xml','./msxsdtest/attribute',valid,S145),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes146,S146} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMa001.xsd','./msxsdtest/attribute',valid),
+ STResList147 = [STRes146|STResList146],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMa001.xml','./msxsdtest/attribute',invalid,S146),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes147,S147} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMa002.xsd','./msxsdtest/attribute',valid),
+ STResList148 = [STRes147|STResList147],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMa002.xml','./msxsdtest/attribute',invalid,S147),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes148,S148} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMa003.xsd','./msxsdtest/attribute',valid),
+ STResList149 = [STRes148|STResList148],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMa003.xml','./msxsdtest/attribute',valid,S148),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes149,S149} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMa004.xsd','./msxsdtest/attribute',valid),
+ STResList150 = [STRes149|STResList149],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMa004.xml','./msxsdtest/attribute',valid,S149),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes150,S150} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb001.xsd','./msxsdtest/attribute',valid),
+ STResList151 = [STRes150|STResList150],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb001.xml','./msxsdtest/attribute',invalid,S150),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes151,S151} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb002.xsd','./msxsdtest/attribute',valid),
+ STResList152 = [STRes151|STResList151],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb002.xml','./msxsdtest/attribute',invalid,S151),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes152,S152} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb003.xsd','./msxsdtest/attribute',valid),
+ STResList153 = [STRes152|STResList152],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb003.xml','./msxsdtest/attribute',invalid,S152),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes153,S153} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb004.xsd','./msxsdtest/attribute',valid),
+ STResList154 = [STRes153|STResList153],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb004.xml','./msxsdtest/attribute',valid,S153),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes154,S154} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb005.xsd','./msxsdtest/attribute',valid),
+ STResList155 = [STRes154|STResList154],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb005.xml','./msxsdtest/attribute',valid,S154),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes155,S155} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb006.xsd','./msxsdtest/attribute',valid),
+ STResList156 = [STRes155|STResList155],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb006.xml','./msxsdtest/attribute',valid,S155),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes156,S156} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb007.xsd','./msxsdtest/attribute',valid),
+ STResList157 = [STRes156|STResList156],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb007.xml','./msxsdtest/attribute',valid,S156),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes157,S157} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb008.xsd','./msxsdtest/attribute',valid),
+ STResList158 = [STRes157|STResList157],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb008.xml','./msxsdtest/attribute',valid,S157),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes158,S158} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb009.xsd','./msxsdtest/attribute',valid),
+ STResList159 = [STRes158|STResList158],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb009.xml','./msxsdtest/attribute',valid,S158),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes159,S159} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb010.xsd','./msxsdtest/attribute',valid),
+ STResList160 = [STRes159|STResList159],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb010.xml','./msxsdtest/attribute',invalid,S159),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes160,S160} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb011.xsd','./msxsdtest/attribute',valid),
+ STResList161 = [STRes160|STResList160],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb011.xml','./msxsdtest/attribute',invalid,S160),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes161,S161} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMb012.xsd','./msxsdtest/attribute',valid),
+ STResList162 = [STRes161|STResList161],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMb012.xml','./msxsdtest/attribute',invalid,S161),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes162,S162} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc001.xsd','./msxsdtest/attribute',valid),
+ STResList163 = [STRes162|STResList162],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc001.xml','./msxsdtest/attribute',invalid,S162),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes163,S163} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc002.xsd','./msxsdtest/attribute',valid),
+ STResList164 = [STRes163|STResList163],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc002.xml','./msxsdtest/attribute',invalid,S163),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes164,S164} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc003.xsd','./msxsdtest/attribute',valid),
+ STResList165 = [STRes164|STResList164],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc003.xml','./msxsdtest/attribute',invalid,S164),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes165,S165} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc004.xsd','./msxsdtest/attribute',valid),
+ STResList166 = [STRes165|STResList165],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc004.xml','./msxsdtest/attribute',valid,S165),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes166,S166} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc005.xsd','./msxsdtest/attribute',valid),
+ STResList167 = [STRes166|STResList166],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc005.xml','./msxsdtest/attribute',valid,S166),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes167,S167} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc006.xsd','./msxsdtest/attribute',valid),
+ STResList168 = [STRes167|STResList167],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc006.xml','./msxsdtest/attribute',valid,S167),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes168,S168} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc007.xsd','./msxsdtest/attribute',valid),
+ STResList169 = [STRes168|STResList168],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc007.xml','./msxsdtest/attribute',valid,S168),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes169,S169} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc008.xsd','./msxsdtest/attribute',valid),
+ STResList170 = [STRes169|STResList169],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc008.xml','./msxsdtest/attribute',valid,S169),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes170,S170} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc009.xsd','./msxsdtest/attribute',valid),
+ STResList171 = [STRes170|STResList170],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc009.xml','./msxsdtest/attribute',valid,S170),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes171,S171} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc010.xsd','./msxsdtest/attribute',valid),
+ STResList172 = [STRes171|STResList171],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc010.xml','./msxsdtest/attribute',invalid,S171),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes172,S172} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc011.xsd','./msxsdtest/attribute',valid),
+ STResList173 = [STRes172|STResList172],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc011.xml','./msxsdtest/attribute',invalid,S172),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes173,S173} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attMc012.xsd','./msxsdtest/attribute',valid),
+ STResList174 = [STRes173|STResList173],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attMc012.xml','./msxsdtest/attribute',invalid,S173),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes174,S174} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO001.xsd','./msxsdtest/attribute',valid),
+ STResList175 = [STRes174|STResList174],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attO001.xml','./msxsdtest/attribute',invalid,S174),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes175,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO002.xsd','./msxsdtest/attribute',invalid),
+ STResList176 = [STRes175|STResList175],
+
+
+ ?line {STRes176,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO003.xsd','./msxsdtest/attribute',invalid),
+ STResList177 = [STRes176|STResList176],
+
+
+ ?line {STRes177,S177} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO004.xsd','./msxsdtest/attribute',valid),
+ STResList178 = [STRes177|STResList177],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attO004.xml','./msxsdtest/attribute',invalid,S177),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes178,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO005.xsd','./msxsdtest/attribute',invalid),
+ STResList179 = [STRes178|STResList178],
+
+
+ ?line {STRes179,S179} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO006.xsd','./msxsdtest/attribute',valid),
+ STResList180 = [STRes179|STResList179],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attO006.xml','./msxsdtest/attribute',valid,S179),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes180,S180} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO007.xsd','./msxsdtest/attribute',valid),
+ STResList181 = [STRes180|STResList180],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attO007.xml','./msxsdtest/attribute',valid,S180),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes181,S181} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO008.xsd','./msxsdtest/attribute',valid),
+ STResList182 = [STRes181|STResList181],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attO008.xml','./msxsdtest/attribute',invalid,S181),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes182,S182} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO009.xsd','./msxsdtest/attribute',valid),
+ STResList183 = [STRes182|STResList182],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attO009.xml','./msxsdtest/attribute',valid,S182),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes183,S183} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO010.xsd','./msxsdtest/attribute',valid),
+ STResList184 = [STRes183|STResList183],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attO010.xml','./msxsdtest/attribute',valid,S183),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes184,S184} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO011.xsd','./msxsdtest/attribute',valid),
+ STResList185 = [STRes184|STResList184],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attO011.xml','./msxsdtest/attribute',valid,S184),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes185,S185} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO012.xsd','./msxsdtest/attribute',valid),
+ STResList186 = [STRes185|STResList185],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attO012.xml','./msxsdtest/attribute',invalid,S185),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes186,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO013.xsd','./msxsdtest/attribute',invalid),
+ STResList187 = [STRes186|STResList186],
+
+
+ ?line {STRes187,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO014.xsd','./msxsdtest/attribute',invalid),
+ STResList188 = [STRes187|STResList187],
+
+
+ ?line {STRes188,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO015.xsd','./msxsdtest/attribute',invalid),
+ STResList189 = [STRes188|STResList188],
+
+
+ ?line {STRes189,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO016.xsd','./msxsdtest/attribute',invalid),
+ STResList190 = [STRes189|STResList189],
+
+
+ ?line {STRes190,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO017.xsd','./msxsdtest/attribute',invalid),
+ STResList191 = [STRes190|STResList190],
+
+
+ ?line {STRes191,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO018.xsd','./msxsdtest/attribute',valid),
+ STResList192 = [STRes191|STResList191],
+
+
+ ?line {STRes192,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO019.xsd','./msxsdtest/attribute',invalid),
+ STResList193 = [STRes192|STResList192],
+
+
+ ?line {STRes193,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO020.xsd','./msxsdtest/attribute',invalid),
+ STResList194 = [STRes193|STResList193],
+
+
+ ?line {STRes194,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO021.xsd','./msxsdtest/attribute',invalid),
+ STResList195 = [STRes194|STResList194],
+
+
+ ?line {STRes195,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO022.xsd','./msxsdtest/attribute',invalid),
+ STResList196 = [STRes195|STResList195],
+
+
+ ?line {STRes196,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO023.xsd','./msxsdtest/attribute',invalid),
+ STResList197 = [STRes196|STResList196],
+
+
+ ?line {STRes197,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO024.xsd','./msxsdtest/attribute',invalid),
+ STResList198 = [STRes197|STResList197],
+
+
+ ?line {STRes198,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attO025.xsd','./msxsdtest/attribute',valid),
+ STResList199 = [STRes198|STResList198],
+
+
+ ?line {STRes199,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP001.xsd','./msxsdtest/attribute',invalid),
+ STResList200 = [STRes199|STResList199],
+
+
+ ?line {STRes200,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP002.xsd','./msxsdtest/attribute',invalid),
+ STResList201 = [STRes200|STResList200],
+
+
+ ?line {STRes201,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP003.xsd','./msxsdtest/attribute',invalid),
+ STResList202 = [STRes201|STResList201],
+
+
+ ?line {STRes202,S202} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP004.xsd','./msxsdtest/attribute',valid),
+ STResList203 = [STRes202|STResList202],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP004.xml','./msxsdtest/attribute',valid,S202),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes203,S203} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP005.xsd','./msxsdtest/attribute',valid),
+ STResList204 = [STRes203|STResList203],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP005.xml','./msxsdtest/attribute',invalid,S203),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes204,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP006.xsd','./msxsdtest/attribute',invalid),
+ STResList205 = [STRes204|STResList204],
+
+
+ ?line {STRes205,S205} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP007.xsd','./msxsdtest/attribute',valid),
+ STResList206 = [STRes205|STResList205],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP007.xml','./msxsdtest/attribute',valid,S205),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes206,S206} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP008.xsd','./msxsdtest/attribute',valid),
+ STResList207 = [STRes206|STResList206],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP008.xml','./msxsdtest/attribute',invalid,S206),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes207,S207} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP009.xsd','./msxsdtest/attribute',valid),
+ STResList208 = [STRes207|STResList207],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP009.xml','./msxsdtest/attribute',valid,S207),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes208,S208} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP010.xsd','./msxsdtest/attribute',valid),
+ STResList209 = [STRes208|STResList208],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP010.xml','./msxsdtest/attribute',invalid,S208),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes209,S209} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP011.xsd','./msxsdtest/attribute',valid),
+ STResList210 = [STRes209|STResList209],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP011.xml','./msxsdtest/attribute',valid,S209),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes210,S210} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP012.xsd','./msxsdtest/attribute',valid),
+ STResList211 = [STRes210|STResList210],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP012.xml','./msxsdtest/attribute',invalid,S210),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes211,S211} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP013.xsd','./msxsdtest/attribute',valid),
+ STResList212 = [STRes211|STResList211],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP013.xml','./msxsdtest/attribute',valid,S211),
+ ITResList83 = [ITRes82|ITResList82],
+
+
+ ?line {STRes212,S212} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP014.xsd','./msxsdtest/attribute',valid),
+ STResList213 = [STRes212|STResList212],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP014.xml','./msxsdtest/attribute',invalid,S212),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes213,S213} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP015.xsd','./msxsdtest/attribute',valid),
+ STResList214 = [STRes213|STResList213],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP015.xml','./msxsdtest/attribute',valid,S213),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes214,S214} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP016.xsd','./msxsdtest/attribute',valid),
+ STResList215 = [STRes214|STResList214],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP016.xml','./msxsdtest/attribute',invalid,S214),
+ ITResList86 = [ITRes85|ITResList85],
+
+
+ ?line {STRes215,S215} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP017.xsd','./msxsdtest/attribute',valid),
+ STResList216 = [STRes215|STResList215],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP017.xml','./msxsdtest/attribute',valid,S215),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes216,S216} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP018.xsd','./msxsdtest/attribute',valid),
+ STResList217 = [STRes216|STResList216],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP018.xml','./msxsdtest/attribute',invalid,S216),
+ ITResList88 = [ITRes87|ITResList87],
+
+
+ ?line {STRes217,S217} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP019.xsd','./msxsdtest/attribute',valid),
+ STResList218 = [STRes217|STResList217],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP019.xml','./msxsdtest/attribute',valid,S217),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes218,S218} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP020.xsd','./msxsdtest/attribute',valid),
+ STResList219 = [STRes218|STResList218],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP020.xml','./msxsdtest/attribute',invalid,S218),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes219,S219} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP021.xsd','./msxsdtest/attribute',valid),
+ STResList220 = [STRes219|STResList219],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP021.xml','./msxsdtest/attribute',valid,S219),
+ ITResList91 = [ITRes90|ITResList90],
+
+
+ ?line {STRes220,S220} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP022.xsd','./msxsdtest/attribute',valid),
+ STResList221 = [STRes220|STResList220],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP022.xml','./msxsdtest/attribute',valid,S220),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes221,S221} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP023.xsd','./msxsdtest/attribute',valid),
+ STResList222 = [STRes221|STResList221],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP023.xml','./msxsdtest/attribute',valid,S221),
+ ITResList93 = [ITRes92|ITResList92],
+
+
+ ?line {STRes222,S222} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP024.xsd','./msxsdtest/attribute',valid),
+ STResList223 = [STRes222|STResList222],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP024.xml','./msxsdtest/attribute',valid,S222),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes223,S223} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP025.xsd','./msxsdtest/attribute',valid),
+ STResList224 = [STRes223|STResList223],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP025.xml','./msxsdtest/attribute',valid,S223),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes224,S224} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP026.xsd','./msxsdtest/attribute',valid),
+ STResList225 = [STRes224|STResList224],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP026.xml','./msxsdtest/attribute',valid,S224),
+ ITResList96 = [ITRes95|ITResList95],
+
+
+ ?line {STRes225,S225} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP027.xsd','./msxsdtest/attribute',valid),
+ STResList226 = [STRes225|STResList225],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP027.xml','./msxsdtest/attribute',invalid,S225),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes226,S226} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP028.xsd','./msxsdtest/attribute',valid),
+ STResList227 = [STRes226|STResList226],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP028.xml','./msxsdtest/attribute',valid,S226),
+ ITResList98 = [ITRes97|ITResList97],
+
+
+ ?line {STRes227,S227} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP029.xsd','./msxsdtest/attribute',valid),
+ STResList228 = [STRes227|STResList227],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP029.xml','./msxsdtest/attribute',valid,S227),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes228,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP030.xsd','./msxsdtest/attribute',invalid),
+ STResList229 = [STRes228|STResList228],
+
+
+ ?line {STRes229,S229} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP031.xsd','./msxsdtest/attribute',valid),
+ STResList230 = [STRes229|STResList229],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP031.xml','./msxsdtest/attribute',invalid,S229),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes230,S230} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attP032.xsd','./msxsdtest/attribute',valid),
+ STResList231 = [STRes230|STResList230],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attP032.xml','./msxsdtest/attribute',valid,S230),
+ ITResList101 = [ITRes100|ITResList100],
+
+
+ ?line {STRes231,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ001.xsd','./msxsdtest/attribute',invalid),
+ STResList232 = [STRes231|STResList231],
+
+
+ ?line {STRes232,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ002.xsd','./msxsdtest/attribute',invalid),
+ STResList233 = [STRes232|STResList232],
+
+
+ ?line {STRes233,S233} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ003.xsd','./msxsdtest/attribute',valid),
+ STResList234 = [STRes233|STResList233],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attQ003.xml','./msxsdtest/attribute',valid,S233),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes234,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ004.xsd','./msxsdtest/attribute',invalid),
+ STResList235 = [STRes234|STResList234],
+
+
+ ?line {STRes235,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ005.xsd','./msxsdtest/attribute',invalid),
+ STResList236 = [STRes235|STResList235],
+
+
+ ?line {STRes236,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ006.xsd','./msxsdtest/attribute',invalid),
+ STResList237 = [STRes236|STResList236],
+
+
+ ?line {STRes237,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ007.xsd','./msxsdtest/attribute',invalid),
+ STResList238 = [STRes237|STResList237],
+
+
+ ?line {STRes238,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ008.xsd','./msxsdtest/attribute',invalid),
+ STResList239 = [STRes238|STResList238],
+
+
+ ?line {STRes239,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ009.xsd','./msxsdtest/attribute',invalid),
+ STResList240 = [STRes239|STResList239],
+
+
+ ?line {STRes240,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ010.xsd','./msxsdtest/attribute',valid),
+ STResList241 = [STRes240|STResList240],
+
+
+ ?line {STRes241,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ011.xsd','./msxsdtest/attribute',invalid),
+ STResList242 = [STRes241|STResList241],
+
+
+ ?line {STRes242,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ012.xsd','./msxsdtest/attribute',invalid),
+ STResList243 = [STRes242|STResList242],
+
+
+ ?line {STRes243,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ013.xsd','./msxsdtest/attribute',invalid),
+ STResList244 = [STRes243|STResList243],
+
+
+ ?line {STRes244,S244} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ014.xsd','./msxsdtest/attribute',valid),
+ STResList245 = [STRes244|STResList244],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attQ014.xml','./msxsdtest/attribute',valid,S244),
+ ITResList103 = [ITRes102|ITResList102],
+
+
+ ?line {STRes245,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ015.xsd','./msxsdtest/attribute',invalid),
+ STResList246 = [STRes245|STResList245],
+
+
+ ?line {STRes246,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ016.xsd','./msxsdtest/attribute',invalid),
+ STResList247 = [STRes246|STResList246],
+
+
+ ?line {STRes247,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ017.xsd','./msxsdtest/attribute',invalid),
+ STResList248 = [STRes247|STResList247],
+
+
+ ?line {STRes248,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ018.xsd','./msxsdtest/attribute',invalid),
+ STResList249 = [STRes248|STResList248],
+
+
+ ?line {STRes249,S249} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attQ019.xsd','./msxsdtest/attribute',valid),
+ STResList250 = [STRes249|STResList249],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attQ019.xml','./msxsdtest/attribute',valid,S249),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes250,S250} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attZ001.xsd','./msxsdtest/attribute',valid),
+ STResList251 = [STRes250|STResList250],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attZ001.xml','./msxsdtest/attribute',invalid,S250),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes251,S251} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attZ002.xsd','./msxsdtest/attribute',valid),
+ STResList252 = [STRes251|STResList251],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attZ002.xml','./msxsdtest/attribute',invalid,S251),
+ ITResList106 = [ITRes105|ITResList105],
+
+
+ ?line {STRes252,S252} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attribute/attZ003.xsd','./msxsdtest/attribute',valid),
+ STResList253 = [STRes252|STResList252],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attribute/attZ003.xml','./msxsdtest/attribute',invalid,S252),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes253,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgA001.xsd','./msxsdtest/attributeGroup',valid),
+ STResList254 = [STRes253|STResList253],
+
+
+ ?line {STRes254,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgA002.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList255 = [STRes254|STResList254],
+
+
+ ?line {STRes255,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgA003.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList256 = [STRes255|STResList255],
+
+
+ ?line {STRes256,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgA004.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList257 = [STRes256|STResList256],
+
+
+ ?line {STRes257,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgA005.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList258 = [STRes257|STResList257],
+
+
+ ?line {STRes258,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgA006.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList259 = [STRes258|STResList258],
+
+
+ ?line {STRes259,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgA007.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList260 = [STRes259|STResList259],
+
+
+ ?line {STRes260,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgA008.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList261 = [STRes260|STResList260],
+
+
+ ?line {STRes261,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgA009.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList262 = [STRes261|STResList261],
+
+
+ ?line {STRes262,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB001.xsd','./msxsdtest/attributeGroup',valid),
+ STResList263 = [STRes262|STResList262],
+
+
+ ?line {STRes263,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB002.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList264 = [STRes263|STResList263],
+
+
+ ?line {STRes264,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB003.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList265 = [STRes264|STResList264],
+
+
+ ?line {STRes265,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB004.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList266 = [STRes265|STResList265],
+
+
+ ?line {STRes266,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB005.xsd','./msxsdtest/attributeGroup',valid),
+ STResList267 = [STRes266|STResList266],
+
+
+ ?line {STRes267,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB006.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList268 = [STRes267|STResList267],
+
+
+ ?line {STRes268,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB007.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList269 = [STRes268|STResList268],
+
+
+ ?line {STRes269,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB008.xsd','./msxsdtest/attributeGroup',valid),
+ STResList270 = [STRes269|STResList269],
+
+
+ ?line {STRes270,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB009.xsd','./msxsdtest/attributeGroup',valid),
+ STResList271 = [STRes270|STResList270],
+
+
+ ?line {STRes271,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB010.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList272 = [STRes271|STResList271],
+
+
+ ?line {STRes272,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB011.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList273 = [STRes272|STResList272],
+
+
+ ?line {STRes273,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB012.xsd','./msxsdtest/attributeGroup',valid),
+ STResList274 = [STRes273|STResList273],
+
+
+ ?line {STRes274,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB013.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList275 = [STRes274|STResList274],
+
+
+ ?line {STRes275,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB014.xsd','./msxsdtest/attributeGroup',valid),
+ STResList276 = [STRes275|STResList275],
+
+
+ ?line {STRes276,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgB015.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList277 = [STRes276|STResList276],
+
+
+ ?line {STRes277,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC001.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList278 = [STRes277|STResList277],
+
+
+ ?line {STRes278,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC002.xsd','./msxsdtest/attributeGroup',valid),
+ STResList279 = [STRes278|STResList278],
+
+
+ ?line {STRes279,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC003.xsd','./msxsdtest/attributeGroup',valid),
+ STResList280 = [STRes279|STResList279],
+
+
+ ?line {STRes280,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC004.xsd','./msxsdtest/attributeGroup',valid),
+ STResList281 = [STRes280|STResList280],
+
+
+ ?line {STRes281,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC005.xsd','./msxsdtest/attributeGroup',valid),
+ STResList282 = [STRes281|STResList281],
+
+
+ ?line {STRes282,S282} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC006.xsd','./msxsdtest/attributeGroup',valid),
+ STResList283 = [STRes282|STResList282],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC006.xml','./msxsdtest/attributeGroup',invalid,S282),
+ ITResList108 = [ITRes107|ITResList107],
+
+
+ ?line {STRes283,S283} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC007.xsd','./msxsdtest/attributeGroup',valid),
+ STResList284 = [STRes283|STResList283],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC007.xml','./msxsdtest/attributeGroup',valid,S283),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes284,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC008.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList285 = [STRes284|STResList284],
+
+
+ ?line {STRes285,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC009.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList286 = [STRes285|STResList285],
+
+
+ ?line {STRes286,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC010.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList287 = [STRes286|STResList286],
+
+
+ ?line {STRes287,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC011.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList288 = [STRes287|STResList287],
+
+
+ ?line {STRes288,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC012.xsd','./msxsdtest/attributeGroup',valid),
+ STResList289 = [STRes288|STResList288],
+
+
+ ?line {STRes289,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC013.xsd','./msxsdtest/attributeGroup',valid),
+ STResList290 = [STRes289|STResList289],
+
+
+ ?line {STRes290,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC014.xsd','./msxsdtest/attributeGroup',valid),
+ STResList291 = [STRes290|STResList290],
+
+
+ ?line {STRes291,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC015.xsd','./msxsdtest/attributeGroup',valid),
+ STResList292 = [STRes291|STResList291],
+
+
+ ?line {STRes292,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC016.xsd','./msxsdtest/attributeGroup',valid),
+ STResList293 = [STRes292|STResList292],
+
+
+ ?line {STRes293,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC017.xsd','./msxsdtest/attributeGroup',valid),
+ STResList294 = [STRes293|STResList293],
+
+
+ ?line {STRes294,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC018.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList295 = [STRes294|STResList294],
+
+
+ ?line {STRes295,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC019.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList296 = [STRes295|STResList295],
+
+
+ ?line {STRes296,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC020.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList297 = [STRes296|STResList296],
+
+
+ ?line {STRes297,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC021.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList298 = [STRes297|STResList297],
+
+
+ ?line {STRes298,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC022.xsd','./msxsdtest/attributeGroup',valid),
+ STResList299 = [STRes298|STResList298],
+
+
+ ?line {STRes299,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC023.xsd','./msxsdtest/attributeGroup',valid),
+ STResList300 = [STRes299|STResList299],
+
+
+ ?line {STRes300,S300} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC024.xsd','./msxsdtest/attributeGroup',valid),
+ STResList301 = [STRes300|STResList300],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC024.xml','./msxsdtest/attributeGroup',valid,S300),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes301,S301} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC025.xsd','./msxsdtest/attributeGroup',valid),
+ STResList302 = [STRes301|STResList301],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC025.xml','./msxsdtest/attributeGroup',invalid,S301),
+ ITResList111 = [ITRes110|ITResList110],
+
+
+ ?line {STRes302,S302} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC026.xsd','./msxsdtest/attributeGroup',valid),
+ STResList303 = [STRes302|STResList302],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC026.xml','./msxsdtest/attributeGroup',valid,S302),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes303,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC027.xsd','./msxsdtest/attributeGroup',valid),
+ STResList304 = [STRes303|STResList303],
+
+
+ ?line {STRes304,S304} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC028.xsd','./msxsdtest/attributeGroup',valid),
+ STResList305 = [STRes304|STResList304],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC028.xml','./msxsdtest/attributeGroup',invalid,S304),
+ ITResList113 = [ITRes112|ITResList112],
+
+
+ ?line {STRes305,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC029.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList306 = [STRes305|STResList305],
+
+
+ ?line {STRes306,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC030.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList307 = [STRes306|STResList306],
+
+
+ ?line {STRes307,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC031.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList308 = [STRes307|STResList307],
+
+
+ ?line {STRes308,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC032.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList309 = [STRes308|STResList308],
+
+
+ ?line {STRes309,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC033.xsd','./msxsdtest/attributeGroup',valid),
+ STResList310 = [STRes309|STResList309],
+
+
+ ?line {STRes310,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC034.xsd','./msxsdtest/attributeGroup',valid),
+ STResList311 = [STRes310|STResList310],
+
+
+ ?line {STRes311,S311} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC035.xsd','./msxsdtest/attributeGroup',valid),
+ STResList312 = [STRes311|STResList311],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC035.xml','./msxsdtest/attributeGroup',valid,S311),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes312,S312} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC036.xsd','./msxsdtest/attributeGroup',valid),
+ STResList313 = [STRes312|STResList312],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC036.xml','./msxsdtest/attributeGroup',valid,S312),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes313,S313} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC037.xsd','./msxsdtest/attributeGroup',valid),
+ STResList314 = [STRes313|STResList313],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC037.xml','./msxsdtest/attributeGroup',valid,S313),
+ ITResList116 = [ITRes115|ITResList115],
+
+
+ ?line {STRes314,S314} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC038.xsd','./msxsdtest/attributeGroup',valid),
+ STResList315 = [STRes314|STResList314],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgC038.xml','./msxsdtest/attributeGroup',valid,S314),
+ ITResList117 = [ITRes116|ITResList116],
+
+
+ ?line {STRes315,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC039.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList316 = [STRes315|STResList315],
+
+
+ ?line {STRes316,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC040.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList317 = [STRes316|STResList316],
+
+
+ ?line {STRes317,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC041.xsd','./msxsdtest/attributeGroup',valid),
+ STResList318 = [STRes317|STResList317],
+
+
+ ?line {STRes318,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC042.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList319 = [STRes318|STResList318],
+
+
+ ?line {STRes319,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC043.xsd','./msxsdtest/attributeGroup',valid),
+ STResList320 = [STRes319|STResList319],
+
+
+ ?line {STRes320,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC044.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList321 = [STRes320|STResList320],
+
+
+ ?line {STRes321,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgC045.xsd','./msxsdtest/attributeGroup',valid),
+ STResList322 = [STRes321|STResList321],
+
+
+ ?line {STRes322,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD001.xsd','./msxsdtest/attributeGroup',valid),
+ STResList323 = [STRes322|STResList322],
+
+
+ ?line {STRes323,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD002.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList324 = [STRes323|STResList323],
+
+
+ ?line {STRes324,S324} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD003.xsd','./msxsdtest/attributeGroup',valid),
+ STResList325 = [STRes324|STResList324],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD003.xml','./msxsdtest/attributeGroup',valid,S324),
+ ITResList118 = [ITRes117|ITResList117],
+
+
+ ?line {STRes325,S325} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD004.xsd','./msxsdtest/attributeGroup',valid),
+ STResList326 = [STRes325|STResList325],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD004.xml','./msxsdtest/attributeGroup',valid,S325),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes326,S326} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD005.xsd','./msxsdtest/attributeGroup',valid),
+ STResList327 = [STRes326|STResList326],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD005.xml','./msxsdtest/attributeGroup',valid,S326),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes327,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD006.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList328 = [STRes327|STResList327],
+
+
+ ?line {STRes328,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD007.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList329 = [STRes328|STResList328],
+
+
+ ?line {STRes329,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD008.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList330 = [STRes329|STResList329],
+
+
+ ?line {STRes330,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD009.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList331 = [STRes330|STResList330],
+
+
+ ?line {STRes331,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD010.xsd','./msxsdtest/attributeGroup',valid),
+ STResList332 = [STRes331|STResList331],
+
+
+ ?line {STRes332,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD011.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList333 = [STRes332|STResList332],
+
+
+ ?line {STRes333,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD012.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList334 = [STRes333|STResList333],
+
+
+ ?line {STRes334,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD013.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList335 = [STRes334|STResList334],
+
+
+ ?line {STRes335,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD014.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList336 = [STRes335|STResList335],
+
+
+ ?line {STRes336,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD015.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList337 = [STRes336|STResList336],
+
+
+ ?line {STRes337,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD016.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList338 = [STRes337|STResList337],
+
+
+ ?line {STRes338,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD017.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList339 = [STRes338|STResList338],
+
+
+ ?line {STRes339,S339} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD018.xsd','./msxsdtest/attributeGroup',valid),
+ STResList340 = [STRes339|STResList339],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD018.xml','./msxsdtest/attributeGroup',valid,S339),
+ ITResList121 = [ITRes120|ITResList120],
+
+
+ ?line {STRes340,S340} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD019.xsd','./msxsdtest/attributeGroup',valid),
+ STResList341 = [STRes340|STResList340],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD019.xml','./msxsdtest/attributeGroup',valid,S340),
+ ITResList122 = [ITRes121|ITResList121],
+
+
+ ?line {STRes341,S341} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD020.xsd','./msxsdtest/attributeGroup',valid),
+ STResList342 = [STRes341|STResList341],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD020.xml','./msxsdtest/attributeGroup',valid,S341),
+ ITResList123 = [ITRes122|ITResList122],
+
+
+ ?line {STRes342,S342} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD021.xsd','./msxsdtest/attributeGroup',valid),
+ STResList343 = [STRes342|STResList342],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD021.xml','./msxsdtest/attributeGroup',valid,S342),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes343,S343} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD022.xsd','./msxsdtest/attributeGroup',valid),
+ STResList344 = [STRes343|STResList343],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD022.xml','./msxsdtest/attributeGroup',valid,S343),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes344,S344} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD023.xsd','./msxsdtest/attributeGroup',valid),
+ STResList345 = [STRes344|STResList344],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD023.xml','./msxsdtest/attributeGroup',invalid,S344),
+ ITResList126 = [ITRes125|ITResList125],
+
+
+ ?line {STRes345,S345} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD024.xsd','./msxsdtest/attributeGroup',valid),
+ STResList346 = [STRes345|STResList345],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD024.xml','./msxsdtest/attributeGroup',invalid,S345),
+ ITResList127 = [ITRes126|ITResList126],
+
+
+ ?line {STRes346,S346} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD025.xsd','./msxsdtest/attributeGroup',valid),
+ STResList347 = [STRes346|STResList346],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD025.xml','./msxsdtest/attributeGroup',valid,S346),
+ ITResList128 = [ITRes127|ITResList127],
+
+
+ ?line {STRes347,S347} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD026.xsd','./msxsdtest/attributeGroup',valid),
+ STResList348 = [STRes347|STResList347],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD026.xml','./msxsdtest/attributeGroup',invalid,S347),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes348,S348} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD027.xsd','./msxsdtest/attributeGroup',valid),
+ STResList349 = [STRes348|STResList348],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD027.xml','./msxsdtest/attributeGroup',valid,S348),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ ?line {STRes349,S349} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD028.xsd','./msxsdtest/attributeGroup',valid),
+ STResList350 = [STRes349|STResList349],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD028.xml','./msxsdtest/attributeGroup',invalid,S349),
+ ITResList131 = [ITRes130|ITResList130],
+
+
+ ?line {STRes350,S350} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD029.xsd','./msxsdtest/attributeGroup',valid),
+ STResList351 = [STRes350|STResList350],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD029.xml','./msxsdtest/attributeGroup',valid,S350),
+ ITResList132 = [ITRes131|ITResList131],
+
+
+ ?line {STRes351,S351} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD030.xsd','./msxsdtest/attributeGroup',valid),
+ STResList352 = [STRes351|STResList351],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD030.xml','./msxsdtest/attributeGroup',invalid,S351),
+ ITResList133 = [ITRes132|ITResList132],
+
+
+ ?line {STRes352,S352} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD031.xsd','./msxsdtest/attributeGroup',valid),
+ STResList353 = [STRes352|STResList352],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD031.xml','./msxsdtest/attributeGroup',valid,S352),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes353,S353} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD032.xsd','./msxsdtest/attributeGroup',valid),
+ STResList354 = [STRes353|STResList353],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD032.xml','./msxsdtest/attributeGroup',valid,S353),
+ ITResList135 = [ITRes134|ITResList134],
+
+
+ ?line {STRes354,S354} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD033.xsd','./msxsdtest/attributeGroup',valid),
+ STResList355 = [STRes354|STResList354],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD033.xml','./msxsdtest/attributeGroup',valid,S354),
+ ITResList136 = [ITRes135|ITResList135],
+
+
+ ?line {STRes355,S355} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD034.xsd','./msxsdtest/attributeGroup',valid),
+ STResList356 = [STRes355|STResList355],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD034.xml','./msxsdtest/attributeGroup',valid,S355),
+ ITResList137 = [ITRes136|ITResList136],
+
+
+ ?line {STRes356,S356} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD035.xsd','./msxsdtest/attributeGroup',valid),
+ STResList357 = [STRes356|STResList356],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD035.xml','./msxsdtest/attributeGroup',invalid,S356),
+ ITResList138 = [ITRes137|ITResList137],
+
+
+ ?line {STRes357,S357} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD036.xsd','./msxsdtest/attributeGroup',valid),
+ STResList358 = [STRes357|STResList357],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD036.xml','./msxsdtest/attributeGroup',valid,S357),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes358,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD037.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList359 = [STRes358|STResList358],
+
+
+ ?line {STRes359,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD038.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList360 = [STRes359|STResList359],
+
+
+ ?line {STRes360,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD039.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList361 = [STRes360|STResList360],
+
+
+ ?line {STRes361,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD040.xsd','./msxsdtest/attributeGroup',valid),
+ STResList362 = [STRes361|STResList361],
+
+
+ ?line {STRes362,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD041.xsd','./msxsdtest/attributeGroup',invalid),
+ STResList363 = [STRes362|STResList362],
+
+
+ ?line {STRes363,S363} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/attributeGroup/attgD042.xsd','./msxsdtest/attributeGroup',valid),
+ STResList364 = [STRes363|STResList363],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/attributeGroup/attgD042.xml','./msxsdtest/attributeGroup',invalid,S363),
+ ITResList140 = [ITRes139|ITResList139],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList364,ITResList140).
+
+%% Syntax Checking for top level complexType Declaration.
+%% Syntax Checking for simpleContent complexType Declaration.
+%% Syntax Checking for comlexContent complexType Declaration
+%% complexType Validation checking
+%% complexType Schema Component Constraints
+
+ct(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA001.xsd','./msxsdtest/complexType',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA001.xml','./msxsdtest/complexType',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA002.xsd','./msxsdtest/complexType',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA002.xml','./msxsdtest/complexType',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA003.xsd','./msxsdtest/complexType',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA003.xml','./msxsdtest/complexType',valid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA004.xsd','./msxsdtest/complexType',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA005.xsd','./msxsdtest/complexType',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA005.xml','./msxsdtest/complexType',valid,S4),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA006.xsd','./msxsdtest/complexType',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA007.xsd','./msxsdtest/complexType',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA008.xsd','./msxsdtest/complexType',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA009.xsd','./msxsdtest/complexType',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA009.xml','./msxsdtest/complexType',valid,S8),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA010.xsd','./msxsdtest/complexType',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA010.xml','./msxsdtest/complexType',valid,S9),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA011.xsd','./msxsdtest/complexType',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA011.xml','./msxsdtest/complexType',valid,S10),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA012.xsd','./msxsdtest/complexType',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA012.xml','./msxsdtest/complexType',valid,S11),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA013.xsd','./msxsdtest/complexType',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA013.xml','./msxsdtest/complexType',valid,S12),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA014.xsd','./msxsdtest/complexType',invalid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA015.xsd','./msxsdtest/complexType',invalid),
+ STResList15 = [STRes14|STResList14],
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA016.xsd','./msxsdtest/complexType',invalid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA017.xsd','./msxsdtest/complexType',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA017.xml','./msxsdtest/complexType',valid,S16),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA018.xsd','./msxsdtest/complexType',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA018.xml','./msxsdtest/complexType',valid,S17),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA019.xsd','./msxsdtest/complexType',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA019.xml','./msxsdtest/complexType',valid,S18),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA020.xsd','./msxsdtest/complexType',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA020.xml','./msxsdtest/complexType',valid,S19),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA021.xsd','./msxsdtest/complexType',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA021.xml','./msxsdtest/complexType',valid,S20),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA022.xsd','./msxsdtest/complexType',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA022.xml','./msxsdtest/complexType',valid,S21),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA023.xsd','./msxsdtest/complexType',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA024.xsd','./msxsdtest/complexType',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA025.xsd','./msxsdtest/complexType',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA026.xsd','./msxsdtest/complexType',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA026.xml','./msxsdtest/complexType',valid,S25),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA027.xsd','./msxsdtest/complexType',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA027.xml','./msxsdtest/complexType',valid,S26),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA028.xsd','./msxsdtest/complexType',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA029.xsd','./msxsdtest/complexType',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA030.xsd','./msxsdtest/complexType',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA031.xsd','./msxsdtest/complexType',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA032.xsd','./msxsdtest/complexType',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA032.xml','./msxsdtest/complexType',valid,S31),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA033.xsd','./msxsdtest/complexType',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA033.xml','./msxsdtest/complexType',valid,S32),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA034.xsd','./msxsdtest/complexType',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA034.xml','./msxsdtest/complexType',valid,S33),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA035.xsd','./msxsdtest/complexType',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA035.xml','./msxsdtest/complexType',valid,S34),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA036.xsd','./msxsdtest/complexType',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA037.xsd','./msxsdtest/complexType',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA037.xml','./msxsdtest/complexType',valid,S36),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA038.xsd','./msxsdtest/complexType',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA039.xsd','./msxsdtest/complexType',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA040.xsd','./msxsdtest/complexType',invalid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA041.xsd','./msxsdtest/complexType',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA041.xml','./msxsdtest/complexType',valid,S40),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA042.xsd','./msxsdtest/complexType',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA043.xsd','./msxsdtest/complexType',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA044.xsd','./msxsdtest/complexType',invalid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,S44} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA045.xsd','./msxsdtest/complexType',valid),
+ STResList45 = [STRes44|STResList44],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA045.xml','./msxsdtest/complexType',valid,S44),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA046.xsd','./msxsdtest/complexType',invalid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,S46} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA047.xsd','./msxsdtest/complexType',valid),
+ STResList47 = [STRes46|STResList46],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA047.xml','./msxsdtest/complexType',valid,S46),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA048.xsd','./msxsdtest/complexType',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA048.xml','./msxsdtest/complexType',valid,S47),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes48,S48} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctA049.xsd','./msxsdtest/complexType',valid),
+ STResList49 = [STRes48|STResList48],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctA049.xml','./msxsdtest/complexType',valid,S48),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB001.xsd','./msxsdtest/complexType',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB001.xml','./msxsdtest/complexType',valid,S49),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB002.xsd','./msxsdtest/complexType',invalid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,S51} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB003.xsd','./msxsdtest/complexType',valid),
+ STResList52 = [STRes51|STResList51],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB003.xml','./msxsdtest/complexType',valid,S51),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes52,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB004.xsd','./msxsdtest/complexType',invalid),
+ STResList53 = [STRes52|STResList52],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB005.xsd','./msxsdtest/complexType',invalid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB006.xsd','./msxsdtest/complexType',invalid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB007.xsd','./msxsdtest/complexType',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB008.xsd','./msxsdtest/complexType',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB009.xsd','./msxsdtest/complexType',invalid),
+ STResList58 = [STRes57|STResList57],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB010.xsd','./msxsdtest/complexType',invalid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB011.xsd','./msxsdtest/complexType',invalid),
+ STResList60 = [STRes59|STResList59],
+
+
+ ?line {STRes60,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB012.xsd','./msxsdtest/complexType',invalid),
+ STResList61 = [STRes60|STResList60],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB013.xsd','./msxsdtest/complexType',invalid),
+ STResList62 = [STRes61|STResList61],
+
+
+ ?line {STRes62,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB014.xsd','./msxsdtest/complexType',invalid),
+ STResList63 = [STRes62|STResList62],
+
+
+ ?line {STRes63,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB015.xsd','./msxsdtest/complexType',invalid),
+ STResList64 = [STRes63|STResList63],
+
+
+ ?line {STRes64,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB016.xsd','./msxsdtest/complexType',invalid),
+ STResList65 = [STRes64|STResList64],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB017.xsd','./msxsdtest/complexType',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB017.xml','./msxsdtest/complexType',valid,S65),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes66,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB018.xsd','./msxsdtest/complexType',invalid),
+ STResList67 = [STRes66|STResList66],
+
+
+ ?line {STRes67,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB019.xsd','./msxsdtest/complexType',invalid),
+ STResList68 = [STRes67|STResList67],
+
+
+ ?line {STRes68,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB020.xsd','./msxsdtest/complexType',invalid),
+ STResList69 = [STRes68|STResList68],
+
+
+ ?line {STRes69,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB021.xsd','./msxsdtest/complexType',invalid),
+ STResList70 = [STRes69|STResList69],
+
+
+ ?line {STRes70,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB022.xsd','./msxsdtest/complexType',invalid),
+ STResList71 = [STRes70|STResList70],
+
+
+ ?line {STRes71,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB023.xsd','./msxsdtest/complexType',invalid),
+ STResList72 = [STRes71|STResList71],
+
+
+ ?line {STRes72,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB024.xsd','./msxsdtest/complexType',invalid),
+ STResList73 = [STRes72|STResList72],
+
+
+ ?line {STRes73,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB025.xsd','./msxsdtest/complexType',invalid),
+ STResList74 = [STRes73|STResList73],
+
+
+ ?line {STRes74,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB026.xsd','./msxsdtest/complexType',invalid),
+ STResList75 = [STRes74|STResList74],
+
+
+ ?line {STRes75,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB027.xsd','./msxsdtest/complexType',invalid),
+ STResList76 = [STRes75|STResList75],
+
+
+ ?line {STRes76,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB028.xsd','./msxsdtest/complexType',invalid),
+ STResList77 = [STRes76|STResList76],
+
+
+ ?line {STRes77,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB029.xsd','./msxsdtest/complexType',invalid),
+ STResList78 = [STRes77|STResList77],
+
+
+ ?line {STRes78,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB030.xsd','./msxsdtest/complexType',invalid),
+ STResList79 = [STRes78|STResList78],
+
+
+ ?line {STRes79,S79} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB031.xsd','./msxsdtest/complexType',valid),
+ STResList80 = [STRes79|STResList79],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB031.xml','./msxsdtest/complexType',valid,S79),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes80,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB032.xsd','./msxsdtest/complexType',invalid),
+ STResList81 = [STRes80|STResList80],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB033.xsd','./msxsdtest/complexType',invalid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB034.xsd','./msxsdtest/complexType',invalid),
+ STResList83 = [STRes82|STResList82],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB035.xsd','./msxsdtest/complexType',invalid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB036.xsd','./msxsdtest/complexType',invalid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB037.xsd','./msxsdtest/complexType',invalid),
+ STResList86 = [STRes85|STResList85],
+
+
+ ?line {STRes86,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB038.xsd','./msxsdtest/complexType',invalid),
+ STResList87 = [STRes86|STResList86],
+
+
+ ?line {STRes87,S87} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB039.xsd','./msxsdtest/complexType',valid),
+ STResList88 = [STRes87|STResList87],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB039.xml','./msxsdtest/complexType',valid,S87),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes88,S88} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB040.xsd','./msxsdtest/complexType',valid),
+ STResList89 = [STRes88|STResList88],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB040.xml','./msxsdtest/complexType',valid,S88),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes89,S89} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB041.xsd','./msxsdtest/complexType',valid),
+ STResList90 = [STRes89|STResList89],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB041.xml','./msxsdtest/complexType',valid,S89),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes90,S90} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB042.xsd','./msxsdtest/complexType',valid),
+ STResList91 = [STRes90|STResList90],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB042.xml','./msxsdtest/complexType',valid,S90),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes91,S91} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB043.xsd','./msxsdtest/complexType',valid),
+ STResList92 = [STRes91|STResList91],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB043.xml','./msxsdtest/complexType',valid,S91),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes92,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB044.xsd','./msxsdtest/complexType',invalid),
+ STResList93 = [STRes92|STResList92],
+
+
+ ?line {STRes93,S93} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB045.xsd','./msxsdtest/complexType',valid),
+ STResList94 = [STRes93|STResList93],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB045.xml','./msxsdtest/complexType',valid,S93),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes94,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB046.xsd','./msxsdtest/complexType',invalid),
+ STResList95 = [STRes94|STResList94],
+
+
+ ?line {STRes95,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB047.xsd','./msxsdtest/complexType',invalid),
+ STResList96 = [STRes95|STResList95],
+
+
+ ?line {STRes96,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB048.xsd','./msxsdtest/complexType',invalid),
+ STResList97 = [STRes96|STResList96],
+
+
+ ?line {STRes97,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB049.xsd','./msxsdtest/complexType',invalid),
+ STResList98 = [STRes97|STResList97],
+
+
+ ?line {STRes98,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB050.xsd','./msxsdtest/complexType',invalid),
+ STResList99 = [STRes98|STResList98],
+
+
+ ?line {STRes99,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB051.xsd','./msxsdtest/complexType',invalid),
+ STResList100 = [STRes99|STResList99],
+
+
+ ?line {STRes100,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB052.xsd','./msxsdtest/complexType',invalid),
+ STResList101 = [STRes100|STResList100],
+
+
+ ?line {STRes101,S101} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB053.xsd','./msxsdtest/complexType',valid),
+ STResList102 = [STRes101|STResList101],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB053.xml','./msxsdtest/complexType',valid,S101),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes102,S102} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB054.xsd','./msxsdtest/complexType',valid),
+ STResList103 = [STRes102|STResList102],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB054.xml','./msxsdtest/complexType',valid,S102),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes103,S103} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB055.xsd','./msxsdtest/complexType',valid),
+ STResList104 = [STRes103|STResList103],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB055.xml','./msxsdtest/complexType',valid,S103),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes104,S104} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB056.xsd','./msxsdtest/complexType',valid),
+ STResList105 = [STRes104|STResList104],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB056.xml','./msxsdtest/complexType',valid,S104),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes105,S105} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB057.xsd','./msxsdtest/complexType',valid),
+ STResList106 = [STRes105|STResList105],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB057.xml','./msxsdtest/complexType',valid,S105),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes106,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB058.xsd','./msxsdtest/complexType',invalid),
+ STResList107 = [STRes106|STResList106],
+
+
+ ?line {STRes107,S107} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB059.xsd','./msxsdtest/complexType',valid),
+ STResList108 = [STRes107|STResList107],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB059.xml','./msxsdtest/complexType',valid,S107),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes108,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB060.xsd','./msxsdtest/complexType',invalid),
+ STResList109 = [STRes108|STResList108],
+
+
+ ?line {STRes109,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB061.xsd','./msxsdtest/complexType',invalid),
+ STResList110 = [STRes109|STResList109],
+
+
+ ?line {STRes110,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB062.xsd','./msxsdtest/complexType',invalid),
+ STResList111 = [STRes110|STResList110],
+
+
+ ?line {STRes111,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB063.xsd','./msxsdtest/complexType',invalid),
+ STResList112 = [STRes111|STResList111],
+
+
+ ?line {STRes112,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB064.xsd','./msxsdtest/complexType',invalid),
+ STResList113 = [STRes112|STResList112],
+
+
+ ?line {STRes113,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB065.xsd','./msxsdtest/complexType',invalid),
+ STResList114 = [STRes113|STResList113],
+
+
+ ?line {STRes114,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB066.xsd','./msxsdtest/complexType',invalid),
+ STResList115 = [STRes114|STResList114],
+
+
+ ?line {STRes115,S115} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB067.xsd','./msxsdtest/complexType',valid),
+ STResList116 = [STRes115|STResList115],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB067.xml','./msxsdtest/complexType',valid,S115),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes116,S116} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB068.xsd','./msxsdtest/complexType',valid),
+ STResList117 = [STRes116|STResList116],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB068.xml','./msxsdtest/complexType',valid,S116),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes117,S117} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB069.xsd','./msxsdtest/complexType',valid),
+ STResList118 = [STRes117|STResList117],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB069.xml','./msxsdtest/complexType',valid,S117),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes118,S118} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB070.xsd','./msxsdtest/complexType',valid),
+ STResList119 = [STRes118|STResList118],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB070.xml','./msxsdtest/complexType',valid,S118),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes119,S119} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB071.xsd','./msxsdtest/complexType',valid),
+ STResList120 = [STRes119|STResList119],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB071.xml','./msxsdtest/complexType',valid,S119),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes120,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB072.xsd','./msxsdtest/complexType',invalid),
+ STResList121 = [STRes120|STResList120],
+
+
+ ?line {STRes121,S121} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB073.xsd','./msxsdtest/complexType',valid),
+ STResList122 = [STRes121|STResList121],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB073.xml','./msxsdtest/complexType',valid,S121),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes122,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB074.xsd','./msxsdtest/complexType',invalid),
+ STResList123 = [STRes122|STResList122],
+
+
+ ?line {STRes123,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB075.xsd','./msxsdtest/complexType',invalid),
+ STResList124 = [STRes123|STResList123],
+
+
+ ?line {STRes124,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB076.xsd','./msxsdtest/complexType',invalid),
+ STResList125 = [STRes124|STResList124],
+
+
+ ?line {STRes125,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB077.xsd','./msxsdtest/complexType',invalid),
+ STResList126 = [STRes125|STResList125],
+
+
+ ?line {STRes126,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB078.xsd','./msxsdtest/complexType',invalid),
+ STResList127 = [STRes126|STResList126],
+
+
+ ?line {STRes127,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB079.xsd','./msxsdtest/complexType',invalid),
+ STResList128 = [STRes127|STResList127],
+
+
+ ?line {STRes128,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB080.xsd','./msxsdtest/complexType',invalid),
+ STResList129 = [STRes128|STResList128],
+
+
+ ?line {STRes129,S129} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB081.xsd','./msxsdtest/complexType',valid),
+ STResList130 = [STRes129|STResList129],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB081.xml','./msxsdtest/complexType',valid,S129),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes130,S130} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB082.xsd','./msxsdtest/complexType',valid),
+ STResList131 = [STRes130|STResList130],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB082.xml','./msxsdtest/complexType',valid,S130),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes131,S131} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB083.xsd','./msxsdtest/complexType',valid),
+ STResList132 = [STRes131|STResList131],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB083.xml','./msxsdtest/complexType',valid,S131),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes132,S132} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB084.xsd','./msxsdtest/complexType',valid),
+ STResList133 = [STRes132|STResList132],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB084.xml','./msxsdtest/complexType',valid,S132),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes133,S133} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB085.xsd','./msxsdtest/complexType',valid),
+ STResList134 = [STRes133|STResList133],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB085.xml','./msxsdtest/complexType',valid,S133),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes134,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB086.xsd','./msxsdtest/complexType',invalid),
+ STResList135 = [STRes134|STResList134],
+
+
+ ?line {STRes135,S135} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB087.xsd','./msxsdtest/complexType',valid),
+ STResList136 = [STRes135|STResList135],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB087.xml','./msxsdtest/complexType',valid,S135),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes136,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB088.xsd','./msxsdtest/complexType',invalid),
+ STResList137 = [STRes136|STResList136],
+
+
+ ?line {STRes137,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB089.xsd','./msxsdtest/complexType',invalid),
+ STResList138 = [STRes137|STResList137],
+
+
+ ?line {STRes138,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB090.xsd','./msxsdtest/complexType',invalid),
+ STResList139 = [STRes138|STResList138],
+
+
+ ?line {STRes139,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB091.xsd','./msxsdtest/complexType',invalid),
+ STResList140 = [STRes139|STResList139],
+
+
+ ?line {STRes140,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB092.xsd','./msxsdtest/complexType',invalid),
+ STResList141 = [STRes140|STResList140],
+
+
+ ?line {STRes141,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB093.xsd','./msxsdtest/complexType',invalid),
+ STResList142 = [STRes141|STResList141],
+
+
+ ?line {STRes142,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB094.xsd','./msxsdtest/complexType',invalid),
+ STResList143 = [STRes142|STResList142],
+
+
+ ?line {STRes143,S143} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB095.xsd','./msxsdtest/complexType',valid),
+ STResList144 = [STRes143|STResList143],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB095.xml','./msxsdtest/complexType',valid,S143),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes144,S144} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB096.xsd','./msxsdtest/complexType',valid),
+ STResList145 = [STRes144|STResList144],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB096.xml','./msxsdtest/complexType',valid,S144),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes145,S145} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB097.xsd','./msxsdtest/complexType',valid),
+ STResList146 = [STRes145|STResList145],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB097.xml','./msxsdtest/complexType',valid,S145),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes146,S146} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB098.xsd','./msxsdtest/complexType',valid),
+ STResList147 = [STRes146|STResList146],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB098.xml','./msxsdtest/complexType',valid,S146),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes147,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB099.xsd','./msxsdtest/complexType',invalid),
+ STResList148 = [STRes147|STResList147],
+
+
+ ?line {STRes148,S148} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB100.xsd','./msxsdtest/complexType',valid),
+ STResList149 = [STRes148|STResList148],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB100.xml','./msxsdtest/complexType',valid,S148),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes149,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB101.xsd','./msxsdtest/complexType',invalid),
+ STResList150 = [STRes149|STResList149],
+
+
+ ?line {STRes150,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB102.xsd','./msxsdtest/complexType',invalid),
+ STResList151 = [STRes150|STResList150],
+
+
+ ?line {STRes151,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB103.xsd','./msxsdtest/complexType',invalid),
+ STResList152 = [STRes151|STResList151],
+
+
+ ?line {STRes152,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB104.xsd','./msxsdtest/complexType',invalid),
+ STResList153 = [STRes152|STResList152],
+
+
+ ?line {STRes153,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB105.xsd','./msxsdtest/complexType',invalid),
+ STResList154 = [STRes153|STResList153],
+
+
+ ?line {STRes154,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB106.xsd','./msxsdtest/complexType',invalid),
+ STResList155 = [STRes154|STResList154],
+
+
+ ?line {STRes155,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB107.xsd','./msxsdtest/complexType',invalid),
+ STResList156 = [STRes155|STResList155],
+
+
+ ?line {STRes156,S156} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB108.xsd','./msxsdtest/complexType',valid),
+ STResList157 = [STRes156|STResList156],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB108.xml','./msxsdtest/complexType',valid,S156),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes157,S157} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB109.xsd','./msxsdtest/complexType',valid),
+ STResList158 = [STRes157|STResList157],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB109.xml','./msxsdtest/complexType',valid,S157),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes158,S158} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB110.xsd','./msxsdtest/complexType',valid),
+ STResList159 = [STRes158|STResList158],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB110.xml','./msxsdtest/complexType',valid,S158),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes159,S159} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB111.xsd','./msxsdtest/complexType',valid),
+ STResList160 = [STRes159|STResList159],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB111.xml','./msxsdtest/complexType',valid,S159),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes160,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB112.xsd','./msxsdtest/complexType',invalid),
+ STResList161 = [STRes160|STResList160],
+
+
+ ?line {STRes161,S161} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB113.xsd','./msxsdtest/complexType',valid),
+ STResList162 = [STRes161|STResList161],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctB113.xml','./msxsdtest/complexType',valid,S161),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes162,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB114.xsd','./msxsdtest/complexType',invalid),
+ STResList163 = [STRes162|STResList162],
+
+
+ ?line {STRes163,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB115.xsd','./msxsdtest/complexType',invalid),
+ STResList164 = [STRes163|STResList163],
+
+
+ ?line {STRes164,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB116.xsd','./msxsdtest/complexType',invalid),
+ STResList165 = [STRes164|STResList164],
+
+
+ ?line {STRes165,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB117.xsd','./msxsdtest/complexType',invalid),
+ STResList166 = [STRes165|STResList165],
+
+
+ ?line {STRes166,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB118.xsd','./msxsdtest/complexType',invalid),
+ STResList167 = [STRes166|STResList166],
+
+
+ ?line {STRes167,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB119.xsd','./msxsdtest/complexType',invalid),
+ STResList168 = [STRes167|STResList167],
+
+
+ ?line {STRes168,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB120.xsd','./msxsdtest/complexType',invalid),
+ STResList169 = [STRes168|STResList168],
+
+
+ ?line {STRes169,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB121.xsd','./msxsdtest/complexType',invalid),
+ STResList170 = [STRes169|STResList169],
+
+
+ ?line {STRes170,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB122.xsd','./msxsdtest/complexType',invalid),
+ STResList171 = [STRes170|STResList170],
+
+
+ ?line {STRes171,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB123.xsd','./msxsdtest/complexType',invalid),
+ STResList172 = [STRes171|STResList171],
+
+
+ ?line {STRes172,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB124.xsd','./msxsdtest/complexType',invalid),
+ STResList173 = [STRes172|STResList172],
+
+
+ ?line {STRes173,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctB125.xsd','./msxsdtest/complexType',invalid),
+ STResList174 = [STRes173|STResList173],
+
+
+ ?line {STRes174,S174} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC001.xsd','./msxsdtest/complexType',valid),
+ STResList175 = [STRes174|STResList174],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctC001.xml','./msxsdtest/complexType',valid,S174),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes175,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC002.xsd','./msxsdtest/complexType',invalid),
+ STResList176 = [STRes175|STResList175],
+
+
+ ?line {STRes176,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC003.xsd','./msxsdtest/complexType',invalid),
+ STResList177 = [STRes176|STResList176],
+
+
+ ?line {STRes177,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC004.xsd','./msxsdtest/complexType',invalid),
+ STResList178 = [STRes177|STResList177],
+
+
+ ?line {STRes178,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC005.xsd','./msxsdtest/complexType',invalid),
+ STResList179 = [STRes178|STResList178],
+
+
+ ?line {STRes179,S179} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC006.xsd','./msxsdtest/complexType',valid),
+ STResList180 = [STRes179|STResList179],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctC006.xml','./msxsdtest/complexType',valid,S179),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes180,S180} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC007.xsd','./msxsdtest/complexType',valid),
+ STResList181 = [STRes180|STResList180],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctC007.xml','./msxsdtest/complexType',valid,S180),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes181,S181} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC008.xsd','./msxsdtest/complexType',valid),
+ STResList182 = [STRes181|STResList181],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctC008.xml','./msxsdtest/complexType',valid,S181),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes182,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC009.xsd','./msxsdtest/complexType',invalid),
+ STResList183 = [STRes182|STResList182],
+
+
+ ?line {STRes183,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC010.xsd','./msxsdtest/complexType',invalid),
+ STResList184 = [STRes183|STResList183],
+
+
+ ?line {STRes184,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC011.xsd','./msxsdtest/complexType',invalid),
+ STResList185 = [STRes184|STResList184],
+
+
+ ?line {STRes185,S185} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctC012.xsd','./msxsdtest/complexType',valid),
+ STResList186 = [STRes185|STResList185],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctC012.xml','./msxsdtest/complexType',valid,S185),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes186,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD001.xsd','./msxsdtest/complexType',invalid),
+ STResList187 = [STRes186|STResList186],
+
+
+ ?line {STRes187,S187} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD002.xsd','./msxsdtest/complexType',valid),
+ STResList188 = [STRes187|STResList187],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD002.xml','./msxsdtest/complexType',valid,S187),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes188,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD003.xsd','./msxsdtest/complexType',invalid),
+ STResList189 = [STRes188|STResList188],
+
+
+ ?line {STRes189,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD004.xsd','./msxsdtest/complexType',invalid),
+ STResList190 = [STRes189|STResList189],
+
+
+ ?line {STRes190,S190} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD005.xsd','./msxsdtest/complexType',valid),
+ STResList191 = [STRes190|STResList190],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD005.xml','./msxsdtest/complexType',valid,S190),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes191,S191} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD006.xsd','./msxsdtest/complexType',valid),
+ STResList192 = [STRes191|STResList191],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD006.xml','./msxsdtest/complexType',valid,S191),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes192,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD007.xsd','./msxsdtest/complexType',invalid),
+ STResList193 = [STRes192|STResList192],
+
+
+ ?line {STRes193,S193} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD008.xsd','./msxsdtest/complexType',valid),
+ STResList194 = [STRes193|STResList193],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD008.xml','./msxsdtest/complexType',valid,S193),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes194,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD009.xsd','./msxsdtest/complexType',invalid),
+ STResList195 = [STRes194|STResList194],
+
+
+ ?line {STRes195,S195} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD010.xsd','./msxsdtest/complexType',valid),
+ STResList196 = [STRes195|STResList195],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD010.xml','./msxsdtest/complexType',valid,S195),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes196,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD011.xsd','./msxsdtest/complexType',invalid),
+ STResList197 = [STRes196|STResList196],
+
+
+ ?line {STRes197,S197} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD012.xsd','./msxsdtest/complexType',valid),
+ STResList198 = [STRes197|STResList197],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD012.xml','./msxsdtest/complexType',valid,S197),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes198,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD013.xsd','./msxsdtest/complexType',invalid),
+ STResList199 = [STRes198|STResList198],
+
+
+ ?line {STRes199,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD014.xsd','./msxsdtest/complexType',invalid),
+ STResList200 = [STRes199|STResList199],
+
+
+ ?line {STRes200,S200} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD015.xsd','./msxsdtest/complexType',valid),
+ STResList201 = [STRes200|STResList200],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD015.xml','./msxsdtest/complexType',valid,S200),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes201,S201} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD016.xsd','./msxsdtest/complexType',valid),
+ STResList202 = [STRes201|STResList201],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD016.xml','./msxsdtest/complexType',valid,S201),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes202,S202} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD017.xsd','./msxsdtest/complexType',valid),
+ STResList203 = [STRes202|STResList202],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD017.xml','./msxsdtest/complexType',valid,S202),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes203,S203} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD018.xsd','./msxsdtest/complexType',valid),
+ STResList204 = [STRes203|STResList203],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD018.xml','./msxsdtest/complexType',valid,S203),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes204,S204} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD019.xsd','./msxsdtest/complexType',valid),
+ STResList205 = [STRes204|STResList204],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD019.xml','./msxsdtest/complexType',valid,S204),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes205,S205} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD020.xsd','./msxsdtest/complexType',valid),
+ STResList206 = [STRes205|STResList205],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD020.xml','./msxsdtest/complexType',valid,S205),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes206,S206} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD021.xsd','./msxsdtest/complexType',valid),
+ STResList207 = [STRes206|STResList206],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD021.xml','./msxsdtest/complexType',valid,S206),
+ ITResList83 = [ITRes82|ITResList82],
+
+
+ ?line {STRes207,S207} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD022.xsd','./msxsdtest/complexType',valid),
+ STResList208 = [STRes207|STResList207],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD022.xml','./msxsdtest/complexType',valid,S207),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes208,S208} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD023.xsd','./msxsdtest/complexType',valid),
+ STResList209 = [STRes208|STResList208],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD023.xml','./msxsdtest/complexType',valid,S208),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes209,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD024.xsd','./msxsdtest/complexType',invalid),
+ STResList210 = [STRes209|STResList209],
+
+
+ ?line {STRes210,S210} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD025.xsd','./msxsdtest/complexType',valid),
+ STResList211 = [STRes210|STResList210],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD025.xml','./msxsdtest/complexType',valid,S210),
+ ITResList86 = [ITRes85|ITResList85],
+
+
+ ?line {STRes211,S211} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD026.xsd','./msxsdtest/complexType',valid),
+ STResList212 = [STRes211|STResList211],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD026.xml','./msxsdtest/complexType',valid,S211),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes212,S212} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD027.xsd','./msxsdtest/complexType',valid),
+ STResList213 = [STRes212|STResList212],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD027.xml','./msxsdtest/complexType',valid,S212),
+ ITResList88 = [ITRes87|ITResList87],
+
+
+ ?line {STRes213,S213} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD028.xsd','./msxsdtest/complexType',valid),
+ STResList214 = [STRes213|STResList213],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD028.xml','./msxsdtest/complexType',valid,S213),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes214,S214} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD029.xsd','./msxsdtest/complexType',valid),
+ STResList215 = [STRes214|STResList214],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD029.xml','./msxsdtest/complexType',valid,S214),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes215,S215} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD030.xsd','./msxsdtest/complexType',valid),
+ STResList216 = [STRes215|STResList215],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD030.xml','./msxsdtest/complexType',valid,S215),
+ ITResList91 = [ITRes90|ITResList90],
+
+
+ ?line {STRes216,S216} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD031.xsd','./msxsdtest/complexType',valid),
+ STResList217 = [STRes216|STResList216],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD031.xml','./msxsdtest/complexType',valid,S216),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes217,S217} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD032.xsd','./msxsdtest/complexType',valid),
+ STResList218 = [STRes217|STResList217],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD032.xml','./msxsdtest/complexType',valid,S217),
+ ITResList93 = [ITRes92|ITResList92],
+
+
+ ?line {STRes218,S218} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD033.xsd','./msxsdtest/complexType',valid),
+ STResList219 = [STRes218|STResList218],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD033.xml','./msxsdtest/complexType',valid,S218),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes219,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD034.xsd','./msxsdtest/complexType',invalid),
+ STResList220 = [STRes219|STResList219],
+
+
+ ?line {STRes220,S220} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD035.xsd','./msxsdtest/complexType',valid),
+ STResList221 = [STRes220|STResList220],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctD035.xml','./msxsdtest/complexType',valid,S220),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes221,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD036.xsd','./msxsdtest/complexType',invalid),
+ STResList222 = [STRes221|STResList221],
+
+
+ ?line {STRes222,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD037.xsd','./msxsdtest/complexType',invalid),
+ STResList223 = [STRes222|STResList222],
+
+
+ ?line {STRes223,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD038.xsd','./msxsdtest/complexType',invalid),
+ STResList224 = [STRes223|STResList223],
+
+
+ ?line {STRes224,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD039.xsd','./msxsdtest/complexType',invalid),
+ STResList225 = [STRes224|STResList224],
+
+
+ ?line {STRes225,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD040.xsd','./msxsdtest/complexType',invalid),
+ STResList226 = [STRes225|STResList225],
+
+
+ ?line {STRes226,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD041.xsd','./msxsdtest/complexType',invalid),
+ STResList227 = [STRes226|STResList226],
+
+
+ ?line {STRes227,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD042.xsd','./msxsdtest/complexType',invalid),
+ STResList228 = [STRes227|STResList227],
+
+
+ ?line {STRes228,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctD043.xsd','./msxsdtest/complexType',invalid),
+ STResList229 = [STRes228|STResList228],
+
+
+ ?line {STRes229,S229} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE001.xsd','./msxsdtest/complexType',valid),
+ STResList230 = [STRes229|STResList229],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctE001.xml','./msxsdtest/complexType',valid,S229),
+ ITResList96 = [ITRes95|ITResList95],
+
+
+ ?line {STRes230,S230} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE002.xsd','./msxsdtest/complexType',valid),
+ STResList231 = [STRes230|STResList230],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctE002.xml','./msxsdtest/complexType',valid,S230),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes231,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE003.xsd','./msxsdtest/complexType',invalid),
+ STResList232 = [STRes231|STResList231],
+
+
+ ?line {STRes232,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE004.xsd','./msxsdtest/complexType',invalid),
+ STResList233 = [STRes232|STResList232],
+
+
+ ?line {STRes233,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE005.xsd','./msxsdtest/complexType',invalid),
+ STResList234 = [STRes233|STResList233],
+
+
+ ?line {STRes234,S234} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE006.xsd','./msxsdtest/complexType',valid),
+ STResList235 = [STRes234|STResList234],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctE006.xml','./msxsdtest/complexType',valid,S234),
+ ITResList98 = [ITRes97|ITResList97],
+
+
+ ?line {STRes235,S235} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE007.xsd','./msxsdtest/complexType',valid),
+ STResList236 = [STRes235|STResList235],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctE007.xml','./msxsdtest/complexType',valid,S235),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes236,S236} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE008.xsd','./msxsdtest/complexType',valid),
+ STResList237 = [STRes236|STResList236],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctE008.xml','./msxsdtest/complexType',valid,S236),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes237,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE009.xsd','./msxsdtest/complexType',invalid),
+ STResList238 = [STRes237|STResList237],
+
+
+ ?line {STRes238,S238} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE010.xsd','./msxsdtest/complexType',valid),
+ STResList239 = [STRes238|STResList238],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctE010.xml','./msxsdtest/complexType',valid,S238),
+ ITResList101 = [ITRes100|ITResList100],
+
+
+ ?line {STRes239,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE011.xsd','./msxsdtest/complexType',invalid),
+ STResList240 = [STRes239|STResList239],
+
+
+ ?line {STRes240,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE012.xsd','./msxsdtest/complexType',invalid),
+ STResList241 = [STRes240|STResList240],
+
+
+ ?line {STRes241,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE013.xsd','./msxsdtest/complexType',invalid),
+ STResList242 = [STRes241|STResList241],
+
+
+ ?line {STRes242,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE014.xsd','./msxsdtest/complexType',invalid),
+ STResList243 = [STRes242|STResList242],
+
+
+ ?line {STRes243,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE015.xsd','./msxsdtest/complexType',invalid),
+ STResList244 = [STRes243|STResList243],
+
+
+ ?line {STRes244,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE016.xsd','./msxsdtest/complexType',invalid),
+ STResList245 = [STRes244|STResList244],
+
+
+ ?line {STRes245,S245} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctE017.xsd','./msxsdtest/complexType',valid),
+ STResList246 = [STRes245|STResList245],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctE017.xml','./msxsdtest/complexType',valid,S245),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes246,S246} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF001.xsd','./msxsdtest/complexType',valid),
+ STResList247 = [STRes246|STResList246],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctF001.xml','./msxsdtest/complexType',valid,S246),
+ ITResList103 = [ITRes102|ITResList102],
+
+
+ ?line {STRes247,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF002.xsd','./msxsdtest/complexType',invalid),
+ STResList248 = [STRes247|STResList247],
+
+
+ ?line {STRes248,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF003.xsd','./msxsdtest/complexType',invalid),
+ STResList249 = [STRes248|STResList248],
+
+
+ ?line {STRes249,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF004.xsd','./msxsdtest/complexType',invalid),
+ STResList250 = [STRes249|STResList249],
+
+
+ ?line {STRes250,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF005.xsd','./msxsdtest/complexType',invalid),
+ STResList251 = [STRes250|STResList250],
+
+
+ ?line {STRes251,S251} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF006.xsd','./msxsdtest/complexType',valid),
+ STResList252 = [STRes251|STResList251],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctF006.xml','./msxsdtest/complexType',valid,S251),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes252,S252} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF007.xsd','./msxsdtest/complexType',valid),
+ STResList253 = [STRes252|STResList252],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctF007.xml','./msxsdtest/complexType',valid,S252),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes253,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF008.xsd','./msxsdtest/complexType',invalid),
+ STResList254 = [STRes253|STResList253],
+
+
+ ?line {STRes254,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF009.xsd','./msxsdtest/complexType',invalid),
+ STResList255 = [STRes254|STResList254],
+
+
+ ?line {STRes255,S255} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF010.xsd','./msxsdtest/complexType',valid),
+ STResList256 = [STRes255|STResList255],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctF010.xml','./msxsdtest/complexType',valid,S255),
+ ITResList106 = [ITRes105|ITResList105],
+
+
+ ?line {STRes256,S256} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF011.xsd','./msxsdtest/complexType',valid),
+ STResList257 = [STRes256|STResList256],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctF011.xml','./msxsdtest/complexType',valid,S256),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes257,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF012.xsd','./msxsdtest/complexType',invalid),
+ STResList258 = [STRes257|STResList257],
+
+
+ ?line {STRes258,S258} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF013.xsd','./msxsdtest/complexType',valid),
+ STResList259 = [STRes258|STResList258],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctF013.xml','./msxsdtest/complexType',valid,S258),
+ ITResList108 = [ITRes107|ITResList107],
+
+
+ ?line {STRes259,S259} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF014.xsd','./msxsdtest/complexType',valid),
+ STResList260 = [STRes259|STResList259],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctF014.xml','./msxsdtest/complexType',valid,S259),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes260,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF015.xsd','./msxsdtest/complexType',invalid),
+ STResList261 = [STRes260|STResList260],
+
+
+ ?line {STRes261,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF016.xsd','./msxsdtest/complexType',invalid),
+ STResList262 = [STRes261|STResList261],
+
+
+ ?line {STRes262,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctF017.xsd','./msxsdtest/complexType',invalid),
+ STResList263 = [STRes262|STResList262],
+
+
+ ?line {STRes263,S263} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG001.xsd','./msxsdtest/complexType',valid),
+ STResList264 = [STRes263|STResList263],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG001.xml','./msxsdtest/complexType',valid,S263),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes264,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG002.xsd','./msxsdtest/complexType',invalid),
+ STResList265 = [STRes264|STResList264],
+
+
+ ?line {STRes265,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG003.xsd','./msxsdtest/complexType',invalid),
+ STResList266 = [STRes265|STResList265],
+
+
+ ?line {STRes266,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG004.xsd','./msxsdtest/complexType',invalid),
+ STResList267 = [STRes266|STResList266],
+
+
+ ?line {STRes267,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG005.xsd','./msxsdtest/complexType',invalid),
+ STResList268 = [STRes267|STResList267],
+
+
+ ?line {STRes268,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG006.xsd','./msxsdtest/complexType',invalid),
+ STResList269 = [STRes268|STResList268],
+
+
+ ?line {STRes269,S269} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG007.xsd','./msxsdtest/complexType',valid),
+ STResList270 = [STRes269|STResList269],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG007.xml','./msxsdtest/complexType',valid,S269),
+ ITResList111 = [ITRes110|ITResList110],
+
+
+ ?line {STRes270,S270} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG008.xsd','./msxsdtest/complexType',valid),
+ STResList271 = [STRes270|STResList270],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG008.xml','./msxsdtest/complexType',valid,S270),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes271,S271} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG009.xsd','./msxsdtest/complexType',valid),
+ STResList272 = [STRes271|STResList271],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG009.xml','./msxsdtest/complexType',valid,S271),
+ ITResList113 = [ITRes112|ITResList112],
+
+
+ ?line {STRes272,S272} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG010.xsd','./msxsdtest/complexType',valid),
+ STResList273 = [STRes272|STResList272],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG010.xml','./msxsdtest/complexType',valid,S272),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes273,S273} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG011.xsd','./msxsdtest/complexType',valid),
+ STResList274 = [STRes273|STResList273],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG011.xml','./msxsdtest/complexType',valid,S273),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes274,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG012.xsd','./msxsdtest/complexType',invalid),
+ STResList275 = [STRes274|STResList274],
+
+
+ ?line {STRes275,S275} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG013.xsd','./msxsdtest/complexType',valid),
+ STResList276 = [STRes275|STResList275],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG013.xml','./msxsdtest/complexType',valid,S275),
+ ITResList116 = [ITRes115|ITResList115],
+
+
+ ?line {STRes276,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG014.xsd','./msxsdtest/complexType',invalid),
+ STResList277 = [STRes276|STResList276],
+
+
+ ?line {STRes277,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG015.xsd','./msxsdtest/complexType',invalid),
+ STResList278 = [STRes277|STResList277],
+
+
+ ?line {STRes278,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG016.xsd','./msxsdtest/complexType',invalid),
+ STResList279 = [STRes278|STResList278],
+
+
+ ?line {STRes279,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG017.xsd','./msxsdtest/complexType',invalid),
+ STResList280 = [STRes279|STResList279],
+
+
+ ?line {STRes280,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG018.xsd','./msxsdtest/complexType',invalid),
+ STResList281 = [STRes280|STResList280],
+
+
+ ?line {STRes281,S281} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG019.xsd','./msxsdtest/complexType',valid),
+ STResList282 = [STRes281|STResList281],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG019.xml','./msxsdtest/complexType',valid,S281),
+ ITResList117 = [ITRes116|ITResList116],
+
+
+ ?line {STRes282,S282} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG020.xsd','./msxsdtest/complexType',valid),
+ STResList283 = [STRes282|STResList282],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG020.xml','./msxsdtest/complexType',valid,S282),
+ ITResList118 = [ITRes117|ITResList117],
+
+
+ ?line {STRes283,S283} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG021.xsd','./msxsdtest/complexType',valid),
+ STResList284 = [STRes283|STResList283],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG021.xml','./msxsdtest/complexType',valid,S283),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes284,S284} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG022.xsd','./msxsdtest/complexType',valid),
+ STResList285 = [STRes284|STResList284],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG022.xml','./msxsdtest/complexType',valid,S284),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes285,S285} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG023.xsd','./msxsdtest/complexType',valid),
+ STResList286 = [STRes285|STResList285],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG023.xml','./msxsdtest/complexType',valid,S285),
+ ITResList121 = [ITRes120|ITResList120],
+
+
+ ?line {STRes286,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG024.xsd','./msxsdtest/complexType',invalid),
+ STResList287 = [STRes286|STResList286],
+
+
+ ?line {STRes287,S287} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG025.xsd','./msxsdtest/complexType',valid),
+ STResList288 = [STRes287|STResList287],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG025.xml','./msxsdtest/complexType',valid,S287),
+ ITResList122 = [ITRes121|ITResList121],
+
+
+ ?line {STRes288,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG026.xsd','./msxsdtest/complexType',invalid),
+ STResList289 = [STRes288|STResList288],
+
+
+ ?line {STRes289,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG027.xsd','./msxsdtest/complexType',invalid),
+ STResList290 = [STRes289|STResList289],
+
+
+ ?line {STRes290,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG028.xsd','./msxsdtest/complexType',invalid),
+ STResList291 = [STRes290|STResList290],
+
+
+ ?line {STRes291,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG029.xsd','./msxsdtest/complexType',invalid),
+ STResList292 = [STRes291|STResList291],
+
+
+ ?line {STRes292,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG030.xsd','./msxsdtest/complexType',invalid),
+ STResList293 = [STRes292|STResList292],
+
+
+ ?line {STRes293,S293} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG031.xsd','./msxsdtest/complexType',valid),
+ STResList294 = [STRes293|STResList293],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG031.xml','./msxsdtest/complexType',valid,S293),
+ ITResList123 = [ITRes122|ITResList122],
+
+
+ ?line {STRes294,S294} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG032.xsd','./msxsdtest/complexType',valid),
+ STResList295 = [STRes294|STResList294],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG032.xml','./msxsdtest/complexType',valid,S294),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes295,S295} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG033.xsd','./msxsdtest/complexType',valid),
+ STResList296 = [STRes295|STResList295],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG033.xml','./msxsdtest/complexType',valid,S295),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes296,S296} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG034.xsd','./msxsdtest/complexType',valid),
+ STResList297 = [STRes296|STResList296],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG034.xml','./msxsdtest/complexType',valid,S296),
+ ITResList126 = [ITRes125|ITResList125],
+
+
+ ?line {STRes297,S297} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG035.xsd','./msxsdtest/complexType',valid),
+ STResList298 = [STRes297|STResList297],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG035.xml','./msxsdtest/complexType',valid,S297),
+ ITResList127 = [ITRes126|ITResList126],
+
+
+ ?line {STRes298,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG036.xsd','./msxsdtest/complexType',invalid),
+ STResList299 = [STRes298|STResList298],
+
+
+ ?line {STRes299,S299} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG037.xsd','./msxsdtest/complexType',valid),
+ STResList300 = [STRes299|STResList299],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG037.xml','./msxsdtest/complexType',valid,S299),
+ ITResList128 = [ITRes127|ITResList127],
+
+
+ ?line {STRes300,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG038.xsd','./msxsdtest/complexType',invalid),
+ STResList301 = [STRes300|STResList300],
+
+
+ ?line {STRes301,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG039.xsd','./msxsdtest/complexType',invalid),
+ STResList302 = [STRes301|STResList301],
+
+
+ ?line {STRes302,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG040.xsd','./msxsdtest/complexType',invalid),
+ STResList303 = [STRes302|STResList302],
+
+
+ ?line {STRes303,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG041.xsd','./msxsdtest/complexType',invalid),
+ STResList304 = [STRes303|STResList303],
+
+
+ ?line {STRes304,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG042.xsd','./msxsdtest/complexType',invalid),
+ STResList305 = [STRes304|STResList304],
+
+
+ ?line {STRes305,S305} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG043.xsd','./msxsdtest/complexType',valid),
+ STResList306 = [STRes305|STResList305],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG043.xml','./msxsdtest/complexType',valid,S305),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes306,S306} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG044.xsd','./msxsdtest/complexType',valid),
+ STResList307 = [STRes306|STResList306],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG044.xml','./msxsdtest/complexType',valid,S306),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ ?line {STRes307,S307} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG045.xsd','./msxsdtest/complexType',valid),
+ STResList308 = [STRes307|STResList307],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG045.xml','./msxsdtest/complexType',valid,S307),
+ ITResList131 = [ITRes130|ITResList130],
+
+
+ ?line {STRes308,S308} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG046.xsd','./msxsdtest/complexType',valid),
+ STResList309 = [STRes308|STResList308],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG046.xml','./msxsdtest/complexType',valid,S308),
+ ITResList132 = [ITRes131|ITResList131],
+
+
+ ?line {STRes309,S309} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG047.xsd','./msxsdtest/complexType',valid),
+ STResList310 = [STRes309|STResList309],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG047.xml','./msxsdtest/complexType',valid,S309),
+ ITResList133 = [ITRes132|ITResList132],
+
+
+ ?line {STRes310,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG048.xsd','./msxsdtest/complexType',invalid),
+ STResList311 = [STRes310|STResList310],
+
+
+ ?line {STRes311,S311} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG049.xsd','./msxsdtest/complexType',valid),
+ STResList312 = [STRes311|STResList311],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG049.xml','./msxsdtest/complexType',valid,S311),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes312,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG050.xsd','./msxsdtest/complexType',invalid),
+ STResList313 = [STRes312|STResList312],
+
+
+ ?line {STRes313,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG051.xsd','./msxsdtest/complexType',invalid),
+ STResList314 = [STRes313|STResList313],
+
+
+ ?line {STRes314,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG052.xsd','./msxsdtest/complexType',invalid),
+ STResList315 = [STRes314|STResList314],
+
+
+ ?line {STRes315,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG053.xsd','./msxsdtest/complexType',invalid),
+ STResList316 = [STRes315|STResList315],
+
+
+ ?line {STRes316,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG054.xsd','./msxsdtest/complexType',invalid),
+ STResList317 = [STRes316|STResList316],
+
+
+ ?line {STRes317,S317} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG055.xsd','./msxsdtest/complexType',valid),
+ STResList318 = [STRes317|STResList317],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG055.xml','./msxsdtest/complexType',valid,S317),
+ ITResList135 = [ITRes134|ITResList134],
+
+
+ ?line {STRes318,S318} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG056.xsd','./msxsdtest/complexType',valid),
+ STResList319 = [STRes318|STResList318],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG056.xml','./msxsdtest/complexType',valid,S318),
+ ITResList136 = [ITRes135|ITResList135],
+
+
+ ?line {STRes319,S319} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG057.xsd','./msxsdtest/complexType',valid),
+ STResList320 = [STRes319|STResList319],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG057.xml','./msxsdtest/complexType',valid,S319),
+ ITResList137 = [ITRes136|ITResList136],
+
+
+ ?line {STRes320,S320} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG058.xsd','./msxsdtest/complexType',valid),
+ STResList321 = [STRes320|STResList320],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG058.xml','./msxsdtest/complexType',valid,S320),
+ ITResList138 = [ITRes137|ITResList137],
+
+
+ ?line {STRes321,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG059.xsd','./msxsdtest/complexType',invalid),
+ STResList322 = [STRes321|STResList321],
+
+
+ ?line {STRes322,S322} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG060.xsd','./msxsdtest/complexType',valid),
+ STResList323 = [STRes322|STResList322],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG060.xml','./msxsdtest/complexType',valid,S322),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes323,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG061.xsd','./msxsdtest/complexType',invalid),
+ STResList324 = [STRes323|STResList323],
+
+
+ ?line {STRes324,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG062.xsd','./msxsdtest/complexType',invalid),
+ STResList325 = [STRes324|STResList324],
+
+
+ ?line {STRes325,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG063.xsd','./msxsdtest/complexType',invalid),
+ STResList326 = [STRes325|STResList325],
+
+
+ ?line {STRes326,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG064.xsd','./msxsdtest/complexType',invalid),
+ STResList327 = [STRes326|STResList326],
+
+
+ ?line {STRes327,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG065.xsd','./msxsdtest/complexType',invalid),
+ STResList328 = [STRes327|STResList327],
+
+
+ ?line {STRes328,S328} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG066.xsd','./msxsdtest/complexType',valid),
+ STResList329 = [STRes328|STResList328],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG066.xml','./msxsdtest/complexType',valid,S328),
+ ITResList140 = [ITRes139|ITResList139],
+
+
+ ?line {STRes329,S329} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG067.xsd','./msxsdtest/complexType',valid),
+ STResList330 = [STRes329|STResList329],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG067.xml','./msxsdtest/complexType',valid,S329),
+ ITResList141 = [ITRes140|ITResList140],
+
+
+ ?line {STRes330,S330} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG068.xsd','./msxsdtest/complexType',valid),
+ STResList331 = [STRes330|STResList330],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG068.xml','./msxsdtest/complexType',valid,S330),
+ ITResList142 = [ITRes141|ITResList141],
+
+
+ ?line {STRes331,S331} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG069.xsd','./msxsdtest/complexType',valid),
+ STResList332 = [STRes331|STResList331],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG069.xml','./msxsdtest/complexType',valid,S331),
+ ITResList143 = [ITRes142|ITResList142],
+
+
+ ?line {STRes332,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG070.xsd','./msxsdtest/complexType',invalid),
+ STResList333 = [STRes332|STResList332],
+
+
+ ?line {STRes333,S333} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG071.xsd','./msxsdtest/complexType',valid),
+ STResList334 = [STRes333|STResList333],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctG071.xml','./msxsdtest/complexType',valid,S333),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes334,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG072.xsd','./msxsdtest/complexType',invalid),
+ STResList335 = [STRes334|STResList334],
+
+
+ ?line {STRes335,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG073.xsd','./msxsdtest/complexType',invalid),
+ STResList336 = [STRes335|STResList335],
+
+
+ ?line {STRes336,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG074.xsd','./msxsdtest/complexType',invalid),
+ STResList337 = [STRes336|STResList336],
+
+
+ ?line {STRes337,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG075.xsd','./msxsdtest/complexType',invalid),
+ STResList338 = [STRes337|STResList337],
+
+
+ ?line {STRes338,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG076.xsd','./msxsdtest/complexType',invalid),
+ STResList339 = [STRes338|STResList338],
+
+
+ ?line {STRes339,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG077.xsd','./msxsdtest/complexType',invalid),
+ STResList340 = [STRes339|STResList339],
+
+
+ ?line {STRes340,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG078.xsd','./msxsdtest/complexType',invalid),
+ STResList341 = [STRes340|STResList340],
+
+
+ ?line {STRes341,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG079.xsd','./msxsdtest/complexType',invalid),
+ STResList342 = [STRes341|STResList341],
+
+
+ ?line {STRes342,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG080.xsd','./msxsdtest/complexType',invalid),
+ STResList343 = [STRes342|STResList342],
+
+
+ ?line {STRes343,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctG081.xsd','./msxsdtest/complexType',invalid),
+ STResList344 = [STRes343|STResList343],
+
+
+ ?line {STRes344,S344} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH001.xsd','./msxsdtest/complexType',valid),
+ STResList345 = [STRes344|STResList344],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH001.xml','./msxsdtest/complexType',valid,S344),
+ ITResList145 = [ITRes144|ITResList144],
+
+
+ ?line {STRes345,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH002.xsd','./msxsdtest/complexType',invalid),
+ STResList346 = [STRes345|STResList345],
+
+
+ ?line {STRes346,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH003.xsd','./msxsdtest/complexType',invalid),
+ STResList347 = [STRes346|STResList346],
+
+
+ ?line {STRes347,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH004.xsd','./msxsdtest/complexType',invalid),
+ STResList348 = [STRes347|STResList347],
+
+
+ ?line {STRes348,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH005.xsd','./msxsdtest/complexType',invalid),
+ STResList349 = [STRes348|STResList348],
+
+
+ ?line {STRes349,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH006.xsd','./msxsdtest/complexType',invalid),
+ STResList350 = [STRes349|STResList349],
+
+
+ ?line {STRes350,S350} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH007.xsd','./msxsdtest/complexType',valid),
+ STResList351 = [STRes350|STResList350],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH007.xml','./msxsdtest/complexType',valid,S350),
+ ITResList146 = [ITRes145|ITResList145],
+
+
+ ?line {STRes351,S351} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH008.xsd','./msxsdtest/complexType',valid),
+ STResList352 = [STRes351|STResList351],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH008.xml','./msxsdtest/complexType',valid,S351),
+ ITResList147 = [ITRes146|ITResList146],
+
+
+ ?line {STRes352,S352} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH009.xsd','./msxsdtest/complexType',valid),
+ STResList353 = [STRes352|STResList352],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH009.xml','./msxsdtest/complexType',valid,S352),
+ ITResList148 = [ITRes147|ITResList147],
+
+
+ ?line {STRes353,S353} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH010.xsd','./msxsdtest/complexType',valid),
+ STResList354 = [STRes353|STResList353],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH010.xml','./msxsdtest/complexType',valid,S353),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes354,S354} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH011.xsd','./msxsdtest/complexType',valid),
+ STResList355 = [STRes354|STResList354],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH011.xml','./msxsdtest/complexType',valid,S354),
+ ITResList150 = [ITRes149|ITResList149],
+
+
+ ?line {STRes355,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH012.xsd','./msxsdtest/complexType',invalid),
+ STResList356 = [STRes355|STResList355],
+
+
+ ?line {STRes356,S356} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH013.xsd','./msxsdtest/complexType',valid),
+ STResList357 = [STRes356|STResList356],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH013.xml','./msxsdtest/complexType',valid,S356),
+ ITResList151 = [ITRes150|ITResList150],
+
+
+ ?line {STRes357,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH014.xsd','./msxsdtest/complexType',invalid),
+ STResList358 = [STRes357|STResList357],
+
+
+ ?line {STRes358,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH015.xsd','./msxsdtest/complexType',invalid),
+ STResList359 = [STRes358|STResList358],
+
+
+ ?line {STRes359,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH016.xsd','./msxsdtest/complexType',invalid),
+ STResList360 = [STRes359|STResList359],
+
+
+ ?line {STRes360,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH017.xsd','./msxsdtest/complexType',invalid),
+ STResList361 = [STRes360|STResList360],
+
+
+ ?line {STRes361,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH018.xsd','./msxsdtest/complexType',invalid),
+ STResList362 = [STRes361|STResList361],
+
+
+ ?line {STRes362,S362} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH019.xsd','./msxsdtest/complexType',valid),
+ STResList363 = [STRes362|STResList362],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH019.xml','./msxsdtest/complexType',valid,S362),
+ ITResList152 = [ITRes151|ITResList151],
+
+
+ ?line {STRes363,S363} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH020.xsd','./msxsdtest/complexType',valid),
+ STResList364 = [STRes363|STResList363],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH020.xml','./msxsdtest/complexType',valid,S363),
+ ITResList153 = [ITRes152|ITResList152],
+
+
+ ?line {STRes364,S364} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH021.xsd','./msxsdtest/complexType',valid),
+ STResList365 = [STRes364|STResList364],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH021.xml','./msxsdtest/complexType',valid,S364),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes365,S365} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH022.xsd','./msxsdtest/complexType',valid),
+ STResList366 = [STRes365|STResList365],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH022.xml','./msxsdtest/complexType',valid,S365),
+ ITResList155 = [ITRes154|ITResList154],
+
+
+ ?line {STRes366,S366} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH023.xsd','./msxsdtest/complexType',valid),
+ STResList367 = [STRes366|STResList366],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH023.xml','./msxsdtest/complexType',valid,S366),
+ ITResList156 = [ITRes155|ITResList155],
+
+
+ ?line {STRes367,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH024.xsd','./msxsdtest/complexType',invalid),
+ STResList368 = [STRes367|STResList367],
+
+
+ ?line {STRes368,S368} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH025.xsd','./msxsdtest/complexType',valid),
+ STResList369 = [STRes368|STResList368],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH025.xml','./msxsdtest/complexType',valid,S368),
+ ITResList157 = [ITRes156|ITResList156],
+
+
+ ?line {STRes369,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH026.xsd','./msxsdtest/complexType',invalid),
+ STResList370 = [STRes369|STResList369],
+
+
+ ?line {STRes370,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH027.xsd','./msxsdtest/complexType',invalid),
+ STResList371 = [STRes370|STResList370],
+
+
+ ?line {STRes371,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH028.xsd','./msxsdtest/complexType',invalid),
+ STResList372 = [STRes371|STResList371],
+
+
+ ?line {STRes372,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH029.xsd','./msxsdtest/complexType',invalid),
+ STResList373 = [STRes372|STResList372],
+
+
+ ?line {STRes373,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH030.xsd','./msxsdtest/complexType',invalid),
+ STResList374 = [STRes373|STResList373],
+
+
+ ?line {STRes374,S374} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH031.xsd','./msxsdtest/complexType',valid),
+ STResList375 = [STRes374|STResList374],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH031.xml','./msxsdtest/complexType',valid,S374),
+ ITResList158 = [ITRes157|ITResList157],
+
+
+ ?line {STRes375,S375} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH032.xsd','./msxsdtest/complexType',valid),
+ STResList376 = [STRes375|STResList375],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH032.xml','./msxsdtest/complexType',valid,S375),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes376,S376} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH033.xsd','./msxsdtest/complexType',valid),
+ STResList377 = [STRes376|STResList376],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH033.xml','./msxsdtest/complexType',valid,S376),
+ ITResList160 = [ITRes159|ITResList159],
+
+
+ ?line {STRes377,S377} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH034.xsd','./msxsdtest/complexType',valid),
+ STResList378 = [STRes377|STResList377],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH034.xml','./msxsdtest/complexType',valid,S377),
+ ITResList161 = [ITRes160|ITResList160],
+
+
+ ?line {STRes378,S378} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH035.xsd','./msxsdtest/complexType',valid),
+ STResList379 = [STRes378|STResList378],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH035.xml','./msxsdtest/complexType',valid,S378),
+ ITResList162 = [ITRes161|ITResList161],
+
+
+ ?line {STRes379,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH036.xsd','./msxsdtest/complexType',invalid),
+ STResList380 = [STRes379|STResList379],
+
+
+ ?line {STRes380,S380} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH037.xsd','./msxsdtest/complexType',valid),
+ STResList381 = [STRes380|STResList380],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH037.xml','./msxsdtest/complexType',valid,S380),
+ ITResList163 = [ITRes162|ITResList162],
+
+
+ ?line {STRes381,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH038.xsd','./msxsdtest/complexType',invalid),
+ STResList382 = [STRes381|STResList381],
+
+
+ ?line {STRes382,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH039.xsd','./msxsdtest/complexType',invalid),
+ STResList383 = [STRes382|STResList382],
+
+
+ ?line {STRes383,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH040.xsd','./msxsdtest/complexType',invalid),
+ STResList384 = [STRes383|STResList383],
+
+
+ ?line {STRes384,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH041.xsd','./msxsdtest/complexType',invalid),
+ STResList385 = [STRes384|STResList384],
+
+
+ ?line {STRes385,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH042.xsd','./msxsdtest/complexType',invalid),
+ STResList386 = [STRes385|STResList385],
+
+
+ ?line {STRes386,S386} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH043.xsd','./msxsdtest/complexType',valid),
+ STResList387 = [STRes386|STResList386],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH043.xml','./msxsdtest/complexType',valid,S386),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes387,S387} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH044.xsd','./msxsdtest/complexType',valid),
+ STResList388 = [STRes387|STResList387],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH044.xml','./msxsdtest/complexType',valid,S387),
+ ITResList165 = [ITRes164|ITResList164],
+
+
+ ?line {STRes388,S388} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH045.xsd','./msxsdtest/complexType',valid),
+ STResList389 = [STRes388|STResList388],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH045.xml','./msxsdtest/complexType',valid,S388),
+ ITResList166 = [ITRes165|ITResList165],
+
+
+ ?line {STRes389,S389} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH046.xsd','./msxsdtest/complexType',valid),
+ STResList390 = [STRes389|STResList389],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH046.xml','./msxsdtest/complexType',valid,S389),
+ ITResList167 = [ITRes166|ITResList166],
+
+
+ ?line {STRes390,S390} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH047.xsd','./msxsdtest/complexType',valid),
+ STResList391 = [STRes390|STResList390],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH047.xml','./msxsdtest/complexType',valid,S390),
+ ITResList168 = [ITRes167|ITResList167],
+
+
+ ?line {STRes391,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH048.xsd','./msxsdtest/complexType',invalid),
+ STResList392 = [STRes391|STResList391],
+
+
+ ?line {STRes392,S392} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH049.xsd','./msxsdtest/complexType',valid),
+ STResList393 = [STRes392|STResList392],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH049.xml','./msxsdtest/complexType',valid,S392),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ ?line {STRes393,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH050.xsd','./msxsdtest/complexType',invalid),
+ STResList394 = [STRes393|STResList393],
+
+
+ ?line {STRes394,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH051.xsd','./msxsdtest/complexType',invalid),
+ STResList395 = [STRes394|STResList394],
+
+
+ ?line {STRes395,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH052.xsd','./msxsdtest/complexType',invalid),
+ STResList396 = [STRes395|STResList395],
+
+
+ ?line {STRes396,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH053.xsd','./msxsdtest/complexType',invalid),
+ STResList397 = [STRes396|STResList396],
+
+
+ ?line {STRes397,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH054.xsd','./msxsdtest/complexType',invalid),
+ STResList398 = [STRes397|STResList397],
+
+
+ ?line {STRes398,S398} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH055.xsd','./msxsdtest/complexType',valid),
+ STResList399 = [STRes398|STResList398],
+ ?line ITRes169 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH055.xml','./msxsdtest/complexType',valid,S398),
+ ITResList170 = [ITRes169|ITResList169],
+
+
+ ?line {STRes399,S399} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH056.xsd','./msxsdtest/complexType',valid),
+ STResList400 = [STRes399|STResList399],
+ ?line ITRes170 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH056.xml','./msxsdtest/complexType',valid,S399),
+ ITResList171 = [ITRes170|ITResList170],
+
+
+ ?line {STRes400,S400} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH057.xsd','./msxsdtest/complexType',valid),
+ STResList401 = [STRes400|STResList400],
+ ?line ITRes171 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH057.xml','./msxsdtest/complexType',valid,S400),
+ ITResList172 = [ITRes171|ITResList171],
+
+
+ ?line {STRes401,S401} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH058.xsd','./msxsdtest/complexType',valid),
+ STResList402 = [STRes401|STResList401],
+ ?line ITRes172 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH058.xml','./msxsdtest/complexType',valid,S401),
+ ITResList173 = [ITRes172|ITResList172],
+
+
+ ?line {STRes402,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH059.xsd','./msxsdtest/complexType',invalid),
+ STResList403 = [STRes402|STResList402],
+
+
+ ?line {STRes403,S403} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH060.xsd','./msxsdtest/complexType',valid),
+ STResList404 = [STRes403|STResList403],
+ ?line ITRes173 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH060.xml','./msxsdtest/complexType',valid,S403),
+ ITResList174 = [ITRes173|ITResList173],
+
+
+ ?line {STRes404,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH061.xsd','./msxsdtest/complexType',invalid),
+ STResList405 = [STRes404|STResList404],
+
+
+ ?line {STRes405,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH062.xsd','./msxsdtest/complexType',invalid),
+ STResList406 = [STRes405|STResList405],
+
+
+ ?line {STRes406,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH063.xsd','./msxsdtest/complexType',invalid),
+ STResList407 = [STRes406|STResList406],
+
+
+ ?line {STRes407,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH064.xsd','./msxsdtest/complexType',invalid),
+ STResList408 = [STRes407|STResList407],
+
+
+ ?line {STRes408,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH065.xsd','./msxsdtest/complexType',invalid),
+ STResList409 = [STRes408|STResList408],
+
+
+ ?line {STRes409,S409} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH066.xsd','./msxsdtest/complexType',valid),
+ STResList410 = [STRes409|STResList409],
+ ?line ITRes174 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH066.xml','./msxsdtest/complexType',valid,S409),
+ ITResList175 = [ITRes174|ITResList174],
+
+
+ ?line {STRes410,S410} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH067.xsd','./msxsdtest/complexType',valid),
+ STResList411 = [STRes410|STResList410],
+ ?line ITRes175 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH067.xml','./msxsdtest/complexType',valid,S410),
+ ITResList176 = [ITRes175|ITResList175],
+
+
+ ?line {STRes411,S411} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH068.xsd','./msxsdtest/complexType',valid),
+ STResList412 = [STRes411|STResList411],
+ ?line ITRes176 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH068.xml','./msxsdtest/complexType',valid,S411),
+ ITResList177 = [ITRes176|ITResList176],
+
+
+ ?line {STRes412,S412} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH069.xsd','./msxsdtest/complexType',valid),
+ STResList413 = [STRes412|STResList412],
+ ?line ITRes177 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH069.xml','./msxsdtest/complexType',valid,S412),
+ ITResList178 = [ITRes177|ITResList177],
+
+
+ ?line {STRes413,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH070.xsd','./msxsdtest/complexType',invalid),
+ STResList414 = [STRes413|STResList413],
+
+
+ ?line {STRes414,S414} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH071.xsd','./msxsdtest/complexType',valid),
+ STResList415 = [STRes414|STResList414],
+ ?line ITRes178 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH071.xml','./msxsdtest/complexType',valid,S414),
+ ITResList179 = [ITRes178|ITResList178],
+
+
+ ?line {STRes415,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH072.xsd','./msxsdtest/complexType',invalid),
+ STResList416 = [STRes415|STResList415],
+
+
+ ?line {STRes416,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH073.xsd','./msxsdtest/complexType',invalid),
+ STResList417 = [STRes416|STResList416],
+
+
+ ?line {STRes417,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH074.xsd','./msxsdtest/complexType',invalid),
+ STResList418 = [STRes417|STResList417],
+
+
+ ?line {STRes418,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH075.xsd','./msxsdtest/complexType',invalid),
+ STResList419 = [STRes418|STResList418],
+
+
+ ?line {STRes419,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH076.xsd','./msxsdtest/complexType',invalid),
+ STResList420 = [STRes419|STResList419],
+
+
+ ?line {STRes420,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH077.xsd','./msxsdtest/complexType',invalid),
+ STResList421 = [STRes420|STResList420],
+
+
+ ?line {STRes421,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH078.xsd','./msxsdtest/complexType',invalid),
+ STResList422 = [STRes421|STResList421],
+
+
+ ?line {STRes422,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH079.xsd','./msxsdtest/complexType',invalid),
+ STResList423 = [STRes422|STResList422],
+
+
+ ?line {STRes423,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH080.xsd','./msxsdtest/complexType',invalid),
+ STResList424 = [STRes423|STResList423],
+
+
+ ?line {STRes424,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH081.xsd','./msxsdtest/complexType',invalid),
+ STResList425 = [STRes424|STResList424],
+
+
+ ?line {STRes425,S425} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctH082.xsd','./msxsdtest/complexType',valid),
+ STResList426 = [STRes425|STResList425],
+ ?line ITRes179 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctH082.xml','./msxsdtest/complexType',valid,S425),
+ ITResList180 = [ITRes179|ITResList179],
+
+
+ ?line {STRes426,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI001.xsd','./msxsdtest/complexType',invalid),
+ STResList427 = [STRes426|STResList426],
+
+
+ ?line {STRes427,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI002.xsd','./msxsdtest/complexType',invalid),
+ STResList428 = [STRes427|STResList427],
+
+
+ ?line {STRes428,S428} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI003.xsd','./msxsdtest/complexType',valid),
+ STResList429 = [STRes428|STResList428],
+ ?line ITRes180 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI003.xml','./msxsdtest/complexType',valid,S428),
+ ITResList181 = [ITRes180|ITResList180],
+
+
+ ?line {STRes429,S429} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI004.xsd','./msxsdtest/complexType',valid),
+ STResList430 = [STRes429|STResList429],
+ ?line ITRes181 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI004.xml','./msxsdtest/complexType',valid,S429),
+ ITResList182 = [ITRes181|ITResList181],
+
+
+ ?line {STRes430,S430} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI005.xsd','./msxsdtest/complexType',valid),
+ STResList431 = [STRes430|STResList430],
+ ?line ITRes182 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI005.xml','./msxsdtest/complexType',valid,S430),
+ ITResList183 = [ITRes182|ITResList182],
+
+
+ ?line {STRes431,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI006.xsd','./msxsdtest/complexType',invalid),
+ STResList432 = [STRes431|STResList431],
+
+
+ ?line {STRes432,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI007.xsd','./msxsdtest/complexType',invalid),
+ STResList433 = [STRes432|STResList432],
+
+
+ ?line {STRes433,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI008.xsd','./msxsdtest/complexType',invalid),
+ STResList434 = [STRes433|STResList433],
+
+
+ ?line {STRes434,S434} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI009.xsd','./msxsdtest/complexType',valid),
+ STResList435 = [STRes434|STResList434],
+ ?line ITRes183 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI009.xml','./msxsdtest/complexType',valid,S434),
+ ITResList184 = [ITRes183|ITResList183],
+
+
+ ?line {STRes435,S435} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI010.xsd','./msxsdtest/complexType',valid),
+ STResList436 = [STRes435|STResList435],
+ ?line ITRes184 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI010.xml','./msxsdtest/complexType',valid,S435),
+ ITResList185 = [ITRes184|ITResList184],
+
+
+ ?line {STRes436,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI011.xsd','./msxsdtest/complexType',invalid),
+ STResList437 = [STRes436|STResList436],
+
+
+ ?line {STRes437,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI012.xsd','./msxsdtest/complexType',invalid),
+ STResList438 = [STRes437|STResList437],
+
+
+ ?line {STRes438,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI013.xsd','./msxsdtest/complexType',invalid),
+ STResList439 = [STRes438|STResList438],
+
+
+ ?line {STRes439,S439} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI014.xsd','./msxsdtest/complexType',valid),
+ STResList440 = [STRes439|STResList439],
+ ?line ITRes185 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI014.xml','./msxsdtest/complexType',valid,S439),
+ ITResList186 = [ITRes185|ITResList185],
+
+
+ ?line {STRes440,S440} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI015.xsd','./msxsdtest/complexType',valid),
+ STResList441 = [STRes440|STResList440],
+ ?line ITRes186 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI015.xml','./msxsdtest/complexType',valid,S440),
+ ITResList187 = [ITRes186|ITResList186],
+
+
+ ?line {STRes441,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI016.xsd','./msxsdtest/complexType',invalid),
+ STResList442 = [STRes441|STResList441],
+
+
+ ?line {STRes442,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI017.xsd','./msxsdtest/complexType',invalid),
+ STResList443 = [STRes442|STResList442],
+
+
+ ?line {STRes443,S443} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI018.xsd','./msxsdtest/complexType',valid),
+ STResList444 = [STRes443|STResList443],
+ ?line ITRes187 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI018.xml','./msxsdtest/complexType',valid,S443),
+ ITResList188 = [ITRes187|ITResList187],
+
+
+ ?line {STRes444,S444} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI019.xsd','./msxsdtest/complexType',valid),
+ STResList445 = [STRes444|STResList444],
+ ?line ITRes188 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI019.xml','./msxsdtest/complexType',valid,S444),
+ ITResList189 = [ITRes188|ITResList188],
+
+
+ ?line {STRes445,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI020.xsd','./msxsdtest/complexType',invalid),
+ STResList446 = [STRes445|STResList445],
+
+
+ ?line {STRes446,S446} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI021.xsd','./msxsdtest/complexType',valid),
+ STResList447 = [STRes446|STResList446],
+ ?line ITRes189 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI021.xml','./msxsdtest/complexType',valid,S446),
+ ITResList190 = [ITRes189|ITResList189],
+
+
+ ?line {STRes447,S447} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI022.xsd','./msxsdtest/complexType',valid),
+ STResList448 = [STRes447|STResList447],
+ ?line ITRes190 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI022.xml','./msxsdtest/complexType',valid,S447),
+ ITResList191 = [ITRes190|ITResList190],
+
+
+ ?line {STRes448,S448} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI023.xsd','./msxsdtest/complexType',valid),
+ STResList449 = [STRes448|STResList448],
+ ?line ITRes191 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI023.xml','./msxsdtest/complexType',valid,S448),
+ ITResList192 = [ITRes191|ITResList191],
+
+
+ ?line {STRes449,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI024.xsd','./msxsdtest/complexType',invalid),
+ STResList450 = [STRes449|STResList449],
+
+
+ ?line {STRes450,S450} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI025.xsd','./msxsdtest/complexType',valid),
+ STResList451 = [STRes450|STResList450],
+ ?line ITRes192 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI025.xml','./msxsdtest/complexType',valid,S450),
+ ITResList193 = [ITRes192|ITResList192],
+
+
+ ?line {STRes451,S451} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI026.xsd','./msxsdtest/complexType',valid),
+ STResList452 = [STRes451|STResList451],
+ ?line ITRes193 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI026.xml','./msxsdtest/complexType',valid,S451),
+ ITResList194 = [ITRes193|ITResList193],
+
+
+ ?line {STRes452,S452} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI027.xsd','./msxsdtest/complexType',valid),
+ STResList453 = [STRes452|STResList452],
+ ?line ITRes194 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI027.xml','./msxsdtest/complexType',valid,S452),
+ ITResList195 = [ITRes194|ITResList194],
+
+
+ ?line {STRes453,S453} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI028.xsd','./msxsdtest/complexType',valid),
+ STResList454 = [STRes453|STResList453],
+ ?line ITRes195 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI028.xml','./msxsdtest/complexType',valid,S453),
+ ITResList196 = [ITRes195|ITResList195],
+
+
+ ?line {STRes454,S454} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI029.xsd','./msxsdtest/complexType',valid),
+ STResList455 = [STRes454|STResList454],
+ ?line ITRes196 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI029.xml','./msxsdtest/complexType',valid,S454),
+ ITResList197 = [ITRes196|ITResList196],
+
+
+ ?line {STRes455,S455} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI030.xsd','./msxsdtest/complexType',valid),
+ STResList456 = [STRes455|STResList455],
+ ?line ITRes197 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI030.xml','./msxsdtest/complexType',invalid,S455),
+ ITResList198 = [ITRes197|ITResList197],
+
+
+ ?line {STRes456,S456} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI031.xsd','./msxsdtest/complexType',valid),
+ STResList457 = [STRes456|STResList456],
+ ?line ITRes198 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI031.xml','./msxsdtest/complexType',invalid,S456),
+ ITResList199 = [ITRes198|ITResList198],
+
+
+ ?line {STRes457,S457} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI032.xsd','./msxsdtest/complexType',valid),
+ STResList458 = [STRes457|STResList457],
+ ?line ITRes199 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI032.xml','./msxsdtest/complexType',invalid,S457),
+ ITResList200 = [ITRes199|ITResList199],
+
+
+ ?line {STRes458,S458} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI033.xsd','./msxsdtest/complexType',valid),
+ STResList459 = [STRes458|STResList458],
+ ?line ITRes200 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI033.xml','./msxsdtest/complexType',valid,S458),
+ ITResList201 = [ITRes200|ITResList200],
+
+
+ ?line {STRes459,S459} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI034.xsd','./msxsdtest/complexType',valid),
+ STResList460 = [STRes459|STResList459],
+ ?line ITRes201 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI034.xml','./msxsdtest/complexType',valid,S459),
+ ITResList202 = [ITRes201|ITResList201],
+
+
+ ?line {STRes460,S460} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI035.xsd','./msxsdtest/complexType',valid),
+ STResList461 = [STRes460|STResList460],
+ ?line ITRes202 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI035.xml','./msxsdtest/complexType',invalid,S460),
+ ITResList203 = [ITRes202|ITResList202],
+
+
+ ?line {STRes461,S461} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI036.xsd','./msxsdtest/complexType',valid),
+ STResList462 = [STRes461|STResList461],
+ ?line ITRes203 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI036.xml','./msxsdtest/complexType',valid,S461),
+ ITResList204 = [ITRes203|ITResList203],
+
+
+ ?line {STRes462,S462} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI037.xsd','./msxsdtest/complexType',valid),
+ STResList463 = [STRes462|STResList462],
+ ?line ITRes204 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI037.xml','./msxsdtest/complexType',valid,S462),
+ ITResList205 = [ITRes204|ITResList204],
+
+
+ ?line {STRes463,S463} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI038.xsd','./msxsdtest/complexType',valid),
+ STResList464 = [STRes463|STResList463],
+ ?line ITRes205 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI038.xml','./msxsdtest/complexType',invalid,S463),
+ ITResList206 = [ITRes205|ITResList205],
+
+
+ ?line {STRes464,S464} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI039.xsd','./msxsdtest/complexType',valid),
+ STResList465 = [STRes464|STResList464],
+ ?line ITRes206 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI039.xml','./msxsdtest/complexType',invalid,S464),
+ ITResList207 = [ITRes206|ITResList206],
+
+
+ ?line {STRes465,S465} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI040.xsd','./msxsdtest/complexType',valid),
+ STResList466 = [STRes465|STResList465],
+ ?line ITRes207 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI040.xml','./msxsdtest/complexType',valid,S465),
+ ITResList208 = [ITRes207|ITResList207],
+
+
+ ?line {STRes466,S466} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI041.xsd','./msxsdtest/complexType',valid),
+ STResList467 = [STRes466|STResList466],
+ ?line ITRes208 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI041.xml','./msxsdtest/complexType',valid,S466),
+ ITResList209 = [ITRes208|ITResList208],
+
+
+ ?line {STRes467,S467} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI042.xsd','./msxsdtest/complexType',valid),
+ STResList468 = [STRes467|STResList467],
+ ?line ITRes209 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI042.xml','./msxsdtest/complexType',invalid,S467),
+ ITResList210 = [ITRes209|ITResList209],
+
+
+ ?line {STRes468,S468} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI043.xsd','./msxsdtest/complexType',valid),
+ STResList469 = [STRes468|STResList468],
+ ?line ITRes210 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI043.xml','./msxsdtest/complexType',valid,S468),
+ ITResList211 = [ITRes210|ITResList210],
+
+
+ ?line {STRes469,S469} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI044.xsd','./msxsdtest/complexType',valid),
+ STResList470 = [STRes469|STResList469],
+ ?line ITRes211 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI044.xml','./msxsdtest/complexType',valid,S469),
+ ITResList212 = [ITRes211|ITResList211],
+
+
+ ?line {STRes470,S470} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI045.xsd','./msxsdtest/complexType',valid),
+ STResList471 = [STRes470|STResList470],
+ ?line ITRes212 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI045.xml','./msxsdtest/complexType',invalid,S470),
+ ITResList213 = [ITRes212|ITResList212],
+
+
+ ?line {STRes471,S471} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI046.xsd','./msxsdtest/complexType',valid),
+ STResList472 = [STRes471|STResList471],
+ ?line ITRes213 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI046.xml','./msxsdtest/complexType',valid,S471),
+ ITResList214 = [ITRes213|ITResList213],
+
+
+ ?line {STRes472,S472} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI047.xsd','./msxsdtest/complexType',valid),
+ STResList473 = [STRes472|STResList472],
+ ?line ITRes214 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI047.xml','./msxsdtest/complexType',valid,S472),
+ ITResList215 = [ITRes214|ITResList214],
+
+
+ ?line {STRes473,S473} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI048.xsd','./msxsdtest/complexType',valid),
+ STResList474 = [STRes473|STResList473],
+ ?line ITRes215 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI048.xml','./msxsdtest/complexType',invalid,S473),
+ ITResList216 = [ITRes215|ITResList215],
+
+
+ ?line {STRes474,S474} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI049.xsd','./msxsdtest/complexType',valid),
+ STResList475 = [STRes474|STResList474],
+ ?line ITRes216 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI049.xml','./msxsdtest/complexType',invalid,S474),
+ ITResList217 = [ITRes216|ITResList216],
+
+
+ ?line {STRes475,S475} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctI050.xsd','./msxsdtest/complexType',valid),
+ STResList476 = [STRes475|STResList475],
+ ?line ITRes217 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctI050.xml','./msxsdtest/complexType',valid,S475),
+ ITResList218 = [ITRes217|ITResList217],
+
+
+ ?line {STRes476,S476} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctJ001.xsd','./msxsdtest/complexType',valid),
+ STResList477 = [STRes476|STResList476],
+ ?line ITRes218 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctJ001.xml','./msxsdtest/complexType',valid,S476),
+ ITResList219 = [ITRes218|ITResList218],
+
+
+ ?line {STRes477,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctJ002.xsd','./msxsdtest/complexType',invalid),
+ STResList478 = [STRes477|STResList477],
+
+
+ ?line {STRes478,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctJ003.xsd','./msxsdtest/complexType',invalid),
+ STResList479 = [STRes478|STResList478],
+
+
+ ?line {STRes479,S479} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctK001.xsd','./msxsdtest/complexType',valid),
+ STResList480 = [STRes479|STResList479],
+ ?line ITRes219 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctK001.xml','./msxsdtest/complexType',valid,S479),
+ ITResList220 = [ITRes219|ITResList219],
+
+
+ ?line {STRes480,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctK002.xsd','./msxsdtest/complexType',invalid),
+ STResList481 = [STRes480|STResList480],
+
+
+ ?line {STRes481,S481} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL001.xsd','./msxsdtest/complexType',valid),
+ STResList482 = [STRes481|STResList481],
+ ?line ITRes220 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL001.xml','./msxsdtest/complexType',invalid,S481),
+ ITResList221 = [ITRes220|ITResList220],
+
+
+ ?line {STRes482,S482} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL002.xsd','./msxsdtest/complexType',valid),
+ STResList483 = [STRes482|STResList482],
+ ?line ITRes221 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL002.xml','./msxsdtest/complexType',invalid,S482),
+ ITResList222 = [ITRes221|ITResList221],
+
+
+ ?line {STRes483,S483} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL003.xsd','./msxsdtest/complexType',valid),
+ STResList484 = [STRes483|STResList483],
+ ?line ITRes222 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL003.xml','./msxsdtest/complexType',valid,S483),
+ ITResList223 = [ITRes222|ITResList222],
+
+
+ ?line {STRes484,S484} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL004.xsd','./msxsdtest/complexType',valid),
+ STResList485 = [STRes484|STResList484],
+ ?line ITRes223 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL004.xml','./msxsdtest/complexType',invalid,S484),
+ ITResList224 = [ITRes223|ITResList223],
+
+
+ ?line {STRes485,S485} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL005.xsd','./msxsdtest/complexType',valid),
+ STResList486 = [STRes485|STResList485],
+ ?line ITRes224 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL005.xml','./msxsdtest/complexType',valid,S485),
+ ITResList225 = [ITRes224|ITResList224],
+
+
+ ?line {STRes486,S486} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL006.xsd','./msxsdtest/complexType',valid),
+ STResList487 = [STRes486|STResList486],
+ ?line ITRes225 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL006.xml','./msxsdtest/complexType',invalid,S486),
+ ITResList226 = [ITRes225|ITResList225],
+
+
+ ?line {STRes487,S487} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL007.xsd','./msxsdtest/complexType',valid),
+ STResList488 = [STRes487|STResList487],
+ ?line ITRes226 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL007.xml','./msxsdtest/complexType',valid,S487),
+ ITResList227 = [ITRes226|ITResList226],
+
+
+ ?line {STRes488,S488} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL008.xsd','./msxsdtest/complexType',valid),
+ STResList489 = [STRes488|STResList488],
+ ?line ITRes227 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL008.xml','./msxsdtest/complexType',valid,S488),
+ ITResList228 = [ITRes227|ITResList227],
+
+
+ ?line {STRes489,S489} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL009.xsd','./msxsdtest/complexType',valid),
+ STResList490 = [STRes489|STResList489],
+ ?line ITRes228 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL009.xml','./msxsdtest/complexType',invalid,S489),
+ ITResList229 = [ITRes228|ITResList228],
+
+
+ ?line {STRes490,S490} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL010.xsd','./msxsdtest/complexType',valid),
+ STResList491 = [STRes490|STResList490],
+ ?line ITRes229 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL010.xml','./msxsdtest/complexType',invalid,S490),
+ ITResList230 = [ITRes229|ITResList229],
+
+
+ ?line {STRes491,S491} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL011.xsd','./msxsdtest/complexType',valid),
+ STResList492 = [STRes491|STResList491],
+ ?line ITRes230 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL011.xml','./msxsdtest/complexType',valid,S491),
+ ITResList231 = [ITRes230|ITResList230],
+
+
+ ?line {STRes492,S492} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL012.xsd','./msxsdtest/complexType',valid),
+ STResList493 = [STRes492|STResList492],
+ ?line ITRes231 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL012.xml','./msxsdtest/complexType',invalid,S492),
+ ITResList232 = [ITRes231|ITResList231],
+
+
+ ?line {STRes493,S493} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL013.xsd','./msxsdtest/complexType',valid),
+ STResList494 = [STRes493|STResList493],
+ ?line ITRes232 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL013.xml','./msxsdtest/complexType',invalid,S493),
+ ITResList233 = [ITRes232|ITResList232],
+
+
+ ?line {STRes494,S494} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL014.xsd','./msxsdtest/complexType',valid),
+ STResList495 = [STRes494|STResList494],
+ ?line ITRes233 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL014.xml','./msxsdtest/complexType',valid,S494),
+ ITResList234 = [ITRes233|ITResList233],
+
+
+ ?line {STRes495,S495} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL015.xsd','./msxsdtest/complexType',valid),
+ STResList496 = [STRes495|STResList495],
+ ?line ITRes234 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL015.xml','./msxsdtest/complexType',valid,S495),
+ ITResList235 = [ITRes234|ITResList234],
+
+
+ ?line {STRes496,S496} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL016.xsd','./msxsdtest/complexType',valid),
+ STResList497 = [STRes496|STResList496],
+ ?line ITRes235 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL016.xml','./msxsdtest/complexType',valid,S496),
+ ITResList236 = [ITRes235|ITResList235],
+
+
+ ?line {STRes497,S497} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL017.xsd','./msxsdtest/complexType',valid),
+ STResList498 = [STRes497|STResList497],
+ ?line ITRes236 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL017.xml','./msxsdtest/complexType',valid,S497),
+ ITResList237 = [ITRes236|ITResList236],
+
+
+ ?line {STRes498,S498} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL018.xsd','./msxsdtest/complexType',valid),
+ STResList499 = [STRes498|STResList498],
+ ?line ITRes237 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL018.xml','./msxsdtest/complexType',valid,S498),
+ ITResList238 = [ITRes237|ITResList237],
+
+
+ ?line {STRes499,S499} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL019.xsd','./msxsdtest/complexType',valid),
+ STResList500 = [STRes499|STResList499],
+ ?line ITRes238 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL019.xml','./msxsdtest/complexType',valid,S499),
+ ITResList239 = [ITRes238|ITResList238],
+
+
+ ?line {STRes500,S500} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL020.xsd','./msxsdtest/complexType',valid),
+ STResList501 = [STRes500|STResList500],
+ ?line ITRes239 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL020.xml','./msxsdtest/complexType',invalid,S500),
+ ITResList240 = [ITRes239|ITResList239],
+
+
+ ?line {STRes501,S501} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctL021.xsd','./msxsdtest/complexType',valid),
+ STResList502 = [STRes501|STResList501],
+ ?line ITRes240 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctL021.xml','./msxsdtest/complexType',valid,S501),
+ ITResList241 = [ITRes240|ITResList240],
+
+
+ ?line {STRes502,S502} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/bug67200.xsd','./msxsdtest/complexType',valid),
+ STResList503 = [STRes502|STResList502],
+ ?line ITRes241 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/bug67200.xml','./msxsdtest/complexType',valid,S502),
+ ITResList242 = [ITRes241|ITResList241],
+
+
+ ?line {STRes503,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctM001.xsd','./msxsdtest/complexType',invalid),
+ STResList504 = [STRes503|STResList503],
+
+
+ ?line {STRes504,S504} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctM002.xsd','./msxsdtest/complexType',valid),
+ STResList505 = [STRes504|STResList504],
+ ?line ITRes242 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctM002.xml','./msxsdtest/complexType',valid,S504),
+ ITResList243 = [ITRes242|ITResList242],
+
+
+ ?line {STRes505,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctM003.xsd','./msxsdtest/complexType',invalid),
+ STResList506 = [STRes505|STResList505],
+
+
+ ?line {STRes506,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctM004.xsd','./msxsdtest/complexType',invalid),
+ STResList507 = [STRes506|STResList506],
+
+
+ ?line {STRes507,S507} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctN001.xsd','./msxsdtest/complexType',valid),
+ STResList508 = [STRes507|STResList507],
+ ?line ITRes243 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctN001.xml','./msxsdtest/complexType',valid,S507),
+ ITResList244 = [ITRes243|ITResList243],
+
+
+ ?line {STRes508,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctN002.xsd','./msxsdtest/complexType',invalid),
+ STResList509 = [STRes508|STResList508],
+
+
+ ?line {STRes509,S509} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctN003.xsd','./msxsdtest/complexType',valid),
+ STResList510 = [STRes509|STResList509],
+ ?line ITRes244 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctN003.xml','./msxsdtest/complexType',valid,S509),
+ ITResList245 = [ITRes244|ITResList244],
+
+
+ ?line {STRes510,S510} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctN004.xsd','./msxsdtest/complexType',valid),
+ STResList511 = [STRes510|STResList510],
+ ?line ITRes245 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctN004.xml','./msxsdtest/complexType',valid,S510),
+ ITResList246 = [ITRes245|ITResList245],
+
+
+ ?line {STRes511,S511} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctO001.xsd','./msxsdtest/complexType',valid),
+ STResList512 = [STRes511|STResList511],
+ ?line ITRes246 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctO001.xml','./msxsdtest/complexType',valid,S511),
+ ITResList247 = [ITRes246|ITResList246],
+
+
+ ?line {STRes512,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctO002.xsd','./msxsdtest/complexType',invalid),
+ STResList513 = [STRes512|STResList512],
+
+
+ ?line {STRes513,S513} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctO003.xsd','./msxsdtest/complexType',valid),
+ STResList514 = [STRes513|STResList513],
+ ?line ITRes247 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctO003.xml','./msxsdtest/complexType',valid,S513),
+ ITResList248 = [ITRes247|ITResList247],
+
+
+ ?line {STRes514,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctO004.xsd','./msxsdtest/complexType',invalid),
+ STResList515 = [STRes514|STResList514],
+
+
+ ?line {STRes515,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctO005.xsd','./msxsdtest/complexType',invalid),
+ STResList516 = [STRes515|STResList515],
+
+
+ ?line {STRes516,S516} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctO006.xsd','./msxsdtest/complexType',valid),
+ STResList517 = [STRes516|STResList516],
+ ?line ITRes248 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/complexType/ctO006.xml','./msxsdtest/complexType',valid,S516),
+ ITResList249 = [ITRes248|ITResList248],
+
+
+ ?line {STRes517,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/complexType/ctO007.xsd','./msxsdtest/complexType',invalid),
+ STResList518 = [STRes517|STResList517],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList518,ITResList249).
+
+%% 3.3.2 XML Representation of Element Declaration.
+%% 3.3.4 Element Declaration Validation Rules.
+%% element Validation checking.
+%% Regular Expression Validation checking.
+%% Bug Regressions Specs section: 3.3.4
+
+elem(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA001.xsd','./msxsdtest/element',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA002.xsd','./msxsdtest/element',valid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA003.xsd','./msxsdtest/element',valid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA004.xsd','./msxsdtest/element',valid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA005.xsd','./msxsdtest/element',valid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA006.xsd','./msxsdtest/element',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA007.xsd','./msxsdtest/element',valid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA009.xsd','./msxsdtest/element',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA010.xsd','./msxsdtest/element',invalid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA011.xsd','./msxsdtest/element',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA012.xsd','./msxsdtest/element',invalid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA013.xsd','./msxsdtest/element',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA014.xsd','./msxsdtest/element',invalid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA015.xsd','./msxsdtest/element',valid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA016.xsd','./msxsdtest/element',valid),
+ STResList15 = [STRes14|STResList14],
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemA017.xsd','./msxsdtest/element',valid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB001.xsd','./msxsdtest/element',valid),
+ STResList17 = [STRes16|STResList16],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB002.xsd','./msxsdtest/element',valid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB003.xsd','./msxsdtest/element',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB004.xsd','./msxsdtest/element',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB005.xsd','./msxsdtest/element',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB006.xsd','./msxsdtest/element',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB007.xsd','./msxsdtest/element',valid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB008.xsd','./msxsdtest/element',valid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB009.xsd','./msxsdtest/element',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemB010.xsd','./msxsdtest/element',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC001.xsd','./msxsdtest/element',valid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC002.xsd','./msxsdtest/element',valid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC003.xsd','./msxsdtest/element',valid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC004.xsd','./msxsdtest/element',valid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC005.xsd','./msxsdtest/element',valid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC006.xsd','./msxsdtest/element',valid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC007.xsd','./msxsdtest/element',valid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC008.xsd','./msxsdtest/element',valid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC009.xsd','./msxsdtest/element',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC010.xsd','./msxsdtest/element',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC011.xsd','./msxsdtest/element',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC012.xsd','./msxsdtest/element',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC013.xsd','./msxsdtest/element',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC014.xsd','./msxsdtest/element',invalid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC015.xsd','./msxsdtest/element',invalid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC016.xsd','./msxsdtest/element',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC017.xsd','./msxsdtest/element',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC018.xsd','./msxsdtest/element',valid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemC020.xsd','./msxsdtest/element',valid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemD001.xsd','./msxsdtest/element',valid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemD002.xsd','./msxsdtest/element',valid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemD003.xsd','./msxsdtest/element',invalid),
+ STResList48 = [STRes47|STResList47],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemD004.xsd','./msxsdtest/element',invalid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemD005.xsd','./msxsdtest/element',invalid),
+ STResList50 = [STRes49|STResList49],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemD006.xsd','./msxsdtest/element',valid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemE001.xsd','./msxsdtest/element',valid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemE002.xsd','./msxsdtest/element',valid),
+ STResList53 = [STRes52|STResList52],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemE003.xsd','./msxsdtest/element',valid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemE004.xsd','./msxsdtest/element',valid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemE005.xsd','./msxsdtest/element',valid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemE006.xsd','./msxsdtest/element',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemE007.xsd','./msxsdtest/element',invalid),
+ STResList58 = [STRes57|STResList57],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemE008.xsd','./msxsdtest/element',invalid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemE009.xsd','./msxsdtest/element',invalid),
+ STResList60 = [STRes59|STResList59],
+
+
+ ?line {STRes60,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF001.xsd','./msxsdtest/element',valid),
+ STResList61 = [STRes60|STResList60],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF002.xsd','./msxsdtest/element',valid),
+ STResList62 = [STRes61|STResList61],
+
+
+ ?line {STRes62,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF003.xsd','./msxsdtest/element',valid),
+ STResList63 = [STRes62|STResList62],
+
+
+ ?line {STRes63,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF004.xsd','./msxsdtest/element',invalid),
+ STResList64 = [STRes63|STResList63],
+
+
+ ?line {STRes64,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF005.xsd','./msxsdtest/element',valid),
+ STResList65 = [STRes64|STResList64],
+
+
+ ?line {STRes65,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF006.xsd','./msxsdtest/element',invalid),
+ STResList66 = [STRes65|STResList65],
+
+
+ ?line {STRes66,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF007.xsd','./msxsdtest/element',invalid),
+ STResList67 = [STRes66|STResList66],
+
+
+ ?line {STRes67,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF008.xsd','./msxsdtest/element',invalid),
+ STResList68 = [STRes67|STResList67],
+
+
+ ?line {STRes68,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF009.xsd','./msxsdtest/element',invalid),
+ STResList69 = [STRes68|STResList68],
+
+
+ ?line {STRes69,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF010.xsd','./msxsdtest/element',invalid),
+ STResList70 = [STRes69|STResList69],
+
+
+ ?line {STRes70,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF011.xsd','./msxsdtest/element',invalid),
+ STResList71 = [STRes70|STResList70],
+
+
+ ?line {STRes71,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF012.xsd','./msxsdtest/element',invalid),
+ STResList72 = [STRes71|STResList71],
+
+
+ ?line {STRes72,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF013.xsd','./msxsdtest/element',invalid),
+ STResList73 = [STRes72|STResList72],
+
+
+ ?line {STRes73,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF014.xsd','./msxsdtest/element',invalid),
+ STResList74 = [STRes73|STResList73],
+
+
+ ?line {STRes74,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF015.xsd','./msxsdtest/element',invalid),
+ STResList75 = [STRes74|STResList74],
+
+
+ ?line {STRes75,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF016.xsd','./msxsdtest/element',invalid),
+ STResList76 = [STRes75|STResList75],
+
+
+ ?line {STRes76,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF017.xsd','./msxsdtest/element',invalid),
+ STResList77 = [STRes76|STResList76],
+
+
+ ?line {STRes77,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemF018.xsd','./msxsdtest/element',valid),
+ STResList78 = [STRes77|STResList77],
+
+
+ ?line {STRes78,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemG001.xsd','./msxsdtest/element',valid),
+ STResList79 = [STRes78|STResList78],
+
+
+ ?line {STRes79,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemG002.xsd','./msxsdtest/element',valid),
+ STResList80 = [STRes79|STResList79],
+
+
+ ?line {STRes80,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemG003.xsd','./msxsdtest/element',invalid),
+ STResList81 = [STRes80|STResList80],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemG004.xsd','./msxsdtest/element',invalid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemG005.xsd','./msxsdtest/element',valid),
+ STResList83 = [STRes82|STResList82],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemH001.xsd','./msxsdtest/element',valid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemH002.xsd','./msxsdtest/element',valid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemH003.xsd','./msxsdtest/element',invalid),
+ STResList86 = [STRes85|STResList85],
+
+
+ ?line {STRes86,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemH004.xsd','./msxsdtest/element',invalid),
+ STResList87 = [STRes86|STResList86],
+
+
+ ?line {STRes87,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemH005.xsd','./msxsdtest/element',invalid),
+ STResList88 = [STRes87|STResList87],
+
+
+ ?line {STRes88,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemH006.xsd','./msxsdtest/element',invalid),
+ STResList89 = [STRes88|STResList88],
+
+
+ ?line {STRes89,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemI001.xsd','./msxsdtest/element',valid),
+ STResList90 = [STRes89|STResList89],
+
+
+ ?line {STRes90,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemI002.xsd','./msxsdtest/element',valid),
+ STResList91 = [STRes90|STResList90],
+
+
+ ?line {STRes91,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemI003.xsd','./msxsdtest/element',invalid),
+ STResList92 = [STRes91|STResList91],
+
+
+ ?line {STRes92,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemI004.xsd','./msxsdtest/element',invalid),
+ STResList93 = [STRes92|STResList92],
+
+
+ ?line {STRes93,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemI005.xsd','./msxsdtest/element',invalid),
+ STResList94 = [STRes93|STResList93],
+
+
+ ?line {STRes94,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ001.xsd','./msxsdtest/element',valid),
+ STResList95 = [STRes94|STResList94],
+
+
+ ?line {STRes95,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ002.xsd','./msxsdtest/element',valid),
+ STResList96 = [STRes95|STResList95],
+
+
+ ?line {STRes96,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ003.xsd','./msxsdtest/element',valid),
+ STResList97 = [STRes96|STResList96],
+
+
+ ?line {STRes97,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ004.xsd','./msxsdtest/element',valid),
+ STResList98 = [STRes97|STResList97],
+
+
+ ?line {STRes98,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ005.xsd','./msxsdtest/element',valid),
+ STResList99 = [STRes98|STResList98],
+
+
+ ?line {STRes99,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ006.xsd','./msxsdtest/element',invalid),
+ STResList100 = [STRes99|STResList99],
+
+
+ ?line {STRes100,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ007.xsd','./msxsdtest/element',invalid),
+ STResList101 = [STRes100|STResList100],
+
+
+ ?line {STRes101,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ008.xsd','./msxsdtest/element',invalid),
+ STResList102 = [STRes101|STResList101],
+
+
+ ?line {STRes102,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ009.xsd','./msxsdtest/element',valid),
+ STResList103 = [STRes102|STResList102],
+
+
+ ?line {STRes103,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ010.xsd','./msxsdtest/element',valid),
+ STResList104 = [STRes103|STResList103],
+
+
+ ?line {STRes104,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ011.xsd','./msxsdtest/element',valid),
+ STResList105 = [STRes104|STResList104],
+
+
+ ?line {STRes105,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ012.xsd','./msxsdtest/element',invalid),
+ STResList106 = [STRes105|STResList105],
+
+
+ ?line {STRes106,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ013.xsd','./msxsdtest/element',valid),
+ STResList107 = [STRes106|STResList106],
+
+
+ ?line {STRes107,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ014.xsd','./msxsdtest/element',invalid),
+ STResList108 = [STRes107|STResList107],
+
+
+ ?line {STRes108,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ015.xsd','./msxsdtest/element',invalid),
+ STResList109 = [STRes108|STResList108],
+
+
+ ?line {STRes109,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ016.xsd','./msxsdtest/element',invalid),
+ STResList110 = [STRes109|STResList109],
+
+
+ ?line {STRes110,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ017.xsd','./msxsdtest/element',valid),
+ STResList111 = [STRes110|STResList110],
+
+
+ ?line {STRes111,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ018.xsd','./msxsdtest/element',valid),
+ STResList112 = [STRes111|STResList111],
+
+
+ ?line {STRes112,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ019.xsd','./msxsdtest/element',invalid),
+ STResList113 = [STRes112|STResList112],
+
+
+ ?line {STRes113,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ020.xsd','./msxsdtest/element',invalid),
+ STResList114 = [STRes113|STResList113],
+
+
+ ?line {STRes114,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemJ021.xsd','./msxsdtest/element',valid),
+ STResList115 = [STRes114|STResList114],
+
+
+ ?line {STRes115,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemK001.xsd','./msxsdtest/element',valid),
+ STResList116 = [STRes115|STResList115],
+
+
+ ?line {STRes116,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemK002.xsd','./msxsdtest/element',valid),
+ STResList117 = [STRes116|STResList116],
+
+
+ ?line {STRes117,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemK003.xsd','./msxsdtest/element',invalid),
+ STResList118 = [STRes117|STResList117],
+
+
+ ?line {STRes118,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemK004.xsd','./msxsdtest/element',invalid),
+ STResList119 = [STRes118|STResList118],
+
+
+ ?line {STRes119,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemK005.xsd','./msxsdtest/element',invalid),
+ STResList120 = [STRes119|STResList119],
+
+
+ ?line {STRes120,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemK006.xsd','./msxsdtest/element',invalid),
+ STResList121 = [STRes120|STResList120],
+
+
+ ?line {STRes121,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemK007.xsd','./msxsdtest/element',invalid),
+ STResList122 = [STRes121|STResList121],
+
+
+ ?line {STRes122,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemL001.xsd','./msxsdtest/element',valid),
+ STResList123 = [STRes122|STResList122],
+
+
+ ?line {STRes123,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemL002.xsd','./msxsdtest/element',invalid),
+ STResList124 = [STRes123|STResList123],
+
+
+ ?line {STRes124,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemL003.xsd','./msxsdtest/element',invalid),
+ STResList125 = [STRes124|STResList124],
+
+
+ ?line {STRes125,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemL004.xsd','./msxsdtest/element',valid),
+ STResList126 = [STRes125|STResList125],
+
+
+ ?line {STRes126,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemL005.xsd','./msxsdtest/element',valid),
+ STResList127 = [STRes126|STResList126],
+
+
+ ?line {STRes127,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemM001.xsd','./msxsdtest/element',valid),
+ STResList128 = [STRes127|STResList127],
+
+
+ ?line {STRes128,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemM002.xsd','./msxsdtest/element',invalid),
+ STResList129 = [STRes128|STResList128],
+
+
+ ?line {STRes129,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemM003.xsd','./msxsdtest/element',invalid),
+ STResList130 = [STRes129|STResList129],
+
+
+ ?line {STRes130,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemM004.xsd','./msxsdtest/element',valid),
+ STResList131 = [STRes130|STResList130],
+
+
+ ?line {STRes131,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemM005.xsd','./msxsdtest/element',invalid),
+ STResList132 = [STRes131|STResList131],
+
+
+ ?line {STRes132,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemN001.xsd','./msxsdtest/element',valid),
+ STResList133 = [STRes132|STResList132],
+
+
+ ?line {STRes133,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemN002.xsd','./msxsdtest/element',valid),
+ STResList134 = [STRes133|STResList133],
+
+
+ ?line {STRes134,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemN003.xsd','./msxsdtest/element',valid),
+ STResList135 = [STRes134|STResList134],
+
+
+ ?line {STRes135,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemN004.xsd','./msxsdtest/element',valid),
+ STResList136 = [STRes135|STResList135],
+
+
+ ?line {STRes136,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemN005.xsd','./msxsdtest/element',valid),
+ STResList137 = [STRes136|STResList136],
+
+
+ ?line {STRes137,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemN006.xsd','./msxsdtest/element',invalid),
+ STResList138 = [STRes137|STResList137],
+
+
+ ?line {STRes138,S138} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO001.xsd','./msxsdtest/element',valid),
+ STResList139 = [STRes138|STResList138],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO001.xml','./msxsdtest/element',invalid,S138),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes139,S139} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO002.xsd','./msxsdtest/element',valid),
+ STResList140 = [STRes139|STResList139],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO002.xml','./msxsdtest/element',valid,S139),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes140,S140} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO003.xsd','./msxsdtest/element',valid),
+ STResList141 = [STRes140|STResList140],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO003.xml','./msxsdtest/element',valid,S140),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes141,S141} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO004.xsd','./msxsdtest/element',valid),
+ STResList142 = [STRes141|STResList141],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO004.xml','./msxsdtest/element',valid,S141),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes142,S142} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO005.xsd','./msxsdtest/element',valid),
+ STResList143 = [STRes142|STResList142],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO005.xml','./msxsdtest/element',valid,S142),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes143,S143} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO006.xsd','./msxsdtest/element',valid),
+ STResList144 = [STRes143|STResList143],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO006.xml','./msxsdtest/element',valid,S143),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes144,S144} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO007.xsd','./msxsdtest/element',valid),
+ STResList145 = [STRes144|STResList144],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO007.xml','./msxsdtest/element',invalid,S144),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes145,S145} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO008.xsd','./msxsdtest/element',valid),
+ STResList146 = [STRes145|STResList145],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO008.xml','./msxsdtest/element',valid,S145),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes146,S146} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO009.xsd','./msxsdtest/element',valid),
+ STResList147 = [STRes146|STResList146],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO009.xml','./msxsdtest/element',valid,S146),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes147,S147} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO010.xsd','./msxsdtest/element',valid),
+ STResList148 = [STRes147|STResList147],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO010.xml','./msxsdtest/element',invalid,S147),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes148,S148} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO011.xsd','./msxsdtest/element',valid),
+ STResList149 = [STRes148|STResList148],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO011.xml','./msxsdtest/element',invalid,S148),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes149,S149} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemO012.xsd','./msxsdtest/element',valid),
+ STResList150 = [STRes149|STResList149],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemO012.xml','./msxsdtest/element',valid,S149),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes150,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemP001.xsd','./msxsdtest/element',invalid),
+ STResList151 = [STRes150|STResList150],
+
+
+ ?line {STRes151,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemP002.xsd','./msxsdtest/element',invalid),
+ STResList152 = [STRes151|STResList151],
+
+
+ ?line {STRes152,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemP003.xsd','./msxsdtest/element',valid),
+ STResList153 = [STRes152|STResList152],
+
+
+ ?line {STRes153,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemP004.xsd','./msxsdtest/element',valid),
+ STResList154 = [STRes153|STResList153],
+
+
+ ?line {STRes154,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemP005.xsd','./msxsdtest/element',invalid),
+ STResList155 = [STRes154|STResList154],
+
+
+ ?line {STRes155,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemP006.xsd','./msxsdtest/element',invalid),
+ STResList156 = [STRes155|STResList155],
+
+
+ ?line {STRes156,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemP007.xsd','./msxsdtest/element',invalid),
+ STResList157 = [STRes156|STResList156],
+
+
+ ?line {STRes157,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemP008.xsd','./msxsdtest/element',invalid),
+ STResList158 = [STRes157|STResList157],
+
+
+ ?line {STRes158,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemP009.xsd','./msxsdtest/element',invalid),
+ STResList159 = [STRes158|STResList158],
+
+
+ ?line {STRes159,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ001.xsd','./msxsdtest/element',valid),
+ STResList160 = [STRes159|STResList159],
+
+
+ ?line {STRes160,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ002.xsd','./msxsdtest/element',valid),
+ STResList161 = [STRes160|STResList160],
+
+
+ ?line {STRes161,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ003.xsd','./msxsdtest/element',valid),
+ STResList162 = [STRes161|STResList161],
+
+
+ ?line {STRes162,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ004.xsd','./msxsdtest/element',invalid),
+ STResList163 = [STRes162|STResList162],
+
+
+ ?line {STRes163,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ005.xsd','./msxsdtest/element',valid),
+ STResList164 = [STRes163|STResList163],
+
+
+ ?line {STRes164,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ006.xsd','./msxsdtest/element',invalid),
+ STResList165 = [STRes164|STResList164],
+
+
+ ?line {STRes165,S165} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ007.xsd','./msxsdtest/element',valid),
+ STResList166 = [STRes165|STResList165],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ007.xml','./msxsdtest/element',invalid,S165),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes166,S166} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ008.xsd','./msxsdtest/element',valid),
+ STResList167 = [STRes166|STResList166],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ008.xml','./msxsdtest/element',valid,S166),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes167,S167} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ009.xsd','./msxsdtest/element',valid),
+ STResList168 = [STRes167|STResList167],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ009.xml','./msxsdtest/element',invalid,S167),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes168,S168} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ010.xsd','./msxsdtest/element',valid),
+ STResList169 = [STRes168|STResList168],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ010.xml','./msxsdtest/element',invalid,S168),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes169,S169} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ011.xsd','./msxsdtest/element',valid),
+ STResList170 = [STRes169|STResList169],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ011.xml','./msxsdtest/element',valid,S169),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes170,S170} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ012.xsd','./msxsdtest/element',valid),
+ STResList171 = [STRes170|STResList170],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ012.xml','./msxsdtest/element',invalid,S170),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes171,S171} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ013.xsd','./msxsdtest/element',valid),
+ STResList172 = [STRes171|STResList171],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ013.xml','./msxsdtest/element',valid,S171),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes172,S172} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ014.xsd','./msxsdtest/element',valid),
+ STResList173 = [STRes172|STResList172],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ014.xml','./msxsdtest/element',invalid,S172),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes173,S173} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ015.xsd','./msxsdtest/element',valid),
+ STResList174 = [STRes173|STResList173],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ015.xml','./msxsdtest/element',valid,S173),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes174,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ016.xsd','./msxsdtest/element',valid),
+ STResList175 = [STRes174|STResList174],
+
+
+ ?line {STRes175,S175} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ017.xsd','./msxsdtest/element',valid),
+ STResList176 = [STRes175|STResList175],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ017.xml','./msxsdtest/element',valid,S175),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes176,S176} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ018.xsd','./msxsdtest/element',valid),
+ STResList177 = [STRes176|STResList176],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ018.xml','./msxsdtest/element',invalid,S176),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes177,S177} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ019.xsd','./msxsdtest/element',valid),
+ STResList178 = [STRes177|STResList177],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ019.xml','./msxsdtest/element',invalid,S177),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes178,S178} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ020.xsd','./msxsdtest/element',valid),
+ STResList179 = [STRes178|STResList178],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ020.xml','./msxsdtest/element',valid,S178),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes179,S179} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ021.xsd','./msxsdtest/element',valid),
+ STResList180 = [STRes179|STResList179],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ021.xml','./msxsdtest/element',valid,S179),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes180,S180} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemQ022.xsd','./msxsdtest/element',valid),
+ STResList181 = [STRes180|STResList180],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemQ022.xml','./msxsdtest/element',valid,S180),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes181,S181} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemR001.xsd','./msxsdtest/element',valid),
+ STResList182 = [STRes181|STResList181],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemR001.xml','./msxsdtest/element',valid,S181),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes182,S182} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemR002.xsd','./msxsdtest/element',valid),
+ STResList183 = [STRes182|STResList182],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemR002.xml','./msxsdtest/element',valid,S182),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes183,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemR003.xsd','./msxsdtest/element',invalid),
+ STResList184 = [STRes183|STResList183],
+
+
+ ?line {STRes184,S184} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemR004.xsd','./msxsdtest/element',valid),
+ STResList185 = [STRes184|STResList184],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemR004.xml','./msxsdtest/element',valid,S184),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes185,S185} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemR005.xsd','./msxsdtest/element',valid),
+ STResList186 = [STRes185|STResList185],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemR005.xml','./msxsdtest/element',valid,S185),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes186,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemR006.xsd','./msxsdtest/element',invalid),
+ STResList187 = [STRes186|STResList186],
+
+
+ ?line {STRes187,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemS001.xsd','./msxsdtest/element',invalid),
+ STResList188 = [STRes187|STResList187],
+
+
+ ?line {STRes188,S188} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemS002.xsd','./msxsdtest/element',valid),
+ STResList189 = [STRes188|STResList188],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemS002.xml','./msxsdtest/element',valid,S188),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes189,S189} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemS003.xsd','./msxsdtest/element',valid),
+ STResList190 = [STRes189|STResList189],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemS003.xml','./msxsdtest/element',valid,S189),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes190,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemS004.xsd','./msxsdtest/element',invalid),
+ STResList191 = [STRes190|STResList190],
+
+
+ ?line {STRes191,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemS005.xsd','./msxsdtest/element',invalid),
+ STResList192 = [STRes191|STResList191],
+
+
+ ?line {STRes192,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemS006.xsd','./msxsdtest/element',invalid),
+ STResList193 = [STRes192|STResList192],
+
+
+ ?line {STRes193,S193} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemS007.xsd','./msxsdtest/element',valid),
+ STResList194 = [STRes193|STResList193],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemS007.xml','./msxsdtest/element',valid,S193),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes194,S194} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemS008.xsd','./msxsdtest/element',valid),
+ STResList195 = [STRes194|STResList194],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemS008.xml','./msxsdtest/element',valid,S194),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes195,S195} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT001.xsd','./msxsdtest/element',valid),
+ STResList196 = [STRes195|STResList195],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT001.xml','./msxsdtest/element',invalid,S195),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes196,S196} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT002.xsd','./msxsdtest/element',valid),
+ STResList197 = [STRes196|STResList196],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT002.xml','./msxsdtest/element',valid,S196),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes197,S197} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT003.xsd','./msxsdtest/element',valid),
+ STResList198 = [STRes197|STResList197],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT003.xml','./msxsdtest/element',valid,S197),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes198,S198} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT004.xsd','./msxsdtest/element',valid),
+ STResList199 = [STRes198|STResList198],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT004.xml','./msxsdtest/element',invalid,S198),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes199,S199} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT005.xsd','./msxsdtest/element',valid),
+ STResList200 = [STRes199|STResList199],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT005.xml','./msxsdtest/element',invalid,S199),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes200,S200} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT006.xsd','./msxsdtest/element',valid),
+ STResList201 = [STRes200|STResList200],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT006.xml','./msxsdtest/element',invalid,S200),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes201,S201} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT007.xsd','./msxsdtest/element',valid),
+ STResList202 = [STRes201|STResList201],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT007.xml','./msxsdtest/element',valid,S201),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes202,S202} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT008.xsd','./msxsdtest/element',valid),
+ STResList203 = [STRes202|STResList202],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT008.xml','./msxsdtest/element',valid,S202),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes203,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT009.xsd','./msxsdtest/element',invalid),
+ STResList204 = [STRes203|STResList203],
+
+
+ ?line {STRes204,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT010.xsd','./msxsdtest/element',invalid),
+ STResList205 = [STRes204|STResList204],
+
+
+ ?line {STRes205,S205} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT011.xsd','./msxsdtest/element',valid),
+ STResList206 = [STRes205|STResList205],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT011.xml','./msxsdtest/element',invalid,S205),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes206,S206} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT012.xsd','./msxsdtest/element',valid),
+ STResList207 = [STRes206|STResList206],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT012.xml','./msxsdtest/element',invalid,S206),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes207,S207} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT013.xsd','./msxsdtest/element',valid),
+ STResList208 = [STRes207|STResList207],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT013.xml','./msxsdtest/element',invalid,S207),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes208,S208} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT014.xsd','./msxsdtest/element',valid),
+ STResList209 = [STRes208|STResList208],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT014.xml','./msxsdtest/element',valid,S208),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes209,S209} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT015.xsd','./msxsdtest/element',valid),
+ STResList210 = [STRes209|STResList209],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT015.xml','./msxsdtest/element',valid,S209),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes210,S210} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT016.xsd','./msxsdtest/element',valid),
+ STResList211 = [STRes210|STResList210],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT016.xml','./msxsdtest/element',valid,S210),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes211,S211} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT017.xsd','./msxsdtest/element',valid),
+ STResList212 = [STRes211|STResList211],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT017.xml','./msxsdtest/element',invalid,S211),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes212,S212} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT018.xsd','./msxsdtest/element',valid),
+ STResList213 = [STRes212|STResList212],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT018.xml','./msxsdtest/element',invalid,S212),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes213,S213} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT019.xsd','./msxsdtest/element',valid),
+ STResList214 = [STRes213|STResList213],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT019.xml','./msxsdtest/element',invalid,S213),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes214,S214} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT022.xsd','./msxsdtest/element',valid),
+ STResList215 = [STRes214|STResList214],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT022.xml','./msxsdtest/element',valid,S214),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes215,S215} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT024.xsd','./msxsdtest/element',valid),
+ STResList216 = [STRes215|STResList215],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT024.xml','./msxsdtest/element',invalid,S215),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes216,S216} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT025.xsd','./msxsdtest/element',valid),
+ STResList217 = [STRes216|STResList216],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT025.xml','./msxsdtest/element',valid,S216),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes217,S217} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT026.xsd','./msxsdtest/element',valid),
+ STResList218 = [STRes217|STResList217],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT026.xml','./msxsdtest/element',valid,S217),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes218,S218} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT027.xsd','./msxsdtest/element',valid),
+ STResList219 = [STRes218|STResList218],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT027.xml','./msxsdtest/element',valid,S218),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes219,S219} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT028.xsd','./msxsdtest/element',valid),
+ STResList220 = [STRes219|STResList219],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT028.xml','./msxsdtest/element',valid,S219),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes220,S220} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT029.xsd','./msxsdtest/element',valid),
+ STResList221 = [STRes220|STResList220],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT029.xml','./msxsdtest/element',valid,S220),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes221,S221} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT030.xsd','./msxsdtest/element',valid),
+ STResList222 = [STRes221|STResList221],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT030.xml','./msxsdtest/element',valid,S221),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes222,S222} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT031.xsd','./msxsdtest/element',valid),
+ STResList223 = [STRes222|STResList222],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT031.xml','./msxsdtest/element',invalid,S222),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes223,S223} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT032.xsd','./msxsdtest/element',valid),
+ STResList224 = [STRes223|STResList223],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT032.xml','./msxsdtest/element',valid,S223),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes224,S224} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT033.xsd','./msxsdtest/element',valid),
+ STResList225 = [STRes224|STResList224],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT033.xml','./msxsdtest/element',invalid,S224),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes225,S225} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT038.xsd','./msxsdtest/element',valid),
+ STResList226 = [STRes225|STResList225],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT038.xml','./msxsdtest/element',valid,S225),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes226,S226} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT039.xsd','./msxsdtest/element',valid),
+ STResList227 = [STRes226|STResList226],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT039.xml','./msxsdtest/element',invalid,S226),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes227,S227} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT040.xsd','./msxsdtest/element',valid),
+ STResList228 = [STRes227|STResList227],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT040.xml','./msxsdtest/element',valid,S227),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes228,S228} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT041.xsd','./msxsdtest/element',valid),
+ STResList229 = [STRes228|STResList228],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT041.xml','./msxsdtest/element',valid,S228),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes229,S229} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT042.xsd','./msxsdtest/element',valid),
+ STResList230 = [STRes229|STResList229],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT042.xml','./msxsdtest/element',valid,S229),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes230,S230} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT043.xsd','./msxsdtest/element',valid),
+ STResList231 = [STRes230|STResList230],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT043.xml','./msxsdtest/element',valid,S230),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes231,S231} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT044.xsd','./msxsdtest/element',valid),
+ STResList232 = [STRes231|STResList231],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT044.xml','./msxsdtest/element',valid,S231),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes232,S232} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT045.xsd','./msxsdtest/element',valid),
+ STResList233 = [STRes232|STResList232],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT045.xml','./msxsdtest/element',invalid,S232),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes233,S233} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT046.xsd','./msxsdtest/element',valid),
+ STResList234 = [STRes233|STResList233],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT046.xml','./msxsdtest/element',invalid,S233),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes234,S234} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT047.xsd','./msxsdtest/element',valid),
+ STResList235 = [STRes234|STResList234],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT047.xml','./msxsdtest/element',invalid,S234),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes235,S235} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT048.xsd','./msxsdtest/element',valid),
+ STResList236 = [STRes235|STResList235],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT048.xml','./msxsdtest/element',invalid,S235),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes236,S236} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT049.xsd','./msxsdtest/element',valid),
+ STResList237 = [STRes236|STResList236],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT049.xml','./msxsdtest/element',invalid,S236),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes237,S237} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT050.xsd','./msxsdtest/element',valid),
+ STResList238 = [STRes237|STResList237],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT050.xml','./msxsdtest/element',invalid,S237),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes238,S238} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT051.xsd','./msxsdtest/element',valid),
+ STResList239 = [STRes238|STResList238],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT051.xml','./msxsdtest/element',invalid,S238),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes239,S239} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT052.xsd','./msxsdtest/element',valid),
+ STResList240 = [STRes239|STResList239],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT052.xml','./msxsdtest/element',invalid,S239),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes240,S240} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT053.xsd','./msxsdtest/element',valid),
+ STResList241 = [STRes240|STResList240],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT053.xml','./msxsdtest/element',invalid,S240),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes241,S241} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT054.xsd','./msxsdtest/element',valid),
+ STResList242 = [STRes241|STResList241],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT054.xml','./msxsdtest/element',invalid,S241),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes242,S242} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT055.xsd','./msxsdtest/element',valid),
+ STResList243 = [STRes242|STResList242],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT055.xml','./msxsdtest/element',invalid,S242),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes243,S243} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT056.xsd','./msxsdtest/element',valid),
+ STResList244 = [STRes243|STResList243],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT056.xml','./msxsdtest/element',invalid,S243),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes244,S244} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT057.xsd','./msxsdtest/element',valid),
+ STResList245 = [STRes244|STResList244],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT057.xml','./msxsdtest/element',invalid,S244),
+ ITResList83 = [ITRes82|ITResList82],
+
+
+ ?line {STRes245,S245} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT058.xsd','./msxsdtest/element',valid),
+ STResList246 = [STRes245|STResList245],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT058.xml','./msxsdtest/element',valid,S245),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes246,S246} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemT074.xsd','./msxsdtest/element',valid),
+ STResList247 = [STRes246|STResList246],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemT074.xml','./msxsdtest/element',invalid,S246),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes247,S247} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU001.xsd','./msxsdtest/element',valid),
+ STResList248 = [STRes247|STResList247],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU001.xml','./msxsdtest/element',valid,S247),
+ ITResList86 = [ITRes85|ITResList85],
+
+
+ ?line {STRes248,S248} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU002.xsd','./msxsdtest/element',valid),
+ STResList249 = [STRes248|STResList248],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU002.xml','./msxsdtest/element',valid,S248),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes249,S249} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU003.xsd','./msxsdtest/element',valid),
+ STResList250 = [STRes249|STResList249],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU003.xml','./msxsdtest/element',valid,S249),
+ ITResList88 = [ITRes87|ITResList87],
+
+
+ ?line {STRes250,S250} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU004.xsd','./msxsdtest/element',valid),
+ STResList251 = [STRes250|STResList250],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU004.xml','./msxsdtest/element',valid,S250),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes251,S251} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU005.xsd','./msxsdtest/element',valid),
+ STResList252 = [STRes251|STResList251],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU005.xml','./msxsdtest/element',valid,S251),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes252,S252} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU006.xsd','./msxsdtest/element',valid),
+ STResList253 = [STRes252|STResList252],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU006.xml','./msxsdtest/element',valid,S252),
+ ITResList91 = [ITRes90|ITResList90],
+
+
+ ?line {STRes253,S253} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU007.xsd','./msxsdtest/element',valid),
+ STResList254 = [STRes253|STResList253],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU007.xml','./msxsdtest/element',valid,S253),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes254,S254} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU008.xsd','./msxsdtest/element',valid),
+ STResList255 = [STRes254|STResList254],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU008.xml','./msxsdtest/element',valid,S254),
+ ITResList93 = [ITRes92|ITResList92],
+
+
+ ?line {STRes255,S255} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU009.xsd','./msxsdtest/element',valid),
+ STResList256 = [STRes255|STResList255],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU009.xml','./msxsdtest/element',valid,S255),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes256,S256} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU010.xsd','./msxsdtest/element',valid),
+ STResList257 = [STRes256|STResList256],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU010.xml','./msxsdtest/element',valid,S256),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes257,S257} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU011.xsd','./msxsdtest/element',valid),
+ STResList258 = [STRes257|STResList257],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU011.xml','./msxsdtest/element',valid,S257),
+ ITResList96 = [ITRes95|ITResList95],
+
+
+ ?line {STRes258,S258} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU012.xsd','./msxsdtest/element',valid),
+ STResList259 = [STRes258|STResList258],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU012.xml','./msxsdtest/element',valid,S258),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes259,S259} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU013.xsd','./msxsdtest/element',valid),
+ STResList260 = [STRes259|STResList259],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU013.xml','./msxsdtest/element',valid,S259),
+ ITResList98 = [ITRes97|ITResList97],
+
+
+ ?line {STRes260,S260} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU014.xsd','./msxsdtest/element',valid),
+ STResList261 = [STRes260|STResList260],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU014.xml','./msxsdtest/element',valid,S260),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes261,S261} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU015.xsd','./msxsdtest/element',valid),
+ STResList262 = [STRes261|STResList261],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU015.xml','./msxsdtest/element',valid,S261),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes262,S262} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU017.xsd','./msxsdtest/element',valid),
+ STResList263 = [STRes262|STResList262],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU017.xml','./msxsdtest/element',valid,S262),
+ ITResList101 = [ITRes100|ITResList100],
+
+
+ ?line {STRes263,S263} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU018.xsd','./msxsdtest/element',valid),
+ STResList264 = [STRes263|STResList263],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU018.xml','./msxsdtest/element',valid,S263),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes264,S264} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU019.xsd','./msxsdtest/element',valid),
+ STResList265 = [STRes264|STResList264],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU019.xml','./msxsdtest/element',valid,S264),
+ ITResList103 = [ITRes102|ITResList102],
+
+
+ ?line {STRes265,S265} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU020.xsd','./msxsdtest/element',valid),
+ STResList266 = [STRes265|STResList265],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU020.xml','./msxsdtest/element',valid,S265),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes266,S266} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU021.xsd','./msxsdtest/element',valid),
+ STResList267 = [STRes266|STResList266],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU021.xml','./msxsdtest/element',valid,S266),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes267,S267} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU022.xsd','./msxsdtest/element',valid),
+ STResList268 = [STRes267|STResList267],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU022.xml','./msxsdtest/element',valid,S267),
+ ITResList106 = [ITRes105|ITResList105],
+
+
+ ?line {STRes268,S268} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU023.xsd','./msxsdtest/element',valid),
+ STResList269 = [STRes268|STResList268],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU023.xml','./msxsdtest/element',valid,S268),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes269,S269} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU024.xsd','./msxsdtest/element',valid),
+ STResList270 = [STRes269|STResList269],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU024.xml','./msxsdtest/element',valid,S269),
+ ITResList108 = [ITRes107|ITResList107],
+
+
+ ?line {STRes270,S270} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemU025.xsd','./msxsdtest/element',valid),
+ STResList271 = [STRes270|STResList270],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemU025.xml','./msxsdtest/element',invalid,S270),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes271,S271} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemZ001.xsd','./msxsdtest/element',valid),
+ STResList272 = [STRes271|STResList271],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemZ001.xml','./msxsdtest/element',invalid,S271),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes272,S272} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemZ002.xsd','./msxsdtest/element',valid),
+ STResList273 = [STRes272|STResList272],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemZ002.xml','./msxsdtest/element',valid,S272),
+ ITResList111 = [ITRes110|ITResList110],
+
+
+ ?line {STRes273,S273} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemZ003.xsd','./msxsdtest/element',valid),
+ STResList274 = [STRes273|STResList273],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/element/elemZ003.xml','./msxsdtest/element',valid,S273),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes274,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemZ004.xsd','./msxsdtest/element',valid),
+ STResList275 = [STRes274|STResList274],
+
+
+ ?line {STRes275,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/element/elemZ005.xsd','./msxsdtest/element',valid),
+ STResList276 = [STRes275|STResList275],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList276,ITResList112).
+
+%% Syntax Checking Model Group Tests.
+%% Content Checking Model Group Tests.
+
+group(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA001.xsd','./msxsdtest/Group',valid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA002.xsd','./msxsdtest/Group',valid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA003.xsd','./msxsdtest/Group',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA004.xsd','./msxsdtest/Group',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA005.xsd','./msxsdtest/Group',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA006.xsd','./msxsdtest/Group',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA007.xsd','./msxsdtest/Group',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA008.xsd','./msxsdtest/Group',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA009.xsd','./msxsdtest/Group',invalid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA010.xsd','./msxsdtest/Group',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA011.xsd','./msxsdtest/Group',valid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupA012.xsd','./msxsdtest/Group',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB001.xsd','./msxsdtest/Group',invalid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB002.xsd','./msxsdtest/Group',valid),
+ STResList14 = [STRes13|STResList13],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupB002.xml','./msxsdtest/Group',valid,S13),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB003.xsd','./msxsdtest/Group',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupB003.xml','./msxsdtest/Group',valid,S14),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB004.xsd','./msxsdtest/Group',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupB004.xml','./msxsdtest/Group',valid,S15),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB005.xsd','./msxsdtest/Group',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupB005.xml','./msxsdtest/Group',valid,S16),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB006.xsd','./msxsdtest/Group',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupB006.xml','./msxsdtest/Group',valid,S17),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB007.xsd','./msxsdtest/Group',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB008.xsd','./msxsdtest/Group',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB009.xsd','./msxsdtest/Group',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupB009.xml','./msxsdtest/Group',valid,S20),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB010.xsd','./msxsdtest/Group',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupB010.xml','./msxsdtest/Group',valid,S21),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB011.xsd','./msxsdtest/Group',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB012.xsd','./msxsdtest/Group',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB013.xsd','./msxsdtest/Group',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB014.xsd','./msxsdtest/Group',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB015.xsd','./msxsdtest/Group',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB016.xsd','./msxsdtest/Group',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupB017.xsd','./msxsdtest/Group',valid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC001.xsd','./msxsdtest/Group',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC002.xsd','./msxsdtest/Group',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC003.xsd','./msxsdtest/Group',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC004.xsd','./msxsdtest/Group',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC005.xsd','./msxsdtest/Group',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC006.xsd','./msxsdtest/Group',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC007.xsd','./msxsdtest/Group',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC008.xsd','./msxsdtest/Group',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC009.xsd','./msxsdtest/Group',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC010.xsd','./msxsdtest/Group',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC011.xsd','./msxsdtest/Group',valid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupC012.xsd','./msxsdtest/Group',invalid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupD001.xsd','./msxsdtest/Group',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupD002.xsd','./msxsdtest/Group',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupD003.xsd','./msxsdtest/Group',invalid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupD004.xsd','./msxsdtest/Group',invalid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupE001.xsd','./msxsdtest/Group',valid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupE002.xsd','./msxsdtest/Group',invalid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupE003.xsd','./msxsdtest/Group',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupE003.xml','./msxsdtest/Group',invalid,S47),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes48,S48} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupE004.xsd','./msxsdtest/Group',valid),
+ STResList49 = [STRes48|STResList48],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupE004.xml','./msxsdtest/Group',valid,S48),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupE005.xsd','./msxsdtest/Group',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupE005.xml','./msxsdtest/Group',invalid,S49),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes50,S50} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF001.xsd','./msxsdtest/Group',valid),
+ STResList51 = [STRes50|STResList50],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF001.xml','./msxsdtest/Group',valid,S50),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes51,S51} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF002.xsd','./msxsdtest/Group',valid),
+ STResList52 = [STRes51|STResList51],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF002.xml','./msxsdtest/Group',valid,S51),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF003.xsd','./msxsdtest/Group',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF003.xml','./msxsdtest/Group',invalid,S52),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes53,S53} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF004.xsd','./msxsdtest/Group',valid),
+ STResList54 = [STRes53|STResList53],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF004.xml','./msxsdtest/Group',valid,S53),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes54,S54} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF005.xsd','./msxsdtest/Group',valid),
+ STResList55 = [STRes54|STResList54],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF005.xml','./msxsdtest/Group',valid,S54),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes55,S55} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF006.xsd','./msxsdtest/Group',valid),
+ STResList56 = [STRes55|STResList55],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF006.xml','./msxsdtest/Group',invalid,S55),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes56,S56} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF007.xsd','./msxsdtest/Group',valid),
+ STResList57 = [STRes56|STResList56],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF007.xml','./msxsdtest/Group',valid,S56),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes57,S57} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF008.xsd','./msxsdtest/Group',valid),
+ STResList58 = [STRes57|STResList57],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF008.xml','./msxsdtest/Group',invalid,S57),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes58,S58} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF009.xsd','./msxsdtest/Group',valid),
+ STResList59 = [STRes58|STResList58],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF009.xml','./msxsdtest/Group',valid,S58),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF010.xsd','./msxsdtest/Group',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF010.xml','./msxsdtest/Group',invalid,S59),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes60,S60} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF011.xsd','./msxsdtest/Group',valid),
+ STResList61 = [STRes60|STResList60],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF011.xml','./msxsdtest/Group',valid,S60),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes61,S61} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF012.xsd','./msxsdtest/Group',valid),
+ STResList62 = [STRes61|STResList61],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF012.xml','./msxsdtest/Group',invalid,S61),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes62,S62} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF013.xsd','./msxsdtest/Group',valid),
+ STResList63 = [STRes62|STResList62],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF013.xml','./msxsdtest/Group',invalid,S62),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF014.xsd','./msxsdtest/Group',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF014.xml','./msxsdtest/Group',valid,S63),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes64,S64} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF015.xsd','./msxsdtest/Group',valid),
+ STResList65 = [STRes64|STResList64],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF015.xml','./msxsdtest/Group',invalid,S64),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF016.xsd','./msxsdtest/Group',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF016.xml','./msxsdtest/Group',invalid,S65),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes66,S66} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF017.xsd','./msxsdtest/Group',valid),
+ STResList67 = [STRes66|STResList66],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF017.xml','./msxsdtest/Group',valid,S66),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes67,S67} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF018.xsd','./msxsdtest/Group',valid),
+ STResList68 = [STRes67|STResList67],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF018.xml','./msxsdtest/Group',valid,S67),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes68,S68} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF019.xsd','./msxsdtest/Group',valid),
+ STResList69 = [STRes68|STResList68],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF019.xml','./msxsdtest/Group',invalid,S68),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes69,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF020.xsd','./msxsdtest/Group',invalid),
+ STResList70 = [STRes69|STResList69],
+
+
+ ?line {STRes70,S70} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF021.xsd','./msxsdtest/Group',valid),
+ STResList71 = [STRes70|STResList70],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupF021.xml','./msxsdtest/Group',valid,S70),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes71,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF022.xsd','./msxsdtest/Group',invalid),
+ STResList72 = [STRes71|STResList71],
+
+
+ ?line {STRes72,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF023.xsd','./msxsdtest/Group',invalid),
+ STResList73 = [STRes72|STResList72],
+
+
+ ?line {STRes73,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF024.xsd','./msxsdtest/Group',invalid),
+ STResList74 = [STRes73|STResList73],
+
+
+ ?line {STRes74,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupF025.xsd','./msxsdtest/Group',invalid),
+ STResList75 = [STRes74|STResList74],
+
+
+ ?line {STRes75,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupG001.xsd','./msxsdtest/Group',valid),
+ STResList76 = [STRes75|STResList75],
+
+
+ ?line {STRes76,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupG002.xsd','./msxsdtest/Group',invalid),
+ STResList77 = [STRes76|STResList76],
+
+
+ ?line {STRes77,S77} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupG003.xsd','./msxsdtest/Group',valid),
+ STResList78 = [STRes77|STResList77],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupG003.xml','./msxsdtest/Group',invalid,S77),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes78,S78} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupG004.xsd','./msxsdtest/Group',valid),
+ STResList79 = [STRes78|STResList78],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupG004.xml','./msxsdtest/Group',valid,S78),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes79,S79} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupG005.xsd','./msxsdtest/Group',valid),
+ STResList80 = [STRes79|STResList79],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupG005.xml','./msxsdtest/Group',invalid,S79),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes80,S80} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH001.xsd','./msxsdtest/Group',valid),
+ STResList81 = [STRes80|STResList80],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH001.xml','./msxsdtest/Group',valid,S80),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes81,S81} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH002.xsd','./msxsdtest/Group',valid),
+ STResList82 = [STRes81|STResList81],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH002.xml','./msxsdtest/Group',valid,S81),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes82,S82} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH003.xsd','./msxsdtest/Group',valid),
+ STResList83 = [STRes82|STResList82],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH003.xml','./msxsdtest/Group',invalid,S82),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes83,S83} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH004.xsd','./msxsdtest/Group',valid),
+ STResList84 = [STRes83|STResList83],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH004.xml','./msxsdtest/Group',valid,S83),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes84,S84} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH005.xsd','./msxsdtest/Group',valid),
+ STResList85 = [STRes84|STResList84],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH005.xml','./msxsdtest/Group',valid,S84),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes85,S85} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH006.xsd','./msxsdtest/Group',valid),
+ STResList86 = [STRes85|STResList85],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH006.xml','./msxsdtest/Group',invalid,S85),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes86,S86} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH007.xsd','./msxsdtest/Group',valid),
+ STResList87 = [STRes86|STResList86],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH007.xml','./msxsdtest/Group',valid,S86),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes87,S87} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH008.xsd','./msxsdtest/Group',valid),
+ STResList88 = [STRes87|STResList87],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH008.xml','./msxsdtest/Group',invalid,S87),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes88,S88} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH009.xsd','./msxsdtest/Group',valid),
+ STResList89 = [STRes88|STResList88],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH009.xml','./msxsdtest/Group',valid,S88),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes89,S89} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH010.xsd','./msxsdtest/Group',valid),
+ STResList90 = [STRes89|STResList89],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH010.xml','./msxsdtest/Group',invalid,S89),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes90,S90} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH011.xsd','./msxsdtest/Group',valid),
+ STResList91 = [STRes90|STResList90],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH011.xml','./msxsdtest/Group',valid,S90),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes91,S91} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH012.xsd','./msxsdtest/Group',valid),
+ STResList92 = [STRes91|STResList91],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH012.xml','./msxsdtest/Group',invalid,S91),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes92,S92} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH013.xsd','./msxsdtest/Group',valid),
+ STResList93 = [STRes92|STResList92],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH013.xml','./msxsdtest/Group',invalid,S92),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes93,S93} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH014.xsd','./msxsdtest/Group',valid),
+ STResList94 = [STRes93|STResList93],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH014.xml','./msxsdtest/Group',valid,S93),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes94,S94} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH015.xsd','./msxsdtest/Group',valid),
+ STResList95 = [STRes94|STResList94],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH015.xml','./msxsdtest/Group',invalid,S94),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes95,S95} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH016.xsd','./msxsdtest/Group',valid),
+ STResList96 = [STRes95|STResList95],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH016.xml','./msxsdtest/Group',invalid,S95),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes96,S96} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH017.xsd','./msxsdtest/Group',valid),
+ STResList97 = [STRes96|STResList96],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH017.xml','./msxsdtest/Group',valid,S96),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes97,S97} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH018.xsd','./msxsdtest/Group',valid),
+ STResList98 = [STRes97|STResList97],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH018.xml','./msxsdtest/Group',valid,S97),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes98,S98} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH019.xsd','./msxsdtest/Group',valid),
+ STResList99 = [STRes98|STResList98],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH019.xml','./msxsdtest/Group',invalid,S98),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes99,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH020.xsd','./msxsdtest/Group',invalid),
+ STResList100 = [STRes99|STResList99],
+
+
+ ?line {STRes100,S100} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH021.xsd','./msxsdtest/Group',valid),
+ STResList101 = [STRes100|STResList100],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupH021.xml','./msxsdtest/Group',valid,S100),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes101,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH022.xsd','./msxsdtest/Group',invalid),
+ STResList102 = [STRes101|STResList101],
+
+
+ ?line {STRes102,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH023.xsd','./msxsdtest/Group',invalid),
+ STResList103 = [STRes102|STResList102],
+
+
+ ?line {STRes103,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH024.xsd','./msxsdtest/Group',invalid),
+ STResList104 = [STRes103|STResList103],
+
+
+ ?line {STRes104,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupH025.xsd','./msxsdtest/Group',invalid),
+ STResList105 = [STRes104|STResList104],
+
+
+ ?line {STRes105,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupI001.xsd','./msxsdtest/Group',valid),
+ STResList106 = [STRes105|STResList105],
+
+
+ ?line {STRes106,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupI002.xsd','./msxsdtest/Group',invalid),
+ STResList107 = [STRes106|STResList106],
+
+
+ ?line {STRes107,S107} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupI003.xsd','./msxsdtest/Group',valid),
+ STResList108 = [STRes107|STResList107],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupI003.xml','./msxsdtest/Group',invalid,S107),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes108,S108} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupI004.xsd','./msxsdtest/Group',valid),
+ STResList109 = [STRes108|STResList108],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupI004.xml','./msxsdtest/Group',valid,S108),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes109,S109} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupI005.xsd','./msxsdtest/Group',valid),
+ STResList110 = [STRes109|STResList109],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupI005.xml','./msxsdtest/Group',invalid,S109),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes110,S110} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ001.xsd','./msxsdtest/Group',valid),
+ STResList111 = [STRes110|STResList110],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ001.xml','./msxsdtest/Group',valid,S110),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes111,S111} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ002.xsd','./msxsdtest/Group',valid),
+ STResList112 = [STRes111|STResList111],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ002.xml','./msxsdtest/Group',valid,S111),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes112,S112} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ003.xsd','./msxsdtest/Group',valid),
+ STResList113 = [STRes112|STResList112],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ003.xml','./msxsdtest/Group',invalid,S112),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes113,S113} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ004.xsd','./msxsdtest/Group',valid),
+ STResList114 = [STRes113|STResList113],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ004.xml','./msxsdtest/Group',valid,S113),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes114,S114} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ005.xsd','./msxsdtest/Group',valid),
+ STResList115 = [STRes114|STResList114],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ005.xml','./msxsdtest/Group',valid,S114),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes115,S115} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ006.xsd','./msxsdtest/Group',valid),
+ STResList116 = [STRes115|STResList115],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ006.xml','./msxsdtest/Group',invalid,S115),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes116,S116} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ007.xsd','./msxsdtest/Group',valid),
+ STResList117 = [STRes116|STResList116],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ007.xml','./msxsdtest/Group',valid,S116),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes117,S117} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ008.xsd','./msxsdtest/Group',valid),
+ STResList118 = [STRes117|STResList117],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ008.xml','./msxsdtest/Group',invalid,S117),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes118,S118} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ009.xsd','./msxsdtest/Group',valid),
+ STResList119 = [STRes118|STResList118],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ009.xml','./msxsdtest/Group',valid,S118),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes119,S119} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ010.xsd','./msxsdtest/Group',valid),
+ STResList120 = [STRes119|STResList119],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ010.xml','./msxsdtest/Group',invalid,S119),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes120,S120} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ011.xsd','./msxsdtest/Group',valid),
+ STResList121 = [STRes120|STResList120],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ011.xml','./msxsdtest/Group',valid,S120),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes121,S121} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ012.xsd','./msxsdtest/Group',valid),
+ STResList122 = [STRes121|STResList121],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ012.xml','./msxsdtest/Group',invalid,S121),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes122,S122} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ013.xsd','./msxsdtest/Group',valid),
+ STResList123 = [STRes122|STResList122],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ013.xml','./msxsdtest/Group',invalid,S122),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes123,S123} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ014.xsd','./msxsdtest/Group',valid),
+ STResList124 = [STRes123|STResList123],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ014.xml','./msxsdtest/Group',valid,S123),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes124,S124} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ015.xsd','./msxsdtest/Group',valid),
+ STResList125 = [STRes124|STResList124],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ015.xml','./msxsdtest/Group',invalid,S124),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes125,S125} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ016.xsd','./msxsdtest/Group',valid),
+ STResList126 = [STRes125|STResList125],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ016.xml','./msxsdtest/Group',invalid,S125),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes126,S126} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ017.xsd','./msxsdtest/Group',valid),
+ STResList127 = [STRes126|STResList126],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ017.xml','./msxsdtest/Group',valid,S126),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes127,S127} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ018.xsd','./msxsdtest/Group',valid),
+ STResList128 = [STRes127|STResList127],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ018.xml','./msxsdtest/Group',valid,S127),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes128,S128} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ019.xsd','./msxsdtest/Group',valid),
+ STResList129 = [STRes128|STResList128],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ019.xml','./msxsdtest/Group',invalid,S128),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes129,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ020.xsd','./msxsdtest/Group',invalid),
+ STResList130 = [STRes129|STResList129],
+
+
+ ?line {STRes130,S130} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ021.xsd','./msxsdtest/Group',valid),
+ STResList131 = [STRes130|STResList130],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupJ021.xml','./msxsdtest/Group',valid,S130),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes131,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ022.xsd','./msxsdtest/Group',invalid),
+ STResList132 = [STRes131|STResList131],
+
+
+ ?line {STRes132,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ023.xsd','./msxsdtest/Group',invalid),
+ STResList133 = [STRes132|STResList132],
+
+
+ ?line {STRes133,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ024.xsd','./msxsdtest/Group',invalid),
+ STResList134 = [STRes133|STResList133],
+
+
+ ?line {STRes134,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupJ025.xsd','./msxsdtest/Group',invalid),
+ STResList135 = [STRes134|STResList134],
+
+
+ ?line {STRes135,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupK001.xsd','./msxsdtest/Group',valid),
+ STResList136 = [STRes135|STResList135],
+
+
+ ?line {STRes136,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupK002.xsd','./msxsdtest/Group',invalid),
+ STResList137 = [STRes136|STResList136],
+
+
+ ?line {STRes137,S137} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupK003.xsd','./msxsdtest/Group',valid),
+ STResList138 = [STRes137|STResList137],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupK003.xml','./msxsdtest/Group',invalid,S137),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes138,S138} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupK004.xsd','./msxsdtest/Group',valid),
+ STResList139 = [STRes138|STResList138],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupK004.xml','./msxsdtest/Group',valid,S138),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes139,S139} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupK005.xsd','./msxsdtest/Group',valid),
+ STResList140 = [STRes139|STResList139],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupK005.xml','./msxsdtest/Group',invalid,S139),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes140,S140} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL001.xsd','./msxsdtest/Group',valid),
+ STResList141 = [STRes140|STResList140],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL001.xml','./msxsdtest/Group',valid,S140),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes141,S141} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL002.xsd','./msxsdtest/Group',valid),
+ STResList142 = [STRes141|STResList141],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL002.xml','./msxsdtest/Group',valid,S141),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes142,S142} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL003.xsd','./msxsdtest/Group',valid),
+ STResList143 = [STRes142|STResList142],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL003.xml','./msxsdtest/Group',invalid,S142),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes143,S143} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL004.xsd','./msxsdtest/Group',valid),
+ STResList144 = [STRes143|STResList143],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL004.xml','./msxsdtest/Group',valid,S143),
+ ITResList83 = [ITRes82|ITResList82],
+
+
+ ?line {STRes144,S144} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL005.xsd','./msxsdtest/Group',valid),
+ STResList145 = [STRes144|STResList144],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL005.xml','./msxsdtest/Group',valid,S144),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes145,S145} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL006.xsd','./msxsdtest/Group',valid),
+ STResList146 = [STRes145|STResList145],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL006.xml','./msxsdtest/Group',invalid,S145),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes146,S146} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL007.xsd','./msxsdtest/Group',valid),
+ STResList147 = [STRes146|STResList146],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL007.xml','./msxsdtest/Group',valid,S146),
+ ITResList86 = [ITRes85|ITResList85],
+
+
+ ?line {STRes147,S147} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL008.xsd','./msxsdtest/Group',valid),
+ STResList148 = [STRes147|STResList147],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL008.xml','./msxsdtest/Group',invalid,S147),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes148,S148} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL009.xsd','./msxsdtest/Group',valid),
+ STResList149 = [STRes148|STResList148],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL009.xml','./msxsdtest/Group',valid,S148),
+ ITResList88 = [ITRes87|ITResList87],
+
+
+ ?line {STRes149,S149} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL010.xsd','./msxsdtest/Group',valid),
+ STResList150 = [STRes149|STResList149],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL010.xml','./msxsdtest/Group',invalid,S149),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes150,S150} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL011.xsd','./msxsdtest/Group',valid),
+ STResList151 = [STRes150|STResList150],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL011.xml','./msxsdtest/Group',valid,S150),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes151,S151} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL012.xsd','./msxsdtest/Group',valid),
+ STResList152 = [STRes151|STResList151],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL012.xml','./msxsdtest/Group',invalid,S151),
+ ITResList91 = [ITRes90|ITResList90],
+
+
+ ?line {STRes152,S152} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL013.xsd','./msxsdtest/Group',valid),
+ STResList153 = [STRes152|STResList152],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL013.xml','./msxsdtest/Group',invalid,S152),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes153,S153} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL014.xsd','./msxsdtest/Group',valid),
+ STResList154 = [STRes153|STResList153],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL014.xml','./msxsdtest/Group',valid,S153),
+ ITResList93 = [ITRes92|ITResList92],
+
+
+ ?line {STRes154,S154} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL015.xsd','./msxsdtest/Group',valid),
+ STResList155 = [STRes154|STResList154],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL015.xml','./msxsdtest/Group',invalid,S154),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes155,S155} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL016.xsd','./msxsdtest/Group',valid),
+ STResList156 = [STRes155|STResList155],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL016.xml','./msxsdtest/Group',invalid,S155),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes156,S156} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL017.xsd','./msxsdtest/Group',valid),
+ STResList157 = [STRes156|STResList156],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL017.xml','./msxsdtest/Group',valid,S156),
+ ITResList96 = [ITRes95|ITResList95],
+
+
+ ?line {STRes157,S157} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL018.xsd','./msxsdtest/Group',valid),
+ STResList158 = [STRes157|STResList157],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL018.xml','./msxsdtest/Group',valid,S157),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes158,S158} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL019.xsd','./msxsdtest/Group',valid),
+ STResList159 = [STRes158|STResList158],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL019.xml','./msxsdtest/Group',invalid,S158),
+ ITResList98 = [ITRes97|ITResList97],
+
+
+ ?line {STRes159,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL020.xsd','./msxsdtest/Group',invalid),
+ STResList160 = [STRes159|STResList159],
+
+
+ ?line {STRes160,S160} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL021.xsd','./msxsdtest/Group',valid),
+ STResList161 = [STRes160|STResList160],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupL021.xml','./msxsdtest/Group',valid,S160),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes161,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL022.xsd','./msxsdtest/Group',invalid),
+ STResList162 = [STRes161|STResList161],
+
+
+ ?line {STRes162,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL023.xsd','./msxsdtest/Group',invalid),
+ STResList163 = [STRes162|STResList162],
+
+
+ ?line {STRes163,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL024.xsd','./msxsdtest/Group',invalid),
+ STResList164 = [STRes163|STResList163],
+
+
+ ?line {STRes164,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupL025.xsd','./msxsdtest/Group',invalid),
+ STResList165 = [STRes164|STResList164],
+
+
+ ?line {STRes165,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupM001.xsd','./msxsdtest/Group',valid),
+ STResList166 = [STRes165|STResList165],
+
+
+ ?line {STRes166,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupM002.xsd','./msxsdtest/Group',invalid),
+ STResList167 = [STRes166|STResList166],
+
+
+ ?line {STRes167,S167} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupM003.xsd','./msxsdtest/Group',valid),
+ STResList168 = [STRes167|STResList167],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupM003.xml','./msxsdtest/Group',invalid,S167),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes168,S168} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupM004.xsd','./msxsdtest/Group',valid),
+ STResList169 = [STRes168|STResList168],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupM004.xml','./msxsdtest/Group',valid,S168),
+ ITResList101 = [ITRes100|ITResList100],
+
+
+ ?line {STRes169,S169} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupM005.xsd','./msxsdtest/Group',valid),
+ STResList170 = [STRes169|STResList169],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupM005.xml','./msxsdtest/Group',invalid,S169),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes170,S170} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN001.xsd','./msxsdtest/Group',valid),
+ STResList171 = [STRes170|STResList170],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN001.xml','./msxsdtest/Group',valid,S170),
+ ITResList103 = [ITRes102|ITResList102],
+
+
+ ?line {STRes171,S171} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN002.xsd','./msxsdtest/Group',valid),
+ STResList172 = [STRes171|STResList171],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN002.xml','./msxsdtest/Group',valid,S171),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes172,S172} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN003.xsd','./msxsdtest/Group',valid),
+ STResList173 = [STRes172|STResList172],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN003.xml','./msxsdtest/Group',invalid,S172),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes173,S173} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN004.xsd','./msxsdtest/Group',valid),
+ STResList174 = [STRes173|STResList173],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN004.xml','./msxsdtest/Group',valid,S173),
+ ITResList106 = [ITRes105|ITResList105],
+
+
+ ?line {STRes174,S174} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN005.xsd','./msxsdtest/Group',valid),
+ STResList175 = [STRes174|STResList174],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN005.xml','./msxsdtest/Group',valid,S174),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes175,S175} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN006.xsd','./msxsdtest/Group',valid),
+ STResList176 = [STRes175|STResList175],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN006.xml','./msxsdtest/Group',invalid,S175),
+ ITResList108 = [ITRes107|ITResList107],
+
+
+ ?line {STRes176,S176} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN007.xsd','./msxsdtest/Group',valid),
+ STResList177 = [STRes176|STResList176],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN007.xml','./msxsdtest/Group',valid,S176),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes177,S177} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN008.xsd','./msxsdtest/Group',valid),
+ STResList178 = [STRes177|STResList177],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN008.xml','./msxsdtest/Group',invalid,S177),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes178,S178} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN009.xsd','./msxsdtest/Group',valid),
+ STResList179 = [STRes178|STResList178],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN009.xml','./msxsdtest/Group',valid,S178),
+ ITResList111 = [ITRes110|ITResList110],
+
+
+ ?line {STRes179,S179} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN010.xsd','./msxsdtest/Group',valid),
+ STResList180 = [STRes179|STResList179],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN010.xml','./msxsdtest/Group',invalid,S179),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes180,S180} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN011.xsd','./msxsdtest/Group',valid),
+ STResList181 = [STRes180|STResList180],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN011.xml','./msxsdtest/Group',valid,S180),
+ ITResList113 = [ITRes112|ITResList112],
+
+
+ ?line {STRes181,S181} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN012.xsd','./msxsdtest/Group',valid),
+ STResList182 = [STRes181|STResList181],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN012.xml','./msxsdtest/Group',invalid,S181),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes182,S182} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN013.xsd','./msxsdtest/Group',valid),
+ STResList183 = [STRes182|STResList182],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN013.xml','./msxsdtest/Group',invalid,S182),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes183,S183} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN014.xsd','./msxsdtest/Group',valid),
+ STResList184 = [STRes183|STResList183],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN014.xml','./msxsdtest/Group',valid,S183),
+ ITResList116 = [ITRes115|ITResList115],
+
+
+ ?line {STRes184,S184} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN015.xsd','./msxsdtest/Group',valid),
+ STResList185 = [STRes184|STResList184],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN015.xml','./msxsdtest/Group',invalid,S184),
+ ITResList117 = [ITRes116|ITResList116],
+
+
+ ?line {STRes185,S185} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN016.xsd','./msxsdtest/Group',valid),
+ STResList186 = [STRes185|STResList185],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN016.xml','./msxsdtest/Group',invalid,S185),
+ ITResList118 = [ITRes117|ITResList117],
+
+
+ ?line {STRes186,S186} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN017.xsd','./msxsdtest/Group',valid),
+ STResList187 = [STRes186|STResList186],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN017.xml','./msxsdtest/Group',valid,S186),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes187,S187} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN018.xsd','./msxsdtest/Group',valid),
+ STResList188 = [STRes187|STResList187],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN018.xml','./msxsdtest/Group',valid,S187),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes188,S188} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN019.xsd','./msxsdtest/Group',valid),
+ STResList189 = [STRes188|STResList188],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN019.xml','./msxsdtest/Group',invalid,S188),
+ ITResList121 = [ITRes120|ITResList120],
+
+
+ ?line {STRes189,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN020.xsd','./msxsdtest/Group',invalid),
+ STResList190 = [STRes189|STResList189],
+
+
+ ?line {STRes190,S190} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN021.xsd','./msxsdtest/Group',valid),
+ STResList191 = [STRes190|STResList190],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupN021.xml','./msxsdtest/Group',valid,S190),
+ ITResList122 = [ITRes121|ITResList121],
+
+
+ ?line {STRes191,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN022.xsd','./msxsdtest/Group',invalid),
+ STResList192 = [STRes191|STResList191],
+
+
+ ?line {STRes192,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN023.xsd','./msxsdtest/Group',invalid),
+ STResList193 = [STRes192|STResList192],
+
+
+ ?line {STRes193,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN024.xsd','./msxsdtest/Group',invalid),
+ STResList194 = [STRes193|STResList193],
+
+
+ ?line {STRes194,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupN025.xsd','./msxsdtest/Group',invalid),
+ STResList195 = [STRes194|STResList194],
+
+
+ ?line {STRes195,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO001.xsd','./msxsdtest/Group',valid),
+ STResList196 = [STRes195|STResList195],
+
+
+ ?line {STRes196,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO002.xsd','./msxsdtest/Group',invalid),
+ STResList197 = [STRes196|STResList196],
+
+
+ ?line {STRes197,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO003.xsd','./msxsdtest/Group',invalid),
+ STResList198 = [STRes197|STResList197],
+
+
+ ?line {STRes198,S198} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO004.xsd','./msxsdtest/Group',valid),
+ STResList199 = [STRes198|STResList198],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupO004.xml','./msxsdtest/Group',valid,S198),
+ ITResList123 = [ITRes122|ITResList122],
+
+
+ ?line {STRes199,S199} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO005.xsd','./msxsdtest/Group',valid),
+ STResList200 = [STRes199|STResList199],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupO005.xml','./msxsdtest/Group',invalid,S199),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes200,S200} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO006.xsd','./msxsdtest/Group',valid),
+ STResList201 = [STRes200|STResList200],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupO006.xml','./msxsdtest/Group',valid,S200),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes201,S201} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO007.xsd','./msxsdtest/Group',valid),
+ STResList202 = [STRes201|STResList201],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupO007.xml','./msxsdtest/Group',invalid,S201),
+ ITResList126 = [ITRes125|ITResList125],
+
+
+ ?line {STRes202,S202} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO008.xsd','./msxsdtest/Group',valid),
+ STResList203 = [STRes202|STResList202],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupO008.xml','./msxsdtest/Group',valid,S202),
+ ITResList127 = [ITRes126|ITResList126],
+
+
+ ?line {STRes203,S203} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO009.xsd','./msxsdtest/Group',valid),
+ STResList204 = [STRes203|STResList203],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Group/groupO009.xml','./msxsdtest/Group',invalid,S203),
+ ITResList128 = [ITRes127|ITResList127],
+
+
+ ?line {STRes204,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO010.xsd','./msxsdtest/Group',invalid),
+ STResList205 = [STRes204|STResList204],
+
+
+ ?line {STRes205,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO011.xsd','./msxsdtest/Group',invalid),
+ STResList206 = [STRes205|STResList205],
+
+
+ ?line {STRes206,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO012.xsd','./msxsdtest/Group',invalid),
+ STResList207 = [STRes206|STResList206],
+
+
+ ?line {STRes207,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO013.xsd','./msxsdtest/Group',invalid),
+ STResList208 = [STRes207|STResList207],
+
+
+ ?line {STRes208,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO014.xsd','./msxsdtest/Group',valid),
+ STResList209 = [STRes208|STResList208],
+
+
+ ?line {STRes209,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO015.xsd','./msxsdtest/Group',invalid),
+ STResList210 = [STRes209|STResList209],
+
+
+ ?line {STRes210,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO016.xsd','./msxsdtest/Group',invalid),
+ STResList211 = [STRes210|STResList210],
+
+
+ ?line {STRes211,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO017.xsd','./msxsdtest/Group',invalid),
+ STResList212 = [STRes211|STResList211],
+
+
+ ?line {STRes212,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO018.xsd','./msxsdtest/Group',invalid),
+ STResList213 = [STRes212|STResList212],
+
+
+ ?line {STRes213,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO019.xsd','./msxsdtest/Group',invalid),
+ STResList214 = [STRes213|STResList213],
+
+
+ ?line {STRes214,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO020.xsd','./msxsdtest/Group',invalid),
+ STResList215 = [STRes214|STResList214],
+
+
+ ?line {STRes215,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO021.xsd','./msxsdtest/Group',invalid),
+ STResList216 = [STRes215|STResList215],
+
+
+ ?line {STRes216,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO022.xsd','./msxsdtest/Group',invalid),
+ STResList217 = [STRes216|STResList216],
+
+
+ ?line {STRes217,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO023.xsd','./msxsdtest/Group',invalid),
+ STResList218 = [STRes217|STResList217],
+
+
+ ?line {STRes218,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO024.xsd','./msxsdtest/Group',invalid),
+ STResList219 = [STRes218|STResList218],
+
+
+ ?line {STRes219,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO025.xsd','./msxsdtest/Group',invalid),
+ STResList220 = [STRes219|STResList219],
+
+
+ ?line {STRes220,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO026.xsd','./msxsdtest/Group',invalid),
+ STResList221 = [STRes220|STResList220],
+
+
+ ?line {STRes221,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Group/groupO027.xsd','./msxsdtest/Group',invalid),
+ STResList222 = [STRes221|STResList221],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList222,ITResList128).
+
+%% 3.11.1 The Identity-constraint Definition Schema Component.
+
+idc_(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_string.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_token.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_language.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S3),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S4),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S5),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S6),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S7),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S8),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S9),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S10),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S11),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S12),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S13),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S14),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S15),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S16),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S17),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S18),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S19),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S20),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S21),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S22),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S23),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S24),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S25),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S26),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S27),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S28),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S29),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S30),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S31),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_dateTime.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_dateTime.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S32),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_time.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_time.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S33),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_date.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_date.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S34),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gYearMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gYearMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S35),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gYear.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gYear.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S36),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes37,S37} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gMonthDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList38 = [STRes37|STResList37],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gMonthDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S37),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes38,S38} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList39 = [STRes38|STResList38],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S38),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_string_gMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S39),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_string.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S40),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes41,S41} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList42 = [STRes41|STResList41],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S41),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes42,S42} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList43 = [STRes42|STResList42],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_token.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S42),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes43,S43} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList44 = [STRes43|STResList43],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_language.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S43),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes44,S44} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList45 = [STRes44|STResList44],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S44),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes45,S45} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList46 = [STRes45|STResList45],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S45),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes46,S46} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList47 = [STRes46|STResList46],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S46),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S47),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes48,S48} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList49 = [STRes48|STResList48],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S48),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S49),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes50,S50} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList51 = [STRes50|STResList50],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S50),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes51,S51} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList52 = [STRes51|STResList51],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S51),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S52),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes53,S53} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList54 = [STRes53|STResList53],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S53),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes54,S54} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList55 = [STRes54|STResList54],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S54),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes55,S55} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList56 = [STRes55|STResList55],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S55),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes56,S56} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList57 = [STRes56|STResList56],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S56),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes57,S57} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList58 = [STRes57|STResList57],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S57),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes58,S58} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList59 = [STRes58|STResList58],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S58),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S59),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes60,S60} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList61 = [STRes60|STResList60],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S60),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes61,S61} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList62 = [STRes61|STResList61],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S61),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes62,S62} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList63 = [STRes62|STResList62],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S62),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S63),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes64,S64} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList65 = [STRes64|STResList64],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S64),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S65),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes66,S66} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList67 = [STRes66|STResList66],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S66),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes67,S67} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList68 = [STRes67|STResList67],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S67),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes68,S68} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList69 = [STRes68|STResList68],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S68),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes69,S69} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList70 = [STRes69|STResList69],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S69),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes70,S70} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList71 = [STRes70|STResList70],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S70),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes71,S71} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList72 = [STRes71|STResList71],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S71),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes72,S72} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_dateTime.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList73 = [STRes72|STResList72],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_dateTime.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S72),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes73,S73} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_time.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList74 = [STRes73|STResList73],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_time.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S73),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes74,S74} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_date.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList75 = [STRes74|STResList74],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_date.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S74),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes75,S75} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gYearMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList76 = [STRes75|STResList75],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gYearMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S75),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes76,S76} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gYear.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList77 = [STRes76|STResList76],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gYear.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S76),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes77,S77} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gMonthDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList78 = [STRes77|STResList77],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gMonthDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S77),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes78,S78} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList79 = [STRes78|STResList78],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S78),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes79,S79} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList80 = [STRes79|STResList79],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_normalizedString_gMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S79),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes80,S80} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList81 = [STRes80|STResList80],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_string.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S80),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes81,S81} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList82 = [STRes81|STResList81],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S81),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes82,S82} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList83 = [STRes82|STResList82],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_token.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S82),
+ ITResList83 = [ITRes82|ITResList82],
+
+
+ ?line {STRes83,S83} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList84 = [STRes83|STResList83],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_language.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S83),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes84,S84} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList85 = [STRes84|STResList84],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S84),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes85,S85} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList86 = [STRes85|STResList85],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S85),
+ ITResList86 = [ITRes85|ITResList85],
+
+
+ ?line {STRes86,S86} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList87 = [STRes86|STResList86],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S86),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes87,S87} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList88 = [STRes87|STResList87],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S87),
+ ITResList88 = [ITRes87|ITResList87],
+
+
+ ?line {STRes88,S88} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList89 = [STRes88|STResList88],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S88),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes89,S89} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList90 = [STRes89|STResList89],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S89),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes90,S90} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList91 = [STRes90|STResList90],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S90),
+ ITResList91 = [ITRes90|ITResList90],
+
+
+ ?line {STRes91,S91} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList92 = [STRes91|STResList91],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S91),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes92,S92} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList93 = [STRes92|STResList92],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S92),
+ ITResList93 = [ITRes92|ITResList92],
+
+
+ ?line {STRes93,S93} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList94 = [STRes93|STResList93],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S93),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes94,S94} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList95 = [STRes94|STResList94],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S94),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes95,S95} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList96 = [STRes95|STResList95],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S95),
+ ITResList96 = [ITRes95|ITResList95],
+
+
+ ?line {STRes96,S96} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList97 = [STRes96|STResList96],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S96),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes97,S97} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList98 = [STRes97|STResList97],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S97),
+ ITResList98 = [ITRes97|ITResList97],
+
+
+ ?line {STRes98,S98} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList99 = [STRes98|STResList98],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S98),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes99,S99} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList100 = [STRes99|STResList99],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S99),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes100,S100} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList101 = [STRes100|STResList100],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S100),
+ ITResList101 = [ITRes100|ITResList100],
+
+
+ ?line {STRes101,S101} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList102 = [STRes101|STResList101],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S101),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes102,S102} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList103 = [STRes102|STResList102],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S102),
+ ITResList103 = [ITRes102|ITResList102],
+
+
+ ?line {STRes103,S103} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList104 = [STRes103|STResList103],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S103),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes104,S104} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList105 = [STRes104|STResList104],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S104),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes105,S105} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList106 = [STRes105|STResList105],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S105),
+ ITResList106 = [ITRes105|ITResList105],
+
+
+ ?line {STRes106,S106} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList107 = [STRes106|STResList106],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S106),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes107,S107} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList108 = [STRes107|STResList107],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S107),
+ ITResList108 = [ITRes107|ITResList107],
+
+
+ ?line {STRes108,S108} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList109 = [STRes108|STResList108],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S108),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes109,S109} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList110 = [STRes109|STResList109],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S109),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes110,S110} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList111 = [STRes110|STResList110],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S110),
+ ITResList111 = [ITRes110|ITResList110],
+
+
+ ?line {STRes111,S111} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList112 = [STRes111|STResList111],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S111),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes112,S112} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_dateTime.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList113 = [STRes112|STResList112],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_dateTime.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S112),
+ ITResList113 = [ITRes112|ITResList112],
+
+
+ ?line {STRes113,S113} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_time.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList114 = [STRes113|STResList113],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_time.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S113),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes114,S114} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_date.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList115 = [STRes114|STResList114],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_date.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S114),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes115,S115} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gYearMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList116 = [STRes115|STResList115],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gYearMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S115),
+ ITResList116 = [ITRes115|ITResList115],
+
+
+ ?line {STRes116,S116} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gYear.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList117 = [STRes116|STResList116],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gYear.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S116),
+ ITResList117 = [ITRes116|ITResList116],
+
+
+ ?line {STRes117,S117} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gMonthDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList118 = [STRes117|STResList117],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gMonthDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S117),
+ ITResList118 = [ITRes117|ITResList117],
+
+
+ ?line {STRes118,S118} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList119 = [STRes118|STResList118],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S118),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes119,S119} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList120 = [STRes119|STResList119],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_token_gMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S119),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes120,S120} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList121 = [STRes120|STResList120],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_string.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S120),
+ ITResList121 = [ITRes120|ITResList120],
+
+
+ ?line {STRes121,S121} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList122 = [STRes121|STResList121],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S121),
+ ITResList122 = [ITRes121|ITResList121],
+
+
+ ?line {STRes122,S122} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList123 = [STRes122|STResList122],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_token.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S122),
+ ITResList123 = [ITRes122|ITResList122],
+
+
+ ?line {STRes123,S123} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList124 = [STRes123|STResList123],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_language.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S123),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes124,S124} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList125 = [STRes124|STResList124],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S124),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes125,S125} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList126 = [STRes125|STResList125],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S125),
+ ITResList126 = [ITRes125|ITResList125],
+
+
+ ?line {STRes126,S126} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList127 = [STRes126|STResList126],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S126),
+ ITResList127 = [ITRes126|ITResList126],
+
+
+ ?line {STRes127,S127} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList128 = [STRes127|STResList127],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S127),
+ ITResList128 = [ITRes127|ITResList127],
+
+
+ ?line {STRes128,S128} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_IDREFS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList129 = [STRes128|STResList128],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_IDREFS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S128),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes129,S129} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList130 = [STRes129|STResList129],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S129),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ ?line {STRes130,S130} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList131 = [STRes130|STResList130],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S130),
+ ITResList131 = [ITRes130|ITResList130],
+
+
+ ?line {STRes131,S131} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList132 = [STRes131|STResList131],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S131),
+ ITResList132 = [ITRes131|ITResList131],
+
+
+ ?line {STRes132,S132} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList133 = [STRes132|STResList132],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S132),
+ ITResList133 = [ITRes132|ITResList132],
+
+
+ ?line {STRes133,S133} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList134 = [STRes133|STResList133],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_language_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S133),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes134,S134} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList135 = [STRes134|STResList134],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_string.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S134),
+ ITResList135 = [ITRes134|ITResList134],
+
+
+ ?line {STRes135,S135} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList136 = [STRes135|STResList135],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S135),
+ ITResList136 = [ITRes135|ITResList135],
+
+
+ ?line {STRes136,S136} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList137 = [STRes136|STResList136],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_token.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S136),
+ ITResList137 = [ITRes136|ITResList136],
+
+
+ ?line {STRes137,S137} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList138 = [STRes137|STResList137],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S137),
+ ITResList138 = [ITRes137|ITResList137],
+
+
+ ?line {STRes138,S138} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList139 = [STRes138|STResList138],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S138),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes139,S139} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList140 = [STRes139|STResList139],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S139),
+ ITResList140 = [ITRes139|ITResList139],
+
+
+ ?line {STRes140,S140} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList141 = [STRes140|STResList140],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S140),
+ ITResList141 = [ITRes140|ITResList140],
+
+
+ ?line {STRes141,S141} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList142 = [STRes141|STResList141],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S141),
+ ITResList142 = [ITRes141|ITResList141],
+
+
+ ?line {STRes142,S142} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList143 = [STRes142|STResList142],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S142),
+ ITResList143 = [ITRes142|ITResList142],
+
+
+ ?line {STRes143,S143} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList144 = [STRes143|STResList143],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S143),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes144,S144} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList145 = [STRes144|STResList144],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S144),
+ ITResList145 = [ITRes144|ITResList144],
+
+
+ ?line {STRes145,S145} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList146 = [STRes145|STResList145],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S145),
+ ITResList146 = [ITRes145|ITResList145],
+
+
+ ?line {STRes146,S146} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList147 = [STRes146|STResList146],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S146),
+ ITResList147 = [ITRes146|ITResList146],
+
+
+ ?line {STRes147,S147} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList148 = [STRes147|STResList147],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S147),
+ ITResList148 = [ITRes147|ITResList147],
+
+
+ ?line {STRes148,S148} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList149 = [STRes148|STResList148],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_Name_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S148),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes149,S149} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList150 = [STRes149|STResList149],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_string.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S149),
+ ITResList150 = [ITRes149|ITResList149],
+
+
+ ?line {STRes150,S150} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList151 = [STRes150|STResList150],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S150),
+ ITResList151 = [ITRes150|ITResList150],
+
+
+ ?line {STRes151,S151} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList152 = [STRes151|STResList151],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_token.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S151),
+ ITResList152 = [ITRes151|ITResList151],
+
+
+ ?line {STRes152,S152} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList153 = [STRes152|STResList152],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S152),
+ ITResList153 = [ITRes152|ITResList152],
+
+
+ ?line {STRes153,S153} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList154 = [STRes153|STResList153],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S153),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes154,S154} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList155 = [STRes154|STResList154],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S154),
+ ITResList155 = [ITRes154|ITResList154],
+
+
+ ?line {STRes155,S155} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList156 = [STRes155|STResList155],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S155),
+ ITResList156 = [ITRes155|ITResList155],
+
+
+ ?line {STRes156,S156} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList157 = [STRes156|STResList156],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S156),
+ ITResList157 = [ITRes156|ITResList156],
+
+
+ ?line {STRes157,S157} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList158 = [STRes157|STResList157],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S157),
+ ITResList158 = [ITRes157|ITResList157],
+
+
+ ?line {STRes158,S158} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList159 = [STRes158|STResList158],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S158),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes159,S159} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList160 = [STRes159|STResList159],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S159),
+ ITResList160 = [ITRes159|ITResList159],
+
+
+ ?line {STRes160,S160} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList161 = [STRes160|STResList160],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S160),
+ ITResList161 = [ITRes160|ITResList160],
+
+
+ ?line {STRes161,S161} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList162 = [STRes161|STResList161],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S161),
+ ITResList162 = [ITRes161|ITResList161],
+
+
+ ?line {STRes162,S162} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList163 = [STRes162|STResList162],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S162),
+ ITResList163 = [ITRes162|ITResList162],
+
+
+ ?line {STRes163,S163} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList164 = [STRes163|STResList163],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NCName_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S163),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes164,S164} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList165 = [STRes164|STResList164],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_string.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S164),
+ ITResList165 = [ITRes164|ITResList164],
+
+
+ ?line {STRes165,S165} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList166 = [STRes165|STResList165],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S165),
+ ITResList166 = [ITRes165|ITResList165],
+
+
+ ?line {STRes166,S166} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList167 = [STRes166|STResList166],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_token.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S166),
+ ITResList167 = [ITRes166|ITResList166],
+
+
+ ?line {STRes167,S167} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList168 = [STRes167|STResList167],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S167),
+ ITResList168 = [ITRes167|ITResList167],
+
+
+ ?line {STRes168,S168} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList169 = [STRes168|STResList168],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S168),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ ?line {STRes169,S169} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList170 = [STRes169|STResList169],
+ ?line ITRes169 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S169),
+ ITResList170 = [ITRes169|ITResList169],
+
+
+ ?line {STRes170,S170} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList171 = [STRes170|STResList170],
+ ?line ITRes170 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S170),
+ ITResList171 = [ITRes170|ITResList170],
+
+
+ ?line {STRes171,S171} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList172 = [STRes171|STResList171],
+ ?line ITRes171 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S171),
+ ITResList172 = [ITRes171|ITResList171],
+
+
+ ?line {STRes172,S172} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_IDREFS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList173 = [STRes172|STResList172],
+ ?line ITRes172 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_IDREFS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S172),
+ ITResList173 = [ITRes172|ITResList172],
+
+
+ ?line {STRes173,S173} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList174 = [STRes173|STResList173],
+ ?line ITRes173 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S173),
+ ITResList174 = [ITRes173|ITResList173],
+
+
+ ?line {STRes174,S174} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList175 = [STRes174|STResList174],
+ ?line ITRes174 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S174),
+ ITResList175 = [ITRes174|ITResList174],
+
+
+ ?line {STRes175,S175} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList176 = [STRes175|STResList175],
+ ?line ITRes175 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S175),
+ ITResList176 = [ITRes175|ITResList175],
+
+
+ ?line {STRes176,S176} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList177 = [STRes176|STResList176],
+ ?line ITRes176 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S176),
+ ITResList177 = [ITRes176|ITResList176],
+
+
+ ?line {STRes177,S177} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList178 = [STRes177|STResList177],
+ ?line ITRes177 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S177),
+ ITResList178 = [ITRes177|ITResList177],
+
+
+ ?line {STRes178,S178} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList179 = [STRes178|STResList178],
+ ?line ITRes178 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S178),
+ ITResList179 = [ITRes178|ITResList178],
+
+
+ ?line {STRes179,S179} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList180 = [STRes179|STResList179],
+ ?line ITRes179 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_ID_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S179),
+ ITResList180 = [ITRes179|ITResList179],
+
+
+ ?line {STRes180,S180} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList181 = [STRes180|STResList180],
+ ?line ITRes180 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_string.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S180),
+ ITResList181 = [ITRes180|ITResList180],
+
+
+ ?line {STRes181,S181} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList182 = [STRes181|STResList181],
+ ?line ITRes181 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S181),
+ ITResList182 = [ITRes181|ITResList181],
+
+
+ ?line {STRes182,S182} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList183 = [STRes182|STResList182],
+ ?line ITRes182 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_token.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S182),
+ ITResList183 = [ITRes182|ITResList182],
+
+
+ ?line {STRes183,S183} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList184 = [STRes183|STResList183],
+ ?line ITRes183 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S183),
+ ITResList184 = [ITRes183|ITResList183],
+
+
+ ?line {STRes184,S184} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList185 = [STRes184|STResList184],
+ ?line ITRes184 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S184),
+ ITResList185 = [ITRes184|ITResList184],
+
+
+ ?line {STRes185,S185} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList186 = [STRes185|STResList185],
+ ?line ITRes185 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S185),
+ ITResList186 = [ITRes185|ITResList185],
+
+
+ ?line {STRes186,S186} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList187 = [STRes186|STResList186],
+ ?line ITRes186 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S186),
+ ITResList187 = [ITRes186|ITResList186],
+
+
+ ?line {STRes187,S187} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList188 = [STRes187|STResList187],
+ ?line ITRes187 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S187),
+ ITResList188 = [ITRes187|ITResList187],
+
+
+ ?line {STRes188,S188} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList189 = [STRes188|STResList188],
+ ?line ITRes188 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S188),
+ ITResList189 = [ITRes188|ITResList188],
+
+
+ ?line {STRes189,S189} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList190 = [STRes189|STResList189],
+ ?line ITRes189 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S189),
+ ITResList190 = [ITRes189|ITResList189],
+
+
+ ?line {STRes190,S190} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList191 = [STRes190|STResList190],
+ ?line ITRes190 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S190),
+ ITResList191 = [ITRes190|ITResList190],
+
+
+ ?line {STRes191,S191} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList192 = [STRes191|STResList191],
+ ?line ITRes191 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S191),
+ ITResList192 = [ITRes191|ITResList191],
+
+
+ ?line {STRes192,S192} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList193 = [STRes192|STResList192],
+ ?line ITRes192 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S192),
+ ITResList193 = [ITRes192|ITResList192],
+
+
+ ?line {STRes193,S193} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList194 = [STRes193|STResList193],
+ ?line ITRes193 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S193),
+ ITResList194 = [ITRes193|ITResList193],
+
+
+ ?line {STRes194,S194} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList195 = [STRes194|STResList194],
+ ?line ITRes194 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREF_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S194),
+ ITResList195 = [ITRes194|ITResList194],
+
+
+ ?line {STRes195,S195} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList196 = [STRes195|STResList195],
+ ?line ITRes195 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S195),
+ ITResList196 = [ITRes195|ITResList195],
+
+
+ ?line {STRes196,S196} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList197 = [STRes196|STResList196],
+ ?line ITRes196 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S196),
+ ITResList197 = [ITRes196|ITResList196],
+
+
+ ?line {STRes197,S197} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList198 = [STRes197|STResList197],
+ ?line ITRes197 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S197),
+ ITResList198 = [ITRes197|ITResList197],
+
+
+ ?line {STRes198,S198} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList199 = [STRes198|STResList198],
+ ?line ITRes198 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S198),
+ ITResList199 = [ITRes198|ITResList198],
+
+
+ ?line {STRes199,S199} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList200 = [STRes199|STResList199],
+ ?line ITRes199 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S199),
+ ITResList200 = [ITRes199|ITResList199],
+
+
+ ?line {STRes200,S200} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList201 = [STRes200|STResList200],
+ ?line ITRes200 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S200),
+ ITResList201 = [ITRes200|ITResList200],
+
+
+ ?line {STRes201,S201} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList202 = [STRes201|STResList201],
+ ?line ITRes201 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S201),
+ ITResList202 = [ITRes201|ITResList201],
+
+
+ ?line {STRes202,S202} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList203 = [STRes202|STResList202],
+ ?line ITRes202 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S202),
+ ITResList203 = [ITRes202|ITResList202],
+
+
+ ?line {STRes203,S203} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList204 = [STRes203|STResList203],
+ ?line ITRes203 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_IDREFS_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S203),
+ ITResList204 = [ITRes203|ITResList203],
+
+
+ ?line {STRes204,S204} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList205 = [STRes204|STResList204],
+ ?line ITRes204 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_string.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S204),
+ ITResList205 = [ITRes204|ITResList204],
+
+
+ ?line {STRes205,S205} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList206 = [STRes205|STResList205],
+ ?line ITRes205 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S205),
+ ITResList206 = [ITRes205|ITResList205],
+
+
+ ?line {STRes206,S206} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList207 = [STRes206|STResList206],
+ ?line ITRes206 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_token.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S206),
+ ITResList207 = [ITRes206|ITResList206],
+
+
+ ?line {STRes207,S207} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList208 = [STRes207|STResList207],
+ ?line ITRes207 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S207),
+ ITResList208 = [ITRes207|ITResList207],
+
+
+ ?line {STRes208,S208} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList209 = [STRes208|STResList208],
+ ?line ITRes208 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S208),
+ ITResList209 = [ITRes208|ITResList208],
+
+
+ ?line {STRes209,S209} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList210 = [STRes209|STResList209],
+ ?line ITRes209 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S209),
+ ITResList210 = [ITRes209|ITResList209],
+
+
+ ?line {STRes210,S210} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList211 = [STRes210|STResList210],
+ ?line ITRes210 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S210),
+ ITResList211 = [ITRes210|ITResList210],
+
+
+ ?line {STRes211,S211} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList212 = [STRes211|STResList211],
+ ?line ITRes211 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S211),
+ ITResList212 = [ITRes211|ITResList211],
+
+
+ ?line {STRes212,S212} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_IDREFS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList213 = [STRes212|STResList212],
+ ?line ITRes212 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_IDREFS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S212),
+ ITResList213 = [ITRes212|ITResList212],
+
+
+ ?line {STRes213,S213} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList214 = [STRes213|STResList213],
+ ?line ITRes213 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S213),
+ ITResList214 = [ITRes213|ITResList213],
+
+
+ ?line {STRes214,S214} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList215 = [STRes214|STResList214],
+ ?line ITRes214 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S214),
+ ITResList215 = [ITRes214|ITResList214],
+
+
+ ?line {STRes215,S215} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList216 = [STRes215|STResList215],
+ ?line ITRes215 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S215),
+ ITResList216 = [ITRes215|ITResList215],
+
+
+ ?line {STRes216,S216} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList217 = [STRes216|STResList216],
+ ?line ITRes216 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S216),
+ ITResList217 = [ITRes216|ITResList216],
+
+
+ ?line {STRes217,S217} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList218 = [STRes217|STResList217],
+ ?line ITRes217 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S217),
+ ITResList218 = [ITRes217|ITResList217],
+
+
+ ?line {STRes218,S218} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList219 = [STRes218|STResList218],
+ ?line ITRes218 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S218),
+ ITResList219 = [ITRes218|ITResList218],
+
+
+ ?line {STRes219,S219} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList220 = [STRes219|STResList219],
+ ?line ITRes219 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S219),
+ ITResList220 = [ITRes219|ITResList219],
+
+
+ ?line {STRes220,S220} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList221 = [STRes220|STResList220],
+ ?line ITRes220 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S220),
+ ITResList221 = [ITRes220|ITResList220],
+
+
+ ?line {STRes221,S221} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList222 = [STRes221|STResList221],
+ ?line ITRes221 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S221),
+ ITResList222 = [ITRes221|ITResList221],
+
+
+ ?line {STRes222,S222} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList223 = [STRes222|STResList222],
+ ?line ITRes222 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S222),
+ ITResList223 = [ITRes222|ITResList222],
+
+
+ ?line {STRes223,S223} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList224 = [STRes223|STResList223],
+ ?line ITRes223 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S223),
+ ITResList224 = [ITRes223|ITResList223],
+
+
+ ?line {STRes224,S224} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList225 = [STRes224|STResList224],
+ ?line ITRes224 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S224),
+ ITResList225 = [ITRes224|ITResList224],
+
+
+ ?line {STRes225,S225} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList226 = [STRes225|STResList225],
+ ?line ITRes225 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S225),
+ ITResList226 = [ITRes225|ITResList225],
+
+
+ ?line {STRes226,S226} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList227 = [STRes226|STResList226],
+ ?line ITRes226 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S226),
+ ITResList227 = [ITRes226|ITResList226],
+
+
+ ?line {STRes227,S227} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList228 = [STRes227|STResList227],
+ ?line ITRes227 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S227),
+ ITResList228 = [ITRes227|ITResList227],
+
+
+ ?line {STRes228,S228} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList229 = [STRes228|STResList228],
+ ?line ITRes228 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S228),
+ ITResList229 = [ITRes228|ITResList228],
+
+
+ ?line {STRes229,S229} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList230 = [STRes229|STResList229],
+ ?line ITRes229 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S229),
+ ITResList230 = [ITRes229|ITResList229],
+
+
+ ?line {STRes230,S230} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList231 = [STRes230|STResList230],
+ ?line ITRes230 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S230),
+ ITResList231 = [ITRes230|ITResList230],
+
+
+ ?line {STRes231,S231} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList232 = [STRes231|STResList231],
+ ?line ITRes231 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S231),
+ ITResList232 = [ITRes231|ITResList231],
+
+
+ ?line {STRes232,S232} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList233 = [STRes232|STResList232],
+ ?line ITRes232 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S232),
+ ITResList233 = [ITRes232|ITResList232],
+
+
+ ?line {STRes233,S233} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList234 = [STRes233|STResList233],
+ ?line ITRes233 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S233),
+ ITResList234 = [ITRes233|ITResList233],
+
+
+ ?line {STRes234,S234} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList235 = [STRes234|STResList234],
+ ?line ITRes234 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S234),
+ ITResList235 = [ITRes234|ITResList234],
+
+
+ ?line {STRes235,S235} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList236 = [STRes235|STResList235],
+ ?line ITRes235 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S235),
+ ITResList236 = [ITRes235|ITResList235],
+
+
+ ?line {STRes236,S236} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList237 = [STRes236|STResList236],
+ ?line ITRes236 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S236),
+ ITResList237 = [ITRes236|ITResList236],
+
+
+ ?line {STRes237,S237} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_dateTime.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList238 = [STRes237|STResList237],
+ ?line ITRes237 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_dateTime.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S237),
+ ITResList238 = [ITRes237|ITResList237],
+
+
+ ?line {STRes238,S238} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_time.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList239 = [STRes238|STResList238],
+ ?line ITRes238 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_time.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S238),
+ ITResList239 = [ITRes238|ITResList238],
+
+
+ ?line {STRes239,S239} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_date.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList240 = [STRes239|STResList239],
+ ?line ITRes239 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_date.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S239),
+ ITResList240 = [ITRes239|ITResList239],
+
+
+ ?line {STRes240,S240} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gYearMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList241 = [STRes240|STResList240],
+ ?line ITRes240 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gYearMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S240),
+ ITResList241 = [ITRes240|ITResList240],
+
+
+ ?line {STRes241,S241} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gYear.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList242 = [STRes241|STResList241],
+ ?line ITRes241 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gYear.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S241),
+ ITResList242 = [ITRes241|ITResList241],
+
+
+ ?line {STRes242,S242} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gMonthDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList243 = [STRes242|STResList242],
+ ?line ITRes242 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gMonthDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S242),
+ ITResList243 = [ITRes242|ITResList242],
+
+
+ ?line {STRes243,S243} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList244 = [STRes243|STResList243],
+ ?line ITRes243 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S243),
+ ITResList244 = [ITRes243|ITResList243],
+
+
+ ?line {STRes244,S244} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList245 = [STRes244|STResList244],
+ ?line ITRes244 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKEN_gMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S244),
+ ITResList245 = [ITRes244|ITResList244],
+
+
+ ?line {STRes245,S245} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList246 = [STRes245|STResList245],
+ ?line ITRes245 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S245),
+ ITResList246 = [ITRes245|ITResList245],
+
+
+ ?line {STRes246,S246} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList247 = [STRes246|STResList246],
+ ?line ITRes246 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S246),
+ ITResList247 = [ITRes246|ITResList246],
+
+
+ ?line {STRes247,S247} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList248 = [STRes247|STResList247],
+ ?line ITRes247 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S247),
+ ITResList248 = [ITRes247|ITResList247],
+
+
+ ?line {STRes248,S248} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList249 = [STRes248|STResList248],
+ ?line ITRes248 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S248),
+ ITResList249 = [ITRes248|ITResList248],
+
+
+ ?line {STRes249,S249} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList250 = [STRes249|STResList249],
+ ?line ITRes249 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S249),
+ ITResList250 = [ITRes249|ITResList249],
+
+
+ ?line {STRes250,S250} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_IDREFS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList251 = [STRes250|STResList250],
+ ?line ITRes250 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_IDREFS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S250),
+ ITResList251 = [ITRes250|ITResList250],
+
+
+ ?line {STRes251,S251} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList252 = [STRes251|STResList251],
+ ?line ITRes251 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S251),
+ ITResList252 = [ITRes251|ITResList251],
+
+
+ ?line {STRes252,S252} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList253 = [STRes252|STResList252],
+ ?line ITRes252 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S252),
+ ITResList253 = [ITRes252|ITResList252],
+
+
+ ?line {STRes253,S253} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList254 = [STRes253|STResList253],
+ ?line ITRes253 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S253),
+ ITResList254 = [ITRes253|ITResList253],
+
+
+ ?line {STRes254,S254} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList255 = [STRes254|STResList254],
+ ?line ITRes254 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S254),
+ ITResList255 = [ITRes254|ITResList254],
+
+
+ ?line {STRes255,S255} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList256 = [STRes255|STResList255],
+ ?line ITRes255 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S255),
+ ITResList256 = [ITRes255|ITResList255],
+
+
+ ?line {STRes256,S256} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList257 = [STRes256|STResList256],
+ ?line ITRes256 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S256),
+ ITResList257 = [ITRes256|ITResList256],
+
+
+ ?line {STRes257,S257} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList258 = [STRes257|STResList257],
+ ?line ITRes257 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S257),
+ ITResList258 = [ITRes257|ITResList257],
+
+
+ ?line {STRes258,S258} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList259 = [STRes258|STResList258],
+ ?line ITRes258 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S258),
+ ITResList259 = [ITRes258|ITResList258],
+
+
+ ?line {STRes259,S259} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList260 = [STRes259|STResList259],
+ ?line ITRes259 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S259),
+ ITResList260 = [ITRes259|ITResList259],
+
+
+ ?line {STRes260,S260} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList261 = [STRes260|STResList260],
+ ?line ITRes260 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S260),
+ ITResList261 = [ITRes260|ITResList260],
+
+
+ ?line {STRes261,S261} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList262 = [STRes261|STResList261],
+ ?line ITRes261 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S261),
+ ITResList262 = [ITRes261|ITResList261],
+
+
+ ?line {STRes262,S262} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList263 = [STRes262|STResList262],
+ ?line ITRes262 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S262),
+ ITResList263 = [ITRes262|ITResList262],
+
+
+ ?line {STRes263,S263} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList264 = [STRes263|STResList263],
+ ?line ITRes263 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S263),
+ ITResList264 = [ITRes263|ITResList263],
+
+
+ ?line {STRes264,S264} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList265 = [STRes264|STResList264],
+ ?line ITRes264 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S264),
+ ITResList265 = [ITRes264|ITResList264],
+
+
+ ?line {STRes265,S265} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList266 = [STRes265|STResList265],
+ ?line ITRes265 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S265),
+ ITResList266 = [ITRes265|ITResList265],
+
+
+ ?line {STRes266,S266} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList267 = [STRes266|STResList266],
+ ?line ITRes266 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S266),
+ ITResList267 = [ITRes266|ITResList266],
+
+
+ ?line {STRes267,S267} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList268 = [STRes267|STResList267],
+ ?line ITRes267 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S267),
+ ITResList268 = [ITRes267|ITResList267],
+
+
+ ?line {STRes268,S268} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList269 = [STRes268|STResList268],
+ ?line ITRes268 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S268),
+ ITResList269 = [ITRes268|ITResList268],
+
+
+ ?line {STRes269,S269} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList270 = [STRes269|STResList269],
+ ?line ITRes269 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S269),
+ ITResList270 = [ITRes269|ITResList269],
+
+
+ ?line {STRes270,S270} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList271 = [STRes270|STResList270],
+ ?line ITRes270 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S270),
+ ITResList271 = [ITRes270|ITResList270],
+
+
+ ?line {STRes271,S271} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList272 = [STRes271|STResList271],
+ ?line ITRes271 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S271),
+ ITResList272 = [ITRes271|ITResList271],
+
+
+ ?line {STRes272,S272} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList273 = [STRes272|STResList272],
+ ?line ITRes272 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S272),
+ ITResList273 = [ITRes272|ITResList272],
+
+
+ ?line {STRes273,S273} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList274 = [STRes273|STResList273],
+ ?line ITRes273 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S273),
+ ITResList274 = [ITRes273|ITResList273],
+
+
+ ?line {STRes274,S274} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_dateTime.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList275 = [STRes274|STResList274],
+ ?line ITRes274 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_dateTime.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S274),
+ ITResList275 = [ITRes274|ITResList274],
+
+
+ ?line {STRes275,S275} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_time.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList276 = [STRes275|STResList275],
+ ?line ITRes275 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_time.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S275),
+ ITResList276 = [ITRes275|ITResList275],
+
+
+ ?line {STRes276,S276} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_date.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList277 = [STRes276|STResList276],
+ ?line ITRes276 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_date.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S276),
+ ITResList277 = [ITRes276|ITResList276],
+
+
+ ?line {STRes277,S277} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gYearMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList278 = [STRes277|STResList277],
+ ?line ITRes277 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gYearMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S277),
+ ITResList278 = [ITRes277|ITResList277],
+
+
+ ?line {STRes278,S278} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gYear.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList279 = [STRes278|STResList278],
+ ?line ITRes278 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gYear.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S278),
+ ITResList279 = [ITRes278|ITResList278],
+
+
+ ?line {STRes279,S279} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gMonthDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList280 = [STRes279|STResList279],
+ ?line ITRes279 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gMonthDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S279),
+ ITResList280 = [ITRes279|ITResList279],
+
+
+ ?line {STRes280,S280} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList281 = [STRes280|STResList280],
+ ?line ITRes280 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S280),
+ ITResList281 = [ITRes280|ITResList280],
+
+
+ ?line {STRes281,S281} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList282 = [STRes281|STResList281],
+ ?line ITRes281 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NMTOKENS_gMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S281),
+ ITResList282 = [ITRes281|ITResList281],
+
+
+ ?line {STRes282,S282} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList283 = [STRes282|STResList282],
+ ?line ITRes282 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S282),
+ ITResList283 = [ITRes282|ITResList282],
+
+
+ ?line {STRes283,S283} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList284 = [STRes283|STResList283],
+ ?line ITRes283 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S283),
+ ITResList284 = [ITRes283|ITResList283],
+
+
+ ?line {STRes284,S284} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList285 = [STRes284|STResList284],
+ ?line ITRes284 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S284),
+ ITResList285 = [ITRes284|ITResList284],
+
+
+ ?line {STRes285,S285} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList286 = [STRes285|STResList285],
+ ?line ITRes285 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S285),
+ ITResList286 = [ITRes285|ITResList285],
+
+
+ ?line {STRes286,S286} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList287 = [STRes286|STResList286],
+ ?line ITRes286 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S286),
+ ITResList287 = [ITRes286|ITResList286],
+
+
+ ?line {STRes287,S287} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList288 = [STRes287|STResList287],
+ ?line ITRes287 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S287),
+ ITResList288 = [ITRes287|ITResList287],
+
+
+ ?line {STRes288,S288} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList289 = [STRes288|STResList288],
+ ?line ITRes288 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S288),
+ ITResList289 = [ITRes288|ITResList288],
+
+
+ ?line {STRes289,S289} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_IDREFS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList290 = [STRes289|STResList289],
+ ?line ITRes289 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_IDREFS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S289),
+ ITResList290 = [ITRes289|ITResList289],
+
+
+ ?line {STRes290,S290} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList291 = [STRes290|STResList290],
+ ?line ITRes290 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S290),
+ ITResList291 = [ITRes290|ITResList290],
+
+
+ ?line {STRes291,S291} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList292 = [STRes291|STResList291],
+ ?line ITRes291 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S291),
+ ITResList292 = [ITRes291|ITResList291],
+
+
+ ?line {STRes292,S292} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList293 = [STRes292|STResList292],
+ ?line ITRes292 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S292),
+ ITResList293 = [ITRes292|ITResList292],
+
+
+ ?line {STRes293,S293} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList294 = [STRes293|STResList293],
+ ?line ITRes293 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S293),
+ ITResList294 = [ITRes293|ITResList293],
+
+
+ ?line {STRes294,S294} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList295 = [STRes294|STResList294],
+ ?line ITRes294 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S294),
+ ITResList295 = [ITRes294|ITResList294],
+
+
+ ?line {STRes295,S295} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList296 = [STRes295|STResList295],
+ ?line ITRes295 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S295),
+ ITResList296 = [ITRes295|ITResList295],
+
+
+ ?line {STRes296,S296} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList297 = [STRes296|STResList296],
+ ?line ITRes296 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S296),
+ ITResList297 = [ITRes296|ITResList296],
+
+
+ ?line {STRes297,S297} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList298 = [STRes297|STResList297],
+ ?line ITRes297 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S297),
+ ITResList298 = [ITRes297|ITResList297],
+
+
+ ?line {STRes298,S298} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList299 = [STRes298|STResList298],
+ ?line ITRes298 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S298),
+ ITResList299 = [ITRes298|ITResList298],
+
+
+ ?line {STRes299,S299} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList300 = [STRes299|STResList299],
+ ?line ITRes299 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S299),
+ ITResList300 = [ITRes299|ITResList299],
+
+
+ ?line {STRes300,S300} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList301 = [STRes300|STResList300],
+ ?line ITRes300 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S300),
+ ITResList301 = [ITRes300|ITResList300],
+
+
+ ?line {STRes301,S301} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList302 = [STRes301|STResList301],
+ ?line ITRes301 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S301),
+ ITResList302 = [ITRes301|ITResList301],
+
+
+ ?line {STRes302,S302} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList303 = [STRes302|STResList302],
+ ?line ITRes302 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S302),
+ ITResList303 = [ITRes302|ITResList302],
+
+
+ ?line {STRes303,S303} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList304 = [STRes303|STResList303],
+ ?line ITRes303 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S303),
+ ITResList304 = [ITRes303|ITResList303],
+
+
+ ?line {STRes304,S304} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList305 = [STRes304|STResList304],
+ ?line ITRes304 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S304),
+ ITResList305 = [ITRes304|ITResList304],
+
+
+ ?line {STRes305,S305} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList306 = [STRes305|STResList305],
+ ?line ITRes305 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S305),
+ ITResList306 = [ITRes305|ITResList305],
+
+
+ ?line {STRes306,S306} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList307 = [STRes306|STResList306],
+ ?line ITRes306 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S306),
+ ITResList307 = [ITRes306|ITResList306],
+
+
+ ?line {STRes307,S307} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList308 = [STRes307|STResList307],
+ ?line ITRes307 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S307),
+ ITResList308 = [ITRes307|ITResList307],
+
+
+ ?line {STRes308,S308} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList309 = [STRes308|STResList308],
+ ?line ITRes308 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S308),
+ ITResList309 = [ITRes308|ITResList308],
+
+
+ ?line {STRes309,S309} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList310 = [STRes309|STResList309],
+ ?line ITRes309 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S309),
+ ITResList310 = [ITRes309|ITResList309],
+
+
+ ?line {STRes310,S310} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList311 = [STRes310|STResList310],
+ ?line ITRes310 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S310),
+ ITResList311 = [ITRes310|ITResList310],
+
+
+ ?line {STRes311,S311} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList312 = [STRes311|STResList311],
+ ?line ITRes311 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S311),
+ ITResList312 = [ITRes311|ITResList311],
+
+
+ ?line {STRes312,S312} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList313 = [STRes312|STResList312],
+ ?line ITRes312 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_boolean_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S312),
+ ITResList313 = [ITRes312|ITResList312],
+
+
+ ?line {STRes313,S313} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList314 = [STRes313|STResList313],
+ ?line ITRes313 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S313),
+ ITResList314 = [ITRes313|ITResList313],
+
+
+ ?line {STRes314,S314} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList315 = [STRes314|STResList314],
+ ?line ITRes314 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S314),
+ ITResList315 = [ITRes314|ITResList314],
+
+
+ ?line {STRes315,S315} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList316 = [STRes315|STResList315],
+ ?line ITRes315 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S315),
+ ITResList316 = [ITRes315|ITResList315],
+
+
+ ?line {STRes316,S316} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList317 = [STRes316|STResList316],
+ ?line ITRes316 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S316),
+ ITResList317 = [ITRes316|ITResList316],
+
+
+ ?line {STRes317,S317} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList318 = [STRes317|STResList317],
+ ?line ITRes317 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S317),
+ ITResList318 = [ITRes317|ITResList317],
+
+
+ ?line {STRes318,S318} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList319 = [STRes318|STResList318],
+ ?line ITRes318 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S318),
+ ITResList319 = [ITRes318|ITResList318],
+
+
+ ?line {STRes319,S319} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList320 = [STRes319|STResList319],
+ ?line ITRes319 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S319),
+ ITResList320 = [ITRes319|ITResList319],
+
+
+ ?line {STRes320,S320} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList321 = [STRes320|STResList320],
+ ?line ITRes320 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S320),
+ ITResList321 = [ITRes320|ITResList320],
+
+
+ ?line {STRes321,S321} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList322 = [STRes321|STResList321],
+ ?line ITRes321 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S321),
+ ITResList322 = [ITRes321|ITResList321],
+
+
+ ?line {STRes322,S322} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList323 = [STRes322|STResList322],
+ ?line ITRes322 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S322),
+ ITResList323 = [ITRes322|ITResList322],
+
+
+ ?line {STRes323,S323} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList324 = [STRes323|STResList323],
+ ?line ITRes323 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S323),
+ ITResList324 = [ITRes323|ITResList323],
+
+
+ ?line {STRes324,S324} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList325 = [STRes324|STResList324],
+ ?line ITRes324 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S324),
+ ITResList325 = [ITRes324|ITResList324],
+
+
+ ?line {STRes325,S325} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList326 = [STRes325|STResList325],
+ ?line ITRes325 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S325),
+ ITResList326 = [ITRes325|ITResList325],
+
+
+ ?line {STRes326,S326} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList327 = [STRes326|STResList326],
+ ?line ITRes326 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S326),
+ ITResList327 = [ITRes326|ITResList326],
+
+
+ ?line {STRes327,S327} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList328 = [STRes327|STResList327],
+ ?line ITRes327 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S327),
+ ITResList328 = [ITRes327|ITResList327],
+
+
+ ?line {STRes328,S328} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList329 = [STRes328|STResList328],
+ ?line ITRes328 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S328),
+ ITResList329 = [ITRes328|ITResList328],
+
+
+ ?line {STRes329,S329} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList330 = [STRes329|STResList329],
+ ?line ITRes329 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S329),
+ ITResList330 = [ITRes329|ITResList329],
+
+
+ ?line {STRes330,S330} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList331 = [STRes330|STResList330],
+ ?line ITRes330 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S330),
+ ITResList331 = [ITRes330|ITResList330],
+
+
+ ?line {STRes331,S331} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList332 = [STRes331|STResList331],
+ ?line ITRes331 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S331),
+ ITResList332 = [ITRes331|ITResList331],
+
+
+ ?line {STRes332,S332} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList333 = [STRes332|STResList332],
+ ?line ITRes332 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S332),
+ ITResList333 = [ITRes332|ITResList332],
+
+
+ ?line {STRes333,S333} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList334 = [STRes333|STResList333],
+ ?line ITRes333 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S333),
+ ITResList334 = [ITRes333|ITResList333],
+
+
+ ?line {STRes334,S334} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList335 = [STRes334|STResList334],
+ ?line ITRes334 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_base64Binary_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S334),
+ ITResList335 = [ITRes334|ITResList334],
+
+
+ ?line {STRes335,S335} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList336 = [STRes335|STResList335],
+ ?line ITRes335 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S335),
+ ITResList336 = [ITRes335|ITResList335],
+
+
+ ?line {STRes336,S336} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList337 = [STRes336|STResList336],
+ ?line ITRes336 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S336),
+ ITResList337 = [ITRes336|ITResList336],
+
+
+ ?line {STRes337,S337} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList338 = [STRes337|STResList337],
+ ?line ITRes337 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S337),
+ ITResList338 = [ITRes337|ITResList337],
+
+
+ ?line {STRes338,S338} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList339 = [STRes338|STResList338],
+ ?line ITRes338 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S338),
+ ITResList339 = [ITRes338|ITResList338],
+
+
+ ?line {STRes339,S339} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList340 = [STRes339|STResList339],
+ ?line ITRes339 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S339),
+ ITResList340 = [ITRes339|ITResList339],
+
+
+ ?line {STRes340,S340} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList341 = [STRes340|STResList340],
+ ?line ITRes340 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S340),
+ ITResList341 = [ITRes340|ITResList340],
+
+
+ ?line {STRes341,S341} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList342 = [STRes341|STResList341],
+ ?line ITRes341 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S341),
+ ITResList342 = [ITRes341|ITResList341],
+
+
+ ?line {STRes342,S342} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList343 = [STRes342|STResList342],
+ ?line ITRes342 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S342),
+ ITResList343 = [ITRes342|ITResList342],
+
+
+ ?line {STRes343,S343} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList344 = [STRes343|STResList343],
+ ?line ITRes343 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S343),
+ ITResList344 = [ITRes343|ITResList343],
+
+
+ ?line {STRes344,S344} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList345 = [STRes344|STResList344],
+ ?line ITRes344 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S344),
+ ITResList345 = [ITRes344|ITResList344],
+
+
+ ?line {STRes345,S345} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList346 = [STRes345|STResList345],
+ ?line ITRes345 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S345),
+ ITResList346 = [ITRes345|ITResList345],
+
+
+ ?line {STRes346,S346} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList347 = [STRes346|STResList346],
+ ?line ITRes346 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S346),
+ ITResList347 = [ITRes346|ITResList346],
+
+
+ ?line {STRes347,S347} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList348 = [STRes347|STResList347],
+ ?line ITRes347 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S347),
+ ITResList348 = [ITRes347|ITResList347],
+
+
+ ?line {STRes348,S348} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList349 = [STRes348|STResList348],
+ ?line ITRes348 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S348),
+ ITResList349 = [ITRes348|ITResList348],
+
+
+ ?line {STRes349,S349} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList350 = [STRes349|STResList349],
+ ?line ITRes349 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S349),
+ ITResList350 = [ITRes349|ITResList349],
+
+
+ ?line {STRes350,S350} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList351 = [STRes350|STResList350],
+ ?line ITRes350 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S350),
+ ITResList351 = [ITRes350|ITResList350],
+
+
+ ?line {STRes351,S351} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList352 = [STRes351|STResList351],
+ ?line ITRes351 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S351),
+ ITResList352 = [ITRes351|ITResList351],
+
+
+ ?line {STRes352,S352} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList353 = [STRes352|STResList352],
+ ?line ITRes352 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S352),
+ ITResList353 = [ITRes352|ITResList352],
+
+
+ ?line {STRes353,S353} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList354 = [STRes353|STResList353],
+ ?line ITRes353 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S353),
+ ITResList354 = [ITRes353|ITResList353],
+
+
+ ?line {STRes354,S354} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList355 = [STRes354|STResList354],
+ ?line ITRes354 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S354),
+ ITResList355 = [ITRes354|ITResList354],
+
+
+ ?line {STRes355,S355} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList356 = [STRes355|STResList355],
+ ?line ITRes355 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S355),
+ ITResList356 = [ITRes355|ITResList355],
+
+
+ ?line {STRes356,S356} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList357 = [STRes356|STResList356],
+ ?line ITRes356 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_hexBinary_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S356),
+ ITResList357 = [ITRes356|ITResList356],
+
+
+ ?line {STRes357,S357} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList358 = [STRes357|STResList357],
+ ?line ITRes357 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S357),
+ ITResList358 = [ITRes357|ITResList357],
+
+
+ ?line {STRes358,S358} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList359 = [STRes358|STResList358],
+ ?line ITRes358 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S358),
+ ITResList359 = [ITRes358|ITResList358],
+
+
+ ?line {STRes359,S359} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList360 = [STRes359|STResList359],
+ ?line ITRes359 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S359),
+ ITResList360 = [ITRes359|ITResList359],
+
+
+ ?line {STRes360,S360} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList361 = [STRes360|STResList360],
+ ?line ITRes360 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S360),
+ ITResList361 = [ITRes360|ITResList360],
+
+
+ ?line {STRes361,S361} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList362 = [STRes361|STResList361],
+ ?line ITRes361 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S361),
+ ITResList362 = [ITRes361|ITResList361],
+
+
+ ?line {STRes362,S362} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList363 = [STRes362|STResList362],
+ ?line ITRes362 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S362),
+ ITResList363 = [ITRes362|ITResList362],
+
+
+ ?line {STRes363,S363} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList364 = [STRes363|STResList363],
+ ?line ITRes363 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S363),
+ ITResList364 = [ITRes363|ITResList363],
+
+
+ ?line {STRes364,S364} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList365 = [STRes364|STResList364],
+ ?line ITRes364 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S364),
+ ITResList365 = [ITRes364|ITResList364],
+
+
+ ?line {STRes365,S365} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList366 = [STRes365|STResList365],
+ ?line ITRes365 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_float.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S365),
+ ITResList366 = [ITRes365|ITResList365],
+
+
+ ?line {STRes366,S366} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList367 = [STRes366|STResList366],
+ ?line ITRes366 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S366),
+ ITResList367 = [ITRes366|ITResList366],
+
+
+ ?line {STRes367,S367} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList368 = [STRes367|STResList367],
+ ?line ITRes367 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S367),
+ ITResList368 = [ITRes367|ITResList367],
+
+
+ ?line {STRes368,S368} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList369 = [STRes368|STResList368],
+ ?line ITRes368 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S368),
+ ITResList369 = [ITRes368|ITResList368],
+
+
+ ?line {STRes369,S369} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList370 = [STRes369|STResList369],
+ ?line ITRes369 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S369),
+ ITResList370 = [ITRes369|ITResList369],
+
+
+ ?line {STRes370,S370} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList371 = [STRes370|STResList370],
+ ?line ITRes370 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S370),
+ ITResList371 = [ITRes370|ITResList370],
+
+
+ ?line {STRes371,S371} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList372 = [STRes371|STResList371],
+ ?line ITRes371 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S371),
+ ITResList372 = [ITRes371|ITResList371],
+
+
+ ?line {STRes372,S372} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList373 = [STRes372|STResList372],
+ ?line ITRes372 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S372),
+ ITResList373 = [ITRes372|ITResList372],
+
+
+ ?line {STRes373,S373} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList374 = [STRes373|STResList373],
+ ?line ITRes373 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S373),
+ ITResList374 = [ITRes373|ITResList373],
+
+
+ ?line {STRes374,S374} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList375 = [STRes374|STResList374],
+ ?line ITRes374 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S374),
+ ITResList375 = [ITRes374|ITResList374],
+
+
+ ?line {STRes375,S375} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList376 = [STRes375|STResList375],
+ ?line ITRes375 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S375),
+ ITResList376 = [ITRes375|ITResList375],
+
+
+ ?line {STRes376,S376} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList377 = [STRes376|STResList376],
+ ?line ITRes376 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S376),
+ ITResList377 = [ITRes376|ITResList376],
+
+
+ ?line {STRes377,S377} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList378 = [STRes377|STResList377],
+ ?line ITRes377 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S377),
+ ITResList378 = [ITRes377|ITResList377],
+
+
+ ?line {STRes378,S378} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList379 = [STRes378|STResList378],
+ ?line ITRes378 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S378),
+ ITResList379 = [ITRes378|ITResList378],
+
+
+ ?line {STRes379,S379} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList380 = [STRes379|STResList379],
+ ?line ITRes379 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S379),
+ ITResList380 = [ITRes379|ITResList379],
+
+
+ ?line {STRes380,S380} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList381 = [STRes380|STResList380],
+ ?line ITRes380 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S380),
+ ITResList381 = [ITRes380|ITResList380],
+
+
+ ?line {STRes381,S381} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList382 = [STRes381|STResList381],
+ ?line ITRes381 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_float_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S381),
+ ITResList382 = [ITRes381|ITResList381],
+
+
+ ?line {STRes382,S382} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList383 = [STRes382|STResList382],
+ ?line ITRes382 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S382),
+ ITResList383 = [ITRes382|ITResList382],
+
+
+ ?line {STRes383,S383} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList384 = [STRes383|STResList383],
+ ?line ITRes383 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S383),
+ ITResList384 = [ITRes383|ITResList383],
+
+
+ ?line {STRes384,S384} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList385 = [STRes384|STResList384],
+ ?line ITRes384 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S384),
+ ITResList385 = [ITRes384|ITResList384],
+
+
+ ?line {STRes385,S385} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList386 = [STRes385|STResList385],
+ ?line ITRes385 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S385),
+ ITResList386 = [ITRes385|ITResList385],
+
+
+ ?line {STRes386,S386} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList387 = [STRes386|STResList386],
+ ?line ITRes386 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S386),
+ ITResList387 = [ITRes386|ITResList386],
+
+
+ ?line {STRes387,S387} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList388 = [STRes387|STResList387],
+ ?line ITRes387 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S387),
+ ITResList388 = [ITRes387|ITResList387],
+
+
+ ?line {STRes388,S388} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList389 = [STRes388|STResList388],
+ ?line ITRes388 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S388),
+ ITResList389 = [ITRes388|ITResList388],
+
+
+ ?line {STRes389,S389} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList390 = [STRes389|STResList389],
+ ?line ITRes389 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S389),
+ ITResList390 = [ITRes389|ITResList389],
+
+
+ ?line {STRes390,S390} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList391 = [STRes390|STResList390],
+ ?line ITRes390 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S390),
+ ITResList391 = [ITRes390|ITResList390],
+
+
+ ?line {STRes391,S391} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList392 = [STRes391|STResList391],
+ ?line ITRes391 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S391),
+ ITResList392 = [ITRes391|ITResList391],
+
+
+ ?line {STRes392,S392} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList393 = [STRes392|STResList392],
+ ?line ITRes392 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S392),
+ ITResList393 = [ITRes392|ITResList392],
+
+
+ ?line {STRes393,S393} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList394 = [STRes393|STResList393],
+ ?line ITRes393 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S393),
+ ITResList394 = [ITRes393|ITResList393],
+
+
+ ?line {STRes394,S394} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList395 = [STRes394|STResList394],
+ ?line ITRes394 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S394),
+ ITResList395 = [ITRes394|ITResList394],
+
+
+ ?line {STRes395,S395} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList396 = [STRes395|STResList395],
+ ?line ITRes395 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_long.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S395),
+ ITResList396 = [ITRes395|ITResList395],
+
+
+ ?line {STRes396,S396} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList397 = [STRes396|STResList396],
+ ?line ITRes396 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_int.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S396),
+ ITResList397 = [ITRes396|ITResList396],
+
+
+ ?line {STRes397,S397} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList398 = [STRes397|STResList397],
+ ?line ITRes397 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_short.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S397),
+ ITResList398 = [ITRes397|ITResList397],
+
+
+ ?line {STRes398,S398} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList399 = [STRes398|STResList398],
+ ?line ITRes398 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S398),
+ ITResList399 = [ITRes398|ITResList398],
+
+
+ ?line {STRes399,S399} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList400 = [STRes399|STResList399],
+ ?line ITRes399 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S399),
+ ITResList400 = [ITRes399|ITResList399],
+
+
+ ?line {STRes400,S400} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList401 = [STRes400|STResList400],
+ ?line ITRes400 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S400),
+ ITResList401 = [ITRes400|ITResList400],
+
+
+ ?line {STRes401,S401} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList402 = [STRes401|STResList401],
+ ?line ITRes401 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S401),
+ ITResList402 = [ITRes401|ITResList401],
+
+
+ ?line {STRes402,S402} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList403 = [STRes402|STResList402],
+ ?line ITRes402 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S402),
+ ITResList403 = [ITRes402|ITResList402],
+
+
+ ?line {STRes403,S403} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList404 = [STRes403|STResList403],
+ ?line ITRes403 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S403),
+ ITResList404 = [ITRes403|ITResList403],
+
+
+ ?line {STRes404,S404} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList405 = [STRes404|STResList404],
+ ?line ITRes404 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S404),
+ ITResList405 = [ITRes404|ITResList404],
+
+
+ ?line {STRes405,S405} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList406 = [STRes405|STResList405],
+ ?line ITRes405 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S405),
+ ITResList406 = [ITRes405|ITResList405],
+
+
+ ?line {STRes406,S406} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList407 = [STRes406|STResList406],
+ ?line ITRes406 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_decimal_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S406),
+ ITResList407 = [ITRes406|ITResList406],
+
+
+ ?line {STRes407,S407} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList408 = [STRes407|STResList407],
+ ?line ITRes407 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S407),
+ ITResList408 = [ITRes407|ITResList407],
+
+
+ ?line {STRes408,S408} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList409 = [STRes408|STResList408],
+ ?line ITRes408 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S408),
+ ITResList409 = [ITRes408|ITResList408],
+
+
+ ?line {STRes409,S409} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList410 = [STRes409|STResList409],
+ ?line ITRes409 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S409),
+ ITResList410 = [ITRes409|ITResList409],
+
+
+ ?line {STRes410,S410} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList411 = [STRes410|STResList410],
+ ?line ITRes410 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S410),
+ ITResList411 = [ITRes410|ITResList410],
+
+
+ ?line {STRes411,S411} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList412 = [STRes411|STResList411],
+ ?line ITRes411 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S411),
+ ITResList412 = [ITRes411|ITResList411],
+
+
+ ?line {STRes412,S412} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList413 = [STRes412|STResList412],
+ ?line ITRes412 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S412),
+ ITResList413 = [ITRes412|ITResList412],
+
+
+ ?line {STRes413,S413} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList414 = [STRes413|STResList413],
+ ?line ITRes413 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S413),
+ ITResList414 = [ITRes413|ITResList413],
+
+
+ ?line {STRes414,S414} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList415 = [STRes414|STResList414],
+ ?line ITRes414 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S414),
+ ITResList415 = [ITRes414|ITResList414],
+
+
+ ?line {STRes415,S415} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList416 = [STRes415|STResList415],
+ ?line ITRes415 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S415),
+ ITResList416 = [ITRes415|ITResList415],
+
+
+ ?line {STRes416,S416} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList417 = [STRes416|STResList416],
+ ?line ITRes416 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S416),
+ ITResList417 = [ITRes416|ITResList416],
+
+
+ ?line {STRes417,S417} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList418 = [STRes417|STResList417],
+ ?line ITRes417 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S417),
+ ITResList418 = [ITRes417|ITResList417],
+
+
+ ?line {STRes418,S418} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList419 = [STRes418|STResList418],
+ ?line ITRes418 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S418),
+ ITResList419 = [ITRes418|ITResList418],
+
+
+ ?line {STRes419,S419} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList420 = [STRes419|STResList419],
+ ?line ITRes419 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S419),
+ ITResList420 = [ITRes419|ITResList419],
+
+
+ ?line {STRes420,S420} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList421 = [STRes420|STResList420],
+ ?line ITRes420 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_long.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S420),
+ ITResList421 = [ITRes420|ITResList420],
+
+
+ ?line {STRes421,S421} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList422 = [STRes421|STResList421],
+ ?line ITRes421 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_int.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S421),
+ ITResList422 = [ITRes421|ITResList421],
+
+
+ ?line {STRes422,S422} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList423 = [STRes422|STResList422],
+ ?line ITRes422 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_short.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S422),
+ ITResList423 = [ITRes422|ITResList422],
+
+
+ ?line {STRes423,S423} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList424 = [STRes423|STResList423],
+ ?line ITRes423 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S423),
+ ITResList424 = [ITRes423|ITResList423],
+
+
+ ?line {STRes424,S424} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList425 = [STRes424|STResList424],
+ ?line ITRes424 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S424),
+ ITResList425 = [ITRes424|ITResList424],
+
+
+ ?line {STRes425,S425} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList426 = [STRes425|STResList425],
+ ?line ITRes425 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S425),
+ ITResList426 = [ITRes425|ITResList425],
+
+
+ ?line {STRes426,S426} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList427 = [STRes426|STResList426],
+ ?line ITRes426 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S426),
+ ITResList427 = [ITRes426|ITResList426],
+
+
+ ?line {STRes427,S427} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList428 = [STRes427|STResList427],
+ ?line ITRes427 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S427),
+ ITResList428 = [ITRes427|ITResList427],
+
+
+ ?line {STRes428,S428} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList429 = [STRes428|STResList428],
+ ?line ITRes428 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S428),
+ ITResList429 = [ITRes428|ITResList428],
+
+
+ ?line {STRes429,S429} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList430 = [STRes429|STResList429],
+ ?line ITRes429 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S429),
+ ITResList430 = [ITRes429|ITResList429],
+
+
+ ?line {STRes430,S430} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList431 = [STRes430|STResList430],
+ ?line ITRes430 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S430),
+ ITResList431 = [ITRes430|ITResList430],
+
+
+ ?line {STRes431,S431} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList432 = [STRes431|STResList431],
+ ?line ITRes431 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_integer_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S431),
+ ITResList432 = [ITRes431|ITResList431],
+
+
+ ?line {STRes432,S432} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList433 = [STRes432|STResList432],
+ ?line ITRes432 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S432),
+ ITResList433 = [ITRes432|ITResList432],
+
+
+ ?line {STRes433,S433} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList434 = [STRes433|STResList433],
+ ?line ITRes433 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S433),
+ ITResList434 = [ITRes433|ITResList433],
+
+
+ ?line {STRes434,S434} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList435 = [STRes434|STResList434],
+ ?line ITRes434 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S434),
+ ITResList435 = [ITRes434|ITResList434],
+
+
+ ?line {STRes435,S435} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList436 = [STRes435|STResList435],
+ ?line ITRes435 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S435),
+ ITResList436 = [ITRes435|ITResList435],
+
+
+ ?line {STRes436,S436} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList437 = [STRes436|STResList436],
+ ?line ITRes436 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S436),
+ ITResList437 = [ITRes436|ITResList436],
+
+
+ ?line {STRes437,S437} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList438 = [STRes437|STResList437],
+ ?line ITRes437 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S437),
+ ITResList438 = [ITRes437|ITResList437],
+
+
+ ?line {STRes438,S438} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList439 = [STRes438|STResList438],
+ ?line ITRes438 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S438),
+ ITResList439 = [ITRes438|ITResList438],
+
+
+ ?line {STRes439,S439} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList440 = [STRes439|STResList439],
+ ?line ITRes439 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S439),
+ ITResList440 = [ITRes439|ITResList439],
+
+
+ ?line {STRes440,S440} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList441 = [STRes440|STResList440],
+ ?line ITRes440 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S440),
+ ITResList441 = [ITRes440|ITResList440],
+
+
+ ?line {STRes441,S441} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList442 = [STRes441|STResList441],
+ ?line ITRes441 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S441),
+ ITResList442 = [ITRes441|ITResList441],
+
+
+ ?line {STRes442,S442} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList443 = [STRes442|STResList442],
+ ?line ITRes442 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S442),
+ ITResList443 = [ITRes442|ITResList442],
+
+
+ ?line {STRes443,S443} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList444 = [STRes443|STResList443],
+ ?line ITRes443 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S443),
+ ITResList444 = [ITRes443|ITResList443],
+
+
+ ?line {STRes444,S444} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList445 = [STRes444|STResList444],
+ ?line ITRes444 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S444),
+ ITResList445 = [ITRes444|ITResList444],
+
+
+ ?line {STRes445,S445} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList446 = [STRes445|STResList445],
+ ?line ITRes445 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S445),
+ ITResList446 = [ITRes445|ITResList445],
+
+
+ ?line {STRes446,S446} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList447 = [STRes446|STResList446],
+ ?line ITRes446 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S446),
+ ITResList447 = [ITRes446|ITResList446],
+
+
+ ?line {STRes447,S447} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList448 = [STRes447|STResList447],
+ ?line ITRes447 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S447),
+ ITResList448 = [ITRes447|ITResList447],
+
+
+ ?line {STRes448,S448} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList449 = [STRes448|STResList448],
+ ?line ITRes448 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonPositiveInteger_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S448),
+ ITResList449 = [ITRes448|ITResList448],
+
+
+ ?line {STRes449,S449} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList450 = [STRes449|STResList449],
+ ?line ITRes449 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S449),
+ ITResList450 = [ITRes449|ITResList449],
+
+
+ ?line {STRes450,S450} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList451 = [STRes450|STResList450],
+ ?line ITRes450 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S450),
+ ITResList451 = [ITRes450|ITResList450],
+
+
+ ?line {STRes451,S451} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList452 = [STRes451|STResList451],
+ ?line ITRes451 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S451),
+ ITResList452 = [ITRes451|ITResList451],
+
+
+ ?line {STRes452,S452} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList453 = [STRes452|STResList452],
+ ?line ITRes452 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S452),
+ ITResList453 = [ITRes452|ITResList452],
+
+
+ ?line {STRes453,S453} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList454 = [STRes453|STResList453],
+ ?line ITRes453 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S453),
+ ITResList454 = [ITRes453|ITResList453],
+
+
+ ?line {STRes454,S454} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList455 = [STRes454|STResList454],
+ ?line ITRes454 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S454),
+ ITResList455 = [ITRes454|ITResList454],
+
+
+ ?line {STRes455,S455} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList456 = [STRes455|STResList455],
+ ?line ITRes455 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S455),
+ ITResList456 = [ITRes455|ITResList455],
+
+
+ ?line {STRes456,S456} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList457 = [STRes456|STResList456],
+ ?line ITRes456 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S456),
+ ITResList457 = [ITRes456|ITResList456],
+
+
+ ?line {STRes457,S457} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList458 = [STRes457|STResList457],
+ ?line ITRes457 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S457),
+ ITResList458 = [ITRes457|ITResList457],
+
+
+ ?line {STRes458,S458} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList459 = [STRes458|STResList458],
+ ?line ITRes458 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S458),
+ ITResList459 = [ITRes458|ITResList458],
+
+
+ ?line {STRes459,S459} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList460 = [STRes459|STResList459],
+ ?line ITRes459 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S459),
+ ITResList460 = [ITRes459|ITResList459],
+
+
+ ?line {STRes460,S460} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList461 = [STRes460|STResList460],
+ ?line ITRes460 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S460),
+ ITResList461 = [ITRes460|ITResList460],
+
+
+ ?line {STRes461,S461} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList462 = [STRes461|STResList461],
+ ?line ITRes461 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S461),
+ ITResList462 = [ITRes461|ITResList461],
+
+
+ ?line {STRes462,S462} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList463 = [STRes462|STResList462],
+ ?line ITRes462 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S462),
+ ITResList463 = [ITRes462|ITResList462],
+
+
+ ?line {STRes463,S463} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList464 = [STRes463|STResList463],
+ ?line ITRes463 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S463),
+ ITResList464 = [ITRes463|ITResList463],
+
+
+ ?line {STRes464,S464} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList465 = [STRes464|STResList464],
+ ?line ITRes464 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_negativeInteger_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S464),
+ ITResList465 = [ITRes464|ITResList464],
+
+
+ ?line {STRes465,S465} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList466 = [STRes465|STResList465],
+ ?line ITRes465 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S465),
+ ITResList466 = [ITRes465|ITResList465],
+
+
+ ?line {STRes466,S466} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList467 = [STRes466|STResList466],
+ ?line ITRes466 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S466),
+ ITResList467 = [ITRes466|ITResList466],
+
+
+ ?line {STRes467,S467} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList468 = [STRes467|STResList467],
+ ?line ITRes467 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S467),
+ ITResList468 = [ITRes467|ITResList467],
+
+
+ ?line {STRes468,S468} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList469 = [STRes468|STResList468],
+ ?line ITRes468 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S468),
+ ITResList469 = [ITRes468|ITResList468],
+
+
+ ?line {STRes469,S469} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList470 = [STRes469|STResList469],
+ ?line ITRes469 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S469),
+ ITResList470 = [ITRes469|ITResList469],
+
+
+ ?line {STRes470,S470} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList471 = [STRes470|STResList470],
+ ?line ITRes470 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S470),
+ ITResList471 = [ITRes470|ITResList470],
+
+
+ ?line {STRes471,S471} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList472 = [STRes471|STResList471],
+ ?line ITRes471 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S471),
+ ITResList472 = [ITRes471|ITResList471],
+
+
+ ?line {STRes472,S472} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList473 = [STRes472|STResList472],
+ ?line ITRes472 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S472),
+ ITResList473 = [ITRes472|ITResList472],
+
+
+ ?line {STRes473,S473} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList474 = [STRes473|STResList473],
+ ?line ITRes473 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S473),
+ ITResList474 = [ITRes473|ITResList473],
+
+
+ ?line {STRes474,S474} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList475 = [STRes474|STResList474],
+ ?line ITRes474 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S474),
+ ITResList475 = [ITRes474|ITResList474],
+
+
+ ?line {STRes475,S475} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList476 = [STRes475|STResList475],
+ ?line ITRes475 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S475),
+ ITResList476 = [ITRes475|ITResList475],
+
+
+ ?line {STRes476,S476} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList477 = [STRes476|STResList476],
+ ?line ITRes476 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S476),
+ ITResList477 = [ITRes476|ITResList476],
+
+
+ ?line {STRes477,S477} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList478 = [STRes477|STResList477],
+ ?line ITRes477 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S477),
+ ITResList478 = [ITRes477|ITResList477],
+
+
+ ?line {STRes478,S478} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList479 = [STRes478|STResList478],
+ ?line ITRes478 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_long.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S478),
+ ITResList479 = [ITRes478|ITResList478],
+
+
+ ?line {STRes479,S479} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList480 = [STRes479|STResList479],
+ ?line ITRes479 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_int.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S479),
+ ITResList480 = [ITRes479|ITResList479],
+
+
+ ?line {STRes480,S480} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList481 = [STRes480|STResList480],
+ ?line ITRes480 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_short.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S480),
+ ITResList481 = [ITRes480|ITResList480],
+
+
+ ?line {STRes481,S481} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList482 = [STRes481|STResList481],
+ ?line ITRes481 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S481),
+ ITResList482 = [ITRes481|ITResList481],
+
+
+ ?line {STRes482,S482} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList483 = [STRes482|STResList482],
+ ?line ITRes482 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S482),
+ ITResList483 = [ITRes482|ITResList482],
+
+
+ ?line {STRes483,S483} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList484 = [STRes483|STResList483],
+ ?line ITRes483 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S483),
+ ITResList484 = [ITRes483|ITResList483],
+
+
+ ?line {STRes484,S484} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList485 = [STRes484|STResList484],
+ ?line ITRes484 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S484),
+ ITResList485 = [ITRes484|ITResList484],
+
+
+ ?line {STRes485,S485} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList486 = [STRes485|STResList485],
+ ?line ITRes485 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S485),
+ ITResList486 = [ITRes485|ITResList485],
+
+
+ ?line {STRes486,S486} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList487 = [STRes486|STResList486],
+ ?line ITRes486 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S486),
+ ITResList487 = [ITRes486|ITResList486],
+
+
+ ?line {STRes487,S487} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList488 = [STRes487|STResList487],
+ ?line ITRes487 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S487),
+ ITResList488 = [ITRes487|ITResList487],
+
+
+ ?line {STRes488,S488} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList489 = [STRes488|STResList488],
+ ?line ITRes488 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S488),
+ ITResList489 = [ITRes488|ITResList488],
+
+
+ ?line {STRes489,S489} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList490 = [STRes489|STResList489],
+ ?line ITRes489 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_long_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S489),
+ ITResList490 = [ITRes489|ITResList489],
+
+
+ ?line {STRes490,S490} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList491 = [STRes490|STResList490],
+ ?line ITRes490 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S490),
+ ITResList491 = [ITRes490|ITResList490],
+
+
+ ?line {STRes491,S491} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList492 = [STRes491|STResList491],
+ ?line ITRes491 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S491),
+ ITResList492 = [ITRes491|ITResList491],
+
+
+ ?line {STRes492,S492} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList493 = [STRes492|STResList492],
+ ?line ITRes492 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S492),
+ ITResList493 = [ITRes492|ITResList492],
+
+
+ ?line {STRes493,S493} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList494 = [STRes493|STResList493],
+ ?line ITRes493 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S493),
+ ITResList494 = [ITRes493|ITResList493],
+
+
+ ?line {STRes494,S494} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList495 = [STRes494|STResList494],
+ ?line ITRes494 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S494),
+ ITResList495 = [ITRes494|ITResList494],
+
+
+ ?line {STRes495,S495} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList496 = [STRes495|STResList495],
+ ?line ITRes495 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S495),
+ ITResList496 = [ITRes495|ITResList495],
+
+
+ ?line {STRes496,S496} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList497 = [STRes496|STResList496],
+ ?line ITRes496 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S496),
+ ITResList497 = [ITRes496|ITResList496],
+
+
+ ?line {STRes497,S497} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList498 = [STRes497|STResList497],
+ ?line ITRes497 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S497),
+ ITResList498 = [ITRes497|ITResList497],
+
+
+ ?line {STRes498,S498} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList499 = [STRes498|STResList498],
+ ?line ITRes498 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S498),
+ ITResList499 = [ITRes498|ITResList498],
+
+
+ ?line {STRes499,S499} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList500 = [STRes499|STResList499],
+ ?line ITRes499 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S499),
+ ITResList500 = [ITRes499|ITResList499],
+
+
+ ?line {STRes500,S500} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList501 = [STRes500|STResList500],
+ ?line ITRes500 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S500),
+ ITResList501 = [ITRes500|ITResList500],
+
+
+ ?line {STRes501,S501} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList502 = [STRes501|STResList501],
+ ?line ITRes501 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S501),
+ ITResList502 = [ITRes501|ITResList501],
+
+
+ ?line {STRes502,S502} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList503 = [STRes502|STResList502],
+ ?line ITRes502 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S502),
+ ITResList503 = [ITRes502|ITResList502],
+
+
+ ?line {STRes503,S503} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList504 = [STRes503|STResList503],
+ ?line ITRes503 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_long.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S503),
+ ITResList504 = [ITRes503|ITResList503],
+
+
+ ?line {STRes504,S504} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList505 = [STRes504|STResList504],
+ ?line ITRes504 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_int.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S504),
+ ITResList505 = [ITRes504|ITResList504],
+
+
+ ?line {STRes505,S505} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList506 = [STRes505|STResList505],
+ ?line ITRes505 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_short.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S505),
+ ITResList506 = [ITRes505|ITResList505],
+
+
+ ?line {STRes506,S506} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList507 = [STRes506|STResList506],
+ ?line ITRes506 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S506),
+ ITResList507 = [ITRes506|ITResList506],
+
+
+ ?line {STRes507,S507} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList508 = [STRes507|STResList507],
+ ?line ITRes507 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S507),
+ ITResList508 = [ITRes507|ITResList507],
+
+
+ ?line {STRes508,S508} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList509 = [STRes508|STResList508],
+ ?line ITRes508 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S508),
+ ITResList509 = [ITRes508|ITResList508],
+
+
+ ?line {STRes509,S509} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList510 = [STRes509|STResList509],
+ ?line ITRes509 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S509),
+ ITResList510 = [ITRes509|ITResList509],
+
+
+ ?line {STRes510,S510} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList511 = [STRes510|STResList510],
+ ?line ITRes510 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S510),
+ ITResList511 = [ITRes510|ITResList510],
+
+
+ ?line {STRes511,S511} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList512 = [STRes511|STResList511],
+ ?line ITRes511 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S511),
+ ITResList512 = [ITRes511|ITResList511],
+
+
+ ?line {STRes512,S512} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList513 = [STRes512|STResList512],
+ ?line ITRes512 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S512),
+ ITResList513 = [ITRes512|ITResList512],
+
+
+ ?line {STRes513,S513} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList514 = [STRes513|STResList513],
+ ?line ITRes513 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S513),
+ ITResList514 = [ITRes513|ITResList513],
+
+
+ ?line {STRes514,S514} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList515 = [STRes514|STResList514],
+ ?line ITRes514 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_int_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S514),
+ ITResList515 = [ITRes514|ITResList514],
+
+
+ ?line {STRes515,S515} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList516 = [STRes515|STResList515],
+ ?line ITRes515 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S515),
+ ITResList516 = [ITRes515|ITResList515],
+
+
+ ?line {STRes516,S516} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList517 = [STRes516|STResList516],
+ ?line ITRes516 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S516),
+ ITResList517 = [ITRes516|ITResList516],
+
+
+ ?line {STRes517,S517} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList518 = [STRes517|STResList517],
+ ?line ITRes517 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S517),
+ ITResList518 = [ITRes517|ITResList517],
+
+
+ ?line {STRes518,S518} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList519 = [STRes518|STResList518],
+ ?line ITRes518 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S518),
+ ITResList519 = [ITRes518|ITResList518],
+
+
+ ?line {STRes519,S519} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList520 = [STRes519|STResList519],
+ ?line ITRes519 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S519),
+ ITResList520 = [ITRes519|ITResList519],
+
+
+ ?line {STRes520,S520} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList521 = [STRes520|STResList520],
+ ?line ITRes520 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S520),
+ ITResList521 = [ITRes520|ITResList520],
+
+
+ ?line {STRes521,S521} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList522 = [STRes521|STResList521],
+ ?line ITRes521 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S521),
+ ITResList522 = [ITRes521|ITResList521],
+
+
+ ?line {STRes522,S522} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList523 = [STRes522|STResList522],
+ ?line ITRes522 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S522),
+ ITResList523 = [ITRes522|ITResList522],
+
+
+ ?line {STRes523,S523} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList524 = [STRes523|STResList523],
+ ?line ITRes523 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S523),
+ ITResList524 = [ITRes523|ITResList523],
+
+
+ ?line {STRes524,S524} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList525 = [STRes524|STResList524],
+ ?line ITRes524 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S524),
+ ITResList525 = [ITRes524|ITResList524],
+
+
+ ?line {STRes525,S525} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList526 = [STRes525|STResList525],
+ ?line ITRes525 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S525),
+ ITResList526 = [ITRes525|ITResList525],
+
+
+ ?line {STRes526,S526} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList527 = [STRes526|STResList526],
+ ?line ITRes526 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S526),
+ ITResList527 = [ITRes526|ITResList526],
+
+
+ ?line {STRes527,S527} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList528 = [STRes527|STResList527],
+ ?line ITRes527 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S527),
+ ITResList528 = [ITRes527|ITResList527],
+
+
+ ?line {STRes528,S528} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList529 = [STRes528|STResList528],
+ ?line ITRes528 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_long.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S528),
+ ITResList529 = [ITRes528|ITResList528],
+
+
+ ?line {STRes529,S529} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList530 = [STRes529|STResList529],
+ ?line ITRes529 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_int.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S529),
+ ITResList530 = [ITRes529|ITResList529],
+
+
+ ?line {STRes530,S530} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList531 = [STRes530|STResList530],
+ ?line ITRes530 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_short.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S530),
+ ITResList531 = [ITRes530|ITResList530],
+
+
+ ?line {STRes531,S531} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList532 = [STRes531|STResList531],
+ ?line ITRes531 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S531),
+ ITResList532 = [ITRes531|ITResList531],
+
+
+ ?line {STRes532,S532} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList533 = [STRes532|STResList532],
+ ?line ITRes532 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S532),
+ ITResList533 = [ITRes532|ITResList532],
+
+
+ ?line {STRes533,S533} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList534 = [STRes533|STResList533],
+ ?line ITRes533 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S533),
+ ITResList534 = [ITRes533|ITResList533],
+
+
+ ?line {STRes534,S534} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList535 = [STRes534|STResList534],
+ ?line ITRes534 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S534),
+ ITResList535 = [ITRes534|ITResList534],
+
+
+ ?line {STRes535,S535} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList536 = [STRes535|STResList535],
+ ?line ITRes535 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S535),
+ ITResList536 = [ITRes535|ITResList535],
+
+
+ ?line {STRes536,S536} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList537 = [STRes536|STResList536],
+ ?line ITRes536 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S536),
+ ITResList537 = [ITRes536|ITResList536],
+
+
+ ?line {STRes537,S537} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList538 = [STRes537|STResList537],
+ ?line ITRes537 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S537),
+ ITResList538 = [ITRes537|ITResList537],
+
+
+ ?line {STRes538,S538} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList539 = [STRes538|STResList538],
+ ?line ITRes538 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S538),
+ ITResList539 = [ITRes538|ITResList538],
+
+
+ ?line {STRes539,S539} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList540 = [STRes539|STResList539],
+ ?line ITRes539 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_short_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S539),
+ ITResList540 = [ITRes539|ITResList539],
+
+
+ ?line {STRes540,S540} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList541 = [STRes540|STResList540],
+ ?line ITRes540 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S540),
+ ITResList541 = [ITRes540|ITResList540],
+
+
+ ?line {STRes541,S541} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList542 = [STRes541|STResList541],
+ ?line ITRes541 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S541),
+ ITResList542 = [ITRes541|ITResList541],
+
+
+ ?line {STRes542,S542} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList543 = [STRes542|STResList542],
+ ?line ITRes542 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S542),
+ ITResList543 = [ITRes542|ITResList542],
+
+
+ ?line {STRes543,S543} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList544 = [STRes543|STResList543],
+ ?line ITRes543 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S543),
+ ITResList544 = [ITRes543|ITResList543],
+
+
+ ?line {STRes544,S544} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList545 = [STRes544|STResList544],
+ ?line ITRes544 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S544),
+ ITResList545 = [ITRes544|ITResList544],
+
+
+ ?line {STRes545,S545} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList546 = [STRes545|STResList545],
+ ?line ITRes545 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S545),
+ ITResList546 = [ITRes545|ITResList545],
+
+
+ ?line {STRes546,S546} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList547 = [STRes546|STResList546],
+ ?line ITRes546 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S546),
+ ITResList547 = [ITRes546|ITResList546],
+
+
+ ?line {STRes547,S547} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList548 = [STRes547|STResList547],
+ ?line ITRes547 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S547),
+ ITResList548 = [ITRes547|ITResList547],
+
+
+ ?line {STRes548,S548} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList549 = [STRes548|STResList548],
+ ?line ITRes548 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S548),
+ ITResList549 = [ITRes548|ITResList548],
+
+
+ ?line {STRes549,S549} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList550 = [STRes549|STResList549],
+ ?line ITRes549 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S549),
+ ITResList550 = [ITRes549|ITResList549],
+
+
+ ?line {STRes550,S550} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList551 = [STRes550|STResList550],
+ ?line ITRes550 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S550),
+ ITResList551 = [ITRes550|ITResList550],
+
+
+ ?line {STRes551,S551} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList552 = [STRes551|STResList551],
+ ?line ITRes551 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S551),
+ ITResList552 = [ITRes551|ITResList551],
+
+
+ ?line {STRes552,S552} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList553 = [STRes552|STResList552],
+ ?line ITRes552 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S552),
+ ITResList553 = [ITRes552|ITResList552],
+
+
+ ?line {STRes553,S553} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList554 = [STRes553|STResList553],
+ ?line ITRes553 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_long.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S553),
+ ITResList554 = [ITRes553|ITResList553],
+
+
+ ?line {STRes554,S554} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList555 = [STRes554|STResList554],
+ ?line ITRes554 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_int.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S554),
+ ITResList555 = [ITRes554|ITResList554],
+
+
+ ?line {STRes555,S555} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList556 = [STRes555|STResList555],
+ ?line ITRes555 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_short.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S555),
+ ITResList556 = [ITRes555|ITResList555],
+
+
+ ?line {STRes556,S556} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList557 = [STRes556|STResList556],
+ ?line ITRes556 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S556),
+ ITResList557 = [ITRes556|ITResList556],
+
+
+ ?line {STRes557,S557} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList558 = [STRes557|STResList557],
+ ?line ITRes557 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S557),
+ ITResList558 = [ITRes557|ITResList557],
+
+
+ ?line {STRes558,S558} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList559 = [STRes558|STResList558],
+ ?line ITRes558 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S558),
+ ITResList559 = [ITRes558|ITResList558],
+
+
+ ?line {STRes559,S559} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList560 = [STRes559|STResList559],
+ ?line ITRes559 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S559),
+ ITResList560 = [ITRes559|ITResList559],
+
+
+ ?line {STRes560,S560} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList561 = [STRes560|STResList560],
+ ?line ITRes560 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S560),
+ ITResList561 = [ITRes560|ITResList560],
+
+
+ ?line {STRes561,S561} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList562 = [STRes561|STResList561],
+ ?line ITRes561 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S561),
+ ITResList562 = [ITRes561|ITResList561],
+
+
+ ?line {STRes562,S562} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList563 = [STRes562|STResList562],
+ ?line ITRes562 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S562),
+ ITResList563 = [ITRes562|ITResList562],
+
+
+ ?line {STRes563,S563} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList564 = [STRes563|STResList563],
+ ?line ITRes563 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S563),
+ ITResList564 = [ITRes563|ITResList563],
+
+
+ ?line {STRes564,S564} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList565 = [STRes564|STResList564],
+ ?line ITRes564 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_byte_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S564),
+ ITResList565 = [ITRes564|ITResList564],
+
+
+ ?line {STRes565,S565} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList566 = [STRes565|STResList565],
+ ?line ITRes565 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S565),
+ ITResList566 = [ITRes565|ITResList565],
+
+
+ ?line {STRes566,S566} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList567 = [STRes566|STResList566],
+ ?line ITRes566 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S566),
+ ITResList567 = [ITRes566|ITResList566],
+
+
+ ?line {STRes567,S567} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList568 = [STRes567|STResList567],
+ ?line ITRes567 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S567),
+ ITResList568 = [ITRes567|ITResList567],
+
+
+ ?line {STRes568,S568} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList569 = [STRes568|STResList568],
+ ?line ITRes568 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S568),
+ ITResList569 = [ITRes568|ITResList568],
+
+
+ ?line {STRes569,S569} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList570 = [STRes569|STResList569],
+ ?line ITRes569 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S569),
+ ITResList570 = [ITRes569|ITResList569],
+
+
+ ?line {STRes570,S570} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList571 = [STRes570|STResList570],
+ ?line ITRes570 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S570),
+ ITResList571 = [ITRes570|ITResList570],
+
+
+ ?line {STRes571,S571} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList572 = [STRes571|STResList571],
+ ?line ITRes571 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S571),
+ ITResList572 = [ITRes571|ITResList571],
+
+
+ ?line {STRes572,S572} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList573 = [STRes572|STResList572],
+ ?line ITRes572 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S572),
+ ITResList573 = [ITRes572|ITResList572],
+
+
+ ?line {STRes573,S573} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList574 = [STRes573|STResList573],
+ ?line ITRes573 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S573),
+ ITResList574 = [ITRes573|ITResList573],
+
+
+ ?line {STRes574,S574} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList575 = [STRes574|STResList574],
+ ?line ITRes574 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S574),
+ ITResList575 = [ITRes574|ITResList574],
+
+
+ ?line {STRes575,S575} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList576 = [STRes575|STResList575],
+ ?line ITRes575 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S575),
+ ITResList576 = [ITRes575|ITResList575],
+
+
+ ?line {STRes576,S576} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList577 = [STRes576|STResList576],
+ ?line ITRes576 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S576),
+ ITResList577 = [ITRes576|ITResList576],
+
+
+ ?line {STRes577,S577} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList578 = [STRes577|STResList577],
+ ?line ITRes577 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S577),
+ ITResList578 = [ITRes577|ITResList577],
+
+
+ ?line {STRes578,S578} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList579 = [STRes578|STResList578],
+ ?line ITRes578 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S578),
+ ITResList579 = [ITRes578|ITResList578],
+
+
+ ?line {STRes579,S579} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList580 = [STRes579|STResList579],
+ ?line ITRes579 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S579),
+ ITResList580 = [ITRes579|ITResList579],
+
+
+ ?line {STRes580,S580} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList581 = [STRes580|STResList580],
+ ?line ITRes580 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S580),
+ ITResList581 = [ITRes580|ITResList580],
+
+
+ ?line {STRes581,S581} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList582 = [STRes581|STResList581],
+ ?line ITRes581 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S581),
+ ITResList582 = [ITRes581|ITResList581],
+
+
+ ?line {STRes582,S582} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList583 = [STRes582|STResList582],
+ ?line ITRes582 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S582),
+ ITResList583 = [ITRes582|ITResList582],
+
+
+ ?line {STRes583,S583} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList584 = [STRes583|STResList583],
+ ?line ITRes583 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S583),
+ ITResList584 = [ITRes583|ITResList583],
+
+
+ ?line {STRes584,S584} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList585 = [STRes584|STResList584],
+ ?line ITRes584 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S584),
+ ITResList585 = [ITRes584|ITResList584],
+
+
+ ?line {STRes585,S585} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList586 = [STRes585|STResList585],
+ ?line ITRes585 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S585),
+ ITResList586 = [ITRes585|ITResList585],
+
+
+ ?line {STRes586,S586} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList587 = [STRes586|STResList586],
+ ?line ITRes586 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S586),
+ ITResList587 = [ITRes586|ITResList586],
+
+
+ ?line {STRes587,S587} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList588 = [STRes587|STResList587],
+ ?line ITRes587 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_nonNegativeInteger_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S587),
+ ITResList588 = [ITRes587|ITResList587],
+
+
+ ?line {STRes588,S588} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList589 = [STRes588|STResList588],
+ ?line ITRes588 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S588),
+ ITResList589 = [ITRes588|ITResList588],
+
+
+ ?line {STRes589,S589} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList590 = [STRes589|STResList589],
+ ?line ITRes589 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S589),
+ ITResList590 = [ITRes589|ITResList589],
+
+
+ ?line {STRes590,S590} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList591 = [STRes590|STResList590],
+ ?line ITRes590 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S590),
+ ITResList591 = [ITRes590|ITResList590],
+
+
+ ?line {STRes591,S591} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList592 = [STRes591|STResList591],
+ ?line ITRes591 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S591),
+ ITResList592 = [ITRes591|ITResList591],
+
+
+ ?line {STRes592,S592} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList593 = [STRes592|STResList592],
+ ?line ITRes592 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S592),
+ ITResList593 = [ITRes592|ITResList592],
+
+
+ ?line {STRes593,S593} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList594 = [STRes593|STResList593],
+ ?line ITRes593 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S593),
+ ITResList594 = [ITRes593|ITResList593],
+
+
+ ?line {STRes594,S594} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList595 = [STRes594|STResList594],
+ ?line ITRes594 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S594),
+ ITResList595 = [ITRes594|ITResList594],
+
+
+ ?line {STRes595,S595} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList596 = [STRes595|STResList595],
+ ?line ITRes595 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S595),
+ ITResList596 = [ITRes595|ITResList595],
+
+
+ ?line {STRes596,S596} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList597 = [STRes596|STResList596],
+ ?line ITRes596 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S596),
+ ITResList597 = [ITRes596|ITResList596],
+
+
+ ?line {STRes597,S597} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList598 = [STRes597|STResList597],
+ ?line ITRes597 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S597),
+ ITResList598 = [ITRes597|ITResList597],
+
+
+ ?line {STRes598,S598} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList599 = [STRes598|STResList598],
+ ?line ITRes598 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S598),
+ ITResList599 = [ITRes598|ITResList598],
+
+
+ ?line {STRes599,S599} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList600 = [STRes599|STResList599],
+ ?line ITRes599 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S599),
+ ITResList600 = [ITRes599|ITResList599],
+
+
+ ?line {STRes600,S600} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList601 = [STRes600|STResList600],
+ ?line ITRes600 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S600),
+ ITResList601 = [ITRes600|ITResList600],
+
+
+ ?line {STRes601,S601} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList602 = [STRes601|STResList601],
+ ?line ITRes601 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S601),
+ ITResList602 = [ITRes601|ITResList601],
+
+
+ ?line {STRes602,S602} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList603 = [STRes602|STResList602],
+ ?line ITRes602 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S602),
+ ITResList603 = [ITRes602|ITResList602],
+
+
+ ?line {STRes603,S603} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList604 = [STRes603|STResList603],
+ ?line ITRes603 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S603),
+ ITResList604 = [ITRes603|ITResList603],
+
+
+ ?line {STRes604,S604} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList605 = [STRes604|STResList604],
+ ?line ITRes604 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S604),
+ ITResList605 = [ITRes604|ITResList604],
+
+
+ ?line {STRes605,S605} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList606 = [STRes605|STResList605],
+ ?line ITRes605 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S605),
+ ITResList606 = [ITRes605|ITResList605],
+
+
+ ?line {STRes606,S606} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList607 = [STRes606|STResList606],
+ ?line ITRes606 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S606),
+ ITResList607 = [ITRes606|ITResList606],
+
+
+ ?line {STRes607,S607} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList608 = [STRes607|STResList607],
+ ?line ITRes607 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S607),
+ ITResList608 = [ITRes607|ITResList607],
+
+
+ ?line {STRes608,S608} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList609 = [STRes608|STResList608],
+ ?line ITRes608 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S608),
+ ITResList609 = [ITRes608|ITResList608],
+
+
+ ?line {STRes609,S609} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList610 = [STRes609|STResList609],
+ ?line ITRes609 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S609),
+ ITResList610 = [ITRes609|ITResList609],
+
+
+ ?line {STRes610,S610} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList611 = [STRes610|STResList610],
+ ?line ITRes610 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_positiveInteger_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S610),
+ ITResList611 = [ITRes610|ITResList610],
+
+
+ ?line {STRes611,S611} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList612 = [STRes611|STResList611],
+ ?line ITRes611 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S611),
+ ITResList612 = [ITRes611|ITResList611],
+
+
+ ?line {STRes612,S612} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList613 = [STRes612|STResList612],
+ ?line ITRes612 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S612),
+ ITResList613 = [ITRes612|ITResList612],
+
+
+ ?line {STRes613,S613} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList614 = [STRes613|STResList613],
+ ?line ITRes613 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S613),
+ ITResList614 = [ITRes613|ITResList613],
+
+
+ ?line {STRes614,S614} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList615 = [STRes614|STResList614],
+ ?line ITRes614 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S614),
+ ITResList615 = [ITRes614|ITResList614],
+
+
+ ?line {STRes615,S615} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList616 = [STRes615|STResList615],
+ ?line ITRes615 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S615),
+ ITResList616 = [ITRes615|ITResList615],
+
+
+ ?line {STRes616,S616} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList617 = [STRes616|STResList616],
+ ?line ITRes616 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S616),
+ ITResList617 = [ITRes616|ITResList616],
+
+
+ ?line {STRes617,S617} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList618 = [STRes617|STResList617],
+ ?line ITRes617 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S617),
+ ITResList618 = [ITRes617|ITResList617],
+
+
+ ?line {STRes618,S618} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList619 = [STRes618|STResList618],
+ ?line ITRes618 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S618),
+ ITResList619 = [ITRes618|ITResList618],
+
+
+ ?line {STRes619,S619} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList620 = [STRes619|STResList619],
+ ?line ITRes619 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S619),
+ ITResList620 = [ITRes619|ITResList619],
+
+
+ ?line {STRes620,S620} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList621 = [STRes620|STResList620],
+ ?line ITRes620 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S620),
+ ITResList621 = [ITRes620|ITResList620],
+
+
+ ?line {STRes621,S621} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList622 = [STRes621|STResList621],
+ ?line ITRes621 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S621),
+ ITResList622 = [ITRes621|ITResList621],
+
+
+ ?line {STRes622,S622} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList623 = [STRes622|STResList622],
+ ?line ITRes622 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S622),
+ ITResList623 = [ITRes622|ITResList622],
+
+
+ ?line {STRes623,S623} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList624 = [STRes623|STResList623],
+ ?line ITRes623 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S623),
+ ITResList624 = [ITRes623|ITResList623],
+
+
+ ?line {STRes624,S624} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList625 = [STRes624|STResList624],
+ ?line ITRes624 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S624),
+ ITResList625 = [ITRes624|ITResList624],
+
+
+ ?line {STRes625,S625} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList626 = [STRes625|STResList625],
+ ?line ITRes625 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S625),
+ ITResList626 = [ITRes625|ITResList625],
+
+
+ ?line {STRes626,S626} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList627 = [STRes626|STResList626],
+ ?line ITRes626 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S626),
+ ITResList627 = [ITRes626|ITResList626],
+
+
+ ?line {STRes627,S627} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList628 = [STRes627|STResList627],
+ ?line ITRes627 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S627),
+ ITResList628 = [ITRes627|ITResList627],
+
+
+ ?line {STRes628,S628} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList629 = [STRes628|STResList628],
+ ?line ITRes628 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S628),
+ ITResList629 = [ITRes628|ITResList628],
+
+
+ ?line {STRes629,S629} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList630 = [STRes629|STResList629],
+ ?line ITRes629 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S629),
+ ITResList630 = [ITRes629|ITResList629],
+
+
+ ?line {STRes630,S630} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList631 = [STRes630|STResList630],
+ ?line ITRes630 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S630),
+ ITResList631 = [ITRes630|ITResList630],
+
+
+ ?line {STRes631,S631} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList632 = [STRes631|STResList631],
+ ?line ITRes631 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S631),
+ ITResList632 = [ITRes631|ITResList631],
+
+
+ ?line {STRes632,S632} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList633 = [STRes632|STResList632],
+ ?line ITRes632 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S632),
+ ITResList633 = [ITRes632|ITResList632],
+
+
+ ?line {STRes633,S633} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList634 = [STRes633|STResList633],
+ ?line ITRes633 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedLong_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S633),
+ ITResList634 = [ITRes633|ITResList633],
+
+
+ ?line {STRes634,S634} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList635 = [STRes634|STResList634],
+ ?line ITRes634 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S634),
+ ITResList635 = [ITRes634|ITResList634],
+
+
+ ?line {STRes635,S635} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList636 = [STRes635|STResList635],
+ ?line ITRes635 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S635),
+ ITResList636 = [ITRes635|ITResList635],
+
+
+ ?line {STRes636,S636} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList637 = [STRes636|STResList636],
+ ?line ITRes636 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S636),
+ ITResList637 = [ITRes636|ITResList636],
+
+
+ ?line {STRes637,S637} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList638 = [STRes637|STResList637],
+ ?line ITRes637 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S637),
+ ITResList638 = [ITRes637|ITResList637],
+
+
+ ?line {STRes638,S638} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList639 = [STRes638|STResList638],
+ ?line ITRes638 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S638),
+ ITResList639 = [ITRes638|ITResList638],
+
+
+ ?line {STRes639,S639} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList640 = [STRes639|STResList639],
+ ?line ITRes639 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S639),
+ ITResList640 = [ITRes639|ITResList639],
+
+
+ ?line {STRes640,S640} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList641 = [STRes640|STResList640],
+ ?line ITRes640 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S640),
+ ITResList641 = [ITRes640|ITResList640],
+
+
+ ?line {STRes641,S641} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList642 = [STRes641|STResList641],
+ ?line ITRes641 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S641),
+ ITResList642 = [ITRes641|ITResList641],
+
+
+ ?line {STRes642,S642} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList643 = [STRes642|STResList642],
+ ?line ITRes642 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S642),
+ ITResList643 = [ITRes642|ITResList642],
+
+
+ ?line {STRes643,S643} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList644 = [STRes643|STResList643],
+ ?line ITRes643 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S643),
+ ITResList644 = [ITRes643|ITResList643],
+
+
+ ?line {STRes644,S644} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList645 = [STRes644|STResList644],
+ ?line ITRes644 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S644),
+ ITResList645 = [ITRes644|ITResList644],
+
+
+ ?line {STRes645,S645} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList646 = [STRes645|STResList645],
+ ?line ITRes645 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S645),
+ ITResList646 = [ITRes645|ITResList645],
+
+
+ ?line {STRes646,S646} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList647 = [STRes646|STResList646],
+ ?line ITRes646 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S646),
+ ITResList647 = [ITRes646|ITResList646],
+
+
+ ?line {STRes647,S647} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList648 = [STRes647|STResList647],
+ ?line ITRes647 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S647),
+ ITResList648 = [ITRes647|ITResList647],
+
+
+ ?line {STRes648,S648} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList649 = [STRes648|STResList648],
+ ?line ITRes648 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S648),
+ ITResList649 = [ITRes648|ITResList648],
+
+
+ ?line {STRes649,S649} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList650 = [STRes649|STResList649],
+ ?line ITRes649 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S649),
+ ITResList650 = [ITRes649|ITResList649],
+
+
+ ?line {STRes650,S650} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList651 = [STRes650|STResList650],
+ ?line ITRes650 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S650),
+ ITResList651 = [ITRes650|ITResList650],
+
+
+ ?line {STRes651,S651} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList652 = [STRes651|STResList651],
+ ?line ITRes651 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S651),
+ ITResList652 = [ITRes651|ITResList651],
+
+
+ ?line {STRes652,S652} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList653 = [STRes652|STResList652],
+ ?line ITRes652 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S652),
+ ITResList653 = [ITRes652|ITResList652],
+
+
+ ?line {STRes653,S653} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList654 = [STRes653|STResList653],
+ ?line ITRes653 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S653),
+ ITResList654 = [ITRes653|ITResList653],
+
+
+ ?line {STRes654,S654} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList655 = [STRes654|STResList654],
+ ?line ITRes654 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S654),
+ ITResList655 = [ITRes654|ITResList654],
+
+
+ ?line {STRes655,S655} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList656 = [STRes655|STResList655],
+ ?line ITRes655 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S655),
+ ITResList656 = [ITRes655|ITResList655],
+
+
+ ?line {STRes656,S656} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList657 = [STRes656|STResList656],
+ ?line ITRes656 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedInt_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S656),
+ ITResList657 = [ITRes656|ITResList656],
+
+
+ ?line {STRes657,S657} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList658 = [STRes657|STResList657],
+ ?line ITRes657 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S657),
+ ITResList658 = [ITRes657|ITResList657],
+
+
+ ?line {STRes658,S658} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList659 = [STRes658|STResList658],
+ ?line ITRes658 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S658),
+ ITResList659 = [ITRes658|ITResList658],
+
+
+ ?line {STRes659,S659} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList660 = [STRes659|STResList659],
+ ?line ITRes659 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S659),
+ ITResList660 = [ITRes659|ITResList659],
+
+
+ ?line {STRes660,S660} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList661 = [STRes660|STResList660],
+ ?line ITRes660 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S660),
+ ITResList661 = [ITRes660|ITResList660],
+
+
+ ?line {STRes661,S661} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList662 = [STRes661|STResList661],
+ ?line ITRes661 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S661),
+ ITResList662 = [ITRes661|ITResList661],
+
+
+ ?line {STRes662,S662} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList663 = [STRes662|STResList662],
+ ?line ITRes662 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S662),
+ ITResList663 = [ITRes662|ITResList662],
+
+
+ ?line {STRes663,S663} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList664 = [STRes663|STResList663],
+ ?line ITRes663 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S663),
+ ITResList664 = [ITRes663|ITResList663],
+
+
+ ?line {STRes664,S664} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList665 = [STRes664|STResList664],
+ ?line ITRes664 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S664),
+ ITResList665 = [ITRes664|ITResList664],
+
+
+ ?line {STRes665,S665} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList666 = [STRes665|STResList665],
+ ?line ITRes665 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S665),
+ ITResList666 = [ITRes665|ITResList665],
+
+
+ ?line {STRes666,S666} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList667 = [STRes666|STResList666],
+ ?line ITRes666 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S666),
+ ITResList667 = [ITRes666|ITResList666],
+
+
+ ?line {STRes667,S667} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList668 = [STRes667|STResList667],
+ ?line ITRes667 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S667),
+ ITResList668 = [ITRes667|ITResList667],
+
+
+ ?line {STRes668,S668} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList669 = [STRes668|STResList668],
+ ?line ITRes668 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S668),
+ ITResList669 = [ITRes668|ITResList668],
+
+
+ ?line {STRes669,S669} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList670 = [STRes669|STResList669],
+ ?line ITRes669 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S669),
+ ITResList670 = [ITRes669|ITResList669],
+
+
+ ?line {STRes670,S670} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList671 = [STRes670|STResList670],
+ ?line ITRes670 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S670),
+ ITResList671 = [ITRes670|ITResList670],
+
+
+ ?line {STRes671,S671} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList672 = [STRes671|STResList671],
+ ?line ITRes671 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S671),
+ ITResList672 = [ITRes671|ITResList671],
+
+
+ ?line {STRes672,S672} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList673 = [STRes672|STResList672],
+ ?line ITRes672 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S672),
+ ITResList673 = [ITRes672|ITResList672],
+
+
+ ?line {STRes673,S673} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList674 = [STRes673|STResList673],
+ ?line ITRes673 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S673),
+ ITResList674 = [ITRes673|ITResList673],
+
+
+ ?line {STRes674,S674} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList675 = [STRes674|STResList674],
+ ?line ITRes674 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S674),
+ ITResList675 = [ITRes674|ITResList674],
+
+
+ ?line {STRes675,S675} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList676 = [STRes675|STResList675],
+ ?line ITRes675 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S675),
+ ITResList676 = [ITRes675|ITResList675],
+
+
+ ?line {STRes676,S676} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList677 = [STRes676|STResList676],
+ ?line ITRes676 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S676),
+ ITResList677 = [ITRes676|ITResList676],
+
+
+ ?line {STRes677,S677} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList678 = [STRes677|STResList677],
+ ?line ITRes677 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S677),
+ ITResList678 = [ITRes677|ITResList677],
+
+
+ ?line {STRes678,S678} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList679 = [STRes678|STResList678],
+ ?line ITRes678 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S678),
+ ITResList679 = [ITRes678|ITResList678],
+
+
+ ?line {STRes679,S679} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList680 = [STRes679|STResList679],
+ ?line ITRes679 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedShort_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S679),
+ ITResList680 = [ITRes679|ITResList679],
+
+
+ ?line {STRes680,S680} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList681 = [STRes680|STResList680],
+ ?line ITRes680 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S680),
+ ITResList681 = [ITRes680|ITResList680],
+
+
+ ?line {STRes681,S681} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList682 = [STRes681|STResList681],
+ ?line ITRes681 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S681),
+ ITResList682 = [ITRes681|ITResList681],
+
+
+ ?line {STRes682,S682} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList683 = [STRes682|STResList682],
+ ?line ITRes682 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S682),
+ ITResList683 = [ITRes682|ITResList682],
+
+
+ ?line {STRes683,S683} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList684 = [STRes683|STResList683],
+ ?line ITRes683 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S683),
+ ITResList684 = [ITRes683|ITResList683],
+
+
+ ?line {STRes684,S684} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList685 = [STRes684|STResList684],
+ ?line ITRes684 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S684),
+ ITResList685 = [ITRes684|ITResList684],
+
+
+ ?line {STRes685,S685} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList686 = [STRes685|STResList685],
+ ?line ITRes685 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S685),
+ ITResList686 = [ITRes685|ITResList685],
+
+
+ ?line {STRes686,S686} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList687 = [STRes686|STResList686],
+ ?line ITRes686 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S686),
+ ITResList687 = [ITRes686|ITResList686],
+
+
+ ?line {STRes687,S687} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList688 = [STRes687|STResList687],
+ ?line ITRes687 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S687),
+ ITResList688 = [ITRes687|ITResList687],
+
+
+ ?line {STRes688,S688} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList689 = [STRes688|STResList688],
+ ?line ITRes688 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S688),
+ ITResList689 = [ITRes688|ITResList688],
+
+
+ ?line {STRes689,S689} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList690 = [STRes689|STResList689],
+ ?line ITRes689 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S689),
+ ITResList690 = [ITRes689|ITResList689],
+
+
+ ?line {STRes690,S690} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList691 = [STRes690|STResList690],
+ ?line ITRes690 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S690),
+ ITResList691 = [ITRes690|ITResList690],
+
+
+ ?line {STRes691,S691} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList692 = [STRes691|STResList691],
+ ?line ITRes691 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S691),
+ ITResList692 = [ITRes691|ITResList691],
+
+
+ ?line {STRes692,S692} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList693 = [STRes692|STResList692],
+ ?line ITRes692 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S692),
+ ITResList693 = [ITRes692|ITResList692],
+
+
+ ?line {STRes693,S693} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList694 = [STRes693|STResList693],
+ ?line ITRes693 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S693),
+ ITResList694 = [ITRes693|ITResList693],
+
+
+ ?line {STRes694,S694} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList695 = [STRes694|STResList694],
+ ?line ITRes694 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S694),
+ ITResList695 = [ITRes694|ITResList694],
+
+
+ ?line {STRes695,S695} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList696 = [STRes695|STResList695],
+ ?line ITRes695 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S695),
+ ITResList696 = [ITRes695|ITResList695],
+
+
+ ?line {STRes696,S696} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList697 = [STRes696|STResList696],
+ ?line ITRes696 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S696),
+ ITResList697 = [ITRes696|ITResList696],
+
+
+ ?line {STRes697,S697} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList698 = [STRes697|STResList697],
+ ?line ITRes697 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S697),
+ ITResList698 = [ITRes697|ITResList697],
+
+
+ ?line {STRes698,S698} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList699 = [STRes698|STResList698],
+ ?line ITRes698 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S698),
+ ITResList699 = [ITRes698|ITResList698],
+
+
+ ?line {STRes699,S699} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList700 = [STRes699|STResList699],
+ ?line ITRes699 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S699),
+ ITResList700 = [ITRes699|ITResList699],
+
+
+ ?line {STRes700,S700} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList701 = [STRes700|STResList700],
+ ?line ITRes700 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S700),
+ ITResList701 = [ITRes700|ITResList700],
+
+
+ ?line {STRes701,S701} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList702 = [STRes701|STResList701],
+ ?line ITRes701 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S701),
+ ITResList702 = [ITRes701|ITResList701],
+
+
+ ?line {STRes702,S702} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList703 = [STRes702|STResList702],
+ ?line ITRes702 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_unsignedByte_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S702),
+ ITResList703 = [ITRes702|ITResList702],
+
+
+ ?line {STRes703,S703} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList704 = [STRes703|STResList703],
+ ?line ITRes703 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S703),
+ ITResList704 = [ITRes703|ITResList703],
+
+
+ ?line {STRes704,S704} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList705 = [STRes704|STResList704],
+ ?line ITRes704 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S704),
+ ITResList705 = [ITRes704|ITResList704],
+
+
+ ?line {STRes705,S705} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList706 = [STRes705|STResList705],
+ ?line ITRes705 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S705),
+ ITResList706 = [ITRes705|ITResList705],
+
+
+ ?line {STRes706,S706} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList707 = [STRes706|STResList706],
+ ?line ITRes706 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S706),
+ ITResList707 = [ITRes706|ITResList706],
+
+
+ ?line {STRes707,S707} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList708 = [STRes707|STResList707],
+ ?line ITRes707 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S707),
+ ITResList708 = [ITRes707|ITResList707],
+
+
+ ?line {STRes708,S708} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList709 = [STRes708|STResList708],
+ ?line ITRes708 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S708),
+ ITResList709 = [ITRes708|ITResList708],
+
+
+ ?line {STRes709,S709} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList710 = [STRes709|STResList709],
+ ?line ITRes709 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S709),
+ ITResList710 = [ITRes709|ITResList709],
+
+
+ ?line {STRes710,S710} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList711 = [STRes710|STResList710],
+ ?line ITRes710 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S710),
+ ITResList711 = [ITRes710|ITResList710],
+
+
+ ?line {STRes711,S711} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList712 = [STRes711|STResList711],
+ ?line ITRes711 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S711),
+ ITResList712 = [ITRes711|ITResList711],
+
+
+ ?line {STRes712,S712} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList713 = [STRes712|STResList712],
+ ?line ITRes712 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S712),
+ ITResList713 = [ITRes712|ITResList712],
+
+
+ ?line {STRes713,S713} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList714 = [STRes713|STResList713],
+ ?line ITRes713 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S713),
+ ITResList714 = [ITRes713|ITResList713],
+
+
+ ?line {STRes714,S714} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList715 = [STRes714|STResList714],
+ ?line ITRes714 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S714),
+ ITResList715 = [ITRes714|ITResList714],
+
+
+ ?line {STRes715,S715} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList716 = [STRes715|STResList715],
+ ?line ITRes715 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S715),
+ ITResList716 = [ITRes715|ITResList715],
+
+
+ ?line {STRes716,S716} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList717 = [STRes716|STResList716],
+ ?line ITRes716 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S716),
+ ITResList717 = [ITRes716|ITResList716],
+
+
+ ?line {STRes717,S717} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList718 = [STRes717|STResList717],
+ ?line ITRes717 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S717),
+ ITResList718 = [ITRes717|ITResList717],
+
+
+ ?line {STRes718,S718} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList719 = [STRes718|STResList718],
+ ?line ITRes718 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S718),
+ ITResList719 = [ITRes718|ITResList718],
+
+
+ ?line {STRes719,S719} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList720 = [STRes719|STResList719],
+ ?line ITRes719 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S719),
+ ITResList720 = [ITRes719|ITResList719],
+
+
+ ?line {STRes720,S720} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList721 = [STRes720|STResList720],
+ ?line ITRes720 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S720),
+ ITResList721 = [ITRes720|ITResList720],
+
+
+ ?line {STRes721,S721} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList722 = [STRes721|STResList721],
+ ?line ITRes721 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S721),
+ ITResList722 = [ITRes721|ITResList721],
+
+
+ ?line {STRes722,S722} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList723 = [STRes722|STResList722],
+ ?line ITRes722 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S722),
+ ITResList723 = [ITRes722|ITResList722],
+
+
+ ?line {STRes723,S723} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList724 = [STRes723|STResList723],
+ ?line ITRes723 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S723),
+ ITResList724 = [ITRes723|ITResList723],
+
+
+ ?line {STRes724,S724} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList725 = [STRes724|STResList724],
+ ?line ITRes724 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S724),
+ ITResList725 = [ITRes724|ITResList724],
+
+
+ ?line {STRes725,S725} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList726 = [STRes725|STResList725],
+ ?line ITRes725 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S725),
+ ITResList726 = [ITRes725|ITResList725],
+
+
+ ?line {STRes726,S726} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList727 = [STRes726|STResList726],
+ ?line ITRes726 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_double.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S726),
+ ITResList727 = [ITRes726|ITResList726],
+
+
+ ?line {STRes727,S727} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList728 = [STRes727|STResList727],
+ ?line ITRes727 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_double_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S727),
+ ITResList728 = [ITRes727|ITResList727],
+
+
+ ?line {STRes728,S728} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList729 = [STRes728|STResList728],
+ ?line ITRes728 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S728),
+ ITResList729 = [ITRes728|ITResList728],
+
+
+ ?line {STRes729,S729} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList730 = [STRes729|STResList729],
+ ?line ITRes729 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S729),
+ ITResList730 = [ITRes729|ITResList729],
+
+
+ ?line {STRes730,S730} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList731 = [STRes730|STResList730],
+ ?line ITRes730 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S730),
+ ITResList731 = [ITRes730|ITResList730],
+
+
+ ?line {STRes731,S731} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList732 = [STRes731|STResList731],
+ ?line ITRes731 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S731),
+ ITResList732 = [ITRes731|ITResList731],
+
+
+ ?line {STRes732,S732} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList733 = [STRes732|STResList732],
+ ?line ITRes732 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S732),
+ ITResList733 = [ITRes732|ITResList732],
+
+
+ ?line {STRes733,S733} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList734 = [STRes733|STResList733],
+ ?line ITRes733 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S733),
+ ITResList734 = [ITRes733|ITResList733],
+
+
+ ?line {STRes734,S734} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList735 = [STRes734|STResList734],
+ ?line ITRes734 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S734),
+ ITResList735 = [ITRes734|ITResList734],
+
+
+ ?line {STRes735,S735} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList736 = [STRes735|STResList735],
+ ?line ITRes735 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S735),
+ ITResList736 = [ITRes735|ITResList735],
+
+
+ ?line {STRes736,S736} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_IDREFS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList737 = [STRes736|STResList736],
+ ?line ITRes736 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_IDREFS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S736),
+ ITResList737 = [ITRes736|ITResList736],
+
+
+ ?line {STRes737,S737} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList738 = [STRes737|STResList737],
+ ?line ITRes737 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S737),
+ ITResList738 = [ITRes737|ITResList737],
+
+
+ ?line {STRes738,S738} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList739 = [STRes738|STResList738],
+ ?line ITRes738 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S738),
+ ITResList739 = [ITRes738|ITResList738],
+
+
+ ?line {STRes739,S739} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList740 = [STRes739|STResList739],
+ ?line ITRes739 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S739),
+ ITResList740 = [ITRes739|ITResList739],
+
+
+ ?line {STRes740,S740} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_base64Binary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList741 = [STRes740|STResList740],
+ ?line ITRes740 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_base64Binary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S740),
+ ITResList741 = [ITRes740|ITResList740],
+
+
+ ?line {STRes741,S741} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_hexBinary.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList742 = [STRes741|STResList741],
+ ?line ITRes741 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_hexBinary.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S741),
+ ITResList742 = [ITRes741|ITResList741],
+
+
+ ?line {STRes742,S742} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_float.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList743 = [STRes742|STResList742],
+ ?line ITRes742 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_float.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S742),
+ ITResList743 = [ITRes742|ITResList742],
+
+
+ ?line {STRes743,S743} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_decimal.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList744 = [STRes743|STResList743],
+ ?line ITRes743 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_decimal.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S743),
+ ITResList744 = [ITRes743|ITResList743],
+
+
+ ?line {STRes744,S744} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_integer.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList745 = [STRes744|STResList744],
+ ?line ITRes744 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_integer.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S744),
+ ITResList745 = [ITRes744|ITResList744],
+
+
+ ?line {STRes745,S745} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_nonPositiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList746 = [STRes745|STResList745],
+ ?line ITRes745 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_nonPositiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S745),
+ ITResList746 = [ITRes745|ITResList745],
+
+
+ ?line {STRes746,S746} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_negativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList747 = [STRes746|STResList746],
+ ?line ITRes746 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_negativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S746),
+ ITResList747 = [ITRes746|ITResList746],
+
+
+ ?line {STRes747,S747} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_long.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList748 = [STRes747|STResList747],
+ ?line ITRes747 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_long.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S747),
+ ITResList748 = [ITRes747|ITResList747],
+
+
+ ?line {STRes748,S748} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_int.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList749 = [STRes748|STResList748],
+ ?line ITRes748 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_int.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S748),
+ ITResList749 = [ITRes748|ITResList748],
+
+
+ ?line {STRes749,S749} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_short.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList750 = [STRes749|STResList749],
+ ?line ITRes749 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_short.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S749),
+ ITResList750 = [ITRes749|ITResList749],
+
+
+ ?line {STRes750,S750} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_byte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList751 = [STRes750|STResList750],
+ ?line ITRes750 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_byte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S750),
+ ITResList751 = [ITRes750|ITResList750],
+
+
+ ?line {STRes751,S751} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_nonNegativeInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList752 = [STRes751|STResList751],
+ ?line ITRes751 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_nonNegativeInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S751),
+ ITResList752 = [ITRes751|ITResList751],
+
+
+ ?line {STRes752,S752} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_positiveInteger.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList753 = [STRes752|STResList752],
+ ?line ITRes752 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_positiveInteger.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S752),
+ ITResList753 = [ITRes752|ITResList752],
+
+
+ ?line {STRes753,S753} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_unsignedLong.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList754 = [STRes753|STResList753],
+ ?line ITRes753 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_unsignedLong.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S753),
+ ITResList754 = [ITRes753|ITResList753],
+
+
+ ?line {STRes754,S754} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_unsignedInt.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList755 = [STRes754|STResList754],
+ ?line ITRes754 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_unsignedInt.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S754),
+ ITResList755 = [ITRes754|ITResList754],
+
+
+ ?line {STRes755,S755} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_unsignedShort.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList756 = [STRes755|STResList755],
+ ?line ITRes755 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_unsignedShort.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S755),
+ ITResList756 = [ITRes755|ITResList755],
+
+
+ ?line {STRes756,S756} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_unsignedByte.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList757 = [STRes756|STResList756],
+ ?line ITRes756 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_unsignedByte.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S756),
+ ITResList757 = [ITRes756|ITResList756],
+
+
+ ?line {STRes757,S757} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_double.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList758 = [STRes757|STResList757],
+ ?line ITRes757 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_double.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S757),
+ ITResList758 = [ITRes757|ITResList757],
+
+
+ ?line {STRes758,S758} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList759 = [STRes758|STResList758],
+ ?line ITRes758 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S758),
+ ITResList759 = [ITRes758|ITResList758],
+
+
+ ?line {STRes759,S759} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList760 = [STRes759|STResList759],
+ ?line ITRes759 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S759),
+ ITResList760 = [ITRes759|ITResList759],
+
+
+ ?line {STRes760,S760} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList761 = [STRes760|STResList760],
+ ?line ITRes760 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S760),
+ ITResList761 = [ITRes760|ITResList760],
+
+
+ ?line {STRes761,S761} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList762 = [STRes761|STResList761],
+ ?line ITRes761 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S761),
+ ITResList762 = [ITRes761|ITResList761],
+
+
+ ?line {STRes762,S762} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_dateTime.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList763 = [STRes762|STResList762],
+ ?line ITRes762 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_dateTime.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S762),
+ ITResList763 = [ITRes762|ITResList762],
+
+
+ ?line {STRes763,S763} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_time.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList764 = [STRes763|STResList763],
+ ?line ITRes763 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_time.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S763),
+ ITResList764 = [ITRes763|ITResList763],
+
+
+ ?line {STRes764,S764} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_date.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList765 = [STRes764|STResList764],
+ ?line ITRes764 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_date.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S764),
+ ITResList765 = [ITRes764|ITResList764],
+
+
+ ?line {STRes765,S765} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gYearMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList766 = [STRes765|STResList765],
+ ?line ITRes765 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gYearMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S765),
+ ITResList766 = [ITRes765|ITResList765],
+
+
+ ?line {STRes766,S766} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gYear.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList767 = [STRes766|STResList766],
+ ?line ITRes766 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gYear.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S766),
+ ITResList767 = [ITRes766|ITResList766],
+
+
+ ?line {STRes767,S767} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gMonthDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList768 = [STRes767|STResList767],
+ ?line ITRes767 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gMonthDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S767),
+ ITResList768 = [ITRes767|ITResList767],
+
+
+ ?line {STRes768,S768} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList769 = [STRes768|STResList768],
+ ?line ITRes768 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S768),
+ ITResList769 = [ITRes768|ITResList768],
+
+
+ ?line {STRes769,S769} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList770 = [STRes769|STResList769],
+ ?line ITRes769 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_anyURI_gMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S769),
+ ITResList770 = [ITRes769|ITResList769],
+
+
+ ?line {STRes770,S770} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList771 = [STRes770|STResList770],
+ ?line ITRes770 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S770),
+ ITResList771 = [ITRes770|ITResList770],
+
+
+ ?line {STRes771,S771} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList772 = [STRes771|STResList771],
+ ?line ITRes771 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S771),
+ ITResList772 = [ITRes771|ITResList771],
+
+
+ ?line {STRes772,S772} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList773 = [STRes772|STResList772],
+ ?line ITRes772 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S772),
+ ITResList773 = [ITRes772|ITResList772],
+
+
+ ?line {STRes773,S773} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList774 = [STRes773|STResList773],
+ ?line ITRes773 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S773),
+ ITResList774 = [ITRes773|ITResList773],
+
+
+ ?line {STRes774,S774} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList775 = [STRes774|STResList774],
+ ?line ITRes774 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S774),
+ ITResList775 = [ITRes774|ITResList774],
+
+
+ ?line {STRes775,S775} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList776 = [STRes775|STResList775],
+ ?line ITRes775 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S775),
+ ITResList776 = [ITRes775|ITResList775],
+
+
+ ?line {STRes776,S776} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList777 = [STRes776|STResList776],
+ ?line ITRes776 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S776),
+ ITResList777 = [ITRes776|ITResList776],
+
+
+ ?line {STRes777,S777} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList778 = [STRes777|STResList777],
+ ?line ITRes777 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S777),
+ ITResList778 = [ITRes777|ITResList777],
+
+
+ ?line {STRes778,S778} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_IDREFS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList779 = [STRes778|STResList778],
+ ?line ITRes778 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_IDREFS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S778),
+ ITResList779 = [ITRes778|ITResList778],
+
+
+ ?line {STRes779,S779} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList780 = [STRes779|STResList779],
+ ?line ITRes779 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S779),
+ ITResList780 = [ITRes779|ITResList779],
+
+
+ ?line {STRes780,S780} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList781 = [STRes780|STResList780],
+ ?line ITRes780 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S780),
+ ITResList781 = [ITRes780|ITResList780],
+
+
+ ?line {STRes781,S781} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList782 = [STRes781|STResList781],
+ ?line ITRes781 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S781),
+ ITResList782 = [ITRes781|ITResList781],
+
+
+ ?line {STRes782,S782} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList783 = [STRes782|STResList782],
+ ?line ITRes782 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S782),
+ ITResList783 = [ITRes782|ITResList782],
+
+
+ ?line {STRes783,S783} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList784 = [STRes783|STResList783],
+ ?line ITRes783 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S783),
+ ITResList784 = [ITRes783|ITResList783],
+
+
+ ?line {STRes784,S784} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList785 = [STRes784|STResList784],
+ ?line ITRes784 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_QName_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S784),
+ ITResList785 = [ITRes784|ITResList784],
+
+
+ ?line {STRes785,S785} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList786 = [STRes785|STResList785],
+ ?line ITRes785 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S785),
+ ITResList786 = [ITRes785|ITResList785],
+
+
+ ?line {STRes786,S786} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList787 = [STRes786|STResList786],
+ ?line ITRes786 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S786),
+ ITResList787 = [ITRes786|ITResList786],
+
+
+ ?line {STRes787,S787} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList788 = [STRes787|STResList787],
+ ?line ITRes787 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S787),
+ ITResList788 = [ITRes787|ITResList787],
+
+
+ ?line {STRes788,S788} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_language.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList789 = [STRes788|STResList788],
+ ?line ITRes788 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_language.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S788),
+ ITResList789 = [ITRes788|ITResList788],
+
+
+ ?line {STRes789,S789} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList790 = [STRes789|STResList789],
+ ?line ITRes789 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S789),
+ ITResList790 = [ITRes789|ITResList789],
+
+
+ ?line {STRes790,S790} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList791 = [STRes790|STResList790],
+ ?line ITRes790 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S790),
+ ITResList791 = [ITRes790|ITResList790],
+
+
+ ?line {STRes791,S791} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList792 = [STRes791|STResList791],
+ ?line ITRes791 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S791),
+ ITResList792 = [ITRes791|ITResList791],
+
+
+ ?line {STRes792,S792} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList793 = [STRes792|STResList792],
+ ?line ITRes792 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S792),
+ ITResList793 = [ITRes792|ITResList792],
+
+
+ ?line {STRes793,S793} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_IDREFS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList794 = [STRes793|STResList793],
+ ?line ITRes793 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_IDREFS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S793),
+ ITResList794 = [ITRes793|ITResList793],
+
+
+ ?line {STRes794,S794} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList795 = [STRes794|STResList794],
+ ?line ITRes794 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S794),
+ ITResList795 = [ITRes794|ITResList794],
+
+
+ ?line {STRes795,S795} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList796 = [STRes795|STResList795],
+ ?line ITRes795 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S795),
+ ITResList796 = [ITRes795|ITResList795],
+
+
+ ?line {STRes796,S796} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_boolean.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList797 = [STRes796|STResList796],
+ ?line ITRes796 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_boolean.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S796),
+ ITResList797 = [ITRes796|ITResList796],
+
+
+ ?line {STRes797,S797} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList798 = [STRes797|STResList797],
+ ?line ITRes797 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S797),
+ ITResList798 = [ITRes797|ITResList797],
+
+
+ ?line {STRes798,S798} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList799 = [STRes798|STResList798],
+ ?line ITRes798 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S798),
+ ITResList799 = [ITRes798|ITResList798],
+
+
+ ?line {STRes799,S799} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList800 = [STRes799|STResList799],
+ ?line ITRes799 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_NOTATION_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S799),
+ ITResList800 = [ITRes799|ITResList799],
+
+
+ ?line {STRes800,S800} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList801 = [STRes800|STResList800],
+ ?line ITRes800 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S800),
+ ITResList801 = [ITRes800|ITResList800],
+
+
+ ?line {STRes801,S801} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList802 = [STRes801|STResList801],
+ ?line ITRes801 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S801),
+ ITResList802 = [ITRes801|ITResList801],
+
+
+ ?line {STRes802,S802} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList803 = [STRes802|STResList802],
+ ?line ITRes802 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S802),
+ ITResList803 = [ITRes802|ITResList802],
+
+
+ ?line {STRes803,S803} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_Name.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList804 = [STRes803|STResList803],
+ ?line ITRes803 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_Name.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S803),
+ ITResList804 = [ITRes803|ITResList803],
+
+
+ ?line {STRes804,S804} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_NCName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList805 = [STRes804|STResList804],
+ ?line ITRes804 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_NCName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S804),
+ ITResList805 = [ITRes804|ITResList804],
+
+
+ ?line {STRes805,S805} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_ID.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList806 = [STRes805|STResList805],
+ ?line ITRes805 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_ID.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S805),
+ ITResList806 = [ITRes805|ITResList805],
+
+
+ ?line {STRes806,S806} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_IDREF.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList807 = [STRes806|STResList806],
+ ?line ITRes806 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_IDREF.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S806),
+ ITResList807 = [ITRes806|ITResList806],
+
+
+ ?line {STRes807,S807} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_IDREFS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList808 = [STRes807|STResList807],
+ ?line ITRes807 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_IDREFS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S807),
+ ITResList808 = [ITRes807|ITResList807],
+
+
+ ?line {STRes808,S808} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList809 = [STRes808|STResList808],
+ ?line ITRes808 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S808),
+ ITResList809 = [ITRes808|ITResList808],
+
+
+ ?line {STRes809,S809} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList810 = [STRes809|STResList809],
+ ?line ITRes809 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S809),
+ ITResList810 = [ITRes809|ITResList809],
+
+
+ ?line {STRes810,S810} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList811 = [STRes810|STResList810],
+ ?line ITRes810 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S810),
+ ITResList811 = [ITRes810|ITResList810],
+
+
+ ?line {STRes811,S811} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_QName.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList812 = [STRes811|STResList811],
+ ?line ITRes811 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_QName.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S811),
+ ITResList812 = [ITRes811|ITResList811],
+
+
+ ?line {STRes812,S812} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_NOTATION.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList813 = [STRes812|STResList812],
+ ?line ITRes812 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_NOTATION.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S812),
+ ITResList813 = [ITRes812|ITResList812],
+
+
+ ?line {STRes813,S813} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList814 = [STRes813|STResList813],
+ ?line ITRes813 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S813),
+ ITResList814 = [ITRes813|ITResList813],
+
+
+ ?line {STRes814,S814} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_dateTime.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList815 = [STRes814|STResList814],
+ ?line ITRes814 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_dateTime.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S814),
+ ITResList815 = [ITRes814|ITResList814],
+
+
+ ?line {STRes815,S815} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_time.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList816 = [STRes815|STResList815],
+ ?line ITRes815 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_time.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S815),
+ ITResList816 = [ITRes815|ITResList815],
+
+
+ ?line {STRes816,S816} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_date.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList817 = [STRes816|STResList816],
+ ?line ITRes816 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_date.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S816),
+ ITResList817 = [ITRes816|ITResList816],
+
+
+ ?line {STRes817,S817} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gYearMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList818 = [STRes817|STResList817],
+ ?line ITRes817 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gYearMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S817),
+ ITResList818 = [ITRes817|ITResList817],
+
+
+ ?line {STRes818,S818} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gYear.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList819 = [STRes818|STResList818],
+ ?line ITRes818 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gYear.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S818),
+ ITResList819 = [ITRes818|ITResList818],
+
+
+ ?line {STRes819,S819} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gMonthDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList820 = [STRes819|STResList819],
+ ?line ITRes819 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gMonthDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S819),
+ ITResList820 = [ITRes819|ITResList819],
+
+
+ ?line {STRes820,S820} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList821 = [STRes820|STResList820],
+ ?line ITRes820 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gDay.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S820),
+ ITResList821 = [ITRes820|ITResList820],
+
+
+ ?line {STRes821,S821} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList822 = [STRes821|STResList821],
+ ?line ITRes821 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_duration_gMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S821),
+ ITResList822 = [ITRes821|ITResList821],
+
+
+ ?line {STRes822,S822} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList823 = [STRes822|STResList822],
+ ?line ITRes822 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S822),
+ ITResList823 = [ITRes822|ITResList822],
+
+
+ ?line {STRes823,S823} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList824 = [STRes823|STResList823],
+ ?line ITRes823 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S823),
+ ITResList824 = [ITRes823|ITResList823],
+
+
+ ?line {STRes824,S824} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList825 = [STRes824|STResList824],
+ ?line ITRes824 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S824),
+ ITResList825 = [ITRes824|ITResList824],
+
+
+ ?line {STRes825,S825} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList826 = [STRes825|STResList825],
+ ?line ITRes825 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S825),
+ ITResList826 = [ITRes825|ITResList825],
+
+
+ ?line {STRes826,S826} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList827 = [STRes826|STResList826],
+ ?line ITRes826 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S826),
+ ITResList827 = [ITRes826|ITResList826],
+
+
+ ?line {STRes827,S827} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList828 = [STRes827|STResList827],
+ ?line ITRes827 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S827),
+ ITResList828 = [ITRes827|ITResList827],
+
+
+ ?line {STRes828,S828} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList829 = [STRes828|STResList828],
+ ?line ITRes828 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S828),
+ ITResList829 = [ITRes828|ITResList828],
+
+
+ ?line {STRes829,S829} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_dateTime.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList830 = [STRes829|STResList829],
+ ?line ITRes829 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_dateTime.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S829),
+ ITResList830 = [ITRes829|ITResList829],
+
+
+ ?line {STRes830,S830} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_date.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList831 = [STRes830|STResList830],
+ ?line ITRes830 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_dateTime_date.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S830),
+ ITResList831 = [ITRes830|ITResList830],
+
+
+ ?line {STRes831,S831} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList832 = [STRes831|STResList831],
+ ?line ITRes831 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S831),
+ ITResList832 = [ITRes831|ITResList831],
+
+
+ ?line {STRes832,S832} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList833 = [STRes832|STResList832],
+ ?line ITRes832 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S832),
+ ITResList833 = [ITRes832|ITResList832],
+
+
+ ?line {STRes833,S833} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList834 = [STRes833|STResList833],
+ ?line ITRes833 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S833),
+ ITResList834 = [ITRes833|ITResList833],
+
+
+ ?line {STRes834,S834} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList835 = [STRes834|STResList834],
+ ?line ITRes834 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S834),
+ ITResList835 = [ITRes834|ITResList834],
+
+
+ ?line {STRes835,S835} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList836 = [STRes835|STResList835],
+ ?line ITRes835 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S835),
+ ITResList836 = [ITRes835|ITResList835],
+
+
+ ?line {STRes836,S836} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList837 = [STRes836|STResList836],
+ ?line ITRes836 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S836),
+ ITResList837 = [ITRes836|ITResList836],
+
+
+ ?line {STRes837,S837} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList838 = [STRes837|STResList837],
+ ?line ITRes837 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S837),
+ ITResList838 = [ITRes837|ITResList837],
+
+
+ ?line {STRes838,S838} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_time.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList839 = [STRes838|STResList838],
+ ?line ITRes838 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_time_time.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S838),
+ ITResList839 = [ITRes838|ITResList838],
+
+
+ ?line {STRes839,S839} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList840 = [STRes839|STResList839],
+ ?line ITRes839 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S839),
+ ITResList840 = [ITRes839|ITResList839],
+
+
+ ?line {STRes840,S840} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList841 = [STRes840|STResList840],
+ ?line ITRes840 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S840),
+ ITResList841 = [ITRes840|ITResList840],
+
+
+ ?line {STRes841,S841} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList842 = [STRes841|STResList841],
+ ?line ITRes841 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S841),
+ ITResList842 = [ITRes841|ITResList841],
+
+
+ ?line {STRes842,S842} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList843 = [STRes842|STResList842],
+ ?line ITRes842 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S842),
+ ITResList843 = [ITRes842|ITResList842],
+
+
+ ?line {STRes843,S843} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList844 = [STRes843|STResList843],
+ ?line ITRes843 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S843),
+ ITResList844 = [ITRes843|ITResList843],
+
+
+ ?line {STRes844,S844} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList845 = [STRes844|STResList844],
+ ?line ITRes844 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S844),
+ ITResList845 = [ITRes844|ITResList844],
+
+
+ ?line {STRes845,S845} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList846 = [STRes845|STResList845],
+ ?line ITRes845 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S845),
+ ITResList846 = [ITRes845|ITResList845],
+
+
+ ?line {STRes846,S846} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_dateTime.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList847 = [STRes846|STResList846],
+ ?line ITRes846 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_dateTime.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S846),
+ ITResList847 = [ITRes846|ITResList846],
+
+
+ ?line {STRes847,S847} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_date.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList848 = [STRes847|STResList847],
+ ?line ITRes847 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_date_date.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S847),
+ ITResList848 = [ITRes847|ITResList847],
+
+
+ ?line {STRes848,S848} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList849 = [STRes848|STResList848],
+ ?line ITRes848 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S848),
+ ITResList849 = [ITRes848|ITResList848],
+
+
+ ?line {STRes849,S849} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList850 = [STRes849|STResList849],
+ ?line ITRes849 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S849),
+ ITResList850 = [ITRes849|ITResList849],
+
+
+ ?line {STRes850,S850} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList851 = [STRes850|STResList850],
+ ?line ITRes850 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S850),
+ ITResList851 = [ITRes850|ITResList850],
+
+
+ ?line {STRes851,S851} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList852 = [STRes851|STResList851],
+ ?line ITRes851 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S851),
+ ITResList852 = [ITRes851|ITResList851],
+
+
+ ?line {STRes852,S852} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList853 = [STRes852|STResList852],
+ ?line ITRes852 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S852),
+ ITResList853 = [ITRes852|ITResList852],
+
+
+ ?line {STRes853,S853} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList854 = [STRes853|STResList853],
+ ?line ITRes853 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S853),
+ ITResList854 = [ITRes853|ITResList853],
+
+
+ ?line {STRes854,S854} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList855 = [STRes854|STResList854],
+ ?line ITRes854 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S854),
+ ITResList855 = [ITRes854|ITResList854],
+
+
+ ?line {STRes855,S855} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_gYearMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList856 = [STRes855|STResList855],
+ ?line ITRes855 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYearMonth_gYearMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S855),
+ ITResList856 = [ITRes855|ITResList855],
+
+
+ ?line {STRes856,S856} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList857 = [STRes856|STResList856],
+ ?line ITRes856 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S856),
+ ITResList857 = [ITRes856|ITResList856],
+
+
+ ?line {STRes857,S857} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList858 = [STRes857|STResList857],
+ ?line ITRes857 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S857),
+ ITResList858 = [ITRes857|ITResList857],
+
+
+ ?line {STRes858,S858} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList859 = [STRes858|STResList858],
+ ?line ITRes858 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S858),
+ ITResList859 = [ITRes858|ITResList858],
+
+
+ ?line {STRes859,S859} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList860 = [STRes859|STResList859],
+ ?line ITRes859 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S859),
+ ITResList860 = [ITRes859|ITResList859],
+
+
+ ?line {STRes860,S860} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList861 = [STRes860|STResList860],
+ ?line ITRes860 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S860),
+ ITResList861 = [ITRes860|ITResList860],
+
+
+ ?line {STRes861,S861} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList862 = [STRes861|STResList861],
+ ?line ITRes861 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S861),
+ ITResList862 = [ITRes861|ITResList861],
+
+
+ ?line {STRes862,S862} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList863 = [STRes862|STResList862],
+ ?line ITRes862 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S862),
+ ITResList863 = [ITRes862|ITResList862],
+
+
+ ?line {STRes863,S863} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_gYear.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList864 = [STRes863|STResList863],
+ ?line ITRes863 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gYear_gYear.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S863),
+ ITResList864 = [ITRes863|ITResList863],
+
+
+ ?line {STRes864,S864} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList865 = [STRes864|STResList864],
+ ?line ITRes864 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S864),
+ ITResList865 = [ITRes864|ITResList864],
+
+
+ ?line {STRes865,S865} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList866 = [STRes865|STResList865],
+ ?line ITRes865 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S865),
+ ITResList866 = [ITRes865|ITResList865],
+
+
+ ?line {STRes866,S866} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList867 = [STRes866|STResList866],
+ ?line ITRes866 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S866),
+ ITResList867 = [ITRes866|ITResList866],
+
+
+ ?line {STRes867,S867} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList868 = [STRes867|STResList867],
+ ?line ITRes867 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S867),
+ ITResList868 = [ITRes867|ITResList867],
+
+
+ ?line {STRes868,S868} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList869 = [STRes868|STResList868],
+ ?line ITRes868 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S868),
+ ITResList869 = [ITRes868|ITResList868],
+
+
+ ?line {STRes869,S869} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList870 = [STRes869|STResList869],
+ ?line ITRes869 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S869),
+ ITResList870 = [ITRes869|ITResList869],
+
+
+ ?line {STRes870,S870} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList871 = [STRes870|STResList870],
+ ?line ITRes870 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S870),
+ ITResList871 = [ITRes870|ITResList870],
+
+
+ ?line {STRes871,S871} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_gMonthDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList872 = [STRes871|STResList871],
+ ?line ITRes871 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonthDay_gMonthDay.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S871),
+ ITResList872 = [ITRes871|ITResList871],
+
+
+ ?line {STRes872,S872} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList873 = [STRes872|STResList872],
+ ?line ITRes872 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S872),
+ ITResList873 = [ITRes872|ITResList872],
+
+
+ ?line {STRes873,S873} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList874 = [STRes873|STResList873],
+ ?line ITRes873 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S873),
+ ITResList874 = [ITRes873|ITResList873],
+
+
+ ?line {STRes874,S874} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList875 = [STRes874|STResList874],
+ ?line ITRes874 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S874),
+ ITResList875 = [ITRes874|ITResList874],
+
+
+ ?line {STRes875,S875} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList876 = [STRes875|STResList875],
+ ?line ITRes875 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S875),
+ ITResList876 = [ITRes875|ITResList875],
+
+
+ ?line {STRes876,S876} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList877 = [STRes876|STResList876],
+ ?line ITRes876 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S876),
+ ITResList877 = [ITRes876|ITResList876],
+
+
+ ?line {STRes877,S877} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList878 = [STRes877|STResList877],
+ ?line ITRes877 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S877),
+ ITResList878 = [ITRes877|ITResList877],
+
+
+ ?line {STRes878,S878} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList879 = [STRes878|STResList878],
+ ?line ITRes878 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S878),
+ ITResList879 = [ITRes878|ITResList878],
+
+
+ ?line {STRes879,S879} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_gDay.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList880 = [STRes879|STResList879],
+ ?line ITRes879 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gDay_gDay.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S879),
+ ITResList880 = [ITRes879|ITResList879],
+
+
+ ?line {STRes880,S880} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_string.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList881 = [STRes880|STResList880],
+ ?line ITRes880 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_string.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S880),
+ ITResList881 = [ITRes880|ITResList880],
+
+
+ ?line {STRes881,S881} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_normalizedString.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList882 = [STRes881|STResList881],
+ ?line ITRes881 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_normalizedString.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S881),
+ ITResList882 = [ITRes881|ITResList881],
+
+
+ ?line {STRes882,S882} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_token.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList883 = [STRes882|STResList882],
+ ?line ITRes882 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_token.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S882),
+ ITResList883 = [ITRes882|ITResList882],
+
+
+ ?line {STRes883,S883} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_NMTOKEN.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList884 = [STRes883|STResList883],
+ ?line ITRes883 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_NMTOKEN.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S883),
+ ITResList884 = [ITRes883|ITResList883],
+
+
+ ?line {STRes884,S884} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_NMTOKENS.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList885 = [STRes884|STResList884],
+ ?line ITRes884 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_NMTOKENS.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S884),
+ ITResList885 = [ITRes884|ITResList884],
+
+
+ ?line {STRes885,S885} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_anyURI.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList886 = [STRes885|STResList885],
+ ?line ITRes885 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_anyURI.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S885),
+ ITResList886 = [ITRes885|ITResList885],
+
+
+ ?line {STRes886,S886} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_duration.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList887 = [STRes886|STResList886],
+ ?line ITRes886 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_duration.xml','./msxsdtest/identityConstraint/idc_datatypes',invalid,S886),
+ ITResList887 = [ITRes886|ITResList886],
+
+
+ ?line {STRes887,S887} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_gMonth.xsd','./msxsdtest/identityConstraint/idc_datatypes',valid),
+ STResList888 = [STRes887|STResList887],
+ ?line ITRes887 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idc_datatypes/idc_gMonth_gMonth.xml','./msxsdtest/identityConstraint/idc_datatypes',valid,S887),
+ ITResList888 = [ITRes887|ITResList887],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList888,ITResList888).
+
+%% Identity-constraint Definition Schema Component.
+%% Identity-constraint Validation Rules.
+%% Selector identity-constraint xpath bnf.
+%% Field identity-constraint xpath bnf.
+%% XPath validation.
+%% Bug Regressions
+
+id(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA002.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA003.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA004.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA005.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA006.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA007.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA011.xsd','./msxsdtest/identityConstraint',valid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA014.xsd','./msxsdtest/identityConstraint',valid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList15 = [STRes14|STResList14],
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA016.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA017.xsd','./msxsdtest/identityConstraint',valid),
+ STResList17 = [STRes16|STResList16],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA018.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA019.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA020.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA021.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA022.xsd','./msxsdtest/identityConstraint',valid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA023.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA024.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA025.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA026.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA027.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA028.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA029.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA030.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA031.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA032.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA033.xsd','./msxsdtest/identityConstraint',valid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA034.xsd','./msxsdtest/identityConstraint',valid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA035.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA036.xsd','./msxsdtest/identityConstraint',valid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA037.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA038.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA039.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA040.xsd','./msxsdtest/identityConstraint',valid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA041.xsd','./msxsdtest/identityConstraint',valid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA042.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA043.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA044.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA045.xsd','./msxsdtest/identityConstraint',valid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA046.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA047.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA048.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList48 = [STRes47|STResList47],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA049.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA050.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList50 = [STRes49|STResList49],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA051.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA052.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA053.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList53 = [STRes52|STResList52],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA054.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA055.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA056.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA057.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA058.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList58 = [STRes57|STResList57],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA059.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idA060.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList60 = [STRes59|STResList59],
+
+
+ ?line {STRes60,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList61 = [STRes60|STResList60],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB002.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList62 = [STRes61|STResList61],
+
+
+ ?line {STRes62,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB003.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList63 = [STRes62|STResList62],
+
+
+ ?line {STRes63,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB004.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList64 = [STRes63|STResList63],
+
+
+ ?line {STRes64,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB005.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList65 = [STRes64|STResList64],
+
+
+ ?line {STRes65,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB006.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList66 = [STRes65|STResList65],
+
+
+ ?line {STRes66,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB007.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList67 = [STRes66|STResList66],
+
+
+ ?line {STRes67,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList68 = [STRes67|STResList67],
+
+
+ ?line {STRes68,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList69 = [STRes68|STResList68],
+
+
+ ?line {STRes69,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList70 = [STRes69|STResList69],
+
+
+ ?line {STRes70,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB011.xsd','./msxsdtest/identityConstraint',valid),
+ STResList71 = [STRes70|STResList70],
+
+
+ ?line {STRes71,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList72 = [STRes71|STResList71],
+
+
+ ?line {STRes72,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList73 = [STRes72|STResList72],
+
+
+ ?line {STRes73,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB014.xsd','./msxsdtest/identityConstraint',valid),
+ STResList74 = [STRes73|STResList73],
+
+
+ ?line {STRes74,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList75 = [STRes74|STResList74],
+
+
+ ?line {STRes75,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB016.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList76 = [STRes75|STResList75],
+
+
+ ?line {STRes76,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB017.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList77 = [STRes76|STResList76],
+
+
+ ?line {STRes77,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB018.xsd','./msxsdtest/identityConstraint',valid),
+ STResList78 = [STRes77|STResList77],
+
+
+ ?line {STRes78,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB019.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList79 = [STRes78|STResList78],
+
+
+ ?line {STRes79,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB020.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList80 = [STRes79|STResList79],
+
+
+ ?line {STRes80,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB021.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList81 = [STRes80|STResList80],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB022.xsd','./msxsdtest/identityConstraint',valid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB023.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList83 = [STRes82|STResList82],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB024.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB025.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB026.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList86 = [STRes85|STResList85],
+
+
+ ?line {STRes86,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB027.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList87 = [STRes86|STResList86],
+
+
+ ?line {STRes87,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB028.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList88 = [STRes87|STResList87],
+
+
+ ?line {STRes88,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB029.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList89 = [STRes88|STResList88],
+
+
+ ?line {STRes89,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB030.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList90 = [STRes89|STResList89],
+
+
+ ?line {STRes90,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB031.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList91 = [STRes90|STResList90],
+
+
+ ?line {STRes91,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB032.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList92 = [STRes91|STResList91],
+
+
+ ?line {STRes92,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB033.xsd','./msxsdtest/identityConstraint',valid),
+ STResList93 = [STRes92|STResList92],
+
+
+ ?line {STRes93,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB034.xsd','./msxsdtest/identityConstraint',valid),
+ STResList94 = [STRes93|STResList93],
+
+
+ ?line {STRes94,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB035.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList95 = [STRes94|STResList94],
+
+
+ ?line {STRes95,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB036.xsd','./msxsdtest/identityConstraint',valid),
+ STResList96 = [STRes95|STResList95],
+
+
+ ?line {STRes96,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB037.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList97 = [STRes96|STResList96],
+
+
+ ?line {STRes97,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB038.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList98 = [STRes97|STResList97],
+
+
+ ?line {STRes98,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB039.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList99 = [STRes98|STResList98],
+
+
+ ?line {STRes99,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB040.xsd','./msxsdtest/identityConstraint',valid),
+ STResList100 = [STRes99|STResList99],
+
+
+ ?line {STRes100,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB041.xsd','./msxsdtest/identityConstraint',valid),
+ STResList101 = [STRes100|STResList100],
+
+
+ ?line {STRes101,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB042.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList102 = [STRes101|STResList101],
+
+
+ ?line {STRes102,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB043.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList103 = [STRes102|STResList102],
+
+
+ ?line {STRes103,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB044.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList104 = [STRes103|STResList103],
+
+
+ ?line {STRes104,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB045.xsd','./msxsdtest/identityConstraint',valid),
+ STResList105 = [STRes104|STResList104],
+
+
+ ?line {STRes105,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB046.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList106 = [STRes105|STResList105],
+
+
+ ?line {STRes106,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB047.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList107 = [STRes106|STResList106],
+
+
+ ?line {STRes107,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB048.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList108 = [STRes107|STResList107],
+
+
+ ?line {STRes108,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB049.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList109 = [STRes108|STResList108],
+
+
+ ?line {STRes109,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB050.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList110 = [STRes109|STResList109],
+
+
+ ?line {STRes110,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB051.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList111 = [STRes110|STResList110],
+
+
+ ?line {STRes111,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB052.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList112 = [STRes111|STResList111],
+
+
+ ?line {STRes112,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB053.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList113 = [STRes112|STResList112],
+
+
+ ?line {STRes113,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB054.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList114 = [STRes113|STResList113],
+
+
+ ?line {STRes114,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB055.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList115 = [STRes114|STResList114],
+
+
+ ?line {STRes115,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB056.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList116 = [STRes115|STResList115],
+
+
+ ?line {STRes116,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB057.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList117 = [STRes116|STResList116],
+
+
+ ?line {STRes117,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB058.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList118 = [STRes117|STResList117],
+
+
+ ?line {STRes118,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB059.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList119 = [STRes118|STResList118],
+
+
+ ?line {STRes119,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idB060.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList120 = [STRes119|STResList119],
+
+
+ ?line {STRes120,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList121 = [STRes120|STResList120],
+
+
+ ?line {STRes121,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC002.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList122 = [STRes121|STResList121],
+
+
+ ?line {STRes122,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC003.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList123 = [STRes122|STResList122],
+
+
+ ?line {STRes123,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC004.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList124 = [STRes123|STResList123],
+
+
+ ?line {STRes124,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC005.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList125 = [STRes124|STResList124],
+
+
+ ?line {STRes125,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC006.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList126 = [STRes125|STResList125],
+
+
+ ?line {STRes126,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC007.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList127 = [STRes126|STResList126],
+
+
+ ?line {STRes127,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList128 = [STRes127|STResList127],
+
+
+ ?line {STRes128,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList129 = [STRes128|STResList128],
+
+
+ ?line {STRes129,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList130 = [STRes129|STResList129],
+
+
+ ?line {STRes130,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC011.xsd','./msxsdtest/identityConstraint',valid),
+ STResList131 = [STRes130|STResList130],
+
+
+ ?line {STRes131,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList132 = [STRes131|STResList131],
+
+
+ ?line {STRes132,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList133 = [STRes132|STResList132],
+
+
+ ?line {STRes133,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC014.xsd','./msxsdtest/identityConstraint',valid),
+ STResList134 = [STRes133|STResList133],
+
+
+ ?line {STRes134,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList135 = [STRes134|STResList134],
+
+
+ ?line {STRes135,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC016.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList136 = [STRes135|STResList135],
+
+
+ ?line {STRes136,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC017.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList137 = [STRes136|STResList136],
+
+
+ ?line {STRes137,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC018.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList138 = [STRes137|STResList137],
+
+
+ ?line {STRes138,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC019.xsd','./msxsdtest/identityConstraint',valid),
+ STResList139 = [STRes138|STResList138],
+
+
+ ?line {STRes139,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC020.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList140 = [STRes139|STResList139],
+
+
+ ?line {STRes140,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC021.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList141 = [STRes140|STResList140],
+
+
+ ?line {STRes141,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC022.xsd','./msxsdtest/identityConstraint',valid),
+ STResList142 = [STRes141|STResList141],
+
+
+ ?line {STRes142,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC023.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList143 = [STRes142|STResList142],
+
+
+ ?line {STRes143,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC024.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList144 = [STRes143|STResList143],
+
+
+ ?line {STRes144,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC025.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList145 = [STRes144|STResList144],
+
+
+ ?line {STRes145,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC026.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList146 = [STRes145|STResList145],
+
+
+ ?line {STRes146,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC027.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList147 = [STRes146|STResList146],
+
+
+ ?line {STRes147,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC028.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList148 = [STRes147|STResList147],
+
+
+ ?line {STRes148,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC029.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList149 = [STRes148|STResList148],
+
+
+ ?line {STRes149,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC030.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList150 = [STRes149|STResList149],
+
+
+ ?line {STRes150,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC031.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList151 = [STRes150|STResList150],
+
+
+ ?line {STRes151,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC032.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList152 = [STRes151|STResList151],
+
+
+ ?line {STRes152,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC033.xsd','./msxsdtest/identityConstraint',valid),
+ STResList153 = [STRes152|STResList152],
+
+
+ ?line {STRes153,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC034.xsd','./msxsdtest/identityConstraint',valid),
+ STResList154 = [STRes153|STResList153],
+
+
+ ?line {STRes154,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC035.xsd','./msxsdtest/identityConstraint',valid),
+ STResList155 = [STRes154|STResList154],
+
+
+ ?line {STRes155,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC036.xsd','./msxsdtest/identityConstraint',valid),
+ STResList156 = [STRes155|STResList155],
+
+
+ ?line {STRes156,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC038.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList157 = [STRes156|STResList156],
+
+
+ ?line {STRes157,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC039.xsd','./msxsdtest/identityConstraint',valid),
+ STResList158 = [STRes157|STResList157],
+
+
+ ?line {STRes158,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC040.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList159 = [STRes158|STResList158],
+
+
+ ?line {STRes159,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC041.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList160 = [STRes159|STResList159],
+
+
+ ?line {STRes160,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC042.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList161 = [STRes160|STResList160],
+
+
+ ?line {STRes161,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC043.xsd','./msxsdtest/identityConstraint',valid),
+ STResList162 = [STRes161|STResList161],
+
+
+ ?line {STRes162,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC044.xsd','./msxsdtest/identityConstraint',valid),
+ STResList163 = [STRes162|STResList162],
+
+
+ ?line {STRes163,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC045.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList164 = [STRes163|STResList163],
+
+
+ ?line {STRes164,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC046.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList165 = [STRes164|STResList164],
+
+
+ ?line {STRes165,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC047.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList166 = [STRes165|STResList165],
+
+
+ ?line {STRes166,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC048.xsd','./msxsdtest/identityConstraint',valid),
+ STResList167 = [STRes166|STResList166],
+
+
+ ?line {STRes167,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC049.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList168 = [STRes167|STResList167],
+
+
+ ?line {STRes168,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC050.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList169 = [STRes168|STResList168],
+
+
+ ?line {STRes169,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC051.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList170 = [STRes169|STResList169],
+
+
+ ?line {STRes170,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC052.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList171 = [STRes170|STResList170],
+
+
+ ?line {STRes171,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC053.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList172 = [STRes171|STResList171],
+
+
+ ?line {STRes172,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC054.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList173 = [STRes172|STResList172],
+
+
+ ?line {STRes173,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC055.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList174 = [STRes173|STResList173],
+
+
+ ?line {STRes174,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC056.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList175 = [STRes174|STResList174],
+
+
+ ?line {STRes175,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC057.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList176 = [STRes175|STResList175],
+
+
+ ?line {STRes176,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC058.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList177 = [STRes176|STResList176],
+
+
+ ?line {STRes177,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC059.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList178 = [STRes177|STResList177],
+
+
+ ?line {STRes178,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC060.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList179 = [STRes178|STResList178],
+
+
+ ?line {STRes179,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC061.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList180 = [STRes179|STResList179],
+
+
+ ?line {STRes180,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC062.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList181 = [STRes180|STResList180],
+
+
+ ?line {STRes181,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idC063.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList182 = [STRes181|STResList181],
+
+
+ ?line {STRes182,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList183 = [STRes182|STResList182],
+
+
+ ?line {STRes183,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD002.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList184 = [STRes183|STResList183],
+
+
+ ?line {STRes184,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD003.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList185 = [STRes184|STResList184],
+
+
+ ?line {STRes185,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD004.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList186 = [STRes185|STResList185],
+
+
+ ?line {STRes186,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD005.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList187 = [STRes186|STResList186],
+
+
+ ?line {STRes187,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD006.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList188 = [STRes187|STResList187],
+
+
+ ?line {STRes188,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD007.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList189 = [STRes188|STResList188],
+
+
+ ?line {STRes189,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList190 = [STRes189|STResList189],
+
+
+ ?line {STRes190,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList191 = [STRes190|STResList190],
+
+
+ ?line {STRes191,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList192 = [STRes191|STResList191],
+
+
+ ?line {STRes192,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD011.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList193 = [STRes192|STResList192],
+
+
+ ?line {STRes193,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD012.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList194 = [STRes193|STResList193],
+
+
+ ?line {STRes194,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList195 = [STRes194|STResList194],
+
+
+ ?line {STRes195,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD014.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList196 = [STRes195|STResList195],
+
+
+ ?line {STRes196,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList197 = [STRes196|STResList196],
+
+
+ ?line {STRes197,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD016.xsd','./msxsdtest/identityConstraint',valid),
+ STResList198 = [STRes197|STResList197],
+
+
+ ?line {STRes198,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD017.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList199 = [STRes198|STResList198],
+
+
+ ?line {STRes199,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD018.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList200 = [STRes199|STResList199],
+
+
+ ?line {STRes200,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD019.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList201 = [STRes200|STResList200],
+
+
+ ?line {STRes201,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD020.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList202 = [STRes201|STResList201],
+
+
+ ?line {STRes202,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD021.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList203 = [STRes202|STResList202],
+
+
+ ?line {STRes203,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD022.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList204 = [STRes203|STResList203],
+
+
+ ?line {STRes204,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD023.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList205 = [STRes204|STResList204],
+
+
+ ?line {STRes205,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD024.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList206 = [STRes205|STResList205],
+
+
+ ?line {STRes206,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD025.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList207 = [STRes206|STResList206],
+
+
+ ?line {STRes207,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD026.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList208 = [STRes207|STResList207],
+
+
+ ?line {STRes208,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD027.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList209 = [STRes208|STResList208],
+
+
+ ?line {STRes209,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD028.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList210 = [STRes209|STResList209],
+
+
+ ?line {STRes210,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD029.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList211 = [STRes210|STResList210],
+
+
+ ?line {STRes211,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD030.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList212 = [STRes211|STResList211],
+
+
+ ?line {STRes212,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD031.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList213 = [STRes212|STResList212],
+
+
+ ?line {STRes213,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD032.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList214 = [STRes213|STResList213],
+
+
+ ?line {STRes214,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idD033.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList215 = [STRes214|STResList214],
+
+
+ ?line {STRes215,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList216 = [STRes215|STResList215],
+
+
+ ?line {STRes216,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE002.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList217 = [STRes216|STResList216],
+
+
+ ?line {STRes217,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE003.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList218 = [STRes217|STResList217],
+
+
+ ?line {STRes218,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE004.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList219 = [STRes218|STResList218],
+
+
+ ?line {STRes219,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE005.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList220 = [STRes219|STResList219],
+
+
+ ?line {STRes220,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE006.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList221 = [STRes220|STResList220],
+
+
+ ?line {STRes221,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE007.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList222 = [STRes221|STResList221],
+
+
+ ?line {STRes222,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList223 = [STRes222|STResList222],
+
+
+ ?line {STRes223,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList224 = [STRes223|STResList223],
+
+
+ ?line {STRes224,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList225 = [STRes224|STResList224],
+
+
+ ?line {STRes225,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE011.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList226 = [STRes225|STResList225],
+
+
+ ?line {STRes226,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE012.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList227 = [STRes226|STResList226],
+
+
+ ?line {STRes227,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList228 = [STRes227|STResList227],
+
+
+ ?line {STRes228,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE014.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList229 = [STRes228|STResList228],
+
+
+ ?line {STRes229,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList230 = [STRes229|STResList229],
+
+
+ ?line {STRes230,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE016.xsd','./msxsdtest/identityConstraint',valid),
+ STResList231 = [STRes230|STResList230],
+
+
+ ?line {STRes231,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE017.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList232 = [STRes231|STResList231],
+
+
+ ?line {STRes232,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE018.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList233 = [STRes232|STResList232],
+
+
+ ?line {STRes233,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE019.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList234 = [STRes233|STResList233],
+
+
+ ?line {STRes234,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE020.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList235 = [STRes234|STResList234],
+
+
+ ?line {STRes235,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE021.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList236 = [STRes235|STResList235],
+
+
+ ?line {STRes236,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE022.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList237 = [STRes236|STResList236],
+
+
+ ?line {STRes237,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE023.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList238 = [STRes237|STResList237],
+
+
+ ?line {STRes238,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE024.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList239 = [STRes238|STResList238],
+
+
+ ?line {STRes239,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE025.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList240 = [STRes239|STResList239],
+
+
+ ?line {STRes240,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE026.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList241 = [STRes240|STResList240],
+
+
+ ?line {STRes241,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE027.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList242 = [STRes241|STResList241],
+
+
+ ?line {STRes242,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE028.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList243 = [STRes242|STResList242],
+
+
+ ?line {STRes243,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE029.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList244 = [STRes243|STResList243],
+
+
+ ?line {STRes244,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE030.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList245 = [STRes244|STResList244],
+
+
+ ?line {STRes245,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE031.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList246 = [STRes245|STResList245],
+
+
+ ?line {STRes246,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE032.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList247 = [STRes246|STResList246],
+
+
+ ?line {STRes247,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idE033.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList248 = [STRes247|STResList247],
+
+
+ ?line {STRes248,S248} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList249 = [STRes248|STResList248],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF001.xml','./msxsdtest/identityConstraint',valid,S248),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes249,S249} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF003.xsd','./msxsdtest/identityConstraint',valid),
+ STResList250 = [STRes249|STResList249],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF003.xml','./msxsdtest/identityConstraint',valid,S249),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes250,S250} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF004.xsd','./msxsdtest/identityConstraint',valid),
+ STResList251 = [STRes250|STResList250],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF004.xml','./msxsdtest/identityConstraint',valid,S250),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes251,S251} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF005.xsd','./msxsdtest/identityConstraint',valid),
+ STResList252 = [STRes251|STResList251],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF005.xml','./msxsdtest/identityConstraint',invalid,S251),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes252,S252} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF006.xsd','./msxsdtest/identityConstraint',valid),
+ STResList253 = [STRes252|STResList252],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF006.xml','./msxsdtest/identityConstraint',invalid,S252),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes253,S253} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF007.xsd','./msxsdtest/identityConstraint',valid),
+ STResList254 = [STRes253|STResList253],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF007.xml','./msxsdtest/identityConstraint',valid,S253),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes254,S254} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList255 = [STRes254|STResList254],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF008.xml','./msxsdtest/identityConstraint',invalid,S254),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes255,S255} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList256 = [STRes255|STResList255],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF009.xml','./msxsdtest/identityConstraint',valid,S255),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes256,S256} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList257 = [STRes256|STResList256],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF010.xml','./msxsdtest/identityConstraint',invalid,S256),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes257,S257} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF011.xsd','./msxsdtest/identityConstraint',valid),
+ STResList258 = [STRes257|STResList257],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF011.xml','./msxsdtest/identityConstraint',valid,S257),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes258,S258} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList259 = [STRes258|STResList258],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF012.xml','./msxsdtest/identityConstraint',valid,S258),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes259,S259} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList260 = [STRes259|STResList259],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF013.xml','./msxsdtest/identityConstraint',valid,S259),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes260,S260} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF014.xsd','./msxsdtest/identityConstraint',valid),
+ STResList261 = [STRes260|STResList260],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF014.xml','./msxsdtest/identityConstraint',valid,S260),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes261,S261} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList262 = [STRes261|STResList261],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF015.xml','./msxsdtest/identityConstraint',invalid,S261),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes262,S262} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF016.xsd','./msxsdtest/identityConstraint',valid),
+ STResList263 = [STRes262|STResList262],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF016.xml','./msxsdtest/identityConstraint',invalid,S262),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes263,S263} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF017.xsd','./msxsdtest/identityConstraint',valid),
+ STResList264 = [STRes263|STResList263],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF017.xml','./msxsdtest/identityConstraint',invalid,S263),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes264,S264} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF018.xsd','./msxsdtest/identityConstraint',valid),
+ STResList265 = [STRes264|STResList264],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF018.xml','./msxsdtest/identityConstraint',invalid,S264),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes265,S265} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF019.xsd','./msxsdtest/identityConstraint',valid),
+ STResList266 = [STRes265|STResList265],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF019.xml','./msxsdtest/identityConstraint',valid,S265),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes266,S266} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF020.xsd','./msxsdtest/identityConstraint',valid),
+ STResList267 = [STRes266|STResList266],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF020.xml','./msxsdtest/identityConstraint',valid,S266),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes267,S267} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF021.xsd','./msxsdtest/identityConstraint',valid),
+ STResList268 = [STRes267|STResList267],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF021.xml','./msxsdtest/identityConstraint',valid,S267),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes268,S268} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF022.xsd','./msxsdtest/identityConstraint',valid),
+ STResList269 = [STRes268|STResList268],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF022.xml','./msxsdtest/identityConstraint',valid,S268),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes269,S269} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF023.xsd','./msxsdtest/identityConstraint',valid),
+ STResList270 = [STRes269|STResList269],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF023.xml','./msxsdtest/identityConstraint',valid,S269),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes270,S270} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF024.xsd','./msxsdtest/identityConstraint',valid),
+ STResList271 = [STRes270|STResList270],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF024.xml','./msxsdtest/identityConstraint',valid,S270),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes271,S271} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF025.xsd','./msxsdtest/identityConstraint',valid),
+ STResList272 = [STRes271|STResList271],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF025.xml','./msxsdtest/identityConstraint',valid,S271),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes272,S272} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF026.xsd','./msxsdtest/identityConstraint',valid),
+ STResList273 = [STRes272|STResList272],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF026.xml','./msxsdtest/identityConstraint',valid,S272),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes273,S273} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF027.xsd','./msxsdtest/identityConstraint',valid),
+ STResList274 = [STRes273|STResList273],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF027.xml','./msxsdtest/identityConstraint',valid,S273),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes274,S274} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF028.xsd','./msxsdtest/identityConstraint',valid),
+ STResList275 = [STRes274|STResList274],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF028.xml','./msxsdtest/identityConstraint',valid,S274),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes275,S275} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF029.xsd','./msxsdtest/identityConstraint',valid),
+ STResList276 = [STRes275|STResList275],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF029.xml','./msxsdtest/identityConstraint',valid,S275),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes276,S276} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF030.xsd','./msxsdtest/identityConstraint',valid),
+ STResList277 = [STRes276|STResList276],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF030.xml','./msxsdtest/identityConstraint',valid,S276),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes277,S277} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF031.xsd','./msxsdtest/identityConstraint',valid),
+ STResList278 = [STRes277|STResList277],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF031.xml','./msxsdtest/identityConstraint',valid,S277),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes278,S278} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF032.xsd','./msxsdtest/identityConstraint',valid),
+ STResList279 = [STRes278|STResList278],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF032.xml','./msxsdtest/identityConstraint',valid,S278),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes279,S279} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF033.xsd','./msxsdtest/identityConstraint',valid),
+ STResList280 = [STRes279|STResList279],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF033.xml','./msxsdtest/identityConstraint',valid,S279),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes280,S280} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF034.xsd','./msxsdtest/identityConstraint',valid),
+ STResList281 = [STRes280|STResList280],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF034.xml','./msxsdtest/identityConstraint',valid,S280),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes281,S281} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF035.xsd','./msxsdtest/identityConstraint',valid),
+ STResList282 = [STRes281|STResList281],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF035.xml','./msxsdtest/identityConstraint',valid,S281),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes282,S282} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idF036.xsd','./msxsdtest/identityConstraint',valid),
+ STResList283 = [STRes282|STResList282],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idF036.xml','./msxsdtest/identityConstraint',valid,S282),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes283,S283} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList284 = [STRes283|STResList283],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG001.xml','./msxsdtest/identityConstraint',valid,S283),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes284,S284} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG003.xsd','./msxsdtest/identityConstraint',valid),
+ STResList285 = [STRes284|STResList284],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG003.xml','./msxsdtest/identityConstraint',invalid,S284),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes285,S285} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG004.xsd','./msxsdtest/identityConstraint',valid),
+ STResList286 = [STRes285|STResList285],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG004.xml','./msxsdtest/identityConstraint',valid,S285),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes286,S286} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG005.xsd','./msxsdtest/identityConstraint',valid),
+ STResList287 = [STRes286|STResList286],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG005.xml','./msxsdtest/identityConstraint',invalid,S286),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes287,S287} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG006.xsd','./msxsdtest/identityConstraint',valid),
+ STResList288 = [STRes287|STResList287],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG006.xml','./msxsdtest/identityConstraint',invalid,S287),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes288,S288} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG007.xsd','./msxsdtest/identityConstraint',valid),
+ STResList289 = [STRes288|STResList288],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG007.xml','./msxsdtest/identityConstraint',valid,S288),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes289,S289} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList290 = [STRes289|STResList289],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG008.xml','./msxsdtest/identityConstraint',invalid,S289),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes290,S290} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList291 = [STRes290|STResList290],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG009.xml','./msxsdtest/identityConstraint',invalid,S290),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes291,S291} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList292 = [STRes291|STResList291],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG010.xml','./msxsdtest/identityConstraint',invalid,S291),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes292,S292} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG011.xsd','./msxsdtest/identityConstraint',valid),
+ STResList293 = [STRes292|STResList292],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG011.xml','./msxsdtest/identityConstraint',invalid,S292),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes293,S293} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList294 = [STRes293|STResList293],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG012.xml','./msxsdtest/identityConstraint',invalid,S293),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes294,S294} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList295 = [STRes294|STResList294],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG013.xml','./msxsdtest/identityConstraint',valid,S294),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes295,S295} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG014.xsd','./msxsdtest/identityConstraint',valid),
+ STResList296 = [STRes295|STResList295],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG014.xml','./msxsdtest/identityConstraint',valid,S295),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes296,S296} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList297 = [STRes296|STResList296],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG015.xml','./msxsdtest/identityConstraint',valid,S296),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes297,S297} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG016.xsd','./msxsdtest/identityConstraint',valid),
+ STResList298 = [STRes297|STResList297],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG016.xml','./msxsdtest/identityConstraint',valid,S297),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes298,S298} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG017.xsd','./msxsdtest/identityConstraint',valid),
+ STResList299 = [STRes298|STResList298],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG017.xml','./msxsdtest/identityConstraint',valid,S298),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes299,S299} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG018.xsd','./msxsdtest/identityConstraint',valid),
+ STResList300 = [STRes299|STResList299],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG018.xml','./msxsdtest/identityConstraint',valid,S299),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes300,S300} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG019.xsd','./msxsdtest/identityConstraint',valid),
+ STResList301 = [STRes300|STResList300],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG019.xml','./msxsdtest/identityConstraint',valid,S300),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes301,S301} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG020.xsd','./msxsdtest/identityConstraint',valid),
+ STResList302 = [STRes301|STResList301],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG020.xml','./msxsdtest/identityConstraint',invalid,S301),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes302,S302} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG021.xsd','./msxsdtest/identityConstraint',valid),
+ STResList303 = [STRes302|STResList302],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG021.xml','./msxsdtest/identityConstraint',valid,S302),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes303,S303} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG022.xsd','./msxsdtest/identityConstraint',valid),
+ STResList304 = [STRes303|STResList303],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG022.xml','./msxsdtest/identityConstraint',valid,S303),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes304,S304} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG023.xsd','./msxsdtest/identityConstraint',valid),
+ STResList305 = [STRes304|STResList304],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG023.xml','./msxsdtest/identityConstraint',valid,S304),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes305,S305} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG024.xsd','./msxsdtest/identityConstraint',valid),
+ STResList306 = [STRes305|STResList305],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG024.xml','./msxsdtest/identityConstraint',valid,S305),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes306,S306} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG025.xsd','./msxsdtest/identityConstraint',valid),
+ STResList307 = [STRes306|STResList306],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG025.xml','./msxsdtest/identityConstraint',invalid,S306),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes307,S307} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG026.xsd','./msxsdtest/identityConstraint',valid),
+ STResList308 = [STRes307|STResList307],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG026.xml','./msxsdtest/identityConstraint',valid,S307),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes308,S308} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG027.xsd','./msxsdtest/identityConstraint',valid),
+ STResList309 = [STRes308|STResList308],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG027.xml','./msxsdtest/identityConstraint',valid,S308),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes309,S309} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG028.xsd','./msxsdtest/identityConstraint',valid),
+ STResList310 = [STRes309|STResList309],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG028.xml','./msxsdtest/identityConstraint',valid,S309),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes310,S310} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG029.xsd','./msxsdtest/identityConstraint',valid),
+ STResList311 = [STRes310|STResList310],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG029.xml','./msxsdtest/identityConstraint',valid,S310),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes311,S311} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idG030.xsd','./msxsdtest/identityConstraint',valid),
+ STResList312 = [STRes311|STResList311],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idG030.xml','./msxsdtest/identityConstraint',valid,S311),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes312,S312} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList313 = [STRes312|STResList312],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH001.xml','./msxsdtest/identityConstraint',valid,S312),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes313,S313} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH003.xsd','./msxsdtest/identityConstraint',valid),
+ STResList314 = [STRes313|STResList313],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH003.xml','./msxsdtest/identityConstraint',valid,S313),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes314,S314} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH004.xsd','./msxsdtest/identityConstraint',valid),
+ STResList315 = [STRes314|STResList314],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH004.xml','./msxsdtest/identityConstraint',valid,S314),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes315,S315} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH005.xsd','./msxsdtest/identityConstraint',valid),
+ STResList316 = [STRes315|STResList315],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH005.xml','./msxsdtest/identityConstraint',invalid,S315),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes316,S316} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH006.xsd','./msxsdtest/identityConstraint',valid),
+ STResList317 = [STRes316|STResList316],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH006.xml','./msxsdtest/identityConstraint',invalid,S316),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes317,S317} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH007.xsd','./msxsdtest/identityConstraint',valid),
+ STResList318 = [STRes317|STResList317],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH007.xml','./msxsdtest/identityConstraint',valid,S317),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes318,S318} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList319 = [STRes318|STResList318],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH008.xml','./msxsdtest/identityConstraint',valid,S318),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes319,S319} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList320 = [STRes319|STResList319],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH009.xml','./msxsdtest/identityConstraint',valid,S319),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes320,S320} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList321 = [STRes320|STResList320],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH010.xml','./msxsdtest/identityConstraint',invalid,S320),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes321,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH011.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList322 = [STRes321|STResList321],
+
+
+ ?line {STRes322,S322} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList323 = [STRes322|STResList322],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH012.xml','./msxsdtest/identityConstraint',invalid,S322),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes323,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH013.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList324 = [STRes323|STResList323],
+
+
+ ?line {STRes324,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH014.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList325 = [STRes324|STResList324],
+
+
+ ?line {STRes325,S325} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList326 = [STRes325|STResList325],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH015.xml','./msxsdtest/identityConstraint',valid,S325),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes326,S326} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH016.xsd','./msxsdtest/identityConstraint',valid),
+ STResList327 = [STRes326|STResList326],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH016.xml','./msxsdtest/identityConstraint',valid,S326),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes327,S327} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH017.xsd','./msxsdtest/identityConstraint',valid),
+ STResList328 = [STRes327|STResList327],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH017.xml','./msxsdtest/identityConstraint',valid,S327),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes328,S328} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH018.xsd','./msxsdtest/identityConstraint',valid),
+ STResList329 = [STRes328|STResList328],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH018.xml','./msxsdtest/identityConstraint',valid,S328),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes329,S329} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH019.xsd','./msxsdtest/identityConstraint',valid),
+ STResList330 = [STRes329|STResList329],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH019.xml','./msxsdtest/identityConstraint',valid,S329),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes330,S330} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH020.xsd','./msxsdtest/identityConstraint',valid),
+ STResList331 = [STRes330|STResList330],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH020.xml','./msxsdtest/identityConstraint',valid,S330),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes331,S331} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH021.xsd','./msxsdtest/identityConstraint',valid),
+ STResList332 = [STRes331|STResList331],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH021.xml','./msxsdtest/identityConstraint',valid,S331),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes332,S332} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH022.xsd','./msxsdtest/identityConstraint',valid),
+ STResList333 = [STRes332|STResList332],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH022.xml','./msxsdtest/identityConstraint',valid,S332),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes333,S333} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH023.xsd','./msxsdtest/identityConstraint',valid),
+ STResList334 = [STRes333|STResList333],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH023.xml','./msxsdtest/identityConstraint',valid,S333),
+ ITResList83 = [ITRes82|ITResList82],
+
+
+ ?line {STRes334,S334} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH024.xsd','./msxsdtest/identityConstraint',valid),
+ STResList335 = [STRes334|STResList334],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH024.xml','./msxsdtest/identityConstraint',valid,S334),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes335,S335} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH025.xsd','./msxsdtest/identityConstraint',valid),
+ STResList336 = [STRes335|STResList335],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH025.xml','./msxsdtest/identityConstraint',valid,S335),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes336,S336} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH026.xsd','./msxsdtest/identityConstraint',valid),
+ STResList337 = [STRes336|STResList336],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH026.xml','./msxsdtest/identityConstraint',valid,S336),
+ ITResList86 = [ITRes85|ITResList85],
+
+
+ ?line {STRes337,S337} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH027.xsd','./msxsdtest/identityConstraint',valid),
+ STResList338 = [STRes337|STResList337],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH027.xml','./msxsdtest/identityConstraint',valid,S337),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes338,S338} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH028.xsd','./msxsdtest/identityConstraint',valid),
+ STResList339 = [STRes338|STResList338],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH028.xml','./msxsdtest/identityConstraint',valid,S338),
+ ITResList88 = [ITRes87|ITResList87],
+
+
+ ?line {STRes339,S339} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH029.xsd','./msxsdtest/identityConstraint',valid),
+ STResList340 = [STRes339|STResList339],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH029.xml','./msxsdtest/identityConstraint',valid,S339),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes340,S340} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH030.xsd','./msxsdtest/identityConstraint',valid),
+ STResList341 = [STRes340|STResList340],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH030.xml','./msxsdtest/identityConstraint',valid,S340),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes341,S341} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH031.xsd','./msxsdtest/identityConstraint',valid),
+ STResList342 = [STRes341|STResList341],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH031.xml','./msxsdtest/identityConstraint',valid,S341),
+ ITResList91 = [ITRes90|ITResList90],
+
+
+ ?line {STRes342,S342} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH032.xsd','./msxsdtest/identityConstraint',valid),
+ STResList343 = [STRes342|STResList342],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH032.xml','./msxsdtest/identityConstraint',valid,S342),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes343,S343} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH034.xsd','./msxsdtest/identityConstraint',valid),
+ STResList344 = [STRes343|STResList343],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idH034.xml','./msxsdtest/identityConstraint',valid,S343),
+ ITResList93 = [ITRes92|ITResList92],
+
+
+ ?line {STRes344,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idH035.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList345 = [STRes344|STResList344],
+
+
+ ?line {STRes345,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI001.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList346 = [STRes345|STResList345],
+
+
+ ?line {STRes346,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI002.xsd','./msxsdtest/identityConstraint',valid),
+ STResList347 = [STRes346|STResList346],
+
+
+ ?line {STRes347,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI003.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList348 = [STRes347|STResList347],
+
+
+ ?line {STRes348,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI004.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList349 = [STRes348|STResList348],
+
+
+ ?line {STRes349,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI005.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList350 = [STRes349|STResList349],
+
+
+ ?line {STRes350,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI006.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList351 = [STRes350|STResList350],
+
+
+ ?line {STRes351,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI007.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList352 = [STRes351|STResList351],
+
+
+ ?line {STRes352,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList353 = [STRes352|STResList352],
+
+
+ ?line {STRes353,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList354 = [STRes353|STResList353],
+
+
+ ?line {STRes354,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI010.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList355 = [STRes354|STResList354],
+
+
+ ?line {STRes355,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI011.xsd','./msxsdtest/identityConstraint',valid),
+ STResList356 = [STRes355|STResList355],
+
+
+ ?line {STRes356,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList357 = [STRes356|STResList356],
+
+
+ ?line {STRes357,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList358 = [STRes357|STResList357],
+
+
+ ?line {STRes358,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI014.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList359 = [STRes358|STResList358],
+
+
+ ?line {STRes359,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI015.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList360 = [STRes359|STResList359],
+
+
+ ?line {STRes360,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI016.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList361 = [STRes360|STResList360],
+
+
+ ?line {STRes361,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI017.xsd','./msxsdtest/identityConstraint',valid),
+ STResList362 = [STRes361|STResList361],
+
+
+ ?line {STRes362,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI018.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList363 = [STRes362|STResList362],
+
+
+ ?line {STRes363,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI019.xsd','./msxsdtest/identityConstraint',valid),
+ STResList364 = [STRes363|STResList363],
+
+
+ ?line {STRes364,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI020.xsd','./msxsdtest/identityConstraint',valid),
+ STResList365 = [STRes364|STResList364],
+
+
+ ?line {STRes365,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI021.xsd','./msxsdtest/identityConstraint',valid),
+ STResList366 = [STRes365|STResList365],
+
+
+ ?line {STRes366,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI022.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList367 = [STRes366|STResList366],
+
+
+ ?line {STRes367,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI023.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList368 = [STRes367|STResList367],
+
+
+ ?line {STRes368,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI024.xsd','./msxsdtest/identityConstraint',valid),
+ STResList369 = [STRes368|STResList368],
+
+
+ ?line {STRes369,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI025.xsd','./msxsdtest/identityConstraint',valid),
+ STResList370 = [STRes369|STResList369],
+
+
+ ?line {STRes370,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI026.xsd','./msxsdtest/identityConstraint',valid),
+ STResList371 = [STRes370|STResList370],
+
+
+ ?line {STRes371,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI027.xsd','./msxsdtest/identityConstraint',valid),
+ STResList372 = [STRes371|STResList371],
+
+
+ ?line {STRes372,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI028.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList373 = [STRes372|STResList372],
+
+
+ ?line {STRes373,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI029.xsd','./msxsdtest/identityConstraint',valid),
+ STResList374 = [STRes373|STResList373],
+
+
+ ?line {STRes374,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI030.xsd','./msxsdtest/identityConstraint',valid),
+ STResList375 = [STRes374|STResList374],
+
+
+ ?line {STRes375,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI031.xsd','./msxsdtest/identityConstraint',valid),
+ STResList376 = [STRes375|STResList375],
+
+
+ ?line {STRes376,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI032.xsd','./msxsdtest/identityConstraint',valid),
+ STResList377 = [STRes376|STResList376],
+
+
+ ?line {STRes377,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI033.xsd','./msxsdtest/identityConstraint',valid),
+ STResList378 = [STRes377|STResList377],
+
+
+ ?line {STRes378,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI034.xsd','./msxsdtest/identityConstraint',valid),
+ STResList379 = [STRes378|STResList378],
+
+
+ ?line {STRes379,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI035.xsd','./msxsdtest/identityConstraint',valid),
+ STResList380 = [STRes379|STResList379],
+
+
+ ?line {STRes380,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI036.xsd','./msxsdtest/identityConstraint',valid),
+ STResList381 = [STRes380|STResList380],
+
+
+ ?line {STRes381,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI037.xsd','./msxsdtest/identityConstraint',valid),
+ STResList382 = [STRes381|STResList381],
+
+
+ ?line {STRes382,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI038.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList383 = [STRes382|STResList382],
+
+
+ ?line {STRes383,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI039.xsd','./msxsdtest/identityConstraint',valid),
+ STResList384 = [STRes383|STResList383],
+
+
+ ?line {STRes384,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI040.xsd','./msxsdtest/identityConstraint',valid),
+ STResList385 = [STRes384|STResList384],
+
+
+ ?line {STRes385,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI041.xsd','./msxsdtest/identityConstraint',valid),
+ STResList386 = [STRes385|STResList385],
+
+
+ ?line {STRes386,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI042.xsd','./msxsdtest/identityConstraint',valid),
+ STResList387 = [STRes386|STResList386],
+
+
+ ?line {STRes387,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI043.xsd','./msxsdtest/identityConstraint',valid),
+ STResList388 = [STRes387|STResList387],
+
+
+ ?line {STRes388,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI044.xsd','./msxsdtest/identityConstraint',valid),
+ STResList389 = [STRes388|STResList388],
+
+
+ ?line {STRes389,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI045.xsd','./msxsdtest/identityConstraint',valid),
+ STResList390 = [STRes389|STResList389],
+
+
+ ?line {STRes390,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI046.xsd','./msxsdtest/identityConstraint',valid),
+ STResList391 = [STRes390|STResList390],
+
+
+ ?line {STRes391,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI047.xsd','./msxsdtest/identityConstraint',valid),
+ STResList392 = [STRes391|STResList391],
+
+
+ ?line {STRes392,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI048.xsd','./msxsdtest/identityConstraint',valid),
+ STResList393 = [STRes392|STResList392],
+
+
+ ?line {STRes393,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI049.xsd','./msxsdtest/identityConstraint',valid),
+ STResList394 = [STRes393|STResList393],
+
+
+ ?line {STRes394,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI050.xsd','./msxsdtest/identityConstraint',valid),
+ STResList395 = [STRes394|STResList394],
+
+
+ ?line {STRes395,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI051.xsd','./msxsdtest/identityConstraint',valid),
+ STResList396 = [STRes395|STResList395],
+
+
+ ?line {STRes396,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI052.xsd','./msxsdtest/identityConstraint',valid),
+ STResList397 = [STRes396|STResList396],
+
+
+ ?line {STRes397,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI053.xsd','./msxsdtest/identityConstraint',valid),
+ STResList398 = [STRes397|STResList397],
+
+
+ ?line {STRes398,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI054.xsd','./msxsdtest/identityConstraint',valid),
+ STResList399 = [STRes398|STResList398],
+
+
+ ?line {STRes399,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI055.xsd','./msxsdtest/identityConstraint',valid),
+ STResList400 = [STRes399|STResList399],
+
+
+ ?line {STRes400,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI056.xsd','./msxsdtest/identityConstraint',valid),
+ STResList401 = [STRes400|STResList400],
+
+
+ ?line {STRes401,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI057.xsd','./msxsdtest/identityConstraint',valid),
+ STResList402 = [STRes401|STResList401],
+
+
+ ?line {STRes402,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI058.xsd','./msxsdtest/identityConstraint',valid),
+ STResList403 = [STRes402|STResList402],
+
+
+ ?line {STRes403,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI059.xsd','./msxsdtest/identityConstraint',valid),
+ STResList404 = [STRes403|STResList403],
+
+
+ ?line {STRes404,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI060.xsd','./msxsdtest/identityConstraint',valid),
+ STResList405 = [STRes404|STResList404],
+
+
+ ?line {STRes405,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI061.xsd','./msxsdtest/identityConstraint',valid),
+ STResList406 = [STRes405|STResList405],
+
+
+ ?line {STRes406,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI062.xsd','./msxsdtest/identityConstraint',valid),
+ STResList407 = [STRes406|STResList406],
+
+
+ ?line {STRes407,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI063.xsd','./msxsdtest/identityConstraint',valid),
+ STResList408 = [STRes407|STResList407],
+
+
+ ?line {STRes408,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI064.xsd','./msxsdtest/identityConstraint',valid),
+ STResList409 = [STRes408|STResList408],
+
+
+ ?line {STRes409,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI065.xsd','./msxsdtest/identityConstraint',valid),
+ STResList410 = [STRes409|STResList409],
+
+
+ ?line {STRes410,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI066.xsd','./msxsdtest/identityConstraint',valid),
+ STResList411 = [STRes410|STResList410],
+
+
+ ?line {STRes411,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI067.xsd','./msxsdtest/identityConstraint',valid),
+ STResList412 = [STRes411|STResList411],
+
+
+ ?line {STRes412,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI068.xsd','./msxsdtest/identityConstraint',valid),
+ STResList413 = [STRes412|STResList412],
+
+
+ ?line {STRes413,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI069.xsd','./msxsdtest/identityConstraint',valid),
+ STResList414 = [STRes413|STResList413],
+
+
+ ?line {STRes414,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI070.xsd','./msxsdtest/identityConstraint',valid),
+ STResList415 = [STRes414|STResList414],
+
+
+ ?line {STRes415,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI071.xsd','./msxsdtest/identityConstraint',valid),
+ STResList416 = [STRes415|STResList415],
+
+
+ ?line {STRes416,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI072.xsd','./msxsdtest/identityConstraint',valid),
+ STResList417 = [STRes416|STResList416],
+
+
+ ?line {STRes417,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI073.xsd','./msxsdtest/identityConstraint',valid),
+ STResList418 = [STRes417|STResList417],
+
+
+ ?line {STRes418,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI074.xsd','./msxsdtest/identityConstraint',valid),
+ STResList419 = [STRes418|STResList418],
+
+
+ ?line {STRes419,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI075.xsd','./msxsdtest/identityConstraint',valid),
+ STResList420 = [STRes419|STResList419],
+
+
+ ?line {STRes420,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI076.xsd','./msxsdtest/identityConstraint',valid),
+ STResList421 = [STRes420|STResList420],
+
+
+ ?line {STRes421,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI077.xsd','./msxsdtest/identityConstraint',valid),
+ STResList422 = [STRes421|STResList421],
+
+
+ ?line {STRes422,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI078.xsd','./msxsdtest/identityConstraint',valid),
+ STResList423 = [STRes422|STResList422],
+
+
+ ?line {STRes423,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI079.xsd','./msxsdtest/identityConstraint',valid),
+ STResList424 = [STRes423|STResList423],
+
+
+ ?line {STRes424,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI080.xsd','./msxsdtest/identityConstraint',valid),
+ STResList425 = [STRes424|STResList424],
+
+
+ ?line {STRes425,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI081.xsd','./msxsdtest/identityConstraint',valid),
+ STResList426 = [STRes425|STResList425],
+
+
+ ?line {STRes426,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI082.xsd','./msxsdtest/identityConstraint',valid),
+ STResList427 = [STRes426|STResList426],
+
+
+ ?line {STRes427,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI083.xsd','./msxsdtest/identityConstraint',valid),
+ STResList428 = [STRes427|STResList427],
+
+
+ ?line {STRes428,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI084.xsd','./msxsdtest/identityConstraint',valid),
+ STResList429 = [STRes428|STResList428],
+
+
+ ?line {STRes429,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI085.xsd','./msxsdtest/identityConstraint',valid),
+ STResList430 = [STRes429|STResList429],
+
+
+ ?line {STRes430,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI086.xsd','./msxsdtest/identityConstraint',valid),
+ STResList431 = [STRes430|STResList430],
+
+
+ ?line {STRes431,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI087.xsd','./msxsdtest/identityConstraint',valid),
+ STResList432 = [STRes431|STResList431],
+
+
+ ?line {STRes432,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI088.xsd','./msxsdtest/identityConstraint',valid),
+ STResList433 = [STRes432|STResList432],
+
+
+ ?line {STRes433,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI089.xsd','./msxsdtest/identityConstraint',valid),
+ STResList434 = [STRes433|STResList433],
+
+
+ ?line {STRes434,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI090.xsd','./msxsdtest/identityConstraint',valid),
+ STResList435 = [STRes434|STResList434],
+
+
+ ?line {STRes435,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI091.xsd','./msxsdtest/identityConstraint',valid),
+ STResList436 = [STRes435|STResList435],
+
+
+ ?line {STRes436,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI092.xsd','./msxsdtest/identityConstraint',valid),
+ STResList437 = [STRes436|STResList436],
+
+
+ ?line {STRes437,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI093.xsd','./msxsdtest/identityConstraint',valid),
+ STResList438 = [STRes437|STResList437],
+
+
+ ?line {STRes438,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI094.xsd','./msxsdtest/identityConstraint',valid),
+ STResList439 = [STRes438|STResList438],
+
+
+ ?line {STRes439,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI095.xsd','./msxsdtest/identityConstraint',valid),
+ STResList440 = [STRes439|STResList439],
+
+
+ ?line {STRes440,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI096.xsd','./msxsdtest/identityConstraint',valid),
+ STResList441 = [STRes440|STResList440],
+
+
+ ?line {STRes441,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI097.xsd','./msxsdtest/identityConstraint',valid),
+ STResList442 = [STRes441|STResList441],
+
+
+ ?line {STRes442,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI098.xsd','./msxsdtest/identityConstraint',valid),
+ STResList443 = [STRes442|STResList442],
+
+
+ ?line {STRes443,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI099.xsd','./msxsdtest/identityConstraint',valid),
+ STResList444 = [STRes443|STResList443],
+
+
+ ?line {STRes444,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI100.xsd','./msxsdtest/identityConstraint',valid),
+ STResList445 = [STRes444|STResList444],
+
+
+ ?line {STRes445,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI101.xsd','./msxsdtest/identityConstraint',valid),
+ STResList446 = [STRes445|STResList445],
+
+
+ ?line {STRes446,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI102.xsd','./msxsdtest/identityConstraint',valid),
+ STResList447 = [STRes446|STResList446],
+
+
+ ?line {STRes447,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI103.xsd','./msxsdtest/identityConstraint',valid),
+ STResList448 = [STRes447|STResList447],
+
+
+ ?line {STRes448,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI104.xsd','./msxsdtest/identityConstraint',valid),
+ STResList449 = [STRes448|STResList448],
+
+
+ ?line {STRes449,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI105.xsd','./msxsdtest/identityConstraint',valid),
+ STResList450 = [STRes449|STResList449],
+
+
+ ?line {STRes450,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI106.xsd','./msxsdtest/identityConstraint',valid),
+ STResList451 = [STRes450|STResList450],
+
+
+ ?line {STRes451,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI107.xsd','./msxsdtest/identityConstraint',valid),
+ STResList452 = [STRes451|STResList451],
+
+
+ ?line {STRes452,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI108.xsd','./msxsdtest/identityConstraint',valid),
+ STResList453 = [STRes452|STResList452],
+
+
+ ?line {STRes453,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI109.xsd','./msxsdtest/identityConstraint',valid),
+ STResList454 = [STRes453|STResList453],
+
+
+ ?line {STRes454,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI110.xsd','./msxsdtest/identityConstraint',valid),
+ STResList455 = [STRes454|STResList454],
+
+
+ ?line {STRes455,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI111.xsd','./msxsdtest/identityConstraint',valid),
+ STResList456 = [STRes455|STResList455],
+
+
+ ?line {STRes456,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI112.xsd','./msxsdtest/identityConstraint',valid),
+ STResList457 = [STRes456|STResList456],
+
+
+ ?line {STRes457,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI113.xsd','./msxsdtest/identityConstraint',valid),
+ STResList458 = [STRes457|STResList457],
+
+
+ ?line {STRes458,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI114.xsd','./msxsdtest/identityConstraint',valid),
+ STResList459 = [STRes458|STResList458],
+
+
+ ?line {STRes459,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI115.xsd','./msxsdtest/identityConstraint',valid),
+ STResList460 = [STRes459|STResList459],
+
+
+ ?line {STRes460,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI116.xsd','./msxsdtest/identityConstraint',valid),
+ STResList461 = [STRes460|STResList460],
+
+
+ ?line {STRes461,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI117.xsd','./msxsdtest/identityConstraint',valid),
+ STResList462 = [STRes461|STResList461],
+
+
+ ?line {STRes462,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI118.xsd','./msxsdtest/identityConstraint',valid),
+ STResList463 = [STRes462|STResList462],
+
+
+ ?line {STRes463,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI119.xsd','./msxsdtest/identityConstraint',valid),
+ STResList464 = [STRes463|STResList463],
+
+
+ ?line {STRes464,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI120.xsd','./msxsdtest/identityConstraint',valid),
+ STResList465 = [STRes464|STResList464],
+
+
+ ?line {STRes465,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI121.xsd','./msxsdtest/identityConstraint',valid),
+ STResList466 = [STRes465|STResList465],
+
+
+ ?line {STRes466,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI122.xsd','./msxsdtest/identityConstraint',valid),
+ STResList467 = [STRes466|STResList466],
+
+
+ ?line {STRes467,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI123.xsd','./msxsdtest/identityConstraint',valid),
+ STResList468 = [STRes467|STResList467],
+
+
+ ?line {STRes468,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI124.xsd','./msxsdtest/identityConstraint',valid),
+ STResList469 = [STRes468|STResList468],
+
+
+ ?line {STRes469,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI125.xsd','./msxsdtest/identityConstraint',valid),
+ STResList470 = [STRes469|STResList469],
+
+
+ ?line {STRes470,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI126.xsd','./msxsdtest/identityConstraint',valid),
+ STResList471 = [STRes470|STResList470],
+
+
+ ?line {STRes471,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI127.xsd','./msxsdtest/identityConstraint',valid),
+ STResList472 = [STRes471|STResList471],
+
+
+ ?line {STRes472,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI128.xsd','./msxsdtest/identityConstraint',valid),
+ STResList473 = [STRes472|STResList472],
+
+
+ ?line {STRes473,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI129.xsd','./msxsdtest/identityConstraint',valid),
+ STResList474 = [STRes473|STResList473],
+
+
+ ?line {STRes474,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI130.xsd','./msxsdtest/identityConstraint',valid),
+ STResList475 = [STRes474|STResList474],
+
+
+ ?line {STRes475,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI131.xsd','./msxsdtest/identityConstraint',valid),
+ STResList476 = [STRes475|STResList475],
+
+
+ ?line {STRes476,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI132.xsd','./msxsdtest/identityConstraint',valid),
+ STResList477 = [STRes476|STResList476],
+
+
+ ?line {STRes477,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI133.xsd','./msxsdtest/identityConstraint',valid),
+ STResList478 = [STRes477|STResList477],
+
+
+ ?line {STRes478,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI134.xsd','./msxsdtest/identityConstraint',valid),
+ STResList479 = [STRes478|STResList478],
+
+
+ ?line {STRes479,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI135.xsd','./msxsdtest/identityConstraint',valid),
+ STResList480 = [STRes479|STResList479],
+
+
+ ?line {STRes480,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI136.xsd','./msxsdtest/identityConstraint',valid),
+ STResList481 = [STRes480|STResList480],
+
+
+ ?line {STRes481,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI137.xsd','./msxsdtest/identityConstraint',valid),
+ STResList482 = [STRes481|STResList481],
+
+
+ ?line {STRes482,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI138.xsd','./msxsdtest/identityConstraint',valid),
+ STResList483 = [STRes482|STResList482],
+
+
+ ?line {STRes483,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI139.xsd','./msxsdtest/identityConstraint',valid),
+ STResList484 = [STRes483|STResList483],
+
+
+ ?line {STRes484,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI140.xsd','./msxsdtest/identityConstraint',valid),
+ STResList485 = [STRes484|STResList484],
+
+
+ ?line {STRes485,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI141.xsd','./msxsdtest/identityConstraint',valid),
+ STResList486 = [STRes485|STResList485],
+
+
+ ?line {STRes486,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI142.xsd','./msxsdtest/identityConstraint',valid),
+ STResList487 = [STRes486|STResList486],
+
+
+ ?line {STRes487,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI143.xsd','./msxsdtest/identityConstraint',valid),
+ STResList488 = [STRes487|STResList487],
+
+
+ ?line {STRes488,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI144.xsd','./msxsdtest/identityConstraint',valid),
+ STResList489 = [STRes488|STResList488],
+
+
+ ?line {STRes489,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI145.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList490 = [STRes489|STResList489],
+
+
+ ?line {STRes490,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI146.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList491 = [STRes490|STResList490],
+
+
+ ?line {STRes491,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI147.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList492 = [STRes491|STResList491],
+
+
+ ?line {STRes492,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI148.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList493 = [STRes492|STResList492],
+
+
+ ?line {STRes493,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI149.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList494 = [STRes493|STResList493],
+
+
+ ?line {STRes494,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI150.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList495 = [STRes494|STResList494],
+
+
+ ?line {STRes495,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI151.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList496 = [STRes495|STResList495],
+
+
+ ?line {STRes496,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idI152.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList497 = [STRes496|STResList496],
+
+
+ ?line {STRes497,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ001.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList498 = [STRes497|STResList497],
+
+
+ ?line {STRes498,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ002.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList499 = [STRes498|STResList498],
+
+
+ ?line {STRes499,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ003.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList500 = [STRes499|STResList499],
+
+
+ ?line {STRes500,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ004.xsd','./msxsdtest/identityConstraint',valid),
+ STResList501 = [STRes500|STResList500],
+
+
+ ?line {STRes501,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ005.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList502 = [STRes501|STResList501],
+
+
+ ?line {STRes502,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ006.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList503 = [STRes502|STResList502],
+
+
+ ?line {STRes503,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ007.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList504 = [STRes503|STResList503],
+
+
+ ?line {STRes504,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ008.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList505 = [STRes504|STResList504],
+
+
+ ?line {STRes505,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList506 = [STRes505|STResList505],
+
+
+ ?line {STRes506,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList507 = [STRes506|STResList506],
+
+
+ ?line {STRes507,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ011.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList508 = [STRes507|STResList507],
+
+
+ ?line {STRes508,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList509 = [STRes508|STResList508],
+
+
+ ?line {STRes509,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList510 = [STRes509|STResList509],
+
+
+ ?line {STRes510,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ014.xsd','./msxsdtest/identityConstraint',valid),
+ STResList511 = [STRes510|STResList510],
+
+
+ ?line {STRes511,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ015.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList512 = [STRes511|STResList511],
+
+
+ ?line {STRes512,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ016.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList513 = [STRes512|STResList512],
+
+
+ ?line {STRes513,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ017.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList514 = [STRes513|STResList513],
+
+
+ ?line {STRes514,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ018.xsd','./msxsdtest/identityConstraint',valid),
+ STResList515 = [STRes514|STResList514],
+
+
+ ?line {STRes515,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ019.xsd','./msxsdtest/identityConstraint',valid),
+ STResList516 = [STRes515|STResList515],
+
+
+ ?line {STRes516,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ020.xsd','./msxsdtest/identityConstraint',valid),
+ STResList517 = [STRes516|STResList516],
+
+
+ ?line {STRes517,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ021.xsd','./msxsdtest/identityConstraint',valid),
+ STResList518 = [STRes517|STResList517],
+
+
+ ?line {STRes518,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ022.xsd','./msxsdtest/identityConstraint',valid),
+ STResList519 = [STRes518|STResList518],
+
+
+ ?line {STRes519,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ023.xsd','./msxsdtest/identityConstraint',valid),
+ STResList520 = [STRes519|STResList519],
+
+
+ ?line {STRes520,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ024.xsd','./msxsdtest/identityConstraint',valid),
+ STResList521 = [STRes520|STResList520],
+
+
+ ?line {STRes521,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ025.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList522 = [STRes521|STResList521],
+
+
+ ?line {STRes522,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ026.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList523 = [STRes522|STResList522],
+
+
+ ?line {STRes523,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ027.xsd','./msxsdtest/identityConstraint',valid),
+ STResList524 = [STRes523|STResList523],
+
+
+ ?line {STRes524,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ028.xsd','./msxsdtest/identityConstraint',valid),
+ STResList525 = [STRes524|STResList524],
+
+
+ ?line {STRes525,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ029.xsd','./msxsdtest/identityConstraint',valid),
+ STResList526 = [STRes525|STResList525],
+
+
+ ?line {STRes526,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ030.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList527 = [STRes526|STResList526],
+
+
+ ?line {STRes527,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ031.xsd','./msxsdtest/identityConstraint',valid),
+ STResList528 = [STRes527|STResList527],
+
+
+ ?line {STRes528,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ032.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList529 = [STRes528|STResList528],
+
+
+ ?line {STRes529,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ033.xsd','./msxsdtest/identityConstraint',valid),
+ STResList530 = [STRes529|STResList529],
+
+
+ ?line {STRes530,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ034.xsd','./msxsdtest/identityConstraint',valid),
+ STResList531 = [STRes530|STResList530],
+
+
+ ?line {STRes531,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ035.xsd','./msxsdtest/identityConstraint',valid),
+ STResList532 = [STRes531|STResList531],
+
+
+ ?line {STRes532,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ036.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList533 = [STRes532|STResList532],
+
+
+ ?line {STRes533,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ037.xsd','./msxsdtest/identityConstraint',valid),
+ STResList534 = [STRes533|STResList533],
+
+
+ ?line {STRes534,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ038.xsd','./msxsdtest/identityConstraint',valid),
+ STResList535 = [STRes534|STResList534],
+
+
+ ?line {STRes535,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ039.xsd','./msxsdtest/identityConstraint',valid),
+ STResList536 = [STRes535|STResList535],
+
+
+ ?line {STRes536,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ040.xsd','./msxsdtest/identityConstraint',valid),
+ STResList537 = [STRes536|STResList536],
+
+
+ ?line {STRes537,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ041.xsd','./msxsdtest/identityConstraint',valid),
+ STResList538 = [STRes537|STResList537],
+
+
+ ?line {STRes538,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ042.xsd','./msxsdtest/identityConstraint',valid),
+ STResList539 = [STRes538|STResList538],
+
+
+ ?line {STRes539,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ043.xsd','./msxsdtest/identityConstraint',valid),
+ STResList540 = [STRes539|STResList539],
+
+
+ ?line {STRes540,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ044.xsd','./msxsdtest/identityConstraint',valid),
+ STResList541 = [STRes540|STResList540],
+
+
+ ?line {STRes541,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ045.xsd','./msxsdtest/identityConstraint',valid),
+ STResList542 = [STRes541|STResList541],
+
+
+ ?line {STRes542,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ046.xsd','./msxsdtest/identityConstraint',valid),
+ STResList543 = [STRes542|STResList542],
+
+
+ ?line {STRes543,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ047.xsd','./msxsdtest/identityConstraint',valid),
+ STResList544 = [STRes543|STResList543],
+
+
+ ?line {STRes544,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ048.xsd','./msxsdtest/identityConstraint',valid),
+ STResList545 = [STRes544|STResList544],
+
+
+ ?line {STRes545,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ049.xsd','./msxsdtest/identityConstraint',valid),
+ STResList546 = [STRes545|STResList545],
+
+
+ ?line {STRes546,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ050.xsd','./msxsdtest/identityConstraint',valid),
+ STResList547 = [STRes546|STResList546],
+
+
+ ?line {STRes547,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ051.xsd','./msxsdtest/identityConstraint',valid),
+ STResList548 = [STRes547|STResList547],
+
+
+ ?line {STRes548,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ052.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList549 = [STRes548|STResList548],
+
+
+ ?line {STRes549,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ053.xsd','./msxsdtest/identityConstraint',valid),
+ STResList550 = [STRes549|STResList549],
+
+
+ ?line {STRes550,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ054.xsd','./msxsdtest/identityConstraint',valid),
+ STResList551 = [STRes550|STResList550],
+
+
+ ?line {STRes551,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ055.xsd','./msxsdtest/identityConstraint',valid),
+ STResList552 = [STRes551|STResList551],
+
+
+ ?line {STRes552,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ056.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList553 = [STRes552|STResList552],
+
+
+ ?line {STRes553,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ057.xsd','./msxsdtest/identityConstraint',valid),
+ STResList554 = [STRes553|STResList553],
+
+
+ ?line {STRes554,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ058.xsd','./msxsdtest/identityConstraint',valid),
+ STResList555 = [STRes554|STResList554],
+
+
+ ?line {STRes555,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ059.xsd','./msxsdtest/identityConstraint',valid),
+ STResList556 = [STRes555|STResList555],
+
+
+ ?line {STRes556,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ060.xsd','./msxsdtest/identityConstraint',valid),
+ STResList557 = [STRes556|STResList556],
+
+
+ ?line {STRes557,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ061.xsd','./msxsdtest/identityConstraint',valid),
+ STResList558 = [STRes557|STResList557],
+
+
+ ?line {STRes558,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ062.xsd','./msxsdtest/identityConstraint',valid),
+ STResList559 = [STRes558|STResList558],
+
+
+ ?line {STRes559,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ063.xsd','./msxsdtest/identityConstraint',valid),
+ STResList560 = [STRes559|STResList559],
+
+
+ ?line {STRes560,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ064.xsd','./msxsdtest/identityConstraint',valid),
+ STResList561 = [STRes560|STResList560],
+
+
+ ?line {STRes561,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ065.xsd','./msxsdtest/identityConstraint',valid),
+ STResList562 = [STRes561|STResList561],
+
+
+ ?line {STRes562,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ066.xsd','./msxsdtest/identityConstraint',valid),
+ STResList563 = [STRes562|STResList562],
+
+
+ ?line {STRes563,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ067.xsd','./msxsdtest/identityConstraint',valid),
+ STResList564 = [STRes563|STResList563],
+
+
+ ?line {STRes564,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ068.xsd','./msxsdtest/identityConstraint',valid),
+ STResList565 = [STRes564|STResList564],
+
+
+ ?line {STRes565,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ069.xsd','./msxsdtest/identityConstraint',valid),
+ STResList566 = [STRes565|STResList565],
+
+
+ ?line {STRes566,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ070.xsd','./msxsdtest/identityConstraint',valid),
+ STResList567 = [STRes566|STResList566],
+
+
+ ?line {STRes567,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ071.xsd','./msxsdtest/identityConstraint',valid),
+ STResList568 = [STRes567|STResList567],
+
+
+ ?line {STRes568,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ072.xsd','./msxsdtest/identityConstraint',valid),
+ STResList569 = [STRes568|STResList568],
+
+
+ ?line {STRes569,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ073.xsd','./msxsdtest/identityConstraint',valid),
+ STResList570 = [STRes569|STResList569],
+
+
+ ?line {STRes570,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ074.xsd','./msxsdtest/identityConstraint',valid),
+ STResList571 = [STRes570|STResList570],
+
+
+ ?line {STRes571,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ075.xsd','./msxsdtest/identityConstraint',valid),
+ STResList572 = [STRes571|STResList571],
+
+
+ ?line {STRes572,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ076.xsd','./msxsdtest/identityConstraint',valid),
+ STResList573 = [STRes572|STResList572],
+
+
+ ?line {STRes573,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ077.xsd','./msxsdtest/identityConstraint',valid),
+ STResList574 = [STRes573|STResList573],
+
+
+ ?line {STRes574,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ078.xsd','./msxsdtest/identityConstraint',valid),
+ STResList575 = [STRes574|STResList574],
+
+
+ ?line {STRes575,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ079.xsd','./msxsdtest/identityConstraint',valid),
+ STResList576 = [STRes575|STResList575],
+
+
+ ?line {STRes576,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ080.xsd','./msxsdtest/identityConstraint',valid),
+ STResList577 = [STRes576|STResList576],
+
+
+ ?line {STRes577,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ081.xsd','./msxsdtest/identityConstraint',valid),
+ STResList578 = [STRes577|STResList577],
+
+
+ ?line {STRes578,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ082.xsd','./msxsdtest/identityConstraint',valid),
+ STResList579 = [STRes578|STResList578],
+
+
+ ?line {STRes579,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ083.xsd','./msxsdtest/identityConstraint',valid),
+ STResList580 = [STRes579|STResList579],
+
+
+ ?line {STRes580,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ084.xsd','./msxsdtest/identityConstraint',valid),
+ STResList581 = [STRes580|STResList580],
+
+
+ ?line {STRes581,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ085.xsd','./msxsdtest/identityConstraint',valid),
+ STResList582 = [STRes581|STResList581],
+
+
+ ?line {STRes582,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ086.xsd','./msxsdtest/identityConstraint',valid),
+ STResList583 = [STRes582|STResList582],
+
+
+ ?line {STRes583,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ087.xsd','./msxsdtest/identityConstraint',valid),
+ STResList584 = [STRes583|STResList583],
+
+
+ ?line {STRes584,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ088.xsd','./msxsdtest/identityConstraint',valid),
+ STResList585 = [STRes584|STResList584],
+
+
+ ?line {STRes585,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ089.xsd','./msxsdtest/identityConstraint',valid),
+ STResList586 = [STRes585|STResList585],
+
+
+ ?line {STRes586,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ090.xsd','./msxsdtest/identityConstraint',valid),
+ STResList587 = [STRes586|STResList586],
+
+
+ ?line {STRes587,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ091.xsd','./msxsdtest/identityConstraint',valid),
+ STResList588 = [STRes587|STResList587],
+
+
+ ?line {STRes588,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ092.xsd','./msxsdtest/identityConstraint',valid),
+ STResList589 = [STRes588|STResList588],
+
+
+ ?line {STRes589,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ093.xsd','./msxsdtest/identityConstraint',valid),
+ STResList590 = [STRes589|STResList589],
+
+
+ ?line {STRes590,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ094.xsd','./msxsdtest/identityConstraint',valid),
+ STResList591 = [STRes590|STResList590],
+
+
+ ?line {STRes591,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ095.xsd','./msxsdtest/identityConstraint',valid),
+ STResList592 = [STRes591|STResList591],
+
+
+ ?line {STRes592,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ096.xsd','./msxsdtest/identityConstraint',valid),
+ STResList593 = [STRes592|STResList592],
+
+
+ ?line {STRes593,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ097.xsd','./msxsdtest/identityConstraint',valid),
+ STResList594 = [STRes593|STResList593],
+
+
+ ?line {STRes594,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ098.xsd','./msxsdtest/identityConstraint',valid),
+ STResList595 = [STRes594|STResList594],
+
+
+ ?line {STRes595,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ099.xsd','./msxsdtest/identityConstraint',valid),
+ STResList596 = [STRes595|STResList595],
+
+
+ ?line {STRes596,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ100.xsd','./msxsdtest/identityConstraint',valid),
+ STResList597 = [STRes596|STResList596],
+
+
+ ?line {STRes597,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ101.xsd','./msxsdtest/identityConstraint',valid),
+ STResList598 = [STRes597|STResList597],
+
+
+ ?line {STRes598,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ102.xsd','./msxsdtest/identityConstraint',valid),
+ STResList599 = [STRes598|STResList598],
+
+
+ ?line {STRes599,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ103.xsd','./msxsdtest/identityConstraint',valid),
+ STResList600 = [STRes599|STResList599],
+
+
+ ?line {STRes600,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ104.xsd','./msxsdtest/identityConstraint',valid),
+ STResList601 = [STRes600|STResList600],
+
+
+ ?line {STRes601,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ105.xsd','./msxsdtest/identityConstraint',valid),
+ STResList602 = [STRes601|STResList601],
+
+
+ ?line {STRes602,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ106.xsd','./msxsdtest/identityConstraint',valid),
+ STResList603 = [STRes602|STResList602],
+
+
+ ?line {STRes603,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ107.xsd','./msxsdtest/identityConstraint',valid),
+ STResList604 = [STRes603|STResList603],
+
+
+ ?line {STRes604,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ108.xsd','./msxsdtest/identityConstraint',valid),
+ STResList605 = [STRes604|STResList604],
+
+
+ ?line {STRes605,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ109.xsd','./msxsdtest/identityConstraint',valid),
+ STResList606 = [STRes605|STResList605],
+
+
+ ?line {STRes606,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ110.xsd','./msxsdtest/identityConstraint',valid),
+ STResList607 = [STRes606|STResList606],
+
+
+ ?line {STRes607,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ111.xsd','./msxsdtest/identityConstraint',valid),
+ STResList608 = [STRes607|STResList607],
+
+
+ ?line {STRes608,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ112.xsd','./msxsdtest/identityConstraint',valid),
+ STResList609 = [STRes608|STResList608],
+
+
+ ?line {STRes609,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ113.xsd','./msxsdtest/identityConstraint',valid),
+ STResList610 = [STRes609|STResList609],
+
+
+ ?line {STRes610,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ114.xsd','./msxsdtest/identityConstraint',valid),
+ STResList611 = [STRes610|STResList610],
+
+
+ ?line {STRes611,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ115.xsd','./msxsdtest/identityConstraint',valid),
+ STResList612 = [STRes611|STResList611],
+
+
+ ?line {STRes612,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ116.xsd','./msxsdtest/identityConstraint',valid),
+ STResList613 = [STRes612|STResList612],
+
+
+ ?line {STRes613,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ117.xsd','./msxsdtest/identityConstraint',valid),
+ STResList614 = [STRes613|STResList613],
+
+
+ ?line {STRes614,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ118.xsd','./msxsdtest/identityConstraint',valid),
+ STResList615 = [STRes614|STResList614],
+
+
+ ?line {STRes615,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ119.xsd','./msxsdtest/identityConstraint',valid),
+ STResList616 = [STRes615|STResList615],
+
+
+ ?line {STRes616,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ120.xsd','./msxsdtest/identityConstraint',valid),
+ STResList617 = [STRes616|STResList616],
+
+
+ ?line {STRes617,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ121.xsd','./msxsdtest/identityConstraint',valid),
+ STResList618 = [STRes617|STResList617],
+
+
+ ?line {STRes618,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ122.xsd','./msxsdtest/identityConstraint',valid),
+ STResList619 = [STRes618|STResList618],
+
+
+ ?line {STRes619,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ123.xsd','./msxsdtest/identityConstraint',valid),
+ STResList620 = [STRes619|STResList619],
+
+
+ ?line {STRes620,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ124.xsd','./msxsdtest/identityConstraint',valid),
+ STResList621 = [STRes620|STResList620],
+
+
+ ?line {STRes621,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ125.xsd','./msxsdtest/identityConstraint',valid),
+ STResList622 = [STRes621|STResList621],
+
+
+ ?line {STRes622,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ126.xsd','./msxsdtest/identityConstraint',valid),
+ STResList623 = [STRes622|STResList622],
+
+
+ ?line {STRes623,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ127.xsd','./msxsdtest/identityConstraint',valid),
+ STResList624 = [STRes623|STResList623],
+
+
+ ?line {STRes624,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ128.xsd','./msxsdtest/identityConstraint',valid),
+ STResList625 = [STRes624|STResList624],
+
+
+ ?line {STRes625,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ129.xsd','./msxsdtest/identityConstraint',valid),
+ STResList626 = [STRes625|STResList625],
+
+
+ ?line {STRes626,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ130.xsd','./msxsdtest/identityConstraint',valid),
+ STResList627 = [STRes626|STResList626],
+
+
+ ?line {STRes627,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ131.xsd','./msxsdtest/identityConstraint',valid),
+ STResList628 = [STRes627|STResList627],
+
+
+ ?line {STRes628,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ132.xsd','./msxsdtest/identityConstraint',valid),
+ STResList629 = [STRes628|STResList628],
+
+
+ ?line {STRes629,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ133.xsd','./msxsdtest/identityConstraint',valid),
+ STResList630 = [STRes629|STResList629],
+
+
+ ?line {STRes630,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ134.xsd','./msxsdtest/identityConstraint',valid),
+ STResList631 = [STRes630|STResList630],
+
+
+ ?line {STRes631,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ135.xsd','./msxsdtest/identityConstraint',valid),
+ STResList632 = [STRes631|STResList631],
+
+
+ ?line {STRes632,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ136.xsd','./msxsdtest/identityConstraint',valid),
+ STResList633 = [STRes632|STResList632],
+
+
+ ?line {STRes633,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ137.xsd','./msxsdtest/identityConstraint',valid),
+ STResList634 = [STRes633|STResList633],
+
+
+ ?line {STRes634,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ138.xsd','./msxsdtest/identityConstraint',valid),
+ STResList635 = [STRes634|STResList634],
+
+
+ ?line {STRes635,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ139.xsd','./msxsdtest/identityConstraint',valid),
+ STResList636 = [STRes635|STResList635],
+
+
+ ?line {STRes636,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ140.xsd','./msxsdtest/identityConstraint',valid),
+ STResList637 = [STRes636|STResList636],
+
+
+ ?line {STRes637,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ141.xsd','./msxsdtest/identityConstraint',valid),
+ STResList638 = [STRes637|STResList637],
+
+
+ ?line {STRes638,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ142.xsd','./msxsdtest/identityConstraint',valid),
+ STResList639 = [STRes638|STResList638],
+
+
+ ?line {STRes639,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ143.xsd','./msxsdtest/identityConstraint',valid),
+ STResList640 = [STRes639|STResList639],
+
+
+ ?line {STRes640,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ144.xsd','./msxsdtest/identityConstraint',valid),
+ STResList641 = [STRes640|STResList640],
+
+
+ ?line {STRes641,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ145.xsd','./msxsdtest/identityConstraint',valid),
+ STResList642 = [STRes641|STResList641],
+
+
+ ?line {STRes642,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ146.xsd','./msxsdtest/identityConstraint',valid),
+ STResList643 = [STRes642|STResList642],
+
+
+ ?line {STRes643,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ147.xsd','./msxsdtest/identityConstraint',valid),
+ STResList644 = [STRes643|STResList643],
+
+
+ ?line {STRes644,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ148.xsd','./msxsdtest/identityConstraint',valid),
+ STResList645 = [STRes644|STResList644],
+
+
+ ?line {STRes645,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ149.xsd','./msxsdtest/identityConstraint',valid),
+ STResList646 = [STRes645|STResList645],
+
+
+ ?line {STRes646,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ150.xsd','./msxsdtest/identityConstraint',valid),
+ STResList647 = [STRes646|STResList646],
+
+
+ ?line {STRes647,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ151.xsd','./msxsdtest/identityConstraint',valid),
+ STResList648 = [STRes647|STResList647],
+
+
+ ?line {STRes648,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ152.xsd','./msxsdtest/identityConstraint',valid),
+ STResList649 = [STRes648|STResList648],
+
+
+ ?line {STRes649,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ153.xsd','./msxsdtest/identityConstraint',valid),
+ STResList650 = [STRes649|STResList649],
+
+
+ ?line {STRes650,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ154.xsd','./msxsdtest/identityConstraint',valid),
+ STResList651 = [STRes650|STResList650],
+
+
+ ?line {STRes651,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ155.xsd','./msxsdtest/identityConstraint',valid),
+ STResList652 = [STRes651|STResList651],
+
+
+ ?line {STRes652,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ156.xsd','./msxsdtest/identityConstraint',valid),
+ STResList653 = [STRes652|STResList652],
+
+
+ ?line {STRes653,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ157.xsd','./msxsdtest/identityConstraint',valid),
+ STResList654 = [STRes653|STResList653],
+
+
+ ?line {STRes654,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ158.xsd','./msxsdtest/identityConstraint',valid),
+ STResList655 = [STRes654|STResList654],
+
+
+ ?line {STRes655,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ159.xsd','./msxsdtest/identityConstraint',valid),
+ STResList656 = [STRes655|STResList655],
+
+
+ ?line {STRes656,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ160.xsd','./msxsdtest/identityConstraint',valid),
+ STResList657 = [STRes656|STResList656],
+
+
+ ?line {STRes657,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ161.xsd','./msxsdtest/identityConstraint',valid),
+ STResList658 = [STRes657|STResList657],
+
+
+ ?line {STRes658,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ162.xsd','./msxsdtest/identityConstraint',valid),
+ STResList659 = [STRes658|STResList658],
+
+
+ ?line {STRes659,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ163.xsd','./msxsdtest/identityConstraint',valid),
+ STResList660 = [STRes659|STResList659],
+
+
+ ?line {STRes660,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ164.xsd','./msxsdtest/identityConstraint',valid),
+ STResList661 = [STRes660|STResList660],
+
+
+ ?line {STRes661,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ165.xsd','./msxsdtest/identityConstraint',valid),
+ STResList662 = [STRes661|STResList661],
+
+
+ ?line {STRes662,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ166.xsd','./msxsdtest/identityConstraint',valid),
+ STResList663 = [STRes662|STResList662],
+
+
+ ?line {STRes663,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ167.xsd','./msxsdtest/identityConstraint',valid),
+ STResList664 = [STRes663|STResList663],
+
+
+ ?line {STRes664,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ168.xsd','./msxsdtest/identityConstraint',valid),
+ STResList665 = [STRes664|STResList664],
+
+
+ ?line {STRes665,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ169.xsd','./msxsdtest/identityConstraint',valid),
+ STResList666 = [STRes665|STResList665],
+
+
+ ?line {STRes666,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ170.xsd','./msxsdtest/identityConstraint',valid),
+ STResList667 = [STRes666|STResList666],
+
+
+ ?line {STRes667,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ171.xsd','./msxsdtest/identityConstraint',valid),
+ STResList668 = [STRes667|STResList667],
+
+
+ ?line {STRes668,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ172.xsd','./msxsdtest/identityConstraint',valid),
+ STResList669 = [STRes668|STResList668],
+
+
+ ?line {STRes669,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ173.xsd','./msxsdtest/identityConstraint',valid),
+ STResList670 = [STRes669|STResList669],
+
+
+ ?line {STRes670,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ174.xsd','./msxsdtest/identityConstraint',valid),
+ STResList671 = [STRes670|STResList670],
+
+
+ ?line {STRes671,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ175.xsd','./msxsdtest/identityConstraint',valid),
+ STResList672 = [STRes671|STResList671],
+
+
+ ?line {STRes672,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ176.xsd','./msxsdtest/identityConstraint',valid),
+ STResList673 = [STRes672|STResList672],
+
+
+ ?line {STRes673,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ177.xsd','./msxsdtest/identityConstraint',valid),
+ STResList674 = [STRes673|STResList673],
+
+
+ ?line {STRes674,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ178.xsd','./msxsdtest/identityConstraint',valid),
+ STResList675 = [STRes674|STResList674],
+
+
+ ?line {STRes675,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ179.xsd','./msxsdtest/identityConstraint',valid),
+ STResList676 = [STRes675|STResList675],
+
+
+ ?line {STRes676,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ180.xsd','./msxsdtest/identityConstraint',valid),
+ STResList677 = [STRes676|STResList676],
+
+
+ ?line {STRes677,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ181.xsd','./msxsdtest/identityConstraint',valid),
+ STResList678 = [STRes677|STResList677],
+
+
+ ?line {STRes678,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ182.xsd','./msxsdtest/identityConstraint',valid),
+ STResList679 = [STRes678|STResList678],
+
+
+ ?line {STRes679,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ183.xsd','./msxsdtest/identityConstraint',valid),
+ STResList680 = [STRes679|STResList679],
+
+
+ ?line {STRes680,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ184.xsd','./msxsdtest/identityConstraint',valid),
+ STResList681 = [STRes680|STResList680],
+
+
+ ?line {STRes681,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ185.xsd','./msxsdtest/identityConstraint',valid),
+ STResList682 = [STRes681|STResList681],
+
+
+ ?line {STRes682,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ186.xsd','./msxsdtest/identityConstraint',valid),
+ STResList683 = [STRes682|STResList682],
+
+
+ ?line {STRes683,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ187.xsd','./msxsdtest/identityConstraint',valid),
+ STResList684 = [STRes683|STResList683],
+
+
+ ?line {STRes684,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ188.xsd','./msxsdtest/identityConstraint',valid),
+ STResList685 = [STRes684|STResList684],
+
+
+ ?line {STRes685,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ189.xsd','./msxsdtest/identityConstraint',valid),
+ STResList686 = [STRes685|STResList685],
+
+
+ ?line {STRes686,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ190.xsd','./msxsdtest/identityConstraint',valid),
+ STResList687 = [STRes686|STResList686],
+
+
+ ?line {STRes687,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ191.xsd','./msxsdtest/identityConstraint',valid),
+ STResList688 = [STRes687|STResList687],
+
+
+ ?line {STRes688,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ192.xsd','./msxsdtest/identityConstraint',valid),
+ STResList689 = [STRes688|STResList688],
+
+
+ ?line {STRes689,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ193.xsd','./msxsdtest/identityConstraint',valid),
+ STResList690 = [STRes689|STResList689],
+
+
+ ?line {STRes690,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ194.xsd','./msxsdtest/identityConstraint',valid),
+ STResList691 = [STRes690|STResList690],
+
+
+ ?line {STRes691,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ195.xsd','./msxsdtest/identityConstraint',valid),
+ STResList692 = [STRes691|STResList691],
+
+
+ ?line {STRes692,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ196.xsd','./msxsdtest/identityConstraint',valid),
+ STResList693 = [STRes692|STResList692],
+
+
+ ?line {STRes693,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ197.xsd','./msxsdtest/identityConstraint',valid),
+ STResList694 = [STRes693|STResList693],
+
+
+ ?line {STRes694,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ198.xsd','./msxsdtest/identityConstraint',valid),
+ STResList695 = [STRes694|STResList694],
+
+
+ ?line {STRes695,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ199.xsd','./msxsdtest/identityConstraint',valid),
+ STResList696 = [STRes695|STResList695],
+
+
+ ?line {STRes696,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ200.xsd','./msxsdtest/identityConstraint',valid),
+ STResList697 = [STRes696|STResList696],
+
+
+ ?line {STRes697,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ201.xsd','./msxsdtest/identityConstraint',valid),
+ STResList698 = [STRes697|STResList697],
+
+
+ ?line {STRes698,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ202.xsd','./msxsdtest/identityConstraint',valid),
+ STResList699 = [STRes698|STResList698],
+
+
+ ?line {STRes699,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ203.xsd','./msxsdtest/identityConstraint',valid),
+ STResList700 = [STRes699|STResList699],
+
+
+ ?line {STRes700,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ204.xsd','./msxsdtest/identityConstraint',valid),
+ STResList701 = [STRes700|STResList700],
+
+
+ ?line {STRes701,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ205.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList702 = [STRes701|STResList701],
+
+
+ ?line {STRes702,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ206.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList703 = [STRes702|STResList702],
+
+
+ ?line {STRes703,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ207.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList704 = [STRes703|STResList703],
+
+
+ ?line {STRes704,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ208.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList705 = [STRes704|STResList704],
+
+
+ ?line {STRes705,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ209.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList706 = [STRes705|STResList705],
+
+
+ ?line {STRes706,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idJ210.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList707 = [STRes706|STResList706],
+
+
+ ?line {STRes707,S707} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList708 = [STRes707|STResList707],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK001.xml','./msxsdtest/identityConstraint',valid,S707),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes708,S708} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK002.xsd','./msxsdtest/identityConstraint',valid),
+ STResList709 = [STRes708|STResList708],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK002.xml','./msxsdtest/identityConstraint',valid,S708),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes709,S709} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK003.xsd','./msxsdtest/identityConstraint',valid),
+ STResList710 = [STRes709|STResList709],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK003.xml','./msxsdtest/identityConstraint',invalid,S709),
+ ITResList96 = [ITRes95|ITResList95],
+
+
+ ?line {STRes710,S710} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK004.xsd','./msxsdtest/identityConstraint',valid),
+ STResList711 = [STRes710|STResList710],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK004.xml','./msxsdtest/identityConstraint',valid,S710),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes711,S711} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK005.xsd','./msxsdtest/identityConstraint',valid),
+ STResList712 = [STRes711|STResList711],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK005.xml','./msxsdtest/identityConstraint',valid,S711),
+ ITResList98 = [ITRes97|ITResList97],
+
+
+ ?line {STRes712,S712} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK006.xsd','./msxsdtest/identityConstraint',valid),
+ STResList713 = [STRes712|STResList712],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK006.xml','./msxsdtest/identityConstraint',valid,S712),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes713,S713} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK007.xsd','./msxsdtest/identityConstraint',valid),
+ STResList714 = [STRes713|STResList713],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK007.xml','./msxsdtest/identityConstraint',valid,S713),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes714,S714} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList715 = [STRes714|STResList714],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK008.xml','./msxsdtest/identityConstraint',valid,S714),
+ ITResList101 = [ITRes100|ITResList100],
+
+
+ ?line {STRes715,S715} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList716 = [STRes715|STResList715],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK009.xml','./msxsdtest/identityConstraint',valid,S715),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes716,S716} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList717 = [STRes716|STResList716],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK010.xml','./msxsdtest/identityConstraint',valid,S716),
+ ITResList103 = [ITRes102|ITResList102],
+
+
+ ?line {STRes717,S717} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK011.xsd','./msxsdtest/identityConstraint',valid),
+ STResList718 = [STRes717|STResList717],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK011.xml','./msxsdtest/identityConstraint',valid,S717),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes718,S718} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList719 = [STRes718|STResList718],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK012.xml','./msxsdtest/identityConstraint',invalid,S718),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes719,S719} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList720 = [STRes719|STResList719],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK013.xml','./msxsdtest/identityConstraint',valid,S719),
+ ITResList106 = [ITRes105|ITResList105],
+
+
+ ?line {STRes720,S720} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK014.xsd','./msxsdtest/identityConstraint',valid),
+ STResList721 = [STRes720|STResList720],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK014.xml','./msxsdtest/identityConstraint',valid,S720),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes721,S721} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList722 = [STRes721|STResList721],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK015.xml','./msxsdtest/identityConstraint',valid,S721),
+ ITResList108 = [ITRes107|ITResList107],
+
+
+ ?line {STRes722,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK016.xsd','./msxsdtest/identityConstraint',invalid),
+ STResList723 = [STRes722|STResList722],
+
+
+ ?line {STRes723,S723} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idK017.xsd','./msxsdtest/identityConstraint',valid),
+ STResList724 = [STRes723|STResList723],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idK017.xml','./msxsdtest/identityConstraint',valid,S723),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes724,S724} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList725 = [STRes724|STResList724],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL001.xml','./msxsdtest/identityConstraint',valid,S724),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes725,S725} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL002.xsd','./msxsdtest/identityConstraint',valid),
+ STResList726 = [STRes725|STResList725],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL002.xml','./msxsdtest/identityConstraint',invalid,S725),
+ ITResList111 = [ITRes110|ITResList110],
+
+
+ ?line {STRes726,S726} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL003.xsd','./msxsdtest/identityConstraint',valid),
+ STResList727 = [STRes726|STResList726],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL003.xml','./msxsdtest/identityConstraint',valid,S726),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes727,S727} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL004.xsd','./msxsdtest/identityConstraint',valid),
+ STResList728 = [STRes727|STResList727],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL004.xml','./msxsdtest/identityConstraint',valid,S727),
+ ITResList113 = [ITRes112|ITResList112],
+
+
+ ?line {STRes728,S728} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL005.xsd','./msxsdtest/identityConstraint',valid),
+ STResList729 = [STRes728|STResList728],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL005.xml','./msxsdtest/identityConstraint',valid,S728),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes729,S729} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL006.xsd','./msxsdtest/identityConstraint',valid),
+ STResList730 = [STRes729|STResList729],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL006.xml','./msxsdtest/identityConstraint',invalid,S729),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes730,S730} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL007.xsd','./msxsdtest/identityConstraint',valid),
+ STResList731 = [STRes730|STResList730],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL007.xml','./msxsdtest/identityConstraint',invalid,S730),
+ ITResList116 = [ITRes115|ITResList115],
+
+
+ ?line {STRes731,S731} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL008.xsd','./msxsdtest/identityConstraint',valid),
+ STResList732 = [STRes731|STResList731],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL008.xml','./msxsdtest/identityConstraint',valid,S731),
+ ITResList117 = [ITRes116|ITResList116],
+
+
+ ?line {STRes732,S732} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL009.xsd','./msxsdtest/identityConstraint',valid),
+ STResList733 = [STRes732|STResList732],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL009.xml','./msxsdtest/identityConstraint',valid,S732),
+ ITResList118 = [ITRes117|ITResList117],
+
+
+ ?line {STRes733,S733} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL010.xsd','./msxsdtest/identityConstraint',valid),
+ STResList734 = [STRes733|STResList733],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL010.xml','./msxsdtest/identityConstraint',valid,S733),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes734,S734} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL011.xsd','./msxsdtest/identityConstraint',valid),
+ STResList735 = [STRes734|STResList734],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL011.xml','./msxsdtest/identityConstraint',invalid,S734),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes735,S735} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL012.xsd','./msxsdtest/identityConstraint',valid),
+ STResList736 = [STRes735|STResList735],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL012.xml','./msxsdtest/identityConstraint',invalid,S735),
+ ITResList121 = [ITRes120|ITResList120],
+
+
+ ?line {STRes736,S736} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL013.xsd','./msxsdtest/identityConstraint',valid),
+ STResList737 = [STRes736|STResList736],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL013.xml','./msxsdtest/identityConstraint',valid,S736),
+ ITResList122 = [ITRes121|ITResList121],
+
+
+ ?line {STRes737,S737} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL014.xsd','./msxsdtest/identityConstraint',valid),
+ STResList738 = [STRes737|STResList737],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL014.xml','./msxsdtest/identityConstraint',valid,S737),
+ ITResList123 = [ITRes122|ITResList122],
+
+
+ ?line {STRes738,S738} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL015.xsd','./msxsdtest/identityConstraint',valid),
+ STResList739 = [STRes738|STResList738],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL015.xml','./msxsdtest/identityConstraint',invalid,S738),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes739,S739} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL016.xsd','./msxsdtest/identityConstraint',valid),
+ STResList740 = [STRes739|STResList739],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL016.xml','./msxsdtest/identityConstraint',valid,S739),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes740,S740} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL017.xsd','./msxsdtest/identityConstraint',valid),
+ STResList741 = [STRes740|STResList740],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL017.xml','./msxsdtest/identityConstraint',valid,S740),
+ ITResList126 = [ITRes125|ITResList125],
+
+
+ ?line {STRes741,S741} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL018.xsd','./msxsdtest/identityConstraint',valid),
+ STResList742 = [STRes741|STResList741],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL018.xml','./msxsdtest/identityConstraint',valid,S741),
+ ITResList127 = [ITRes126|ITResList126],
+
+
+ ?line {STRes742,S742} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL019.xsd','./msxsdtest/identityConstraint',valid),
+ STResList743 = [STRes742|STResList742],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL019.xml','./msxsdtest/identityConstraint',invalid,S742),
+ ITResList128 = [ITRes127|ITResList127],
+
+
+ ?line {STRes743,S743} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL020.xsd','./msxsdtest/identityConstraint',valid),
+ STResList744 = [STRes743|STResList743],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL020.xml','./msxsdtest/identityConstraint',valid,S743),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes744,S744} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL021.xsd','./msxsdtest/identityConstraint',valid),
+ STResList745 = [STRes744|STResList744],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL021.xml','./msxsdtest/identityConstraint',valid,S744),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ ?line {STRes745,S745} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL022.xsd','./msxsdtest/identityConstraint',valid),
+ STResList746 = [STRes745|STResList745],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL022.xml','./msxsdtest/identityConstraint',invalid,S745),
+ ITResList131 = [ITRes130|ITResList130],
+
+
+ ?line {STRes746,S746} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL023.xsd','./msxsdtest/identityConstraint',valid),
+ STResList747 = [STRes746|STResList746],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL023.xml','./msxsdtest/identityConstraint',valid,S746),
+ ITResList132 = [ITRes131|ITResList131],
+
+
+ ?line {STRes747,S747} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL024.xsd','./msxsdtest/identityConstraint',valid),
+ STResList748 = [STRes747|STResList747],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL024.xml','./msxsdtest/identityConstraint',valid,S747),
+ ITResList133 = [ITRes132|ITResList132],
+
+
+ ?line {STRes748,S748} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL025.xsd','./msxsdtest/identityConstraint',valid),
+ STResList749 = [STRes748|STResList748],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL025.xml','./msxsdtest/identityConstraint',invalid,S748),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes749,S749} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL026.xsd','./msxsdtest/identityConstraint',valid),
+ STResList750 = [STRes749|STResList749],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL026.xml','./msxsdtest/identityConstraint',valid,S749),
+ ITResList135 = [ITRes134|ITResList134],
+
+
+ ?line {STRes750,S750} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL027.xsd','./msxsdtest/identityConstraint',valid),
+ STResList751 = [STRes750|STResList750],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL027.xml','./msxsdtest/identityConstraint',invalid,S750),
+ ITResList136 = [ITRes135|ITResList135],
+
+
+ ?line {STRes751,S751} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL028.xsd','./msxsdtest/identityConstraint',valid),
+ STResList752 = [STRes751|STResList751],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL028.xml','./msxsdtest/identityConstraint',valid,S751),
+ ITResList137 = [ITRes136|ITResList136],
+
+
+ ?line {STRes752,S752} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL029.xsd','./msxsdtest/identityConstraint',valid),
+ STResList753 = [STRes752|STResList752],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL029.xml','./msxsdtest/identityConstraint',valid,S752),
+ ITResList138 = [ITRes137|ITResList137],
+
+
+ ?line {STRes753,S753} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL030.xsd','./msxsdtest/identityConstraint',valid),
+ STResList754 = [STRes753|STResList753],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL030.xml','./msxsdtest/identityConstraint',valid,S753),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes754,S754} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL031.xsd','./msxsdtest/identityConstraint',valid),
+ STResList755 = [STRes754|STResList754],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL031.xml','./msxsdtest/identityConstraint',invalid,S754),
+ ITResList140 = [ITRes139|ITResList139],
+
+
+ ?line {STRes755,S755} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL032.xsd','./msxsdtest/identityConstraint',valid),
+ STResList756 = [STRes755|STResList755],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL032.xml','./msxsdtest/identityConstraint',invalid,S755),
+ ITResList141 = [ITRes140|ITResList140],
+
+
+ ?line {STRes756,S756} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL033.xsd','./msxsdtest/identityConstraint',valid),
+ STResList757 = [STRes756|STResList756],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL033.xml','./msxsdtest/identityConstraint',valid,S756),
+ ITResList142 = [ITRes141|ITResList141],
+
+
+ ?line {STRes757,S757} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL034.xsd','./msxsdtest/identityConstraint',valid),
+ STResList758 = [STRes757|STResList757],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL034.xml','./msxsdtest/identityConstraint',valid,S757),
+ ITResList143 = [ITRes142|ITResList142],
+
+
+ ?line {STRes758,S758} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL035.xsd','./msxsdtest/identityConstraint',valid),
+ STResList759 = [STRes758|STResList758],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL035.xml','./msxsdtest/identityConstraint',valid,S758),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes759,S759} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL036.xsd','./msxsdtest/identityConstraint',valid),
+ STResList760 = [STRes759|STResList759],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL036.xml','./msxsdtest/identityConstraint',invalid,S759),
+ ITResList145 = [ITRes144|ITResList144],
+
+
+ ?line {STRes760,S760} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL037.xsd','./msxsdtest/identityConstraint',valid),
+ STResList761 = [STRes760|STResList760],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL037.xml','./msxsdtest/identityConstraint',invalid,S760),
+ ITResList146 = [ITRes145|ITResList145],
+
+
+ ?line {STRes761,S761} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL038.xsd','./msxsdtest/identityConstraint',valid),
+ STResList762 = [STRes761|STResList761],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL038.xml','./msxsdtest/identityConstraint',valid,S761),
+ ITResList147 = [ITRes146|ITResList146],
+
+
+ ?line {STRes762,S762} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL039.xsd','./msxsdtest/identityConstraint',valid),
+ STResList763 = [STRes762|STResList762],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL039.xml','./msxsdtest/identityConstraint',valid,S762),
+ ITResList148 = [ITRes147|ITResList147],
+
+
+ ?line {STRes763,S763} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL040.xsd','./msxsdtest/identityConstraint',valid),
+ STResList764 = [STRes763|STResList763],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL040.xml','./msxsdtest/identityConstraint',invalid,S763),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes764,S764} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL041.xsd','./msxsdtest/identityConstraint',valid),
+ STResList765 = [STRes764|STResList764],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL041.xml','./msxsdtest/identityConstraint',valid,S764),
+ ITResList150 = [ITRes149|ITResList149],
+
+
+ ?line {STRes765,S765} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL042.xsd','./msxsdtest/identityConstraint',valid),
+ STResList766 = [STRes765|STResList765],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL042.xml','./msxsdtest/identityConstraint',valid,S765),
+ ITResList151 = [ITRes150|ITResList150],
+
+
+ ?line {STRes766,S766} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL043.xsd','./msxsdtest/identityConstraint',valid),
+ STResList767 = [STRes766|STResList766],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL043.xml','./msxsdtest/identityConstraint',valid,S766),
+ ITResList152 = [ITRes151|ITResList151],
+
+
+ ?line {STRes767,S767} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL044.xsd','./msxsdtest/identityConstraint',valid),
+ STResList768 = [STRes767|STResList767],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL044.xml','./msxsdtest/identityConstraint',invalid,S767),
+ ITResList153 = [ITRes152|ITResList152],
+
+
+ ?line {STRes768,S768} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL045.xsd','./msxsdtest/identityConstraint',valid),
+ STResList769 = [STRes768|STResList768],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL045.xml','./msxsdtest/identityConstraint',valid,S768),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes769,S769} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL046.xsd','./msxsdtest/identityConstraint',valid),
+ STResList770 = [STRes769|STResList769],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL046.xml','./msxsdtest/identityConstraint',valid,S769),
+ ITResList155 = [ITRes154|ITResList154],
+
+
+ ?line {STRes770,S770} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL047.xsd','./msxsdtest/identityConstraint',valid),
+ STResList771 = [STRes770|STResList770],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL047.xml','./msxsdtest/identityConstraint',invalid,S770),
+ ITResList156 = [ITRes155|ITResList155],
+
+
+ ?line {STRes771,S771} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL048.xsd','./msxsdtest/identityConstraint',valid),
+ STResList772 = [STRes771|STResList771],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL048.xml','./msxsdtest/identityConstraint',valid,S771),
+ ITResList157 = [ITRes156|ITResList156],
+
+
+ ?line {STRes772,S772} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL049.xsd','./msxsdtest/identityConstraint',valid),
+ STResList773 = [STRes772|STResList772],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL049.xml','./msxsdtest/identityConstraint',valid,S772),
+ ITResList158 = [ITRes157|ITResList157],
+
+
+ ?line {STRes773,S773} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL050.xsd','./msxsdtest/identityConstraint',valid),
+ STResList774 = [STRes773|STResList773],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL050.xml','./msxsdtest/identityConstraint',invalid,S773),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes774,S774} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL051.xsd','./msxsdtest/identityConstraint',valid),
+ STResList775 = [STRes774|STResList774],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL051.xml','./msxsdtest/identityConstraint',valid,S774),
+ ITResList160 = [ITRes159|ITResList159],
+
+
+ ?line {STRes775,S775} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL052.xsd','./msxsdtest/identityConstraint',valid),
+ STResList776 = [STRes775|STResList775],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL052.xml','./msxsdtest/identityConstraint',invalid,S775),
+ ITResList161 = [ITRes160|ITResList160],
+
+
+ ?line {STRes776,S776} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL053.xsd','./msxsdtest/identityConstraint',valid),
+ STResList777 = [STRes776|STResList776],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL053.xml','./msxsdtest/identityConstraint',valid,S776),
+ ITResList162 = [ITRes161|ITResList161],
+
+
+ ?line {STRes777,S777} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL054.xsd','./msxsdtest/identityConstraint',valid),
+ STResList778 = [STRes777|STResList777],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL054.xml','./msxsdtest/identityConstraint',valid,S777),
+ ITResList163 = [ITRes162|ITResList162],
+
+
+ ?line {STRes778,S778} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL055.xsd','./msxsdtest/identityConstraint',valid),
+ STResList779 = [STRes778|STResList778],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL055.xml','./msxsdtest/identityConstraint',valid,S778),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes779,S779} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL056.xsd','./msxsdtest/identityConstraint',valid),
+ STResList780 = [STRes779|STResList779],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL056.xml','./msxsdtest/identityConstraint',invalid,S779),
+ ITResList165 = [ITRes164|ITResList164],
+
+
+ ?line {STRes780,S780} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL057.xsd','./msxsdtest/identityConstraint',valid),
+ STResList781 = [STRes780|STResList780],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL057.xml','./msxsdtest/identityConstraint',invalid,S780),
+ ITResList166 = [ITRes165|ITResList165],
+
+
+ ?line {STRes781,S781} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL058.xsd','./msxsdtest/identityConstraint',valid),
+ STResList782 = [STRes781|STResList781],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL058.xml','./msxsdtest/identityConstraint',valid,S781),
+ ITResList167 = [ITRes166|ITResList166],
+
+
+ ?line {STRes782,S782} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL059.xsd','./msxsdtest/identityConstraint',valid),
+ STResList783 = [STRes782|STResList782],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL059.xml','./msxsdtest/identityConstraint',valid,S782),
+ ITResList168 = [ITRes167|ITResList167],
+
+
+ ?line {STRes783,S783} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL060.xsd','./msxsdtest/identityConstraint',valid),
+ STResList784 = [STRes783|STResList783],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL060.xml','./msxsdtest/identityConstraint',valid,S783),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ ?line {STRes784,S784} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL061.xsd','./msxsdtest/identityConstraint',valid),
+ STResList785 = [STRes784|STResList784],
+ ?line ITRes169 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL061.xml','./msxsdtest/identityConstraint',invalid,S784),
+ ITResList170 = [ITRes169|ITResList169],
+
+
+ ?line {STRes785,S785} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL062.xsd','./msxsdtest/identityConstraint',valid),
+ STResList786 = [STRes785|STResList785],
+ ?line ITRes170 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL062.xml','./msxsdtest/identityConstraint',invalid,S785),
+ ITResList171 = [ITRes170|ITResList170],
+
+
+ ?line {STRes786,S786} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL063.xsd','./msxsdtest/identityConstraint',valid),
+ STResList787 = [STRes786|STResList786],
+ ?line ITRes171 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL063.xml','./msxsdtest/identityConstraint',valid,S786),
+ ITResList172 = [ITRes171|ITResList171],
+
+
+ ?line {STRes787,S787} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL064.xsd','./msxsdtest/identityConstraint',valid),
+ STResList788 = [STRes787|STResList787],
+ ?line ITRes172 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL064.xml','./msxsdtest/identityConstraint',valid,S787),
+ ITResList173 = [ITRes172|ITResList172],
+
+
+ ?line {STRes788,S788} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL065.xsd','./msxsdtest/identityConstraint',valid),
+ STResList789 = [STRes788|STResList788],
+ ?line ITRes173 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL065.xml','./msxsdtest/identityConstraint',invalid,S788),
+ ITResList174 = [ITRes173|ITResList173],
+
+
+ ?line {STRes789,S789} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL066.xsd','./msxsdtest/identityConstraint',valid),
+ STResList790 = [STRes789|STResList789],
+ ?line ITRes174 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL066.xml','./msxsdtest/identityConstraint',valid,S789),
+ ITResList175 = [ITRes174|ITResList174],
+
+
+ ?line {STRes790,S790} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL067.xsd','./msxsdtest/identityConstraint',valid),
+ STResList791 = [STRes790|STResList790],
+ ?line ITRes175 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL067.xml','./msxsdtest/identityConstraint',valid,S790),
+ ITResList176 = [ITRes175|ITResList175],
+
+
+ ?line {STRes791,S791} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL068.xsd','./msxsdtest/identityConstraint',valid),
+ STResList792 = [STRes791|STResList791],
+ ?line ITRes176 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL068.xml','./msxsdtest/identityConstraint',valid,S791),
+ ITResList177 = [ITRes176|ITResList176],
+
+
+ ?line {STRes792,S792} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL069.xsd','./msxsdtest/identityConstraint',valid),
+ STResList793 = [STRes792|STResList792],
+ ?line ITRes177 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL069.xml','./msxsdtest/identityConstraint',invalid,S792),
+ ITResList178 = [ITRes177|ITResList177],
+
+
+ ?line {STRes793,S793} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL070.xsd','./msxsdtest/identityConstraint',valid),
+ STResList794 = [STRes793|STResList793],
+ ?line ITRes178 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL070.xml','./msxsdtest/identityConstraint',valid,S793),
+ ITResList179 = [ITRes178|ITResList178],
+
+
+ ?line {STRes794,S794} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL071.xsd','./msxsdtest/identityConstraint',valid),
+ STResList795 = [STRes794|STResList794],
+ ?line ITRes179 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL071.xml','./msxsdtest/identityConstraint',valid,S794),
+ ITResList180 = [ITRes179|ITResList179],
+
+
+ ?line {STRes795,S795} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL072.xsd','./msxsdtest/identityConstraint',valid),
+ STResList796 = [STRes795|STResList795],
+ ?line ITRes180 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL072.xml','./msxsdtest/identityConstraint',invalid,S795),
+ ITResList181 = [ITRes180|ITResList180],
+
+
+ ?line {STRes796,S796} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL073.xsd','./msxsdtest/identityConstraint',valid),
+ STResList797 = [STRes796|STResList796],
+ ?line ITRes181 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL073.xml','./msxsdtest/identityConstraint',valid,S796),
+ ITResList182 = [ITRes181|ITResList181],
+
+
+ ?line {STRes797,S797} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL074.xsd','./msxsdtest/identityConstraint',valid),
+ STResList798 = [STRes797|STResList797],
+ ?line ITRes182 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL074.xml','./msxsdtest/identityConstraint',valid,S797),
+ ITResList183 = [ITRes182|ITResList182],
+
+
+ ?line {STRes798,S798} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL075.xsd','./msxsdtest/identityConstraint',valid),
+ STResList799 = [STRes798|STResList798],
+ ?line ITRes183 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL075.xml','./msxsdtest/identityConstraint',invalid,S798),
+ ITResList184 = [ITRes183|ITResList183],
+
+
+ ?line {STRes799,S799} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL076.xsd','./msxsdtest/identityConstraint',valid),
+ STResList800 = [STRes799|STResList799],
+ ?line ITRes184 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL076.xml','./msxsdtest/identityConstraint',valid,S799),
+ ITResList185 = [ITRes184|ITResList184],
+
+
+ ?line {STRes800,S800} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL077.xsd','./msxsdtest/identityConstraint',valid),
+ STResList801 = [STRes800|STResList800],
+ ?line ITRes185 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL077.xml','./msxsdtest/identityConstraint',valid,S800),
+ ITResList186 = [ITRes185|ITResList185],
+
+
+ ?line {STRes801,S801} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL078.xsd','./msxsdtest/identityConstraint',valid),
+ STResList802 = [STRes801|STResList801],
+ ?line ITRes186 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL078.xml','./msxsdtest/identityConstraint',valid,S801),
+ ITResList187 = [ITRes186|ITResList186],
+
+
+ ?line {STRes802,S802} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL079.xsd','./msxsdtest/identityConstraint',valid),
+ STResList803 = [STRes802|STResList802],
+ ?line ITRes187 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL079.xml','./msxsdtest/identityConstraint',invalid,S802),
+ ITResList188 = [ITRes187|ITResList187],
+
+
+ ?line {STRes803,S803} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL080.xsd','./msxsdtest/identityConstraint',valid),
+ STResList804 = [STRes803|STResList803],
+ ?line ITRes188 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL080.xml','./msxsdtest/identityConstraint',invalid,S803),
+ ITResList189 = [ITRes188|ITResList188],
+
+
+ ?line {STRes804,S804} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL081.xsd','./msxsdtest/identityConstraint',valid),
+ STResList805 = [STRes804|STResList804],
+ ?line ITRes189 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL081.xml','./msxsdtest/identityConstraint',invalid,S804),
+ ITResList190 = [ITRes189|ITResList189],
+
+
+ ?line {STRes805,S805} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL082.xsd','./msxsdtest/identityConstraint',valid),
+ STResList806 = [STRes805|STResList805],
+ ?line ITRes190 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL082.xml','./msxsdtest/identityConstraint',valid,S805),
+ ITResList191 = [ITRes190|ITResList190],
+
+
+ ?line {STRes806,S806} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL083.xsd','./msxsdtest/identityConstraint',valid),
+ STResList807 = [STRes806|STResList806],
+ ?line ITRes191 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL083.xml','./msxsdtest/identityConstraint',invalid,S806),
+ ITResList192 = [ITRes191|ITResList191],
+
+
+ ?line {STRes807,S807} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL084.xsd','./msxsdtest/identityConstraint',valid),
+ STResList808 = [STRes807|STResList807],
+ ?line ITRes192 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL084.xml','./msxsdtest/identityConstraint',valid,S807),
+ ITResList193 = [ITRes192|ITResList192],
+
+
+ ?line {STRes808,S808} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL085.xsd','./msxsdtest/identityConstraint',valid),
+ STResList809 = [STRes808|STResList808],
+ ?line ITRes193 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL085.xml','./msxsdtest/identityConstraint',invalid,S808),
+ ITResList194 = [ITRes193|ITResList193],
+
+
+ ?line {STRes809,S809} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL086.xsd','./msxsdtest/identityConstraint',valid),
+ STResList810 = [STRes809|STResList809],
+ ?line ITRes194 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL086.xml','./msxsdtest/identityConstraint',valid,S809),
+ ITResList195 = [ITRes194|ITResList194],
+
+
+ ?line {STRes810,S810} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL087.xsd','./msxsdtest/identityConstraint',valid),
+ STResList811 = [STRes810|STResList810],
+ ?line ITRes195 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL087.xml','./msxsdtest/identityConstraint',invalid,S810),
+ ITResList196 = [ITRes195|ITResList195],
+
+
+ ?line {STRes811,S811} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL088.xsd','./msxsdtest/identityConstraint',valid),
+ STResList812 = [STRes811|STResList811],
+ ?line ITRes196 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL088.xml','./msxsdtest/identityConstraint',valid,S811),
+ ITResList197 = [ITRes196|ITResList196],
+
+
+ ?line {STRes812,S812} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL089.xsd','./msxsdtest/identityConstraint',valid),
+ STResList813 = [STRes812|STResList812],
+ ?line ITRes197 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL089.xml','./msxsdtest/identityConstraint',invalid,S812),
+ ITResList198 = [ITRes197|ITResList197],
+
+
+ ?line {STRes813,S813} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL090.xsd','./msxsdtest/identityConstraint',valid),
+ STResList814 = [STRes813|STResList813],
+ ?line ITRes198 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL090.xml','./msxsdtest/identityConstraint',valid,S813),
+ ITResList199 = [ITRes198|ITResList198],
+
+
+ ?line {STRes814,S814} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL091.xsd','./msxsdtest/identityConstraint',valid),
+ STResList815 = [STRes814|STResList814],
+ ?line ITRes199 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL091.xml','./msxsdtest/identityConstraint',invalid,S814),
+ ITResList200 = [ITRes199|ITResList199],
+
+
+ ?line {STRes815,S815} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL092.xsd','./msxsdtest/identityConstraint',valid),
+ STResList816 = [STRes815|STResList815],
+ ?line ITRes200 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL092.xml','./msxsdtest/identityConstraint',valid,S815),
+ ITResList201 = [ITRes200|ITResList200],
+
+
+ ?line {STRes816,S816} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL093.xsd','./msxsdtest/identityConstraint',valid),
+ STResList817 = [STRes816|STResList816],
+ ?line ITRes201 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL093.xml','./msxsdtest/identityConstraint',invalid,S816),
+ ITResList202 = [ITRes201|ITResList201],
+
+
+ ?line {STRes817,S817} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL094.xsd','./msxsdtest/identityConstraint',valid),
+ STResList818 = [STRes817|STResList817],
+ ?line ITRes202 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL094.xml','./msxsdtest/identityConstraint',valid,S817),
+ ITResList203 = [ITRes202|ITResList202],
+
+
+ ?line {STRes818,S818} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL095.xsd','./msxsdtest/identityConstraint',valid),
+ STResList819 = [STRes818|STResList818],
+ ?line ITRes203 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL095.xml','./msxsdtest/identityConstraint',invalid,S818),
+ ITResList204 = [ITRes203|ITResList203],
+
+
+ ?line {STRes819,S819} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL096.xsd','./msxsdtest/identityConstraint',valid),
+ STResList820 = [STRes819|STResList819],
+ ?line ITRes204 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL096.xml','./msxsdtest/identityConstraint',valid,S819),
+ ITResList205 = [ITRes204|ITResList204],
+
+
+ ?line {STRes820,S820} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL097.xsd','./msxsdtest/identityConstraint',valid),
+ STResList821 = [STRes820|STResList820],
+ ?line ITRes205 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL097.xml','./msxsdtest/identityConstraint',invalid,S820),
+ ITResList206 = [ITRes205|ITResList205],
+
+
+ ?line {STRes821,S821} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL098.xsd','./msxsdtest/identityConstraint',valid),
+ STResList822 = [STRes821|STResList821],
+ ?line ITRes206 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL098.xml','./msxsdtest/identityConstraint',valid,S821),
+ ITResList207 = [ITRes206|ITResList206],
+
+
+ ?line {STRes822,S822} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL099.xsd','./msxsdtest/identityConstraint',valid),
+ STResList823 = [STRes822|STResList822],
+ ?line ITRes207 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL099.xml','./msxsdtest/identityConstraint',invalid,S822),
+ ITResList208 = [ITRes207|ITResList207],
+
+
+ ?line {STRes823,S823} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL100.xsd','./msxsdtest/identityConstraint',valid),
+ STResList824 = [STRes823|STResList823],
+ ?line ITRes208 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL100.xml','./msxsdtest/identityConstraint',valid,S823),
+ ITResList209 = [ITRes208|ITResList208],
+
+
+ ?line {STRes824,S824} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL101.xsd','./msxsdtest/identityConstraint',valid),
+ STResList825 = [STRes824|STResList824],
+ ?line ITRes209 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL101.xml','./msxsdtest/identityConstraint',invalid,S824),
+ ITResList210 = [ITRes209|ITResList209],
+
+
+ ?line {STRes825,S825} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL102.xsd','./msxsdtest/identityConstraint',valid),
+ STResList826 = [STRes825|STResList825],
+ ?line ITRes210 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL102.xml','./msxsdtest/identityConstraint',valid,S825),
+ ITResList211 = [ITRes210|ITResList210],
+
+
+ ?line {STRes826,S826} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idL103.xsd','./msxsdtest/identityConstraint',valid),
+ STResList827 = [STRes826|STResList826],
+ ?line ITRes211 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idL103.xml','./msxsdtest/identityConstraint',invalid,S826),
+ ITResList212 = [ITRes211|ITResList211],
+
+
+ ?line {STRes827,S827} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idZ001.xsd','./msxsdtest/identityConstraint',valid),
+ STResList828 = [STRes827|STResList827],
+ ?line ITRes212 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idZ001.xml','./msxsdtest/identityConstraint',invalid,S827),
+ ITResList213 = [ITRes212|ITResList212],
+
+
+ ?line {STRes828,S828} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idZ002.xsd','./msxsdtest/identityConstraint',valid),
+ STResList829 = [STRes828|STResList828],
+ ?line ITRes213 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idZ002.xml','./msxsdtest/identityConstraint',invalid,S828),
+ ITResList214 = [ITRes213|ITResList213],
+
+
+
+
+ ?line {STRes829,S829} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/identityConstraint/idZ004.xsd','./msxsdtest/identityConstraint',valid),
+ STResList830 = [STRes829|STResList829],
+ ?line ITRes214 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/identityConstraint/idZ004.xml','./msxsdtest/identityConstraint',invalid,S829),
+ ITResList215 = [ITRes214|ITResList214],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList830,ITResList215).
+
+%% model groups (ALL).
+
+mgABCD(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgA001.xml','./msxsdtest/ModelGroups',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA004.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA005.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA009.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA010.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA011.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA012.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA013.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgA014.xml','./msxsdtest/ModelGroups',valid,S13),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgA015.xml','./msxsdtest/ModelGroups',valid,S14),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgA016.xml','./msxsdtest/ModelGroups',valid,S15),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA017.xsd','./msxsdtest/ModelGroups',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgA017.xml','./msxsdtest/ModelGroups',valid,S16),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA018.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgA019.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa001.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa003.xsd','./msxsdtest/ModelGroups',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgAa003.xml','./msxsdtest/ModelGroups',valid,S21),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa004.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa005.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa009.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAa010.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb001.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb004.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb005.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb009.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgAb010.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgB001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgB001.xml','./msxsdtest/ModelGroups',valid,S39),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgB002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgB002.xml','./msxsdtest/ModelGroups',valid,S40),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgB003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,S42} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgB004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList43 = [STRes42|STResList42],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgB004.xml','./msxsdtest/ModelGroups',valid,S42),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes43,S43} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgB006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList44 = [STRes43|STResList43],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgB006.xml','./msxsdtest/ModelGroups',valid,S43),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgB007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgB008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgB009.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgB010.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList48 = [STRes47|STResList47],
+
+
+ ?line {STRes48,S48} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList49 = [STRes48|STResList48],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC001.xml','./msxsdtest/ModelGroups',invalid,S48),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC002.xml','./msxsdtest/ModelGroups',valid,S49),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes50,S50} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC003.xsd','./msxsdtest/ModelGroups',valid),
+ STResList51 = [STRes50|STResList50],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC003.xml','./msxsdtest/ModelGroups',invalid,S50),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes51,S51} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList52 = [STRes51|STResList51],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC004.xml','./msxsdtest/ModelGroups',valid,S51),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC005.xml','./msxsdtest/ModelGroups',invalid,S52),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes53,S53} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList54 = [STRes53|STResList53],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC006.xml','./msxsdtest/ModelGroups',valid,S53),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes54,S54} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList55 = [STRes54|STResList54],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC007.xml','./msxsdtest/ModelGroups',invalid,S54),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC009.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,S57} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList58 = [STRes57|STResList57],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC010.xml','./msxsdtest/ModelGroups',invalid,S57),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes58,S58} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC011.xsd','./msxsdtest/ModelGroups',valid),
+ STResList59 = [STRes58|STResList58],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC011.xml','./msxsdtest/ModelGroups',valid,S58),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC012.xsd','./msxsdtest/ModelGroups',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC012.xml','./msxsdtest/ModelGroups',invalid,S59),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes60,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC013.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList61 = [STRes60|STResList60],
+
+
+ ?line {STRes61,S61} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgC014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList62 = [STRes61|STResList61],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgC014.xml','./msxsdtest/ModelGroups',valid,S61),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes62,S62} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgD001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList63 = [STRes62|STResList62],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgD001.xml','./msxsdtest/ModelGroups',valid,S62),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgD005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgD005.xml','./msxsdtest/ModelGroups',valid,S63),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes64,S64} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgD009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList65 = [STRes64|STResList64],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgD009.xml','./msxsdtest/ModelGroups',valid,S64),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgD013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgD013.xml','./msxsdtest/ModelGroups',valid,S65),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList66,ITResList25).
+
+%% model groups ( sequence ).
+
+mgEFG(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgE001.xml','./msxsdtest/ModelGroups',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE004.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE005.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE009.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE010.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE011.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE012.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgE013.xml','./msxsdtest/ModelGroups',valid,S12),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgE014.xml','./msxsdtest/ModelGroups',valid,S13),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgE015.xml','./msxsdtest/ModelGroups',valid,S14),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgE016.xml','./msxsdtest/ModelGroups',valid,S15),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE017.xsd','./msxsdtest/ModelGroups',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgE017.xml','./msxsdtest/ModelGroups',valid,S16),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgE018.xsd','./msxsdtest/ModelGroups',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgE018.xml','./msxsdtest/ModelGroups',valid,S17),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEa001.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEa002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEa003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEa004.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEa005.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEa006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEa007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEa008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEb001.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEb002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEb003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEb004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgEb004.xml','./msxsdtest/ModelGroups',valid,S29),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEb005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgEb005.xml','./msxsdtest/ModelGroups',valid,S30),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEb006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEb007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgEb008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF001.xml','./msxsdtest/ModelGroups',valid,S34),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF002.xml','./msxsdtest/ModelGroups',valid,S35),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,S37} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList38 = [STRes37|STResList37],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF004.xml','./msxsdtest/ModelGroups',valid,S37),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes38,S38} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList39 = [STRes38|STResList38],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF005.xml','./msxsdtest/ModelGroups',valid,S38),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF006.xml','./msxsdtest/ModelGroups',valid,S39),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF007.xml','./msxsdtest/ModelGroups',valid,S40),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes41,S41} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList42 = [STRes41|STResList41],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF008.xml','./msxsdtest/ModelGroups',valid,S41),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes42,S42} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList43 = [STRes42|STResList42],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF009.xml','./msxsdtest/ModelGroups',valid,S42),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes43,S43} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList44 = [STRes43|STResList43],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF010.xml','./msxsdtest/ModelGroups',valid,S43),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes44,S44} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF011.xsd','./msxsdtest/ModelGroups',valid),
+ STResList45 = [STRes44|STResList44],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF011.xml','./msxsdtest/ModelGroups',valid,S44),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes45,S45} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF012.xsd','./msxsdtest/ModelGroups',valid),
+ STResList46 = [STRes45|STResList45],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF012.xml','./msxsdtest/ModelGroups',valid,S45),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes46,S46} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList47 = [STRes46|STResList46],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF013.xml','./msxsdtest/ModelGroups',valid,S46),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF014.xml','./msxsdtest/ModelGroups',valid,S47),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes48,S48} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList49 = [STRes48|STResList48],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF015.xml','./msxsdtest/ModelGroups',valid,S48),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF016.xml','./msxsdtest/ModelGroups',valid,S49),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes50,S50} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF017.xsd','./msxsdtest/ModelGroups',valid),
+ STResList51 = [STRes50|STResList50],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF017.xml','./msxsdtest/ModelGroups',valid,S50),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes51,S51} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF018.xsd','./msxsdtest/ModelGroups',valid),
+ STResList52 = [STRes51|STResList51],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF018.xml','./msxsdtest/ModelGroups',valid,S51),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF019.xsd','./msxsdtest/ModelGroups',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgF019.xml','./msxsdtest/ModelGroups',valid,S52),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF020.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF021.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF022.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgF023.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,S57} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList58 = [STRes57|STResList57],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG001.xml','./msxsdtest/ModelGroups',valid,S57),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG003.xsd','./msxsdtest/ModelGroups',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG003.xml','./msxsdtest/ModelGroups',invalid,S59),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes60,S60} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList61 = [STRes60|STResList60],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG004.xml','./msxsdtest/ModelGroups',valid,S60),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes61,S61} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList62 = [STRes61|STResList61],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG005.xml','./msxsdtest/ModelGroups',invalid,S61),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes62,S62} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList63 = [STRes62|STResList62],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG006.xml','./msxsdtest/ModelGroups',valid,S62),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG007.xml','./msxsdtest/ModelGroups',valid,S63),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes64,S64} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList65 = [STRes64|STResList64],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG008.xml','./msxsdtest/ModelGroups',invalid,S64),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG009.xml','./msxsdtest/ModelGroups',valid,S65),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes66,S66} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList67 = [STRes66|STResList66],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG010.xml','./msxsdtest/ModelGroups',valid,S66),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes67,S67} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG011.xsd','./msxsdtest/ModelGroups',valid),
+ STResList68 = [STRes67|STResList67],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG011.xml','./msxsdtest/ModelGroups',invalid,S67),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes68,S68} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG012.xsd','./msxsdtest/ModelGroups',valid),
+ STResList69 = [STRes68|STResList68],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG012.xml','./msxsdtest/ModelGroups',valid,S68),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes69,S69} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList70 = [STRes69|STResList69],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG013.xml','./msxsdtest/ModelGroups',invalid,S69),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes70,S70} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList71 = [STRes70|STResList70],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG014.xml','./msxsdtest/ModelGroups',valid,S70),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes71,S71} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList72 = [STRes71|STResList71],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG015.xml','./msxsdtest/ModelGroups',invalid,S71),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes72,S72} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList73 = [STRes72|STResList72],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG016.xml','./msxsdtest/ModelGroups',valid,S72),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes73,S73} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG017.xsd','./msxsdtest/ModelGroups',valid),
+ STResList74 = [STRes73|STResList73],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG017.xml','./msxsdtest/ModelGroups',invalid,S73),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes74,S74} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG018.xsd','./msxsdtest/ModelGroups',valid),
+ STResList75 = [STRes74|STResList74],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG018.xml','./msxsdtest/ModelGroups',invalid,S74),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes75,S75} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG019.xsd','./msxsdtest/ModelGroups',valid),
+ STResList76 = [STRes75|STResList75],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG019.xml','./msxsdtest/ModelGroups',valid,S75),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes76,S76} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG020.xsd','./msxsdtest/ModelGroups',valid),
+ STResList77 = [STRes76|STResList76],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG020.xml','./msxsdtest/ModelGroups',invalid,S76),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes77,S77} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG021.xsd','./msxsdtest/ModelGroups',valid),
+ STResList78 = [STRes77|STResList77],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG021.xml','./msxsdtest/ModelGroups',invalid,S77),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes78,S78} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG022.xsd','./msxsdtest/ModelGroups',valid),
+ STResList79 = [STRes78|STResList78],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG022.xml','./msxsdtest/ModelGroups',valid,S78),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes79,S79} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG023.xsd','./msxsdtest/ModelGroups',valid),
+ STResList80 = [STRes79|STResList79],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG023.xml','./msxsdtest/ModelGroups',valid,S79),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes80,S80} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG024.xsd','./msxsdtest/ModelGroups',valid),
+ STResList81 = [STRes80|STResList80],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG024.xml','./msxsdtest/ModelGroups',invalid,S80),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG025.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,S82} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG026.xsd','./msxsdtest/ModelGroups',valid),
+ STResList83 = [STRes82|STResList82],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgG026.xml','./msxsdtest/ModelGroups',valid,S82),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG027.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG028.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG029.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList86 = [STRes85|STResList85],
+
+
+ ?line {STRes86,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgG030.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList87 = [STRes86|STResList86],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList87,ITResList51).
+
+%% model groups ( choice ).
+
+mgHIJ(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgH001.xml','./msxsdtest/ModelGroups',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH004.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH005.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH009.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH010.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH011.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH012.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgH013.xml','./msxsdtest/ModelGroups',valid,S12),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgH014.xml','./msxsdtest/ModelGroups',valid,S13),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgH015.xml','./msxsdtest/ModelGroups',valid,S14),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgH016.xml','./msxsdtest/ModelGroups',valid,S15),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH017.xsd','./msxsdtest/ModelGroups',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgH017.xml','./msxsdtest/ModelGroups',valid,S16),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgH018.xsd','./msxsdtest/ModelGroups',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgH018.xml','./msxsdtest/ModelGroups',valid,S17),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHa001.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHa002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHa003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHa004.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHa005.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHa006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHa007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHa008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHb001.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHb002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHb003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHb004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgHb004.xml','./msxsdtest/ModelGroups',valid,S29),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHb005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgHb005.xml','./msxsdtest/ModelGroups',valid,S30),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHb006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHb007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgHb008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI001.xml','./msxsdtest/ModelGroups',valid,S34),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI002.xml','./msxsdtest/ModelGroups',valid,S35),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,S37} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList38 = [STRes37|STResList37],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI004.xml','./msxsdtest/ModelGroups',valid,S37),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes38,S38} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList39 = [STRes38|STResList38],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI005.xml','./msxsdtest/ModelGroups',valid,S38),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI006.xml','./msxsdtest/ModelGroups',valid,S39),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI007.xml','./msxsdtest/ModelGroups',valid,S40),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes41,S41} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList42 = [STRes41|STResList41],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI008.xml','./msxsdtest/ModelGroups',valid,S41),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes42,S42} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList43 = [STRes42|STResList42],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI009.xml','./msxsdtest/ModelGroups',valid,S42),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes43,S43} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList44 = [STRes43|STResList43],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI010.xml','./msxsdtest/ModelGroups',valid,S43),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes44,S44} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI011.xsd','./msxsdtest/ModelGroups',valid),
+ STResList45 = [STRes44|STResList44],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI011.xml','./msxsdtest/ModelGroups',valid,S44),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes45,S45} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI012.xsd','./msxsdtest/ModelGroups',valid),
+ STResList46 = [STRes45|STResList45],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI012.xml','./msxsdtest/ModelGroups',valid,S45),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes46,S46} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList47 = [STRes46|STResList46],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI013.xml','./msxsdtest/ModelGroups',valid,S46),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI014.xml','./msxsdtest/ModelGroups',valid,S47),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes48,S48} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList49 = [STRes48|STResList48],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI015.xml','./msxsdtest/ModelGroups',valid,S48),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI016.xml','./msxsdtest/ModelGroups',valid,S49),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes50,S50} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI017.xsd','./msxsdtest/ModelGroups',valid),
+ STResList51 = [STRes50|STResList50],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI017.xml','./msxsdtest/ModelGroups',valid,S50),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes51,S51} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI018.xsd','./msxsdtest/ModelGroups',valid),
+ STResList52 = [STRes51|STResList51],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI018.xml','./msxsdtest/ModelGroups',valid,S51),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI019.xsd','./msxsdtest/ModelGroups',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgI019.xml','./msxsdtest/ModelGroups',valid,S52),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI020.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI021.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI022.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgI023.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,S57} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList58 = [STRes57|STResList57],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ001.xml','./msxsdtest/ModelGroups',valid,S57),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ003.xsd','./msxsdtest/ModelGroups',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ003.xml','./msxsdtest/ModelGroups',invalid,S59),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes60,S60} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList61 = [STRes60|STResList60],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ004.xml','./msxsdtest/ModelGroups',valid,S60),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes61,S61} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList62 = [STRes61|STResList61],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ005.xml','./msxsdtest/ModelGroups',invalid,S61),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes62,S62} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList63 = [STRes62|STResList62],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ006.xml','./msxsdtest/ModelGroups',valid,S62),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ007.xml','./msxsdtest/ModelGroups',valid,S63),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes64,S64} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList65 = [STRes64|STResList64],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ008.xml','./msxsdtest/ModelGroups',invalid,S64),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ009.xml','./msxsdtest/ModelGroups',valid,S65),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes66,S66} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList67 = [STRes66|STResList66],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ010.xml','./msxsdtest/ModelGroups',valid,S66),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes67,S67} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ011.xsd','./msxsdtest/ModelGroups',valid),
+ STResList68 = [STRes67|STResList67],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ011.xml','./msxsdtest/ModelGroups',invalid,S67),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes68,S68} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ012.xsd','./msxsdtest/ModelGroups',valid),
+ STResList69 = [STRes68|STResList68],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ012.xml','./msxsdtest/ModelGroups',valid,S68),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes69,S69} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList70 = [STRes69|STResList69],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ013.xml','./msxsdtest/ModelGroups',invalid,S69),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes70,S70} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList71 = [STRes70|STResList70],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ014.xml','./msxsdtest/ModelGroups',valid,S70),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes71,S71} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList72 = [STRes71|STResList71],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ015.xml','./msxsdtest/ModelGroups',invalid,S71),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes72,S72} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList73 = [STRes72|STResList72],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ016.xml','./msxsdtest/ModelGroups',valid,S72),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes73,S73} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ017.xsd','./msxsdtest/ModelGroups',valid),
+ STResList74 = [STRes73|STResList73],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ017.xml','./msxsdtest/ModelGroups',invalid,S73),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes74,S74} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ018.xsd','./msxsdtest/ModelGroups',valid),
+ STResList75 = [STRes74|STResList74],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ018.xml','./msxsdtest/ModelGroups',invalid,S74),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes75,S75} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ019.xsd','./msxsdtest/ModelGroups',valid),
+ STResList76 = [STRes75|STResList75],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ019.xml','./msxsdtest/ModelGroups',valid,S75),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes76,S76} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ020.xsd','./msxsdtest/ModelGroups',valid),
+ STResList77 = [STRes76|STResList76],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ020.xml','./msxsdtest/ModelGroups',invalid,S76),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes77,S77} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ021.xsd','./msxsdtest/ModelGroups',valid),
+ STResList78 = [STRes77|STResList77],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ021.xml','./msxsdtest/ModelGroups',invalid,S77),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes78,S78} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ022.xsd','./msxsdtest/ModelGroups',valid),
+ STResList79 = [STRes78|STResList78],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ022.xml','./msxsdtest/ModelGroups',valid,S78),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes79,S79} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ023.xsd','./msxsdtest/ModelGroups',valid),
+ STResList80 = [STRes79|STResList79],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ023.xml','./msxsdtest/ModelGroups',valid,S79),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes80,S80} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ024.xsd','./msxsdtest/ModelGroups',valid),
+ STResList81 = [STRes80|STResList80],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ024.xml','./msxsdtest/ModelGroups',invalid,S80),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ025.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,S82} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ026.xsd','./msxsdtest/ModelGroups',valid),
+ STResList83 = [STRes82|STResList82],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgJ026.xml','./msxsdtest/ModelGroups',valid,S82),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ027.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ028.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ029.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList86 = [STRes85|STResList85],
+
+
+ ?line {STRes86,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgJ030.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList87 = [STRes86|STResList86],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList87,ITResList51).
+
+%% model group validation checking (sequence).
+
+mgK(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK001.xml','./msxsdtest/ModelGroups',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK002.xml','./msxsdtest/ModelGroups',invalid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK003.xsd','./msxsdtest/ModelGroups',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK003.xml','./msxsdtest/ModelGroups',invalid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK004.xml','./msxsdtest/ModelGroups',valid,S3),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK005.xml','./msxsdtest/ModelGroups',invalid,S4),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK006.xml','./msxsdtest/ModelGroups',invalid,S5),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK007.xml','./msxsdtest/ModelGroups',invalid,S6),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK008.xml','./msxsdtest/ModelGroups',invalid,S7),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK009.xml','./msxsdtest/ModelGroups',valid,S8),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgK010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgK010.xml','./msxsdtest/ModelGroups',invalid,S9),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList10,ITResList10).
+
+%% model group validation checking (choice, all).
+
+mgLM(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL001.xml','./msxsdtest/ModelGroups',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL002.xml','./msxsdtest/ModelGroups',invalid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL003.xsd','./msxsdtest/ModelGroups',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL003.xml','./msxsdtest/ModelGroups',invalid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL004.xml','./msxsdtest/ModelGroups',valid,S3),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL005.xml','./msxsdtest/ModelGroups',invalid,S4),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL006.xml','./msxsdtest/ModelGroups',valid,S5),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL007.xml','./msxsdtest/ModelGroups',invalid,S6),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL008.xml','./msxsdtest/ModelGroups',valid,S7),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL009.xml','./msxsdtest/ModelGroups',valid,S8),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgL010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgL010.xml','./msxsdtest/ModelGroups',invalid,S9),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM002.xml','./msxsdtest/ModelGroups',invalid,S10),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM003.xsd','./msxsdtest/ModelGroups',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM003.xml','./msxsdtest/ModelGroups',invalid,S11),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM004.xml','./msxsdtest/ModelGroups',valid,S12),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM005.xml','./msxsdtest/ModelGroups',invalid,S13),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM006.xml','./msxsdtest/ModelGroups',invalid,S14),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM007.xml','./msxsdtest/ModelGroups',invalid,S15),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM008.xml','./msxsdtest/ModelGroups',valid,S16),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM009.xml','./msxsdtest/ModelGroups',valid,S17),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM010.xml','./msxsdtest/ModelGroups',invalid,S18),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM011.xsd','./msxsdtest/ModelGroups',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM011.xml','./msxsdtest/ModelGroups',valid,S19),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM012.xsd','./msxsdtest/ModelGroups',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM012.xml','./msxsdtest/ModelGroups',invalid,S20),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM013.xml','./msxsdtest/ModelGroups',valid,S21),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgM014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgM014.xml','./msxsdtest/ModelGroups',invalid,S22),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList23,ITResList23).
+
+%% Element Sequence Valid.
+
+mgN(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN001.xsd','./msxsdtest/ModelGroups',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN001.xml','./msxsdtest/ModelGroups',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN002.xml','./msxsdtest/ModelGroups',invalid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN003.xsd','./msxsdtest/ModelGroups',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN003.xml','./msxsdtest/ModelGroups',invalid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN004.xml','./msxsdtest/ModelGroups',invalid,S3),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN005.xml','./msxsdtest/ModelGroups',valid,S4),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN006.xml','./msxsdtest/ModelGroups',invalid,S5),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN007.xml','./msxsdtest/ModelGroups',invalid,S6),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN008.xml','./msxsdtest/ModelGroups',invalid,S7),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN009.xml','./msxsdtest/ModelGroups',invalid,S8),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN010.xml','./msxsdtest/ModelGroups',invalid,S9),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN011.xsd','./msxsdtest/ModelGroups',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN011.xml','./msxsdtest/ModelGroups',invalid,S10),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN012.xsd','./msxsdtest/ModelGroups',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN012.xml','./msxsdtest/ModelGroups',valid,S11),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN013.xml','./msxsdtest/ModelGroups',invalid,S12),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN014.xml','./msxsdtest/ModelGroups',invalid,S13),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN015.xml','./msxsdtest/ModelGroups',invalid,S14),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgN016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgN016.xml','./msxsdtest/ModelGroups',invalid,S15),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList16,ITResList16).
+
+%% All Group Limited.
+
+mgOP(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO001.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList2 = [STRes1|STResList1],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO002.xml','./msxsdtest/ModelGroups',valid,S1),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO004.xsd','./msxsdtest/ModelGroups',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO004.xml','./msxsdtest/ModelGroups',valid,S3),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO005.xsd','./msxsdtest/ModelGroups',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO005.xml','./msxsdtest/ModelGroups',valid,S4),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO006.xml','./msxsdtest/ModelGroups',valid,S5),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO007.xml','./msxsdtest/ModelGroups',valid,S6),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO008.xml','./msxsdtest/ModelGroups',valid,S7),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO009.xml','./msxsdtest/ModelGroups',valid,S8),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO010.xsd','./msxsdtest/ModelGroups',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO010.xml','./msxsdtest/ModelGroups',valid,S9),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO011.xsd','./msxsdtest/ModelGroups',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO011.xml','./msxsdtest/ModelGroups',valid,S10),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO012.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO013.xsd','./msxsdtest/ModelGroups',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO013.xml','./msxsdtest/ModelGroups',valid,S12),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO014.xml','./msxsdtest/ModelGroups',valid,S13),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO015.xml','./msxsdtest/ModelGroups',valid,S14),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO016.xml','./msxsdtest/ModelGroups',valid,S15),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO017.xsd','./msxsdtest/ModelGroups',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO017.xml','./msxsdtest/ModelGroups',valid,S16),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO018.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO019.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO020.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO021.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO022.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO023.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO024.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO025.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO026.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO027.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO028.xsd','./msxsdtest/ModelGroups',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO028.xml','./msxsdtest/ModelGroups',valid,S27),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO029.xsd','./msxsdtest/ModelGroups',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO029.xml','./msxsdtest/ModelGroups',valid,S28),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO030.xsd','./msxsdtest/ModelGroups',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO030.xml','./msxsdtest/ModelGroups',valid,S29),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO031.xsd','./msxsdtest/ModelGroups',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO031.xml','./msxsdtest/ModelGroups',valid,S30),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO032.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO033.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO034.xsd','./msxsdtest/ModelGroups',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO034.xml','./msxsdtest/ModelGroups',valid,S33),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO035.xsd','./msxsdtest/ModelGroups',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO035.xml','./msxsdtest/ModelGroups',valid,S34),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO036.xsd','./msxsdtest/ModelGroups',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO036.xml','./msxsdtest/ModelGroups',valid,S35),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO037.xsd','./msxsdtest/ModelGroups',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO037.xml','./msxsdtest/ModelGroups',valid,S36),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes37,S37} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgO038.xsd','./msxsdtest/ModelGroups',valid),
+ STResList38 = [STRes37|STResList37],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgO038.xml','./msxsdtest/ModelGroups',valid,S37),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP039.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP040.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP041.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP042.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP043.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP049.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP050.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP055.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP056.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP057.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList48 = [STRes47|STResList47],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP058.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP059.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList50 = [STRes49|STResList49],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP060.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP061.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgP062.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList53 = [STRes52|STResList52],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList53,ITResList23).
+
+%% Element Declarations Consistent, 3.8.6
+
+mgQR(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ001.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ002.xsd','./msxsdtest/ModelGroups',valid),
+ STResList2 = [STRes1|STResList1],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ002.xml','./msxsdtest/ModelGroups',valid,S1),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ003.xsd','./msxsdtest/ModelGroups',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ003.xml','./msxsdtest/ModelGroups',valid,S2),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ004.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ005.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ006.xsd','./msxsdtest/ModelGroups',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ006.xml','./msxsdtest/ModelGroups',valid,S5),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ007.xsd','./msxsdtest/ModelGroups',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ007.xml','./msxsdtest/ModelGroups',valid,S6),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ008.xsd','./msxsdtest/ModelGroups',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ008.xml','./msxsdtest/ModelGroups',valid,S7),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ009.xsd','./msxsdtest/ModelGroups',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ009.xml','./msxsdtest/ModelGroups',valid,S8),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ010.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ011.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ012.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ013.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ014.xsd','./msxsdtest/ModelGroups',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ014.xml','./msxsdtest/ModelGroups',valid,S13),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ015.xsd','./msxsdtest/ModelGroups',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ015.xml','./msxsdtest/ModelGroups',valid,S14),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ016.xsd','./msxsdtest/ModelGroups',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ016.xml','./msxsdtest/ModelGroups',valid,S15),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ017.xsd','./msxsdtest/ModelGroups',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ017.xml','./msxsdtest/ModelGroups',valid,S16),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ018.xsd','./msxsdtest/ModelGroups',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ018.xml','./msxsdtest/ModelGroups',valid,S17),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ019.xsd','./msxsdtest/ModelGroups',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ019.xml','./msxsdtest/ModelGroups',valid,S18),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ020.xsd','./msxsdtest/ModelGroups',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/ModelGroups/mgQ020.xml','./msxsdtest/ModelGroups',valid,S19),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgQ021.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR001.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR002.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR003.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR004.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR005.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR006.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR007.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR008.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR009.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR010.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR011.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR012.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR013.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR014.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR015.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR016.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR017.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR018.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR019.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR020.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR021.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/ModelGroups/mgR022.xsd','./msxsdtest/ModelGroups',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList43,ITResList13).
+
+%% Deterministic Sequences.
+
+mgS(Config) when is_list(Config) ->
+
+
+
+
+
+
+
+
+ xmerl_xsd_lib:compare_test_results(Config,[],[]).
+
+%% 3.9.1 The Particle Schema Component.
+
+particlesAB(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA001.xsd','./msxsdtest/Particles',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA001.xml','./msxsdtest/Particles',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA002.xsd','./msxsdtest/Particles',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA002.xml','./msxsdtest/Particles',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA003.xsd','./msxsdtest/Particles',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA003.xml','./msxsdtest/Particles',invalid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA004.xsd','./msxsdtest/Particles',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA004.xml','./msxsdtest/Particles',invalid,S3),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA005.xsd','./msxsdtest/Particles',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA005.xml','./msxsdtest/Particles',invalid,S4),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA006.xsd','./msxsdtest/Particles',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA006.xml','./msxsdtest/Particles',valid,S5),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA007.xsd','./msxsdtest/Particles',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA007.xml','./msxsdtest/Particles',valid,S6),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA008.xsd','./msxsdtest/Particles',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA008.xml','./msxsdtest/Particles',invalid,S7),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA009.xsd','./msxsdtest/Particles',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA009.xml','./msxsdtest/Particles',invalid,S8),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA010.xsd','./msxsdtest/Particles',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA010.xml','./msxsdtest/Particles',valid,S9),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA011.xsd','./msxsdtest/Particles',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA011.xml','./msxsdtest/Particles',valid,S10),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA012.xsd','./msxsdtest/Particles',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA012.xml','./msxsdtest/Particles',invalid,S11),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA013.xsd','./msxsdtest/Particles',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA013.xml','./msxsdtest/Particles',invalid,S12),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA014.xsd','./msxsdtest/Particles',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA014.xml','./msxsdtest/Particles',valid,S13),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesA015.xsd','./msxsdtest/Particles',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesA015.xml','./msxsdtest/Particles',valid,S14),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB001.xsd','./msxsdtest/Particles',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB001.xml','./msxsdtest/Particles',invalid,S15),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB002.xsd','./msxsdtest/Particles',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB002.xml','./msxsdtest/Particles',valid,S16),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB003.xsd','./msxsdtest/Particles',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB003.xml','./msxsdtest/Particles',invalid,S17),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB004.xsd','./msxsdtest/Particles',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB004.xml','./msxsdtest/Particles',invalid,S18),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB005.xsd','./msxsdtest/Particles',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB005.xml','./msxsdtest/Particles',valid,S19),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB006.xsd','./msxsdtest/Particles',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB006.xml','./msxsdtest/Particles',valid,S20),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB007.xsd','./msxsdtest/Particles',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB007.xml','./msxsdtest/Particles',invalid,S21),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB008.xsd','./msxsdtest/Particles',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB008.xml','./msxsdtest/Particles',invalid,S22),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB009.xsd','./msxsdtest/Particles',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB009.xml','./msxsdtest/Particles',valid,S23),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB010.xsd','./msxsdtest/Particles',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB010.xml','./msxsdtest/Particles',valid,S24),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB011.xsd','./msxsdtest/Particles',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB011.xml','./msxsdtest/Particles',invalid,S25),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB012.xsd','./msxsdtest/Particles',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB012.xml','./msxsdtest/Particles',invalid,S26),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB013.xsd','./msxsdtest/Particles',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB013.xml','./msxsdtest/Particles',valid,S27),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB014.xsd','./msxsdtest/Particles',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB014.xml','./msxsdtest/Particles',valid,S28),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesB015.xsd','./msxsdtest/Particles',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesB015.xml','./msxsdtest/Particles',invalid,S29),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList30,ITResList30).
+
+%% 3.9.4 Particle Validation Rules: Element Sequence Locally Valid.
+
+particlesCDE(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC001.xsd','./msxsdtest/Particles',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC001.xml','./msxsdtest/Particles',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC002.xsd','./msxsdtest/Particles',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC002.xml','./msxsdtest/Particles',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC003.xsd','./msxsdtest/Particles',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC003.xml','./msxsdtest/Particles',valid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC004.xsd','./msxsdtest/Particles',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC004.xml','./msxsdtest/Particles',valid,S3),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC005.xsd','./msxsdtest/Particles',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC005.xml','./msxsdtest/Particles',valid,S4),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC006.xsd','./msxsdtest/Particles',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC006.xml','./msxsdtest/Particles',valid,S5),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC007.xsd','./msxsdtest/Particles',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC007.xml','./msxsdtest/Particles',invalid,S6),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC008.xsd','./msxsdtest/Particles',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC008.xml','./msxsdtest/Particles',valid,S7),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC009.xsd','./msxsdtest/Particles',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC009.xml','./msxsdtest/Particles',valid,S8),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC010.xsd','./msxsdtest/Particles',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC010.xml','./msxsdtest/Particles',valid,S9),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC011.xsd','./msxsdtest/Particles',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC011.xml','./msxsdtest/Particles',valid,S10),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC012.xsd','./msxsdtest/Particles',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC012.xml','./msxsdtest/Particles',invalid,S11),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC013.xsd','./msxsdtest/Particles',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC013.xml','./msxsdtest/Particles',invalid,S12),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC014.xsd','./msxsdtest/Particles',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC014.xml','./msxsdtest/Particles',invalid,S13),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC015.xsd','./msxsdtest/Particles',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC015.xml','./msxsdtest/Particles',valid,S14),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC016.xsd','./msxsdtest/Particles',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC016.xml','./msxsdtest/Particles',valid,S15),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC017.xsd','./msxsdtest/Particles',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC017.xml','./msxsdtest/Particles',invalid,S16),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC018.xsd','./msxsdtest/Particles',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC018.xml','./msxsdtest/Particles',invalid,S17),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC019.xsd','./msxsdtest/Particles',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC019.xml','./msxsdtest/Particles',invalid,S18),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC020.xsd','./msxsdtest/Particles',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC020.xml','./msxsdtest/Particles',invalid,S19),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC021.xsd','./msxsdtest/Particles',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC021.xml','./msxsdtest/Particles',valid,S20),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC022.xsd','./msxsdtest/Particles',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC022.xml','./msxsdtest/Particles',invalid,S21),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC023.xsd','./msxsdtest/Particles',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC023.xml','./msxsdtest/Particles',invalid,S22),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC024.xsd','./msxsdtest/Particles',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC024.xml','./msxsdtest/Particles',invalid,S23),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC025.xsd','./msxsdtest/Particles',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC025.xml','./msxsdtest/Particles',invalid,S24),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC026.xsd','./msxsdtest/Particles',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC026.xml','./msxsdtest/Particles',invalid,S25),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC027.xsd','./msxsdtest/Particles',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC027.xml','./msxsdtest/Particles',valid,S26),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC028.xsd','./msxsdtest/Particles',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC028.xml','./msxsdtest/Particles',valid,S27),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC029.xsd','./msxsdtest/Particles',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC029.xml','./msxsdtest/Particles',valid,S28),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC030.xsd','./msxsdtest/Particles',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC030.xml','./msxsdtest/Particles',valid,S29),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC031.xsd','./msxsdtest/Particles',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC031.xml','./msxsdtest/Particles',invalid,S30),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC032.xsd','./msxsdtest/Particles',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC032.xml','./msxsdtest/Particles',invalid,S31),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC033.xsd','./msxsdtest/Particles',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC033.xml','./msxsdtest/Particles',invalid,S32),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC034.xsd','./msxsdtest/Particles',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC034.xml','./msxsdtest/Particles',valid,S33),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC035.xsd','./msxsdtest/Particles',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC035.xml','./msxsdtest/Particles',invalid,S34),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC036.xsd','./msxsdtest/Particles',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC036.xml','./msxsdtest/Particles',invalid,S35),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC037.xsd','./msxsdtest/Particles',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC037.xml','./msxsdtest/Particles',valid,S36),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes37,S37} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC038.xsd','./msxsdtest/Particles',valid),
+ STResList38 = [STRes37|STResList37],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC038.xml','./msxsdtest/Particles',invalid,S37),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes38,S38} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC039.xsd','./msxsdtest/Particles',valid),
+ STResList39 = [STRes38|STResList38],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC039.xml','./msxsdtest/Particles',invalid,S38),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC040.xsd','./msxsdtest/Particles',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC040.xml','./msxsdtest/Particles',valid,S39),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC041.xsd','./msxsdtest/Particles',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC041.xml','./msxsdtest/Particles',valid,S40),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes41,S41} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC042.xsd','./msxsdtest/Particles',valid),
+ STResList42 = [STRes41|STResList41],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC042.xml','./msxsdtest/Particles',invalid,S41),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes42,S42} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC043.xsd','./msxsdtest/Particles',valid),
+ STResList43 = [STRes42|STResList42],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC043.xml','./msxsdtest/Particles',valid,S42),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes43,S43} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC044.xsd','./msxsdtest/Particles',valid),
+ STResList44 = [STRes43|STResList43],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC044.xml','./msxsdtest/Particles',valid,S43),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes44,S44} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC045.xsd','./msxsdtest/Particles',valid),
+ STResList45 = [STRes44|STResList44],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC045.xml','./msxsdtest/Particles',valid,S44),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes45,S45} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC046.xsd','./msxsdtest/Particles',valid),
+ STResList46 = [STRes45|STResList45],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC046.xml','./msxsdtest/Particles',valid,S45),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes46,S46} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC047.xsd','./msxsdtest/Particles',valid),
+ STResList47 = [STRes46|STResList46],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC047.xml','./msxsdtest/Particles',invalid,S46),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesC048.xsd','./msxsdtest/Particles',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesC048.xml','./msxsdtest/Particles',invalid,S47),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes48,S48} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa001.xsd','./msxsdtest/Particles',valid),
+ STResList49 = [STRes48|STResList48],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa001.xml','./msxsdtest/Particles',invalid,S48),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa002.xsd','./msxsdtest/Particles',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa002.xml','./msxsdtest/Particles',valid,S49),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes50,S50} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa003.xsd','./msxsdtest/Particles',valid),
+ STResList51 = [STRes50|STResList50],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa003.xml','./msxsdtest/Particles',invalid,S50),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes51,S51} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa004.xsd','./msxsdtest/Particles',valid),
+ STResList52 = [STRes51|STResList51],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa004.xml','./msxsdtest/Particles',invalid,S51),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa005.xsd','./msxsdtest/Particles',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa005.xml','./msxsdtest/Particles',invalid,S52),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes53,S53} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa006.xsd','./msxsdtest/Particles',valid),
+ STResList54 = [STRes53|STResList53],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa006.xml','./msxsdtest/Particles',invalid,S53),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes54,S54} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa007.xsd','./msxsdtest/Particles',valid),
+ STResList55 = [STRes54|STResList54],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa007.xml','./msxsdtest/Particles',valid,S54),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes55,S55} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa008.xsd','./msxsdtest/Particles',valid),
+ STResList56 = [STRes55|STResList55],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa008.xml','./msxsdtest/Particles',invalid,S55),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes56,S56} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa009.xsd','./msxsdtest/Particles',valid),
+ STResList57 = [STRes56|STResList56],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa009.xml','./msxsdtest/Particles',invalid,S56),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes57,S57} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa010.xsd','./msxsdtest/Particles',valid),
+ STResList58 = [STRes57|STResList57],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa010.xml','./msxsdtest/Particles',invalid,S57),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes58,S58} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDa011.xsd','./msxsdtest/Particles',valid),
+ STResList59 = [STRes58|STResList58],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDa011.xml','./msxsdtest/Particles',invalid,S58),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb001.xsd','./msxsdtest/Particles',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb001.xml','./msxsdtest/Particles',invalid,S59),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes60,S60} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb002.xsd','./msxsdtest/Particles',valid),
+ STResList61 = [STRes60|STResList60],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb002.xml','./msxsdtest/Particles',valid,S60),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes61,S61} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb003.xsd','./msxsdtest/Particles',valid),
+ STResList62 = [STRes61|STResList61],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb003.xml','./msxsdtest/Particles',invalid,S61),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes62,S62} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb004.xsd','./msxsdtest/Particles',valid),
+ STResList63 = [STRes62|STResList62],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb004.xml','./msxsdtest/Particles',invalid,S62),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb005.xsd','./msxsdtest/Particles',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb005.xml','./msxsdtest/Particles',invalid,S63),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes64,S64} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb006.xsd','./msxsdtest/Particles',valid),
+ STResList65 = [STRes64|STResList64],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb006.xml','./msxsdtest/Particles',invalid,S64),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb007.xsd','./msxsdtest/Particles',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb007.xml','./msxsdtest/Particles',valid,S65),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes66,S66} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb008.xsd','./msxsdtest/Particles',valid),
+ STResList67 = [STRes66|STResList66],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb008.xml','./msxsdtest/Particles',invalid,S66),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes67,S67} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb009.xsd','./msxsdtest/Particles',valid),
+ STResList68 = [STRes67|STResList67],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb009.xml','./msxsdtest/Particles',invalid,S67),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes68,S68} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb010.xsd','./msxsdtest/Particles',valid),
+ STResList69 = [STRes68|STResList68],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb010.xml','./msxsdtest/Particles',invalid,S68),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes69,S69} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDb011.xsd','./msxsdtest/Particles',valid),
+ STResList70 = [STRes69|STResList69],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDb011.xml','./msxsdtest/Particles',invalid,S69),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes70,S70} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDc001.xsd','./msxsdtest/Particles',valid),
+ STResList71 = [STRes70|STResList70],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDc001.xml','./msxsdtest/Particles',valid,S70),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes71,S71} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDc002.xsd','./msxsdtest/Particles',valid),
+ STResList72 = [STRes71|STResList71],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDc002.xml','./msxsdtest/Particles',valid,S71),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes72,S72} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDc003.xsd','./msxsdtest/Particles',valid),
+ STResList73 = [STRes72|STResList72],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDc003.xml','./msxsdtest/Particles',valid,S72),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes73,S73} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDc004.xsd','./msxsdtest/Particles',valid),
+ STResList74 = [STRes73|STResList73],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDc004.xml','./msxsdtest/Particles',valid,S73),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes74,S74} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDc005.xsd','./msxsdtest/Particles',valid),
+ STResList75 = [STRes74|STResList74],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDc005.xml','./msxsdtest/Particles',valid,S74),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes75,S75} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDc006.xsd','./msxsdtest/Particles',valid),
+ STResList76 = [STRes75|STResList75],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDc006.xml','./msxsdtest/Particles',valid,S75),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes76,S76} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDc007.xsd','./msxsdtest/Particles',valid),
+ STResList77 = [STRes76|STResList76],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDc007.xml','./msxsdtest/Particles',valid,S76),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes77,S77} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDc008.xsd','./msxsdtest/Particles',valid),
+ STResList78 = [STRes77|STResList77],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDc008.xml','./msxsdtest/Particles',valid,S77),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes78,S78} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesDc009.xsd','./msxsdtest/Particles',valid),
+ STResList79 = [STRes78|STResList78],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesDc009.xml','./msxsdtest/Particles',valid,S78),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes79,S79} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa001.xsd','./msxsdtest/Particles',valid),
+ STResList80 = [STRes79|STResList79],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa001.xml','./msxsdtest/Particles',valid,S79),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes80,S80} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa002.xsd','./msxsdtest/Particles',valid),
+ STResList81 = [STRes80|STResList80],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa002.xml','./msxsdtest/Particles',invalid,S80),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes81,S81} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa003.xsd','./msxsdtest/Particles',valid),
+ STResList82 = [STRes81|STResList81],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa003.xml','./msxsdtest/Particles',valid,S81),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes82,S82} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa004.xsd','./msxsdtest/Particles',valid),
+ STResList83 = [STRes82|STResList82],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa004.xml','./msxsdtest/Particles',valid,S82),
+ ITResList83 = [ITRes82|ITResList82],
+
+
+ ?line {STRes83,S83} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa005.xsd','./msxsdtest/Particles',valid),
+ STResList84 = [STRes83|STResList83],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa005.xml','./msxsdtest/Particles',invalid,S83),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes84,S84} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa006.xsd','./msxsdtest/Particles',valid),
+ STResList85 = [STRes84|STResList84],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa006.xml','./msxsdtest/Particles',invalid,S84),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes85,S85} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa007.xsd','./msxsdtest/Particles',valid),
+ STResList86 = [STRes85|STResList85],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa007.xml','./msxsdtest/Particles',invalid,S85),
+ ITResList86 = [ITRes85|ITResList85],
+
+
+ ?line {STRes86,S86} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa008.xsd','./msxsdtest/Particles',valid),
+ STResList87 = [STRes86|STResList86],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa008.xml','./msxsdtest/Particles',valid,S86),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes87,S87} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa009.xsd','./msxsdtest/Particles',valid),
+ STResList88 = [STRes87|STResList87],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa009.xml','./msxsdtest/Particles',invalid,S87),
+ ITResList88 = [ITRes87|ITResList87],
+
+
+ ?line {STRes88,S88} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa010.xsd','./msxsdtest/Particles',valid),
+ STResList89 = [STRes88|STResList88],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa010.xml','./msxsdtest/Particles',valid,S88),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes89,S89} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa011.xsd','./msxsdtest/Particles',valid),
+ STResList90 = [STRes89|STResList89],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa011.xml','./msxsdtest/Particles',valid,S89),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes90,S90} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa012.xsd','./msxsdtest/Particles',valid),
+ STResList91 = [STRes90|STResList90],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa012.xml','./msxsdtest/Particles',invalid,S90),
+ ITResList91 = [ITRes90|ITResList90],
+
+
+ ?line {STRes91,S91} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa013.xsd','./msxsdtest/Particles',valid),
+ STResList92 = [STRes91|STResList91],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa013.xml','./msxsdtest/Particles',invalid,S91),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes92,S92} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa014.xsd','./msxsdtest/Particles',valid),
+ STResList93 = [STRes92|STResList92],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa014.xml','./msxsdtest/Particles',invalid,S92),
+ ITResList93 = [ITRes92|ITResList92],
+
+
+ ?line {STRes93,S93} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa015.xsd','./msxsdtest/Particles',valid),
+ STResList94 = [STRes93|STResList93],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa015.xml','./msxsdtest/Particles',valid,S93),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes94,S94} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa016.xsd','./msxsdtest/Particles',valid),
+ STResList95 = [STRes94|STResList94],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa016.xml','./msxsdtest/Particles',invalid,S94),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes95,S95} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa017.xsd','./msxsdtest/Particles',valid),
+ STResList96 = [STRes95|STResList95],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa017.xml','./msxsdtest/Particles',valid,S95),
+ ITResList96 = [ITRes95|ITResList95],
+
+
+ ?line {STRes96,S96} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa018.xsd','./msxsdtest/Particles',valid),
+ STResList97 = [STRes96|STResList96],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa018.xml','./msxsdtest/Particles',valid,S96),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes97,S97} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa019.xsd','./msxsdtest/Particles',valid),
+ STResList98 = [STRes97|STResList97],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa019.xml','./msxsdtest/Particles',invalid,S97),
+ ITResList98 = [ITRes97|ITResList97],
+
+
+ ?line {STRes98,S98} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa020.xsd','./msxsdtest/Particles',valid),
+ STResList99 = [STRes98|STResList98],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa020.xml','./msxsdtest/Particles',invalid,S98),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes99,S99} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa021.xsd','./msxsdtest/Particles',valid),
+ STResList100 = [STRes99|STResList99],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEa021.xml','./msxsdtest/Particles',invalid,S99),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes100,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa022.xsd','./msxsdtest/Particles',invalid),
+ STResList101 = [STRes100|STResList100],
+
+
+ ?line {STRes101,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa023.xsd','./msxsdtest/Particles',invalid),
+ STResList102 = [STRes101|STResList101],
+
+
+ ?line {STRes102,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa024.xsd','./msxsdtest/Particles',invalid),
+ STResList103 = [STRes102|STResList102],
+
+
+ ?line {STRes103,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEa025.xsd','./msxsdtest/Particles',invalid),
+ STResList104 = [STRes103|STResList103],
+
+
+ ?line {STRes104,S104} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb001.xsd','./msxsdtest/Particles',valid),
+ STResList105 = [STRes104|STResList104],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb001.xml','./msxsdtest/Particles',valid,S104),
+ ITResList101 = [ITRes100|ITResList100],
+
+
+ ?line {STRes105,S105} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb002.xsd','./msxsdtest/Particles',valid),
+ STResList106 = [STRes105|STResList105],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb002.xml','./msxsdtest/Particles',invalid,S105),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes106,S106} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb003.xsd','./msxsdtest/Particles',valid),
+ STResList107 = [STRes106|STResList106],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb003.xml','./msxsdtest/Particles',valid,S106),
+ ITResList103 = [ITRes102|ITResList102],
+
+
+ ?line {STRes107,S107} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb004.xsd','./msxsdtest/Particles',valid),
+ STResList108 = [STRes107|STResList107],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb004.xml','./msxsdtest/Particles',invalid,S107),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes108,S108} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb005.xsd','./msxsdtest/Particles',valid),
+ STResList109 = [STRes108|STResList108],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb005.xml','./msxsdtest/Particles',invalid,S108),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes109,S109} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb006.xsd','./msxsdtest/Particles',valid),
+ STResList110 = [STRes109|STResList109],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb006.xml','./msxsdtest/Particles',invalid,S109),
+ ITResList106 = [ITRes105|ITResList105],
+
+
+ ?line {STRes110,S110} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb007.xsd','./msxsdtest/Particles',valid),
+ STResList111 = [STRes110|STResList110],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb007.xml','./msxsdtest/Particles',invalid,S110),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes111,S111} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb008.xsd','./msxsdtest/Particles',valid),
+ STResList112 = [STRes111|STResList111],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb008.xml','./msxsdtest/Particles',invalid,S111),
+ ITResList108 = [ITRes107|ITResList107],
+
+
+ ?line {STRes112,S112} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb009.xsd','./msxsdtest/Particles',valid),
+ STResList113 = [STRes112|STResList112],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb009.xml','./msxsdtest/Particles',invalid,S112),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes113,S113} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb010.xsd','./msxsdtest/Particles',valid),
+ STResList114 = [STRes113|STResList113],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb010.xml','./msxsdtest/Particles',valid,S113),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes114,S114} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb011.xsd','./msxsdtest/Particles',valid),
+ STResList115 = [STRes114|STResList114],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb011.xml','./msxsdtest/Particles',invalid,S114),
+ ITResList111 = [ITRes110|ITResList110],
+
+
+ ?line {STRes115,S115} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb012.xsd','./msxsdtest/Particles',valid),
+ STResList116 = [STRes115|STResList115],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb012.xml','./msxsdtest/Particles',invalid,S115),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes116,S116} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb013.xsd','./msxsdtest/Particles',valid),
+ STResList117 = [STRes116|STResList116],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb013.xml','./msxsdtest/Particles',invalid,S116),
+ ITResList113 = [ITRes112|ITResList112],
+
+
+ ?line {STRes117,S117} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb014.xsd','./msxsdtest/Particles',valid),
+ STResList118 = [STRes117|STResList117],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb014.xml','./msxsdtest/Particles',invalid,S117),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes118,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb015.xsd','./msxsdtest/Particles',invalid),
+ STResList119 = [STRes118|STResList118],
+
+
+ ?line {STRes119,S119} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb016.xsd','./msxsdtest/Particles',valid),
+ STResList120 = [STRes119|STResList119],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb016.xml','./msxsdtest/Particles',valid,S119),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes120,S120} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb017.xsd','./msxsdtest/Particles',valid),
+ STResList121 = [STRes120|STResList120],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb017.xml','./msxsdtest/Particles',invalid,S120),
+ ITResList116 = [ITRes115|ITResList115],
+
+
+ ?line {STRes121,S121} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb018.xsd','./msxsdtest/Particles',valid),
+ STResList122 = [STRes121|STResList121],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb018.xml','./msxsdtest/Particles',invalid,S121),
+ ITResList117 = [ITRes116|ITResList116],
+
+
+ ?line {STRes122,S122} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb019.xsd','./msxsdtest/Particles',valid),
+ STResList123 = [STRes122|STResList122],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb019.xml','./msxsdtest/Particles',valid,S122),
+ ITResList118 = [ITRes117|ITResList117],
+
+
+ ?line {STRes123,S123} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb020.xsd','./msxsdtest/Particles',valid),
+ STResList124 = [STRes123|STResList123],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb020.xml','./msxsdtest/Particles',invalid,S123),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes124,S124} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb021.xsd','./msxsdtest/Particles',valid),
+ STResList125 = [STRes124|STResList124],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb021.xml','./msxsdtest/Particles',invalid,S124),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes125,S125} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb022.xsd','./msxsdtest/Particles',valid),
+ STResList126 = [STRes125|STResList125],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb022.xml','./msxsdtest/Particles',invalid,S125),
+ ITResList121 = [ITRes120|ITResList120],
+
+
+ ?line {STRes126,S126} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb023.xsd','./msxsdtest/Particles',valid),
+ STResList127 = [STRes126|STResList126],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb023.xml','./msxsdtest/Particles',invalid,S126),
+ ITResList122 = [ITRes121|ITResList121],
+
+
+ ?line {STRes127,S127} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb024.xsd','./msxsdtest/Particles',valid),
+ STResList128 = [STRes127|STResList127],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb024.xml','./msxsdtest/Particles',invalid,S127),
+ ITResList123 = [ITRes122|ITResList122],
+
+
+ ?line {STRes128,S128} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb025.xsd','./msxsdtest/Particles',valid),
+ STResList129 = [STRes128|STResList128],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb025.xml','./msxsdtest/Particles',invalid,S128),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes129,S129} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb026.xsd','./msxsdtest/Particles',valid),
+ STResList130 = [STRes129|STResList129],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb026.xml','./msxsdtest/Particles',valid,S129),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes130,S130} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb027.xsd','./msxsdtest/Particles',valid),
+ STResList131 = [STRes130|STResList130],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb027.xml','./msxsdtest/Particles',valid,S130),
+ ITResList126 = [ITRes125|ITResList125],
+
+
+ ?line {STRes131,S131} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb028.xsd','./msxsdtest/Particles',valid),
+ STResList132 = [STRes131|STResList131],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb028.xml','./msxsdtest/Particles',invalid,S131),
+ ITResList127 = [ITRes126|ITResList126],
+
+
+ ?line {STRes132,S132} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb029.xsd','./msxsdtest/Particles',valid),
+ STResList133 = [STRes132|STResList132],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb029.xml','./msxsdtest/Particles',invalid,S132),
+ ITResList128 = [ITRes127|ITResList127],
+
+
+ ?line {STRes133,S133} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb030.xsd','./msxsdtest/Particles',valid),
+ STResList134 = [STRes133|STResList133],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb030.xml','./msxsdtest/Particles',invalid,S133),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes134,S134} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb031.xsd','./msxsdtest/Particles',valid),
+ STResList135 = [STRes134|STResList134],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb031.xml','./msxsdtest/Particles',invalid,S134),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ ?line {STRes135,S135} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb032.xsd','./msxsdtest/Particles',valid),
+ STResList136 = [STRes135|STResList135],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb032.xml','./msxsdtest/Particles',invalid,S135),
+ ITResList131 = [ITRes130|ITResList130],
+
+
+ ?line {STRes136,S136} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb033.xsd','./msxsdtest/Particles',valid),
+ STResList137 = [STRes136|STResList136],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb033.xml','./msxsdtest/Particles',invalid,S136),
+ ITResList132 = [ITRes131|ITResList131],
+
+
+ ?line {STRes137,S137} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb034.xsd','./msxsdtest/Particles',valid),
+ STResList138 = [STRes137|STResList137],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb034.xml','./msxsdtest/Particles',invalid,S137),
+ ITResList133 = [ITRes132|ITResList132],
+
+
+ ?line {STRes138,S138} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb035.xsd','./msxsdtest/Particles',valid),
+ STResList139 = [STRes138|STResList138],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb035.xml','./msxsdtest/Particles',invalid,S138),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes139,S139} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb036.xsd','./msxsdtest/Particles',valid),
+ STResList140 = [STRes139|STResList139],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb036.xml','./msxsdtest/Particles',valid,S139),
+ ITResList135 = [ITRes134|ITResList134],
+
+
+ ?line {STRes140,S140} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb037.xsd','./msxsdtest/Particles',valid),
+ STResList141 = [STRes140|STResList140],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb037.xml','./msxsdtest/Particles',invalid,S140),
+ ITResList136 = [ITRes135|ITResList135],
+
+
+ ?line {STRes141,S141} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb038.xsd','./msxsdtest/Particles',valid),
+ STResList142 = [STRes141|STResList141],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb038.xml','./msxsdtest/Particles',valid,S141),
+ ITResList137 = [ITRes136|ITResList136],
+
+
+ ?line {STRes142,S142} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEb039.xsd','./msxsdtest/Particles',valid),
+ STResList143 = [STRes142|STResList142],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEb039.xml','./msxsdtest/Particles',invalid,S142),
+ ITResList138 = [ITRes137|ITResList137],
+
+
+ ?line {STRes143,S143} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc001.xsd','./msxsdtest/Particles',valid),
+ STResList144 = [STRes143|STResList143],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc001.xml','./msxsdtest/Particles',valid,S143),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes144,S144} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc002.xsd','./msxsdtest/Particles',valid),
+ STResList145 = [STRes144|STResList144],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc002.xml','./msxsdtest/Particles',valid,S144),
+ ITResList140 = [ITRes139|ITResList139],
+
+
+ ?line {STRes145,S145} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc003.xsd','./msxsdtest/Particles',valid),
+ STResList146 = [STRes145|STResList145],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc003.xml','./msxsdtest/Particles',invalid,S145),
+ ITResList141 = [ITRes140|ITResList140],
+
+
+ ?line {STRes146,S146} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc004.xsd','./msxsdtest/Particles',valid),
+ STResList147 = [STRes146|STResList146],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc004.xml','./msxsdtest/Particles',invalid,S146),
+ ITResList142 = [ITRes141|ITResList141],
+
+
+ ?line {STRes147,S147} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc005.xsd','./msxsdtest/Particles',valid),
+ STResList148 = [STRes147|STResList147],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc005.xml','./msxsdtest/Particles',invalid,S147),
+ ITResList143 = [ITRes142|ITResList142],
+
+
+ ?line {STRes148,S148} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc006.xsd','./msxsdtest/Particles',valid),
+ STResList149 = [STRes148|STResList148],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc006.xml','./msxsdtest/Particles',valid,S148),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes149,S149} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc007.xsd','./msxsdtest/Particles',valid),
+ STResList150 = [STRes149|STResList149],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc007.xml','./msxsdtest/Particles',invalid,S149),
+ ITResList145 = [ITRes144|ITResList144],
+
+
+ ?line {STRes150,S150} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc008.xsd','./msxsdtest/Particles',valid),
+ STResList151 = [STRes150|STResList150],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc008.xml','./msxsdtest/Particles',invalid,S150),
+ ITResList146 = [ITRes145|ITResList145],
+
+
+ ?line {STRes151,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc009.xsd','./msxsdtest/Particles',invalid),
+ STResList152 = [STRes151|STResList151],
+
+
+ ?line {STRes152,S152} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc010.xsd','./msxsdtest/Particles',valid),
+ STResList153 = [STRes152|STResList152],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc010.xml','./msxsdtest/Particles',valid,S152),
+ ITResList147 = [ITRes146|ITResList146],
+
+
+ ?line {STRes153,S153} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc011.xsd','./msxsdtest/Particles',valid),
+ STResList154 = [STRes153|STResList153],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc011.xml','./msxsdtest/Particles',invalid,S153),
+ ITResList148 = [ITRes147|ITResList147],
+
+
+ ?line {STRes154,S154} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc012.xsd','./msxsdtest/Particles',valid),
+ STResList155 = [STRes154|STResList154],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc012.xml','./msxsdtest/Particles',valid,S154),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes155,S155} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc013.xsd','./msxsdtest/Particles',valid),
+ STResList156 = [STRes155|STResList155],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc013.xml','./msxsdtest/Particles',invalid,S155),
+ ITResList150 = [ITRes149|ITResList149],
+
+
+ ?line {STRes156,S156} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc014.xsd','./msxsdtest/Particles',valid),
+ STResList157 = [STRes156|STResList156],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc014.xml','./msxsdtest/Particles',invalid,S156),
+ ITResList151 = [ITRes150|ITResList150],
+
+
+ ?line {STRes157,S157} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc015.xsd','./msxsdtest/Particles',valid),
+ STResList158 = [STRes157|STResList157],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc015.xml','./msxsdtest/Particles',invalid,S157),
+ ITResList152 = [ITRes151|ITResList151],
+
+
+ ?line {STRes158,S158} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc016.xsd','./msxsdtest/Particles',valid),
+ STResList159 = [STRes158|STResList158],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc016.xml','./msxsdtest/Particles',valid,S158),
+ ITResList153 = [ITRes152|ITResList152],
+
+
+ ?line {STRes159,S159} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc017.xsd','./msxsdtest/Particles',valid),
+ STResList160 = [STRes159|STResList159],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc017.xml','./msxsdtest/Particles',valid,S159),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes160,S160} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc018.xsd','./msxsdtest/Particles',valid),
+ STResList161 = [STRes160|STResList160],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc018.xml','./msxsdtest/Particles',valid,S160),
+ ITResList155 = [ITRes154|ITResList154],
+
+
+ ?line {STRes161,S161} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc019.xsd','./msxsdtest/Particles',valid),
+ STResList162 = [STRes161|STResList161],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc019.xml','./msxsdtest/Particles',valid,S161),
+ ITResList156 = [ITRes155|ITResList155],
+
+
+ ?line {STRes162,S162} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc020.xsd','./msxsdtest/Particles',valid),
+ STResList163 = [STRes162|STResList162],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc020.xml','./msxsdtest/Particles',valid,S162),
+ ITResList157 = [ITRes156|ITResList156],
+
+
+ ?line {STRes163,S163} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc021.xsd','./msxsdtest/Particles',valid),
+ STResList164 = [STRes163|STResList163],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc021.xml','./msxsdtest/Particles',valid,S163),
+ ITResList158 = [ITRes157|ITResList157],
+
+
+ ?line {STRes164,S164} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc022.xsd','./msxsdtest/Particles',valid),
+ STResList165 = [STRes164|STResList164],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc022.xml','./msxsdtest/Particles',invalid,S164),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes165,S165} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc023.xsd','./msxsdtest/Particles',valid),
+ STResList166 = [STRes165|STResList165],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc023.xml','./msxsdtest/Particles',invalid,S165),
+ ITResList160 = [ITRes159|ITResList159],
+
+
+ ?line {STRes166,S166} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc024.xsd','./msxsdtest/Particles',valid),
+ STResList167 = [STRes166|STResList166],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc024.xml','./msxsdtest/Particles',invalid,S166),
+ ITResList161 = [ITRes160|ITResList160],
+
+
+ ?line {STRes167,S167} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc025.xsd','./msxsdtest/Particles',valid),
+ STResList168 = [STRes167|STResList167],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc025.xml','./msxsdtest/Particles',invalid,S167),
+ ITResList162 = [ITRes161|ITResList161],
+
+
+ ?line {STRes168,S168} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc026.xsd','./msxsdtest/Particles',valid),
+ STResList169 = [STRes168|STResList168],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc026.xml','./msxsdtest/Particles',invalid,S168),
+ ITResList163 = [ITRes162|ITResList162],
+
+
+ ?line {STRes169,S169} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc027.xsd','./msxsdtest/Particles',valid),
+ STResList170 = [STRes169|STResList169],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc027.xml','./msxsdtest/Particles',invalid,S169),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes170,S170} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc028.xsd','./msxsdtest/Particles',valid),
+ STResList171 = [STRes170|STResList170],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc028.xml','./msxsdtest/Particles',invalid,S170),
+ ITResList165 = [ITRes164|ITResList164],
+
+
+ ?line {STRes171,S171} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc029.xsd','./msxsdtest/Particles',valid),
+ STResList172 = [STRes171|STResList171],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc029.xml','./msxsdtest/Particles',valid,S171),
+ ITResList166 = [ITRes165|ITResList165],
+
+
+ ?line {STRes172,S172} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc030.xsd','./msxsdtest/Particles',valid),
+ STResList173 = [STRes172|STResList172],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc030.xml','./msxsdtest/Particles',valid,S172),
+ ITResList167 = [ITRes166|ITResList166],
+
+
+ ?line {STRes173,S173} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc031.xsd','./msxsdtest/Particles',valid),
+ STResList174 = [STRes173|STResList173],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc031.xml','./msxsdtest/Particles',valid,S173),
+ ITResList168 = [ITRes167|ITResList167],
+
+
+ ?line {STRes174,S174} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc032.xsd','./msxsdtest/Particles',valid),
+ STResList175 = [STRes174|STResList174],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc032.xml','./msxsdtest/Particles',valid,S174),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ ?line {STRes175,S175} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc033.xsd','./msxsdtest/Particles',valid),
+ STResList176 = [STRes175|STResList175],
+ ?line ITRes169 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc033.xml','./msxsdtest/Particles',valid,S175),
+ ITResList170 = [ITRes169|ITResList169],
+
+
+ ?line {STRes176,S176} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc034.xsd','./msxsdtest/Particles',valid),
+ STResList177 = [STRes176|STResList176],
+ ?line ITRes170 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc034.xml','./msxsdtest/Particles',valid,S176),
+ ITResList171 = [ITRes170|ITResList170],
+
+
+ ?line {STRes177,S177} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc035.xsd','./msxsdtest/Particles',valid),
+ STResList178 = [STRes177|STResList177],
+ ?line ITRes171 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc035.xml','./msxsdtest/Particles',valid,S177),
+ ITResList172 = [ITRes171|ITResList171],
+
+
+ ?line {STRes178,S178} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc036.xsd','./msxsdtest/Particles',valid),
+ STResList179 = [STRes178|STResList178],
+ ?line ITRes172 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc036.xml','./msxsdtest/Particles',valid,S178),
+ ITResList173 = [ITRes172|ITResList172],
+
+
+ ?line {STRes179,S179} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc037.xsd','./msxsdtest/Particles',valid),
+ STResList180 = [STRes179|STResList179],
+ ?line ITRes173 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc037.xml','./msxsdtest/Particles',valid,S179),
+ ITResList174 = [ITRes173|ITResList173],
+
+
+ ?line {STRes180,S180} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc038.xsd','./msxsdtest/Particles',valid),
+ STResList181 = [STRes180|STResList180],
+ ?line ITRes174 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc038.xml','./msxsdtest/Particles',invalid,S180),
+ ITResList175 = [ITRes174|ITResList174],
+
+
+ ?line {STRes181,S181} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc039.xsd','./msxsdtest/Particles',valid),
+ STResList182 = [STRes181|STResList181],
+ ?line ITRes175 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc039.xml','./msxsdtest/Particles',invalid,S181),
+ ITResList176 = [ITRes175|ITResList175],
+
+
+ ?line {STRes182,S182} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc040.xsd','./msxsdtest/Particles',valid),
+ STResList183 = [STRes182|STResList182],
+ ?line ITRes176 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc040.xml','./msxsdtest/Particles',invalid,S182),
+ ITResList177 = [ITRes176|ITResList176],
+
+
+ ?line {STRes183,S183} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEc041.xsd','./msxsdtest/Particles',valid),
+ STResList184 = [STRes183|STResList183],
+ ?line ITRes177 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesEc041.xml','./msxsdtest/Particles',invalid,S183),
+ ITResList178 = [ITRes177|ITResList177],
+
+
+ ?line {STRes184,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesEd001.xsd','./msxsdtest/Particles',invalid),
+ STResList185 = [STRes184|STResList184],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList185,ITResList178).
+
+%% 3.9.6 Schema Component Constraint: Particle ....
+
+particlesFHI(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFa001.xsd','./msxsdtest/Particles',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesFa001.xml','./msxsdtest/Particles',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFa002.xsd','./msxsdtest/Particles',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesFa002.xml','./msxsdtest/Particles',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFa003.xsd','./msxsdtest/Particles',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesFa003.xml','./msxsdtest/Particles',valid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFa004.xsd','./msxsdtest/Particles',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesFa004.xml','./msxsdtest/Particles',valid,S3),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFa005.xsd','./msxsdtest/Particles',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesFa005.xml','./msxsdtest/Particles',valid,S4),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFb001.xsd','./msxsdtest/Particles',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesFb001.xml','./msxsdtest/Particles',valid,S5),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFb002.xsd','./msxsdtest/Particles',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFb003.xsd','./msxsdtest/Particles',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFb004.xsd','./msxsdtest/Particles',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesFb004.xml','./msxsdtest/Particles',valid,S8),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFb005.xsd','./msxsdtest/Particles',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesFb006.xsd','./msxsdtest/Particles',invalid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa001.xsd','./msxsdtest/Particles',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa001.xml','./msxsdtest/Particles',valid,S11),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa002.xsd','./msxsdtest/Particles',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa002.xml','./msxsdtest/Particles',valid,S12),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa003.xsd','./msxsdtest/Particles',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa003.xml','./msxsdtest/Particles',valid,S13),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa004.xsd','./msxsdtest/Particles',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa004.xml','./msxsdtest/Particles',valid,S14),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa005.xsd','./msxsdtest/Particles',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa005.xml','./msxsdtest/Particles',valid,S15),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa006.xsd','./msxsdtest/Particles',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa006.xml','./msxsdtest/Particles',valid,S16),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa007.xsd','./msxsdtest/Particles',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa007.xml','./msxsdtest/Particles',valid,S17),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa008.xsd','./msxsdtest/Particles',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa009.xsd','./msxsdtest/Particles',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa009.xml','./msxsdtest/Particles',valid,S19),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa010.xsd','./msxsdtest/Particles',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa010.xml','./msxsdtest/Particles',valid,S20),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa011.xsd','./msxsdtest/Particles',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa011.xml','./msxsdtest/Particles',valid,S21),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa012.xsd','./msxsdtest/Particles',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa012.xml','./msxsdtest/Particles',valid,S22),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa013.xsd','./msxsdtest/Particles',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa013.xml','./msxsdtest/Particles',valid,S23),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa014.xsd','./msxsdtest/Particles',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa014.xml','./msxsdtest/Particles',valid,S24),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa015.xsd','./msxsdtest/Particles',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa015.xml','./msxsdtest/Particles',valid,S25),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa016.xsd','./msxsdtest/Particles',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa016.xml','./msxsdtest/Particles',valid,S26),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa017.xsd','./msxsdtest/Particles',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa017.xml','./msxsdtest/Particles',valid,S27),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHa018.xsd','./msxsdtest/Particles',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesHa018.xml','./msxsdtest/Particles',valid,S28),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb001.xsd','./msxsdtest/Particles',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb002.xsd','./msxsdtest/Particles',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb003.xsd','./msxsdtest/Particles',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb004.xsd','./msxsdtest/Particles',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb006.xsd','./msxsdtest/Particles',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb007.xsd','./msxsdtest/Particles',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb008.xsd','./msxsdtest/Particles',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb009.xsd','./msxsdtest/Particles',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb010.xsd','./msxsdtest/Particles',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesHb011.xsd','./msxsdtest/Particles',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIa001.xsd','./msxsdtest/Particles',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIa001.xml','./msxsdtest/Particles',valid,S39),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIa003.xsd','./msxsdtest/Particles',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIa003.xml','./msxsdtest/Particles',valid,S40),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes41,S41} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIa004.xsd','./msxsdtest/Particles',valid),
+ STResList42 = [STRes41|STResList41],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIa004.xml','./msxsdtest/Particles',valid,S41),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes42,S42} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIa005.xsd','./msxsdtest/Particles',valid),
+ STResList43 = [STRes42|STResList42],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIa005.xml','./msxsdtest/Particles',valid,S42),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIa006.xsd','./msxsdtest/Particles',invalid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIa008.xsd','./msxsdtest/Particles',invalid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,S45} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIb001.xsd','./msxsdtest/Particles',valid),
+ STResList46 = [STRes45|STResList45],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIb001.xml','./msxsdtest/Particles',valid,S45),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIb002.xsd','./msxsdtest/Particles',invalid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIb003.xsd','./msxsdtest/Particles',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIb003.xml','./msxsdtest/Particles',valid,S47),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIb004.xsd','./msxsdtest/Particles',invalid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIb005.xsd','./msxsdtest/Particles',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIb005.xml','./msxsdtest/Particles',valid,S49),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIb006.xsd','./msxsdtest/Particles',invalid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIb007.xsd','./msxsdtest/Particles',invalid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIc001.xsd','./msxsdtest/Particles',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIc001.xml','./msxsdtest/Particles',valid,S52),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIc002.xsd','./msxsdtest/Particles',invalid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIc003.xsd','./msxsdtest/Particles',invalid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIc004.xsd','./msxsdtest/Particles',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,S56} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIc005.xsd','./msxsdtest/Particles',valid),
+ STResList57 = [STRes56|STResList56],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIc005.xml','./msxsdtest/Particles',valid,S56),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes57,S57} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIc006.xsd','./msxsdtest/Particles',valid),
+ STResList58 = [STRes57|STResList57],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIc006.xml','./msxsdtest/Particles',valid,S57),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes58,S58} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIc007.xsd','./msxsdtest/Particles',valid),
+ STResList59 = [STRes58|STResList58],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIc007.xml','./msxsdtest/Particles',valid,S58),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId001.xsd','./msxsdtest/Particles',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesId001.xml','./msxsdtest/Particles',valid,S59),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes60,S60} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId002.xsd','./msxsdtest/Particles',valid),
+ STResList61 = [STRes60|STResList60],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesId002.xml','./msxsdtest/Particles',valid,S60),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId003.xsd','./msxsdtest/Particles',invalid),
+ STResList62 = [STRes61|STResList61],
+
+
+ ?line {STRes62,S62} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId004.xsd','./msxsdtest/Particles',valid),
+ STResList63 = [STRes62|STResList62],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesId004.xml','./msxsdtest/Particles',valid,S62),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId005.xsd','./msxsdtest/Particles',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesId005.xml','./msxsdtest/Particles',valid,S63),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes64,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId006.xsd','./msxsdtest/Particles',invalid),
+ STResList65 = [STRes64|STResList64],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId007.xsd','./msxsdtest/Particles',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesId007.xml','./msxsdtest/Particles',valid,S65),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes66,S66} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId008.xsd','./msxsdtest/Particles',valid),
+ STResList67 = [STRes66|STResList66],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesId008.xml','./msxsdtest/Particles',valid,S66),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes67,S67} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId009.xsd','./msxsdtest/Particles',valid),
+ STResList68 = [STRes67|STResList67],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesId009.xml','./msxsdtest/Particles',valid,S67),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes68,S68} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId010.xsd','./msxsdtest/Particles',valid),
+ STResList69 = [STRes68|STResList68],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesId010.xml','./msxsdtest/Particles',valid,S68),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes69,S69} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId011.xsd','./msxsdtest/Particles',valid),
+ STResList70 = [STRes69|STResList69],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesId011.xml','./msxsdtest/Particles',valid,S69),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes70,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesId012.xsd','./msxsdtest/Particles',invalid),
+ STResList71 = [STRes70|STResList70],
+
+
+ ?line {STRes71,S71} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe001.xsd','./msxsdtest/Particles',valid),
+ STResList72 = [STRes71|STResList71],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe001.xml','./msxsdtest/Particles',valid,S71),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes72,S72} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe002.xsd','./msxsdtest/Particles',valid),
+ STResList73 = [STRes72|STResList72],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe002.xml','./msxsdtest/Particles',valid,S72),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes73,S73} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe003.xsd','./msxsdtest/Particles',valid),
+ STResList74 = [STRes73|STResList73],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe003.xml','./msxsdtest/Particles',valid,S73),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes74,S74} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe004.xsd','./msxsdtest/Particles',valid),
+ STResList75 = [STRes74|STResList74],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe004.xml','./msxsdtest/Particles',valid,S74),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes75,S75} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe005.xsd','./msxsdtest/Particles',valid),
+ STResList76 = [STRes75|STResList75],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe005.xml','./msxsdtest/Particles',valid,S75),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes76,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe006.xsd','./msxsdtest/Particles',invalid),
+ STResList77 = [STRes76|STResList76],
+
+
+ ?line {STRes77,S77} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe007.xsd','./msxsdtest/Particles',valid),
+ STResList78 = [STRes77|STResList77],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe007.xml','./msxsdtest/Particles',valid,S77),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes78,S78} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe008.xsd','./msxsdtest/Particles',valid),
+ STResList79 = [STRes78|STResList78],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe008.xml','./msxsdtest/Particles',valid,S78),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes79,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe009.xsd','./msxsdtest/Particles',invalid),
+ STResList80 = [STRes79|STResList79],
+
+
+ ?line {STRes80,S80} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe010.xsd','./msxsdtest/Particles',valid),
+ STResList81 = [STRes80|STResList80],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe010.xml','./msxsdtest/Particles',valid,S80),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes81,S81} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe011.xsd','./msxsdtest/Particles',valid),
+ STResList82 = [STRes81|STResList81],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe011.xml','./msxsdtest/Particles',valid,S81),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes82,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe012.xsd','./msxsdtest/Particles',invalid),
+ STResList83 = [STRes82|STResList82],
+
+
+ ?line {STRes83,S83} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe013.xsd','./msxsdtest/Particles',valid),
+ STResList84 = [STRes83|STResList83],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe013.xml','./msxsdtest/Particles',valid,S83),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe014.xsd','./msxsdtest/Particles',invalid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,S85} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe015.xsd','./msxsdtest/Particles',valid),
+ STResList86 = [STRes85|STResList85],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe015.xml','./msxsdtest/Particles',valid,S85),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes86,S86} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIe016.xsd','./msxsdtest/Particles',valid),
+ STResList87 = [STRes86|STResList86],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIe016.xml','./msxsdtest/Particles',valid,S86),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes87,S87} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIf001.xsd','./msxsdtest/Particles',valid),
+ STResList88 = [STRes87|STResList87],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIf001.xml','./msxsdtest/Particles',valid,S87),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes88,S88} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIf002.xsd','./msxsdtest/Particles',valid),
+ STResList89 = [STRes88|STResList88],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIf002.xml','./msxsdtest/Particles',valid,S88),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes89,S89} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIf003.xsd','./msxsdtest/Particles',valid),
+ STResList90 = [STRes89|STResList89],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIf003.xml','./msxsdtest/Particles',valid,S89),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes90,S90} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIf004.xsd','./msxsdtest/Particles',valid),
+ STResList91 = [STRes90|STResList90],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIf004.xml','./msxsdtest/Particles',valid,S90),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes91,S91} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIf005.xsd','./msxsdtest/Particles',valid),
+ STResList92 = [STRes91|STResList91],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIf005.xml','./msxsdtest/Particles',valid,S91),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes92,S92} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIf006.xsd','./msxsdtest/Particles',valid),
+ STResList93 = [STRes92|STResList92],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIf006.xml','./msxsdtest/Particles',valid,S92),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes93,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIf007.xsd','./msxsdtest/Particles',invalid),
+ STResList94 = [STRes93|STResList93],
+
+
+ ?line {STRes94,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIf008.xsd','./msxsdtest/Particles',invalid),
+ STResList95 = [STRes94|STResList94],
+
+
+ ?line {STRes95,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIf009.xsd','./msxsdtest/Particles',invalid),
+ STResList96 = [STRes95|STResList95],
+
+
+ ?line {STRes96,S96} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg001.xsd','./msxsdtest/Particles',valid),
+ STResList97 = [STRes96|STResList96],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIg001.xml','./msxsdtest/Particles',valid,S96),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes97,S97} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg002.xsd','./msxsdtest/Particles',valid),
+ STResList98 = [STRes97|STResList97],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIg002.xml','./msxsdtest/Particles',valid,S97),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes98,S98} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg003.xsd','./msxsdtest/Particles',valid),
+ STResList99 = [STRes98|STResList98],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIg003.xml','./msxsdtest/Particles',valid,S98),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes99,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg004.xsd','./msxsdtest/Particles',invalid),
+ STResList100 = [STRes99|STResList99],
+
+
+ ?line {STRes100,S100} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg005.xsd','./msxsdtest/Particles',valid),
+ STResList101 = [STRes100|STResList100],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIg005.xml','./msxsdtest/Particles',valid,S100),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes101,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg006.xsd','./msxsdtest/Particles',invalid),
+ STResList102 = [STRes101|STResList101],
+
+
+ ?line {STRes102,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg007.xsd','./msxsdtest/Particles',invalid),
+ STResList103 = [STRes102|STResList102],
+
+
+ ?line {STRes103,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg008.xsd','./msxsdtest/Particles',invalid),
+ STResList104 = [STRes103|STResList103],
+
+
+ ?line {STRes104,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg009.xsd','./msxsdtest/Particles',invalid),
+ STResList105 = [STRes104|STResList104],
+
+
+ ?line {STRes105,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg010.xsd','./msxsdtest/Particles',invalid),
+ STResList106 = [STRes105|STResList105],
+
+
+ ?line {STRes106,S106} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg011.xsd','./msxsdtest/Particles',valid),
+ STResList107 = [STRes106|STResList106],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIg011.xml','./msxsdtest/Particles',valid,S106),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes107,S107} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg012.xsd','./msxsdtest/Particles',valid),
+ STResList108 = [STRes107|STResList107],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIg012.xml','./msxsdtest/Particles',valid,S107),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes108,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg013.xsd','./msxsdtest/Particles',invalid),
+ STResList109 = [STRes108|STResList108],
+
+
+ ?line {STRes109,S109} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg014.xsd','./msxsdtest/Particles',valid),
+ STResList110 = [STRes109|STResList109],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIg014.xml','./msxsdtest/Particles',valid,S109),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes110,S110} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg015.xsd','./msxsdtest/Particles',valid),
+ STResList111 = [STRes110|STResList110],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIg015.xml','./msxsdtest/Particles',valid,S110),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes111,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIg016.xsd','./msxsdtest/Particles',invalid),
+ STResList112 = [STRes111|STResList111],
+
+
+ ?line {STRes112,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIh001.xsd','./msxsdtest/Particles',invalid),
+ STResList113 = [STRes112|STResList112],
+
+
+ ?line {STRes113,S113} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj001.xsd','./msxsdtest/Particles',valid),
+ STResList114 = [STRes113|STResList113],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIj001.xml','./msxsdtest/Particles',valid,S113),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes114,S114} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj002.xsd','./msxsdtest/Particles',valid),
+ STResList115 = [STRes114|STResList114],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIj002.xml','./msxsdtest/Particles',valid,S114),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes115,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj003.xsd','./msxsdtest/Particles',invalid),
+ STResList116 = [STRes115|STResList115],
+
+
+ ?line {STRes116,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj004.xsd','./msxsdtest/Particles',invalid),
+ STResList117 = [STRes116|STResList116],
+
+
+ ?line {STRes117,S117} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj005.xsd','./msxsdtest/Particles',valid),
+ STResList118 = [STRes117|STResList117],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIj005.xml','./msxsdtest/Particles',valid,S117),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes118,S118} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj006.xsd','./msxsdtest/Particles',valid),
+ STResList119 = [STRes118|STResList118],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIj006.xml','./msxsdtest/Particles',valid,S118),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes119,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj007.xsd','./msxsdtest/Particles',invalid),
+ STResList120 = [STRes119|STResList119],
+
+
+ ?line {STRes120,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj008.xsd','./msxsdtest/Particles',invalid),
+ STResList121 = [STRes120|STResList120],
+
+
+ ?line {STRes121,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj009.xsd','./msxsdtest/Particles',invalid),
+ STResList122 = [STRes121|STResList121],
+
+
+ ?line {STRes122,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj010.xsd','./msxsdtest/Particles',invalid),
+ STResList123 = [STRes122|STResList122],
+
+
+ ?line {STRes123,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj011.xsd','./msxsdtest/Particles',invalid),
+ STResList124 = [STRes123|STResList123],
+
+
+ ?line {STRes124,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj012.xsd','./msxsdtest/Particles',invalid),
+ STResList125 = [STRes124|STResList124],
+
+
+ ?line {STRes125,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj013.xsd','./msxsdtest/Particles',invalid),
+ STResList126 = [STRes125|STResList125],
+
+
+ ?line {STRes126,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj015.xsd','./msxsdtest/Particles',invalid),
+ STResList127 = [STRes126|STResList126],
+
+
+ ?line {STRes127,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIj016.xsd','./msxsdtest/Particles',invalid),
+ STResList128 = [STRes127|STResList127],
+
+
+ ?line {STRes128,S128} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk001.xsd','./msxsdtest/Particles',valid),
+ STResList129 = [STRes128|STResList128],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIk001.xml','./msxsdtest/Particles',valid,S128),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes129,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk002.xsd','./msxsdtest/Particles',invalid),
+ STResList130 = [STRes129|STResList129],
+
+
+ ?line {STRes130,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk003.xsd','./msxsdtest/Particles',invalid),
+ STResList131 = [STRes130|STResList130],
+
+
+ ?line {STRes131,S131} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk004.xsd','./msxsdtest/Particles',valid),
+ STResList132 = [STRes131|STResList131],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIk004.xml','./msxsdtest/Particles',valid,S131),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes132,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk005.xsd','./msxsdtest/Particles',invalid),
+ STResList133 = [STRes132|STResList132],
+
+
+ ?line {STRes133,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk006.xsd','./msxsdtest/Particles',invalid),
+ STResList134 = [STRes133|STResList133],
+
+
+ ?line {STRes134,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk007.xsd','./msxsdtest/Particles',invalid),
+ STResList135 = [STRes134|STResList134],
+
+
+ ?line {STRes135,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk008.xsd','./msxsdtest/Particles',invalid),
+ STResList136 = [STRes135|STResList135],
+
+
+ ?line {STRes136,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk009.xsd','./msxsdtest/Particles',invalid),
+ STResList137 = [STRes136|STResList136],
+
+
+ ?line {STRes137,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk010.xsd','./msxsdtest/Particles',invalid),
+ STResList138 = [STRes137|STResList137],
+
+
+ ?line {STRes138,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk011.xsd','./msxsdtest/Particles',invalid),
+ STResList139 = [STRes138|STResList138],
+
+
+ ?line {STRes139,S139} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk012.xsd','./msxsdtest/Particles',valid),
+ STResList140 = [STRes139|STResList139],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIk012.xml','./msxsdtest/Particles',valid,S139),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes140,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk013.xsd','./msxsdtest/Particles',invalid),
+ STResList141 = [STRes140|STResList140],
+
+
+ ?line {STRes141,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk015.xsd','./msxsdtest/Particles',invalid),
+ STResList142 = [STRes141|STResList141],
+
+
+ ?line {STRes142,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk016.xsd','./msxsdtest/Particles',invalid),
+ STResList143 = [STRes142|STResList142],
+
+
+ ?line {STRes143,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk019.xsd','./msxsdtest/Particles',invalid),
+ STResList144 = [STRes143|STResList143],
+
+
+ ?line {STRes144,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk020.xsd','./msxsdtest/Particles',invalid),
+ STResList145 = [STRes144|STResList144],
+
+
+ ?line {STRes145,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk021.xsd','./msxsdtest/Particles',invalid),
+ STResList146 = [STRes145|STResList145],
+
+
+ ?line {STRes146,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk022.xsd','./msxsdtest/Particles',invalid),
+ STResList147 = [STRes146|STResList146],
+
+
+ ?line {STRes147,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk024.xsd','./msxsdtest/Particles',invalid),
+ STResList148 = [STRes147|STResList147],
+
+
+ ?line {STRes148,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk025.xsd','./msxsdtest/Particles',invalid),
+ STResList149 = [STRes148|STResList148],
+
+
+ ?line {STRes149,S149} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk026.xsd','./msxsdtest/Particles',valid),
+ STResList150 = [STRes149|STResList149],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesIk026.xml','./msxsdtest/Particles',valid,S149),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes150,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesIk027.xsd','./msxsdtest/Particles',invalid),
+ STResList151 = [STRes150|STResList150],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList151,ITResList78).
+
+%% 3.9.6 Particle Derivation.
+
+particlesJ(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa001.xsd','./msxsdtest/Particles',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJa001.xml','./msxsdtest/Particles',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa002.xsd','./msxsdtest/Particles',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJa002.xml','./msxsdtest/Particles',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa003.xsd','./msxsdtest/Particles',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa004.xsd','./msxsdtest/Particles',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJa004.xml','./msxsdtest/Particles',valid,S3),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa005.xsd','./msxsdtest/Particles',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJa005.xml','./msxsdtest/Particles',valid,S4),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa006.xsd','./msxsdtest/Particles',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa007.xsd','./msxsdtest/Particles',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJa007.xml','./msxsdtest/Particles',valid,S6),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa008.xsd','./msxsdtest/Particles',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJa008.xml','./msxsdtest/Particles',valid,S7),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa009.xsd','./msxsdtest/Particles',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJa009.xml','./msxsdtest/Particles',valid,S8),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa010.xsd','./msxsdtest/Particles',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJa010.xml','./msxsdtest/Particles',valid,S9),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa011.xsd','./msxsdtest/Particles',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJa011.xml','./msxsdtest/Particles',valid,S10),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJa012.xsd','./msxsdtest/Particles',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb001.xsd','./msxsdtest/Particles',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb001.xml','./msxsdtest/Particles',valid,S12),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb002.xsd','./msxsdtest/Particles',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb002.xml','./msxsdtest/Particles',valid,S13),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb003.xsd','./msxsdtest/Particles',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb003.xml','./msxsdtest/Particles',valid,S14),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb004.xsd','./msxsdtest/Particles',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb004.xml','./msxsdtest/Particles',valid,S15),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb005.xsd','./msxsdtest/Particles',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb005.xml','./msxsdtest/Particles',valid,S16),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb006.xsd','./msxsdtest/Particles',invalid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb007.xsd','./msxsdtest/Particles',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb007.xml','./msxsdtest/Particles',valid,S18),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb008.xsd','./msxsdtest/Particles',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb008.xml','./msxsdtest/Particles',valid,S19),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb009.xsd','./msxsdtest/Particles',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb010.xsd','./msxsdtest/Particles',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb010.xml','./msxsdtest/Particles',valid,S21),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb011.xsd','./msxsdtest/Particles',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb011.xml','./msxsdtest/Particles',valid,S22),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb012.xsd','./msxsdtest/Particles',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb013.xsd','./msxsdtest/Particles',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb013.xml','./msxsdtest/Particles',valid,S24),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb014.xsd','./msxsdtest/Particles',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb015.xsd','./msxsdtest/Particles',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb015.xml','./msxsdtest/Particles',valid,S26),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJb016.xsd','./msxsdtest/Particles',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJb016.xml','./msxsdtest/Particles',valid,S27),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc001.xsd','./msxsdtest/Particles',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJc001.xml','./msxsdtest/Particles',valid,S28),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc002.xsd','./msxsdtest/Particles',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJc002.xml','./msxsdtest/Particles',valid,S29),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc003.xsd','./msxsdtest/Particles',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc004.xsd','./msxsdtest/Particles',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJc004.xml','./msxsdtest/Particles',valid,S31),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc005.xsd','./msxsdtest/Particles',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJc005.xml','./msxsdtest/Particles',valid,S32),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc006.xsd','./msxsdtest/Particles',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc007.xsd','./msxsdtest/Particles',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJc007.xml','./msxsdtest/Particles',valid,S34),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc008.xsd','./msxsdtest/Particles',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJc008.xml','./msxsdtest/Particles',valid,S35),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc009.xsd','./msxsdtest/Particles',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJc009.xml','./msxsdtest/Particles',valid,S36),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes37,S37} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc010.xsd','./msxsdtest/Particles',valid),
+ STResList38 = [STRes37|STResList37],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJc010.xml','./msxsdtest/Particles',valid,S37),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes38,S38} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc011.xsd','./msxsdtest/Particles',valid),
+ STResList39 = [STRes38|STResList38],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJc011.xml','./msxsdtest/Particles',valid,S38),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJc012.xsd','./msxsdtest/Particles',invalid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd001.xsd','./msxsdtest/Particles',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd001.xml','./msxsdtest/Particles',valid,S40),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes41,S41} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd002.xsd','./msxsdtest/Particles',valid),
+ STResList42 = [STRes41|STResList41],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd002.xml','./msxsdtest/Particles',valid,S41),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes42,S42} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd003.xsd','./msxsdtest/Particles',valid),
+ STResList43 = [STRes42|STResList42],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd003.xml','./msxsdtest/Particles',valid,S42),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes43,S43} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd004.xsd','./msxsdtest/Particles',valid),
+ STResList44 = [STRes43|STResList43],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd004.xml','./msxsdtest/Particles',valid,S43),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes44,S44} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd005.xsd','./msxsdtest/Particles',valid),
+ STResList45 = [STRes44|STResList44],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd005.xml','./msxsdtest/Particles',valid,S44),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd006.xsd','./msxsdtest/Particles',invalid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,S46} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd007.xsd','./msxsdtest/Particles',valid),
+ STResList47 = [STRes46|STResList46],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd007.xml','./msxsdtest/Particles',valid,S46),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd008.xsd','./msxsdtest/Particles',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd008.xml','./msxsdtest/Particles',valid,S47),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd009.xsd','./msxsdtest/Particles',invalid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd010.xsd','./msxsdtest/Particles',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd010.xml','./msxsdtest/Particles',valid,S49),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes50,S50} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd011.xsd','./msxsdtest/Particles',valid),
+ STResList51 = [STRes50|STResList50],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd011.xml','./msxsdtest/Particles',valid,S50),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd012.xsd','./msxsdtest/Particles',invalid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd013.xsd','./msxsdtest/Particles',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd013.xml','./msxsdtest/Particles',valid,S52),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd014.xsd','./msxsdtest/Particles',invalid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,S54} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd015.xsd','./msxsdtest/Particles',valid),
+ STResList55 = [STRes54|STResList54],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd015.xml','./msxsdtest/Particles',valid,S54),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes55,S55} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJd016.xsd','./msxsdtest/Particles',valid),
+ STResList56 = [STRes55|STResList55],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJd016.xml','./msxsdtest/Particles',valid,S55),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes56,S56} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe001.xsd','./msxsdtest/Particles',valid),
+ STResList57 = [STRes56|STResList56],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJe001.xml','./msxsdtest/Particles',valid,S56),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes57,S57} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe002.xsd','./msxsdtest/Particles',valid),
+ STResList58 = [STRes57|STResList57],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJe002.xml','./msxsdtest/Particles',valid,S57),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe003.xsd','./msxsdtest/Particles',invalid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe004.xsd','./msxsdtest/Particles',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJe004.xml','./msxsdtest/Particles',valid,S59),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes60,S60} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe005.xsd','./msxsdtest/Particles',valid),
+ STResList61 = [STRes60|STResList60],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJe005.xml','./msxsdtest/Particles',valid,S60),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe006.xsd','./msxsdtest/Particles',invalid),
+ STResList62 = [STRes61|STResList61],
+
+
+ ?line {STRes62,S62} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe007.xsd','./msxsdtest/Particles',valid),
+ STResList63 = [STRes62|STResList62],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJe007.xml','./msxsdtest/Particles',valid,S62),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe008.xsd','./msxsdtest/Particles',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJe008.xml','./msxsdtest/Particles',valid,S63),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes64,S64} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe009.xsd','./msxsdtest/Particles',valid),
+ STResList65 = [STRes64|STResList64],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJe009.xml','./msxsdtest/Particles',valid,S64),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes65,S65} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe010.xsd','./msxsdtest/Particles',valid),
+ STResList66 = [STRes65|STResList65],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJe010.xml','./msxsdtest/Particles',valid,S65),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes66,S66} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe011.xsd','./msxsdtest/Particles',valid),
+ STResList67 = [STRes66|STResList66],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJe011.xml','./msxsdtest/Particles',valid,S66),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes67,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJe012.xsd','./msxsdtest/Particles',invalid),
+ STResList68 = [STRes67|STResList67],
+
+
+ ?line {STRes68,S68} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf001.xsd','./msxsdtest/Particles',valid),
+ STResList69 = [STRes68|STResList68],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf001.xml','./msxsdtest/Particles',valid,S68),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes69,S69} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf002.xsd','./msxsdtest/Particles',valid),
+ STResList70 = [STRes69|STResList69],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf002.xml','./msxsdtest/Particles',valid,S69),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes70,S70} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf003.xsd','./msxsdtest/Particles',valid),
+ STResList71 = [STRes70|STResList70],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf003.xml','./msxsdtest/Particles',valid,S70),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes71,S71} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf004.xsd','./msxsdtest/Particles',valid),
+ STResList72 = [STRes71|STResList71],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf004.xml','./msxsdtest/Particles',valid,S71),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes72,S72} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf005.xsd','./msxsdtest/Particles',valid),
+ STResList73 = [STRes72|STResList72],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf005.xml','./msxsdtest/Particles',valid,S72),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes73,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf006.xsd','./msxsdtest/Particles',invalid),
+ STResList74 = [STRes73|STResList73],
+
+
+ ?line {STRes74,S74} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf007.xsd','./msxsdtest/Particles',valid),
+ STResList75 = [STRes74|STResList74],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf007.xml','./msxsdtest/Particles',valid,S74),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes75,S75} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf008.xsd','./msxsdtest/Particles',valid),
+ STResList76 = [STRes75|STResList75],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf008.xml','./msxsdtest/Particles',valid,S75),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes76,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf009.xsd','./msxsdtest/Particles',invalid),
+ STResList77 = [STRes76|STResList76],
+
+
+ ?line {STRes77,S77} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf010.xsd','./msxsdtest/Particles',valid),
+ STResList78 = [STRes77|STResList77],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf010.xml','./msxsdtest/Particles',valid,S77),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes78,S78} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf011.xsd','./msxsdtest/Particles',valid),
+ STResList79 = [STRes78|STResList78],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf011.xml','./msxsdtest/Particles',valid,S78),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes79,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf012.xsd','./msxsdtest/Particles',invalid),
+ STResList80 = [STRes79|STResList79],
+
+
+ ?line {STRes80,S80} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf013.xsd','./msxsdtest/Particles',valid),
+ STResList81 = [STRes80|STResList80],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf013.xml','./msxsdtest/Particles',valid,S80),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf014.xsd','./msxsdtest/Particles',invalid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,S82} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf015.xsd','./msxsdtest/Particles',valid),
+ STResList83 = [STRes82|STResList82],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf015.xml','./msxsdtest/Particles',valid,S82),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes83,S83} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJf016.xsd','./msxsdtest/Particles',valid),
+ STResList84 = [STRes83|STResList83],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJf016.xml','./msxsdtest/Particles',valid,S83),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJg001.xsd','./msxsdtest/Particles',invalid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJh001.xsd','./msxsdtest/Particles',invalid),
+ STResList86 = [STRes85|STResList85],
+
+
+ ?line {STRes86,S86} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj001.xsd','./msxsdtest/Particles',valid),
+ STResList87 = [STRes86|STResList86],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJj001.xml','./msxsdtest/Particles',valid,S86),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes87,S87} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj002.xsd','./msxsdtest/Particles',valid),
+ STResList88 = [STRes87|STResList87],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJj002.xml','./msxsdtest/Particles',valid,S87),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes88,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj003.xsd','./msxsdtest/Particles',invalid),
+ STResList89 = [STRes88|STResList88],
+
+
+ ?line {STRes89,S89} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj004.xsd','./msxsdtest/Particles',valid),
+ STResList90 = [STRes89|STResList89],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJj004.xml','./msxsdtest/Particles',valid,S89),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes90,S90} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj005.xsd','./msxsdtest/Particles',valid),
+ STResList91 = [STRes90|STResList90],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJj005.xml','./msxsdtest/Particles',valid,S90),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes91,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj006.xsd','./msxsdtest/Particles',invalid),
+ STResList92 = [STRes91|STResList91],
+
+
+ ?line {STRes92,S92} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj007.xsd','./msxsdtest/Particles',valid),
+ STResList93 = [STRes92|STResList92],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJj007.xml','./msxsdtest/Particles',valid,S92),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes93,S93} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj008.xsd','./msxsdtest/Particles',valid),
+ STResList94 = [STRes93|STResList93],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJj008.xml','./msxsdtest/Particles',valid,S93),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes94,S94} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj009.xsd','./msxsdtest/Particles',valid),
+ STResList95 = [STRes94|STResList94],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJj009.xml','./msxsdtest/Particles',valid,S94),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes95,S95} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj010.xsd','./msxsdtest/Particles',valid),
+ STResList96 = [STRes95|STResList95],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJj010.xml','./msxsdtest/Particles',valid,S95),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes96,S96} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj011.xsd','./msxsdtest/Particles',valid),
+ STResList97 = [STRes96|STResList96],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJj011.xml','./msxsdtest/Particles',valid,S96),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes97,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJj012.xsd','./msxsdtest/Particles',invalid),
+ STResList98 = [STRes97|STResList97],
+
+
+ ?line {STRes98,S98} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk001.xsd','./msxsdtest/Particles',valid),
+ STResList99 = [STRes98|STResList98],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk001.xml','./msxsdtest/Particles',valid,S98),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes99,S99} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk002.xsd','./msxsdtest/Particles',valid),
+ STResList100 = [STRes99|STResList99],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk002.xml','./msxsdtest/Particles',valid,S99),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes100,S100} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk003.xsd','./msxsdtest/Particles',valid),
+ STResList101 = [STRes100|STResList100],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk003.xml','./msxsdtest/Particles',valid,S100),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes101,S101} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk004.xsd','./msxsdtest/Particles',valid),
+ STResList102 = [STRes101|STResList101],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk004.xml','./msxsdtest/Particles',valid,S101),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes102,S102} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk005.xsd','./msxsdtest/Particles',valid),
+ STResList103 = [STRes102|STResList102],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk005.xml','./msxsdtest/Particles',valid,S102),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes103,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk006.xsd','./msxsdtest/Particles',invalid),
+ STResList104 = [STRes103|STResList103],
+
+
+ ?line {STRes104,S104} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk007.xsd','./msxsdtest/Particles',valid),
+ STResList105 = [STRes104|STResList104],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk007.xml','./msxsdtest/Particles',valid,S104),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes105,S105} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk008.xsd','./msxsdtest/Particles',valid),
+ STResList106 = [STRes105|STResList105],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk008.xml','./msxsdtest/Particles',valid,S105),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes106,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk009.xsd','./msxsdtest/Particles',invalid),
+ STResList107 = [STRes106|STResList106],
+
+
+ ?line {STRes107,S107} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk010.xsd','./msxsdtest/Particles',valid),
+ STResList108 = [STRes107|STResList107],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk010.xml','./msxsdtest/Particles',valid,S107),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes108,S108} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk011.xsd','./msxsdtest/Particles',valid),
+ STResList109 = [STRes108|STResList108],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk011.xml','./msxsdtest/Particles',valid,S108),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes109,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk012.xsd','./msxsdtest/Particles',invalid),
+ STResList110 = [STRes109|STResList109],
+
+
+ ?line {STRes110,S110} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk013.xsd','./msxsdtest/Particles',valid),
+ STResList111 = [STRes110|STResList110],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk013.xml','./msxsdtest/Particles',valid,S110),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes111,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk014.xsd','./msxsdtest/Particles',invalid),
+ STResList112 = [STRes111|STResList111],
+
+
+ ?line {STRes112,S112} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesJk015.xsd','./msxsdtest/Particles',valid),
+ STResList113 = [STRes112|STResList112],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesJk015.xml','./msxsdtest/Particles',valid,S112),
+ ITResList83 = [ITRes82|ITResList82],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList113,ITResList83).
+
+%% 3.9.6 Particle Restriction.
+
+particlesKOSRTQUVW(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesK001.xsd','./msxsdtest/Particles',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesK001.xml','./msxsdtest/Particles',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesK002.xsd','./msxsdtest/Particles',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesK002.xml','./msxsdtest/Particles',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesK003.xsd','./msxsdtest/Particles',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesK003.xml','./msxsdtest/Particles',valid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesK004.xsd','./msxsdtest/Particles',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesK005.xsd','./msxsdtest/Particles',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesK005.xml','./msxsdtest/Particles',valid,S4),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesK006.xsd','./msxsdtest/Particles',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesK008.xsd','./msxsdtest/Particles',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesK008.xml','./msxsdtest/Particles',valid,S6),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa001.xsd','./msxsdtest/Particles',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOa001.xml','./msxsdtest/Particles',valid,S7),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa002.xsd','./msxsdtest/Particles',invalid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa003.xsd','./msxsdtest/Particles',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOa003.xml','./msxsdtest/Particles',valid,S9),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa004.xsd','./msxsdtest/Particles',invalid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa005.xsd','./msxsdtest/Particles',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa006.xsd','./msxsdtest/Particles',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOa006.xml','./msxsdtest/Particles',valid,S12),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa007.xsd','./msxsdtest/Particles',invalid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa008.xsd','./msxsdtest/Particles',invalid),
+ STResList15 = [STRes14|STResList14],
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa009.xsd','./msxsdtest/Particles',invalid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa010.xsd','./msxsdtest/Particles',invalid),
+ STResList17 = [STRes16|STResList16],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa011.xsd','./msxsdtest/Particles',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOa011.xml','./msxsdtest/Particles',valid,S17),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa012.xsd','./msxsdtest/Particles',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOa012.xml','./msxsdtest/Particles',valid,S18),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa013.xsd','./msxsdtest/Particles',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOa013.xml','./msxsdtest/Particles',valid,S19),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa014.xsd','./msxsdtest/Particles',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOa014.xml','./msxsdtest/Particles',valid,S20),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOa015.xsd','./msxsdtest/Particles',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb001.xsd','./msxsdtest/Particles',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb001.xml','./msxsdtest/Particles',valid,S22),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb002.xsd','./msxsdtest/Particles',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb002.xml','./msxsdtest/Particles',valid,S23),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb003.xsd','./msxsdtest/Particles',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb003.xml','./msxsdtest/Particles',valid,S24),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb004.xsd','./msxsdtest/Particles',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb004.xml','./msxsdtest/Particles',valid,S25),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb005.xsd','./msxsdtest/Particles',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb005.xml','./msxsdtest/Particles',valid,S26),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb006.xsd','./msxsdtest/Particles',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb006.xml','./msxsdtest/Particles',valid,S27),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb007.xsd','./msxsdtest/Particles',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb007.xml','./msxsdtest/Particles',valid,S28),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb008.xsd','./msxsdtest/Particles',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb008.xml','./msxsdtest/Particles',valid,S29),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb009.xsd','./msxsdtest/Particles',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb009.xml','./msxsdtest/Particles',valid,S30),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb010.xsd','./msxsdtest/Particles',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb011.xsd','./msxsdtest/Particles',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb012.xsd','./msxsdtest/Particles',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb012.xml','./msxsdtest/Particles',valid,S33),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb013.xsd','./msxsdtest/Particles',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb013.xml','./msxsdtest/Particles',valid,S34),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb014.xsd','./msxsdtest/Particles',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb015.xsd','./msxsdtest/Particles',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb015.xml','./msxsdtest/Particles',valid,S36),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb016.xsd','./msxsdtest/Particles',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb017.xsd','./msxsdtest/Particles',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb018.xsd','./msxsdtest/Particles',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb018.xml','./msxsdtest/Particles',valid,S39),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb019.xsd','./msxsdtest/Particles',invalid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb020.xsd','./msxsdtest/Particles',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb021.xsd','./msxsdtest/Particles',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,S43} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb022.xsd','./msxsdtest/Particles',valid),
+ STResList44 = [STRes43|STResList43],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb022.xml','./msxsdtest/Particles',valid,S43),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb023.xsd','./msxsdtest/Particles',invalid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb024.xsd','./msxsdtest/Particles',invalid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb025.xsd','./msxsdtest/Particles',invalid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb026.xsd','./msxsdtest/Particles',invalid),
+ STResList48 = [STRes47|STResList47],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb027.xsd','./msxsdtest/Particles',invalid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb028.xsd','./msxsdtest/Particles',invalid),
+ STResList50 = [STRes49|STResList49],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb029.xsd','./msxsdtest/Particles',invalid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb030.xsd','./msxsdtest/Particles',invalid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb031.xsd','./msxsdtest/Particles',invalid),
+ STResList53 = [STRes52|STResList52],
+
+
+ ?line {STRes53,S53} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb032.xsd','./msxsdtest/Particles',valid),
+ STResList54 = [STRes53|STResList53],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb032.xml','./msxsdtest/Particles',valid,S53),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb033.xsd','./msxsdtest/Particles',invalid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb034.xsd','./msxsdtest/Particles',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb035.xsd','./msxsdtest/Particles',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb036.xsd','./msxsdtest/Particles',invalid),
+ STResList58 = [STRes57|STResList57],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb037.xsd','./msxsdtest/Particles',invalid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb038.xsd','./msxsdtest/Particles',invalid),
+ STResList60 = [STRes59|STResList59],
+
+
+ ?line {STRes60,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb039.xsd','./msxsdtest/Particles',invalid),
+ STResList61 = [STRes60|STResList60],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb040.xsd','./msxsdtest/Particles',invalid),
+ STResList62 = [STRes61|STResList61],
+
+
+ ?line {STRes62,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb041.xsd','./msxsdtest/Particles',invalid),
+ STResList63 = [STRes62|STResList62],
+
+
+ ?line {STRes63,S63} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb042.xsd','./msxsdtest/Particles',valid),
+ STResList64 = [STRes63|STResList63],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb042.xml','./msxsdtest/Particles',valid,S63),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes64,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb043.xsd','./msxsdtest/Particles',invalid),
+ STResList65 = [STRes64|STResList64],
+
+
+ ?line {STRes65,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb044.xsd','./msxsdtest/Particles',invalid),
+ STResList66 = [STRes65|STResList65],
+
+
+ ?line {STRes66,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb045.xsd','./msxsdtest/Particles',invalid),
+ STResList67 = [STRes66|STResList66],
+
+
+ ?line {STRes67,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb046.xsd','./msxsdtest/Particles',invalid),
+ STResList68 = [STRes67|STResList67],
+
+
+ ?line {STRes68,S68} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb047.xsd','./msxsdtest/Particles',valid),
+ STResList69 = [STRes68|STResList68],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb047.xml','./msxsdtest/Particles',valid,S68),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes69,S69} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb048.xsd','./msxsdtest/Particles',valid),
+ STResList70 = [STRes69|STResList69],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb048.xml','./msxsdtest/Particles',valid,S69),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes70,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb049.xsd','./msxsdtest/Particles',invalid),
+ STResList71 = [STRes70|STResList70],
+
+
+ ?line {STRes71,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb050.xsd','./msxsdtest/Particles',invalid),
+ STResList72 = [STRes71|STResList71],
+
+
+ ?line {STRes72,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb051.xsd','./msxsdtest/Particles',invalid),
+ STResList73 = [STRes72|STResList72],
+
+
+ ?line {STRes73,S73} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb052.xsd','./msxsdtest/Particles',valid),
+ STResList74 = [STRes73|STResList73],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb052.xml','./msxsdtest/Particles',valid,S73),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes74,S74} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb053.xsd','./msxsdtest/Particles',valid),
+ STResList75 = [STRes74|STResList74],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb053.xml','./msxsdtest/Particles',valid,S74),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes75,S75} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb054.xsd','./msxsdtest/Particles',valid),
+ STResList76 = [STRes75|STResList75],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb054.xml','./msxsdtest/Particles',valid,S75),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes76,S76} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb055.xsd','./msxsdtest/Particles',valid),
+ STResList77 = [STRes76|STResList76],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb055.xml','./msxsdtest/Particles',valid,S76),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes77,S77} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb056.xsd','./msxsdtest/Particles',valid),
+ STResList78 = [STRes77|STResList77],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb056.xml','./msxsdtest/Particles',valid,S77),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes78,S78} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb057.xsd','./msxsdtest/Particles',valid),
+ STResList79 = [STRes78|STResList78],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb057.xml','./msxsdtest/Particles',valid,S78),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes79,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb058.xsd','./msxsdtest/Particles',invalid),
+ STResList80 = [STRes79|STResList79],
+
+
+ ?line {STRes80,S80} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb059.xsd','./msxsdtest/Particles',valid),
+ STResList81 = [STRes80|STResList80],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb059.xml','./msxsdtest/Particles',valid,S80),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes81,S81} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesOb060.xsd','./msxsdtest/Particles',valid),
+ STResList82 = [STRes81|STResList81],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesOb060.xml','./msxsdtest/Particles',valid,S81),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes82,S82} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS001.xsd','./msxsdtest/Particles',valid),
+ STResList83 = [STRes82|STResList82],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesS001.xml','./msxsdtest/Particles',valid,S82),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS002.xsd','./msxsdtest/Particles',invalid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,S84} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS003.xsd','./msxsdtest/Particles',valid),
+ STResList85 = [STRes84|STResList84],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesS003.xml','./msxsdtest/Particles',valid,S84),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes85,S85} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS004.xsd','./msxsdtest/Particles',valid),
+ STResList86 = [STRes85|STResList85],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesS004.xml','./msxsdtest/Particles',valid,S85),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes86,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS005.xsd','./msxsdtest/Particles',invalid),
+ STResList87 = [STRes86|STResList86],
+
+
+ ?line {STRes87,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS006.xsd','./msxsdtest/Particles',invalid),
+ STResList88 = [STRes87|STResList87],
+
+
+ ?line {STRes88,S88} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS007.xsd','./msxsdtest/Particles',valid),
+ STResList89 = [STRes88|STResList88],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesS007.xml','./msxsdtest/Particles',valid,S88),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes89,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS008.xsd','./msxsdtest/Particles',invalid),
+ STResList90 = [STRes89|STResList89],
+
+
+ ?line {STRes90,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS009.xsd','./msxsdtest/Particles',invalid),
+ STResList91 = [STRes90|STResList90],
+
+
+ ?line {STRes91,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS010.xsd','./msxsdtest/Particles',invalid),
+ STResList92 = [STRes91|STResList91],
+
+
+ ?line {STRes92,S92} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesS011.xsd','./msxsdtest/Particles',valid),
+ STResList93 = [STRes92|STResList92],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesS011.xml','./msxsdtest/Particles',valid,S92),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes93,S93} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR001.xsd','./msxsdtest/Particles',valid),
+ STResList94 = [STRes93|STResList93],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR001.xml','./msxsdtest/Particles',valid,S93),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes94,S94} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR002.xsd','./msxsdtest/Particles',valid),
+ STResList95 = [STRes94|STResList94],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR002.xml','./msxsdtest/Particles',valid,S94),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes95,S95} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR003.xsd','./msxsdtest/Particles',valid),
+ STResList96 = [STRes95|STResList95],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR003.xml','./msxsdtest/Particles',valid,S95),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes96,S96} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR004.xsd','./msxsdtest/Particles',valid),
+ STResList97 = [STRes96|STResList96],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR004.xml','./msxsdtest/Particles',valid,S96),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes97,S97} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR005.xsd','./msxsdtest/Particles',valid),
+ STResList98 = [STRes97|STResList97],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR005.xml','./msxsdtest/Particles',valid,S97),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes98,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR006.xsd','./msxsdtest/Particles',invalid),
+ STResList99 = [STRes98|STResList98],
+
+
+ ?line {STRes99,S99} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR007.xsd','./msxsdtest/Particles',valid),
+ STResList100 = [STRes99|STResList99],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR007.xml','./msxsdtest/Particles',valid,S99),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes100,S100} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR008.xsd','./msxsdtest/Particles',valid),
+ STResList101 = [STRes100|STResList100],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR008.xml','./msxsdtest/Particles',valid,S100),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes101,S101} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR009.xsd','./msxsdtest/Particles',valid),
+ STResList102 = [STRes101|STResList101],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR009.xml','./msxsdtest/Particles',valid,S101),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes102,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR010.xsd','./msxsdtest/Particles',invalid),
+ STResList103 = [STRes102|STResList102],
+
+
+ ?line {STRes103,S103} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR011.xsd','./msxsdtest/Particles',valid),
+ STResList104 = [STRes103|STResList103],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR011.xml','./msxsdtest/Particles',valid,S103),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes104,S104} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR012.xsd','./msxsdtest/Particles',valid),
+ STResList105 = [STRes104|STResList104],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR012.xml','./msxsdtest/Particles',valid,S104),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes105,S105} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR013.xsd','./msxsdtest/Particles',valid),
+ STResList106 = [STRes105|STResList105],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR013.xml','./msxsdtest/Particles',valid,S105),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes106,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR014.xsd','./msxsdtest/Particles',invalid),
+ STResList107 = [STRes106|STResList106],
+
+
+ ?line {STRes107,S107} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR015.xsd','./msxsdtest/Particles',valid),
+ STResList108 = [STRes107|STResList107],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR015.xml','./msxsdtest/Particles',valid,S107),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes108,S108} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR016.xsd','./msxsdtest/Particles',valid),
+ STResList109 = [STRes108|STResList108],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR016.xml','./msxsdtest/Particles',valid,S108),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes109,S109} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR017.xsd','./msxsdtest/Particles',valid),
+ STResList110 = [STRes109|STResList109],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR017.xml','./msxsdtest/Particles',valid,S109),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes110,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR018.xsd','./msxsdtest/Particles',invalid),
+ STResList111 = [STRes110|STResList110],
+
+
+ ?line {STRes111,S111} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR019.xsd','./msxsdtest/Particles',valid),
+ STResList112 = [STRes111|STResList111],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR019.xml','./msxsdtest/Particles',valid,S111),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes112,S112} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR020.xsd','./msxsdtest/Particles',valid),
+ STResList113 = [STRes112|STResList112],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR020.xml','./msxsdtest/Particles',valid,S112),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes113,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR021.xsd','./msxsdtest/Particles',invalid),
+ STResList114 = [STRes113|STResList113],
+
+
+ ?line {STRes114,S114} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR022.xsd','./msxsdtest/Particles',valid),
+ STResList115 = [STRes114|STResList114],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR022.xml','./msxsdtest/Particles',valid,S114),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes115,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR023.xsd','./msxsdtest/Particles',invalid),
+ STResList116 = [STRes115|STResList115],
+
+
+ ?line {STRes116,S116} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR024.xsd','./msxsdtest/Particles',valid),
+ STResList117 = [STRes116|STResList116],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR024.xml','./msxsdtest/Particles',valid,S116),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes117,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR025.xsd','./msxsdtest/Particles',invalid),
+ STResList118 = [STRes117|STResList117],
+
+
+ ?line {STRes118,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR026.xsd','./msxsdtest/Particles',invalid),
+ STResList119 = [STRes118|STResList118],
+
+
+ ?line {STRes119,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR027.xsd','./msxsdtest/Particles',invalid),
+ STResList120 = [STRes119|STResList119],
+
+
+ ?line {STRes120,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR028.xsd','./msxsdtest/Particles',invalid),
+ STResList121 = [STRes120|STResList120],
+
+
+ ?line {STRes121,S121} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR029.xsd','./msxsdtest/Particles',valid),
+ STResList122 = [STRes121|STResList121],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR029.xml','./msxsdtest/Particles',valid,S121),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes122,S122} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR030.xsd','./msxsdtest/Particles',valid),
+ STResList123 = [STRes122|STResList122],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesR030.xml','./msxsdtest/Particles',valid,S122),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes123,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesR031.xsd','./msxsdtest/Particles',invalid),
+ STResList124 = [STRes123|STResList123],
+
+
+ ?line {STRes124,S124} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT001.xsd','./msxsdtest/Particles',valid),
+ STResList125 = [STRes124|STResList124],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesT001.xml','./msxsdtest/Particles',valid,S124),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes125,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT002.xsd','./msxsdtest/Particles',invalid),
+ STResList126 = [STRes125|STResList125],
+
+
+ ?line {STRes126,S126} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT003.xsd','./msxsdtest/Particles',valid),
+ STResList127 = [STRes126|STResList126],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesT003.xml','./msxsdtest/Particles',valid,S126),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes127,S127} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT004.xsd','./msxsdtest/Particles',valid),
+ STResList128 = [STRes127|STResList127],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesT004.xml','./msxsdtest/Particles',valid,S127),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes128,S128} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT005.xsd','./msxsdtest/Particles',valid),
+ STResList129 = [STRes128|STResList128],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesT005.xml','./msxsdtest/Particles',valid,S128),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes129,S129} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT006.xsd','./msxsdtest/Particles',valid),
+ STResList130 = [STRes129|STResList129],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesT006.xml','./msxsdtest/Particles',valid,S129),
+ ITResList68 = [ITRes67|ITResList67],
+
+
+ ?line {STRes130,S130} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT007.xsd','./msxsdtest/Particles',valid),
+ STResList131 = [STRes130|STResList130],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesT007.xml','./msxsdtest/Particles',valid,S130),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes131,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT008.xsd','./msxsdtest/Particles',invalid),
+ STResList132 = [STRes131|STResList131],
+
+
+ ?line {STRes132,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT009.xsd','./msxsdtest/Particles',invalid),
+ STResList133 = [STRes132|STResList132],
+
+
+ ?line {STRes133,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT010.xsd','./msxsdtest/Particles',invalid),
+ STResList134 = [STRes133|STResList133],
+
+
+ ?line {STRes134,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT011.xsd','./msxsdtest/Particles',invalid),
+ STResList135 = [STRes134|STResList134],
+
+
+ ?line {STRes135,S135} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT012.xsd','./msxsdtest/Particles',valid),
+ STResList136 = [STRes135|STResList135],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesT012.xml','./msxsdtest/Particles',valid,S135),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes136,S136} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT013.xsd','./msxsdtest/Particles',valid),
+ STResList137 = [STRes136|STResList136],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesT013.xml','./msxsdtest/Particles',valid,S136),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes137,S137} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesT014.xsd','./msxsdtest/Particles',valid),
+ STResList138 = [STRes137|STResList137],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesT014.xml','./msxsdtest/Particles',valid,S137),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes138,S138} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ001.xsd','./msxsdtest/Particles',valid),
+ STResList139 = [STRes138|STResList138],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ001.xml','./msxsdtest/Particles',valid,S138),
+ ITResList73 = [ITRes72|ITResList72],
+
+
+ ?line {STRes139,S139} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ002.xsd','./msxsdtest/Particles',valid),
+ STResList140 = [STRes139|STResList139],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ002.xml','./msxsdtest/Particles',valid,S139),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes140,S140} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ003.xsd','./msxsdtest/Particles',valid),
+ STResList141 = [STRes140|STResList140],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ003.xml','./msxsdtest/Particles',valid,S140),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes141,S141} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ004.xsd','./msxsdtest/Particles',valid),
+ STResList142 = [STRes141|STResList141],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ004.xml','./msxsdtest/Particles',valid,S141),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes142,S142} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ005.xsd','./msxsdtest/Particles',valid),
+ STResList143 = [STRes142|STResList142],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ005.xml','./msxsdtest/Particles',valid,S142),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes143,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ006.xsd','./msxsdtest/Particles',invalid),
+ STResList144 = [STRes143|STResList143],
+
+
+ ?line {STRes144,S144} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ007.xsd','./msxsdtest/Particles',valid),
+ STResList145 = [STRes144|STResList144],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ007.xml','./msxsdtest/Particles',valid,S144),
+ ITResList78 = [ITRes77|ITResList77],
+
+
+ ?line {STRes145,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ008.xsd','./msxsdtest/Particles',invalid),
+ STResList146 = [STRes145|STResList145],
+
+
+ ?line {STRes146,S146} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ011.xsd','./msxsdtest/Particles',valid),
+ STResList147 = [STRes146|STResList146],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ011.xml','./msxsdtest/Particles',valid,S146),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes147,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ012.xsd','./msxsdtest/Particles',invalid),
+ STResList148 = [STRes147|STResList147],
+
+
+ ?line {STRes148,S148} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ013.xsd','./msxsdtest/Particles',valid),
+ STResList149 = [STRes148|STResList148],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ013.xml','./msxsdtest/Particles',valid,S148),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes149,S149} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ016.xsd','./msxsdtest/Particles',valid),
+ STResList150 = [STRes149|STResList149],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ016.xml','./msxsdtest/Particles',valid,S149),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes150,S150} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ017.xsd','./msxsdtest/Particles',valid),
+ STResList151 = [STRes150|STResList150],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ017.xml','./msxsdtest/Particles',valid,S150),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes151,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ018.xsd','./msxsdtest/Particles',invalid),
+ STResList152 = [STRes151|STResList151],
+
+
+ ?line {STRes152,S152} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ019.xsd','./msxsdtest/Particles',valid),
+ STResList153 = [STRes152|STResList152],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ019.xml','./msxsdtest/Particles',valid,S152),
+ ITResList83 = [ITRes82|ITResList82],
+
+
+ ?line {STRes153,S153} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ020.xsd','./msxsdtest/Particles',valid),
+ STResList154 = [STRes153|STResList153],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ020.xml','./msxsdtest/Particles',valid,S153),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes154,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ021.xsd','./msxsdtest/Particles',invalid),
+ STResList155 = [STRes154|STResList154],
+
+
+ ?line {STRes155,S155} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ022.xsd','./msxsdtest/Particles',valid),
+ STResList156 = [STRes155|STResList155],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ022.xml','./msxsdtest/Particles',valid,S155),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes156,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ023.xsd','./msxsdtest/Particles',invalid),
+ STResList157 = [STRes156|STResList156],
+
+
+ ?line {STRes157,S157} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ024.xsd','./msxsdtest/Particles',valid),
+ STResList158 = [STRes157|STResList157],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ024.xml','./msxsdtest/Particles',valid,S157),
+ ITResList86 = [ITRes85|ITResList85],
+
+
+ ?line {STRes158,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ025.xsd','./msxsdtest/Particles',invalid),
+ STResList159 = [STRes158|STResList158],
+
+
+ ?line {STRes159,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ026.xsd','./msxsdtest/Particles',invalid),
+ STResList160 = [STRes159|STResList159],
+
+
+ ?line {STRes160,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ027.xsd','./msxsdtest/Particles',invalid),
+ STResList161 = [STRes160|STResList160],
+
+
+ ?line {STRes161,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ028.xsd','./msxsdtest/Particles',invalid),
+ STResList162 = [STRes161|STResList161],
+
+
+ ?line {STRes162,S162} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ029.xsd','./msxsdtest/Particles',valid),
+ STResList163 = [STRes162|STResList162],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ029.xml','./msxsdtest/Particles',valid,S162),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes163,S163} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ030.xsd','./msxsdtest/Particles',valid),
+ STResList164 = [STRes163|STResList163],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesQ030.xml','./msxsdtest/Particles',valid,S163),
+ ITResList88 = [ITRes87|ITResList87],
+
+
+ ?line {STRes164,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesQ031.xsd','./msxsdtest/Particles',invalid),
+ STResList165 = [STRes164|STResList164],
+
+
+ ?line {STRes165,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesU001.xsd','./msxsdtest/Particles',invalid),
+ STResList166 = [STRes165|STResList165],
+
+
+ ?line {STRes166,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesU002.xsd','./msxsdtest/Particles',invalid),
+ STResList167 = [STRes166|STResList166],
+
+
+ ?line {STRes167,S167} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesU003.xsd','./msxsdtest/Particles',valid),
+ STResList168 = [STRes167|STResList167],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesU003.xml','./msxsdtest/Particles',valid,S167),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes168,S168} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesU004.xsd','./msxsdtest/Particles',valid),
+ STResList169 = [STRes168|STResList168],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesU004.xml','./msxsdtest/Particles',valid,S168),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes169,S169} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesU005.xsd','./msxsdtest/Particles',valid),
+ STResList170 = [STRes169|STResList169],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesU005.xml','./msxsdtest/Particles',valid,S169),
+ ITResList91 = [ITRes90|ITResList90],
+
+
+ ?line {STRes170,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesU006.xsd','./msxsdtest/Particles',invalid),
+ STResList171 = [STRes170|STResList170],
+
+
+ ?line {STRes171,S171} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesU007.xsd','./msxsdtest/Particles',valid),
+ STResList172 = [STRes171|STResList171],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesU007.xml','./msxsdtest/Particles',valid,S171),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes172,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesU008.xsd','./msxsdtest/Particles',invalid),
+ STResList173 = [STRes172|STResList172],
+
+
+ ?line {STRes173,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesU009.xsd','./msxsdtest/Particles',invalid),
+ STResList174 = [STRes173|STResList173],
+
+
+ ?line {STRes174,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV002.xsd','./msxsdtest/Particles',invalid),
+ STResList175 = [STRes174|STResList174],
+
+
+ ?line {STRes175,S175} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV003.xsd','./msxsdtest/Particles',valid),
+ STResList176 = [STRes175|STResList175],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV003.xml','./msxsdtest/Particles',valid,S175),
+ ITResList93 = [ITRes92|ITResList92],
+
+
+ ?line {STRes176,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV005.xsd','./msxsdtest/Particles',invalid),
+ STResList177 = [STRes176|STResList176],
+
+
+ ?line {STRes177,S177} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV006.xsd','./msxsdtest/Particles',valid),
+ STResList178 = [STRes177|STResList177],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV006.xml','./msxsdtest/Particles',valid,S177),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes178,S178} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV007.xsd','./msxsdtest/Particles',valid),
+ STResList179 = [STRes178|STResList178],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV007.xml','./msxsdtest/Particles',valid,S178),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes179,S179} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV008.xsd','./msxsdtest/Particles',valid),
+ STResList180 = [STRes179|STResList179],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV008.xml','./msxsdtest/Particles',valid,S179),
+ ITResList96 = [ITRes95|ITResList95],
+
+
+ ?line {STRes180,S180} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV009.xsd','./msxsdtest/Particles',valid),
+ STResList181 = [STRes180|STResList180],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV009.xml','./msxsdtest/Particles',valid,S180),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes181,S181} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV010.xsd','./msxsdtest/Particles',valid),
+ STResList182 = [STRes181|STResList181],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV010.xml','./msxsdtest/Particles',valid,S181),
+ ITResList98 = [ITRes97|ITResList97],
+
+
+ ?line {STRes182,S182} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV011.xsd','./msxsdtest/Particles',valid),
+ STResList183 = [STRes182|STResList182],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV011.xml','./msxsdtest/Particles',valid,S182),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes183,S183} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV012.xsd','./msxsdtest/Particles',valid),
+ STResList184 = [STRes183|STResList183],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV012.xml','./msxsdtest/Particles',valid,S183),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes184,S184} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV013.xsd','./msxsdtest/Particles',valid),
+ STResList185 = [STRes184|STResList184],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV013.xml','./msxsdtest/Particles',valid,S184),
+ ITResList101 = [ITRes100|ITResList100],
+
+
+ ?line {STRes185,S185} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV014.xsd','./msxsdtest/Particles',valid),
+ STResList186 = [STRes185|STResList185],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV014.xml','./msxsdtest/Particles',valid,S185),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes186,S186} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV015.xsd','./msxsdtest/Particles',valid),
+ STResList187 = [STRes186|STResList186],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesV015.xml','./msxsdtest/Particles',valid,S186),
+ ITResList103 = [ITRes102|ITResList102],
+
+
+ ?line {STRes187,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV016.xsd','./msxsdtest/Particles',invalid),
+ STResList188 = [STRes187|STResList187],
+
+
+ ?line {STRes188,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV017.xsd','./msxsdtest/Particles',invalid),
+ STResList189 = [STRes188|STResList188],
+
+
+ ?line {STRes189,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV018.xsd','./msxsdtest/Particles',invalid),
+ STResList190 = [STRes189|STResList189],
+
+
+ ?line {STRes190,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesV020.xsd','./msxsdtest/Particles',invalid),
+ STResList191 = [STRes190|STResList190],
+
+
+ ?line {STRes191,S191} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW001.xsd','./msxsdtest/Particles',valid),
+ STResList192 = [STRes191|STResList191],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesW001.xml','./msxsdtest/Particles',valid,S191),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes192,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW002.xsd','./msxsdtest/Particles',invalid),
+ STResList193 = [STRes192|STResList192],
+
+
+ ?line {STRes193,S193} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW003.xsd','./msxsdtest/Particles',valid),
+ STResList194 = [STRes193|STResList193],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesW003.xml','./msxsdtest/Particles',valid,S193),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes194,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW005.xsd','./msxsdtest/Particles',invalid),
+ STResList195 = [STRes194|STResList194],
+
+
+ ?line {STRes195,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW006.xsd','./msxsdtest/Particles',valid),
+ STResList196 = [STRes195|STResList195],
+
+
+ ?line {STRes196,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW007.xsd','./msxsdtest/Particles',invalid),
+ STResList197 = [STRes196|STResList196],
+
+
+ ?line {STRes197,S197} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW008.xsd','./msxsdtest/Particles',valid),
+ STResList198 = [STRes197|STResList197],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesW008.xml','./msxsdtest/Particles',valid,S197),
+ ITResList106 = [ITRes105|ITResList105],
+
+
+ ?line {STRes198,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW010.xsd','./msxsdtest/Particles',invalid),
+ STResList199 = [STRes198|STResList198],
+
+
+ ?line {STRes199,S199} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW011.xsd','./msxsdtest/Particles',valid),
+ STResList200 = [STRes199|STResList199],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesW011.xml','./msxsdtest/Particles',valid,S199),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes200,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW012.xsd','./msxsdtest/Particles',invalid),
+ STResList201 = [STRes200|STResList200],
+
+
+ ?line {STRes201,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW013.xsd','./msxsdtest/Particles',invalid),
+ STResList202 = [STRes201|STResList201],
+
+
+ ?line {STRes202,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW014.xsd','./msxsdtest/Particles',invalid),
+ STResList203 = [STRes202|STResList202],
+
+
+ ?line {STRes203,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW015.xsd','./msxsdtest/Particles',invalid),
+ STResList204 = [STRes203|STResList203],
+
+
+ ?line {STRes204,S204} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/Particles/particlesW016.xsd','./msxsdtest/Particles',valid),
+ STResList205 = [STRes204|STResList204],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/Particles/particlesW016.xml','./msxsdtest/Particles',valid,S204),
+ ITResList108 = [ITRes107|ITResList107],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList205,ITResList108).
+
+%% Syntax Checking for simpleType Declaration.
+
+stABCDE(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA001.xsd','./msxsdtest/simpleType',valid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA002.xsd','./msxsdtest/simpleType',invalid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA003.xsd','./msxsdtest/simpleType',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA004.xsd','./msxsdtest/simpleType',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA005.xsd','./msxsdtest/simpleType',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA006.xsd','./msxsdtest/simpleType',valid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA007.xsd','./msxsdtest/simpleType',valid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA008.xsd','./msxsdtest/simpleType',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA009.xsd','./msxsdtest/simpleType',invalid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA010.xsd','./msxsdtest/simpleType',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA011.xsd','./msxsdtest/simpleType',invalid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA012.xsd','./msxsdtest/simpleType',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA013.xsd','./msxsdtest/simpleType',invalid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA014.xsd','./msxsdtest/simpleType',invalid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA015.xsd','./msxsdtest/simpleType',invalid),
+ STResList15 = [STRes14|STResList14],
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA016.xsd','./msxsdtest/simpleType',valid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA017.xsd','./msxsdtest/simpleType',invalid),
+ STResList17 = [STRes16|STResList16],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA018.xsd','./msxsdtest/simpleType',valid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA019.xsd','./msxsdtest/simpleType',valid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stA020.xsd','./msxsdtest/simpleType',valid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB001.xsd','./msxsdtest/simpleType',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB002.xsd','./msxsdtest/simpleType',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB003.xsd','./msxsdtest/simpleType',valid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB004.xsd','./msxsdtest/simpleType',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB005.xsd','./msxsdtest/simpleType',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB006.xsd','./msxsdtest/simpleType',valid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB007.xsd','./msxsdtest/simpleType',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB008.xsd','./msxsdtest/simpleType',valid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB009.xsd','./msxsdtest/simpleType',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB010.xsd','./msxsdtest/simpleType',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB011.xsd','./msxsdtest/simpleType',valid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB012.xsd','./msxsdtest/simpleType',valid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB013.xsd','./msxsdtest/simpleType',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB014.xsd','./msxsdtest/simpleType',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB015.xsd','./msxsdtest/simpleType',valid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB016.xsd','./msxsdtest/simpleType',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB017.xsd','./msxsdtest/simpleType',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB018.xsd','./msxsdtest/simpleType',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB019.xsd','./msxsdtest/simpleType',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB020.xsd','./msxsdtest/simpleType',invalid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB021.xsd','./msxsdtest/simpleType',invalid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB022.xsd','./msxsdtest/simpleType',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB023.xsd','./msxsdtest/simpleType',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stB024.xsd','./msxsdtest/simpleType',invalid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC001.xsd','./msxsdtest/simpleType',valid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC002.xsd','./msxsdtest/simpleType',invalid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC003.xsd','./msxsdtest/simpleType',valid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC004.xsd','./msxsdtest/simpleType',invalid),
+ STResList48 = [STRes47|STResList47],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC005.xsd','./msxsdtest/simpleType',valid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC006.xsd','./msxsdtest/simpleType',invalid),
+ STResList50 = [STRes49|STResList49],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC007.xsd','./msxsdtest/simpleType',invalid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC008.xsd','./msxsdtest/simpleType',invalid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC009.xsd','./msxsdtest/simpleType',invalid),
+ STResList53 = [STRes52|STResList52],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC010.xsd','./msxsdtest/simpleType',valid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC011.xsd','./msxsdtest/simpleType',invalid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC012.xsd','./msxsdtest/simpleType',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC013.xsd','./msxsdtest/simpleType',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC014.xsd','./msxsdtest/simpleType',valid),
+ STResList58 = [STRes57|STResList57],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC015.xsd','./msxsdtest/simpleType',valid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC016.xsd','./msxsdtest/simpleType',valid),
+ STResList60 = [STRes59|STResList59],
+
+
+ ?line {STRes60,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC017.xsd','./msxsdtest/simpleType',valid),
+ STResList61 = [STRes60|STResList60],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC018.xsd','./msxsdtest/simpleType',valid),
+ STResList62 = [STRes61|STResList61],
+
+
+ ?line {STRes62,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC019.xsd','./msxsdtest/simpleType',valid),
+ STResList63 = [STRes62|STResList62],
+
+
+ ?line {STRes63,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC020.xsd','./msxsdtest/simpleType',valid),
+ STResList64 = [STRes63|STResList63],
+
+
+ ?line {STRes64,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC021.xsd','./msxsdtest/simpleType',valid),
+ STResList65 = [STRes64|STResList64],
+
+
+ ?line {STRes65,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC022.xsd','./msxsdtest/simpleType',valid),
+ STResList66 = [STRes65|STResList65],
+
+
+ ?line {STRes66,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC023.xsd','./msxsdtest/simpleType',invalid),
+ STResList67 = [STRes66|STResList66],
+
+
+ ?line {STRes67,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC024.xsd','./msxsdtest/simpleType',valid),
+ STResList68 = [STRes67|STResList67],
+
+
+ ?line {STRes68,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC025.xsd','./msxsdtest/simpleType',valid),
+ STResList69 = [STRes68|STResList68],
+
+
+ ?line {STRes69,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC026.xsd','./msxsdtest/simpleType',valid),
+ STResList70 = [STRes69|STResList69],
+
+
+ ?line {STRes70,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC027.xsd','./msxsdtest/simpleType',invalid),
+ STResList71 = [STRes70|STResList70],
+
+
+ ?line {STRes71,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC028.xsd','./msxsdtest/simpleType',invalid),
+ STResList72 = [STRes71|STResList71],
+
+
+ ?line {STRes72,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC029.xsd','./msxsdtest/simpleType',invalid),
+ STResList73 = [STRes72|STResList72],
+
+
+ ?line {STRes73,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC030.xsd','./msxsdtest/simpleType',valid),
+ STResList74 = [STRes73|STResList73],
+
+
+ ?line {STRes74,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC031.xsd','./msxsdtest/simpleType',invalid),
+ STResList75 = [STRes74|STResList74],
+
+
+ ?line {STRes75,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC032.xsd','./msxsdtest/simpleType',invalid),
+ STResList76 = [STRes75|STResList75],
+
+
+ ?line {STRes76,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stC033.xsd','./msxsdtest/simpleType',valid),
+ STResList77 = [STRes76|STResList76],
+
+
+ ?line {STRes77,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD001.xsd','./msxsdtest/simpleType',valid),
+ STResList78 = [STRes77|STResList77],
+
+
+ ?line {STRes78,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD002.xsd','./msxsdtest/simpleType',invalid),
+ STResList79 = [STRes78|STResList78],
+
+
+ ?line {STRes79,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD003.xsd','./msxsdtest/simpleType',invalid),
+ STResList80 = [STRes79|STResList79],
+
+
+ ?line {STRes80,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD004.xsd','./msxsdtest/simpleType',invalid),
+ STResList81 = [STRes80|STResList80],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD005.xsd','./msxsdtest/simpleType',invalid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD006.xsd','./msxsdtest/simpleType',valid),
+ STResList83 = [STRes82|STResList82],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD007.xsd','./msxsdtest/simpleType',valid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD008.xsd','./msxsdtest/simpleType',valid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD009.xsd','./msxsdtest/simpleType',invalid),
+ STResList86 = [STRes85|STResList85],
+
+
+ ?line {STRes86,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD010.xsd','./msxsdtest/simpleType',invalid),
+ STResList87 = [STRes86|STResList86],
+
+
+ ?line {STRes87,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD011.xsd','./msxsdtest/simpleType',valid),
+ STResList88 = [STRes87|STResList87],
+
+
+ ?line {STRes88,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD012.xsd','./msxsdtest/simpleType',valid),
+ STResList89 = [STRes88|STResList88],
+
+
+ ?line {STRes89,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD013.xsd','./msxsdtest/simpleType',valid),
+ STResList90 = [STRes89|STResList89],
+
+
+ ?line {STRes90,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD014.xsd','./msxsdtest/simpleType',valid),
+ STResList91 = [STRes90|STResList90],
+
+
+ ?line {STRes91,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD015.xsd','./msxsdtest/simpleType',invalid),
+ STResList92 = [STRes91|STResList91],
+
+
+ ?line {STRes92,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD016.xsd','./msxsdtest/simpleType',invalid),
+ STResList93 = [STRes92|STResList92],
+
+
+ ?line {STRes93,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD017.xsd','./msxsdtest/simpleType',invalid),
+ STResList94 = [STRes93|STResList93],
+
+
+ ?line {STRes94,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD018.xsd','./msxsdtest/simpleType',invalid),
+ STResList95 = [STRes94|STResList94],
+
+
+ ?line {STRes95,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD019.xsd','./msxsdtest/simpleType',invalid),
+ STResList96 = [STRes95|STResList95],
+
+
+ ?line {STRes96,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD020.xsd','./msxsdtest/simpleType',valid),
+ STResList97 = [STRes96|STResList96],
+
+
+ ?line {STRes97,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stD021.xsd','./msxsdtest/simpleType',valid),
+ STResList98 = [STRes97|STResList97],
+
+
+ ?line {STRes98,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE001.xsd','./msxsdtest/simpleType',valid),
+ STResList99 = [STRes98|STResList98],
+
+
+ ?line {STRes99,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE002.xsd','./msxsdtest/simpleType',invalid),
+ STResList100 = [STRes99|STResList99],
+
+
+ ?line {STRes100,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE003.xsd','./msxsdtest/simpleType',invalid),
+ STResList101 = [STRes100|STResList100],
+
+
+ ?line {STRes101,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE004.xsd','./msxsdtest/simpleType',invalid),
+ STResList102 = [STRes101|STResList101],
+
+
+ ?line {STRes102,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE005.xsd','./msxsdtest/simpleType',invalid),
+ STResList103 = [STRes102|STResList102],
+
+
+ ?line {STRes103,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE006.xsd','./msxsdtest/simpleType',valid),
+ STResList104 = [STRes103|STResList103],
+
+
+ ?line {STRes104,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE007.xsd','./msxsdtest/simpleType',valid),
+ STResList105 = [STRes104|STResList104],
+
+
+ ?line {STRes105,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE008.xsd','./msxsdtest/simpleType',invalid),
+ STResList106 = [STRes105|STResList105],
+
+
+ ?line {STRes106,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE009.xsd','./msxsdtest/simpleType',valid),
+ STResList107 = [STRes106|STResList106],
+
+
+ ?line {STRes107,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE010.xsd','./msxsdtest/simpleType',valid),
+ STResList108 = [STRes107|STResList107],
+
+
+ ?line {STRes108,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE011.xsd','./msxsdtest/simpleType',valid),
+ STResList109 = [STRes108|STResList108],
+
+
+ ?line {STRes109,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE012.xsd','./msxsdtest/simpleType',invalid),
+ STResList110 = [STRes109|STResList109],
+
+
+ ?line {STRes110,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE013.xsd','./msxsdtest/simpleType',valid),
+ STResList111 = [STRes110|STResList110],
+
+
+ ?line {STRes111,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE014.xsd','./msxsdtest/simpleType',valid),
+ STResList112 = [STRes111|STResList111],
+
+
+ ?line {STRes112,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE015.xsd','./msxsdtest/simpleType',invalid),
+ STResList113 = [STRes112|STResList112],
+
+
+ ?line {STRes113,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE016.xsd','./msxsdtest/simpleType',invalid),
+ STResList114 = [STRes113|STResList113],
+
+
+ ?line {STRes114,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE017.xsd','./msxsdtest/simpleType',valid),
+ STResList115 = [STRes114|STResList114],
+
+
+ ?line {STRes115,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stE018.xsd','./msxsdtest/simpleType',invalid),
+ STResList116 = [STRes115|STResList115],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList116,[]).
+
+%% simpleType Validation checking.
+
+stFGH(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF001.xsd','./msxsdtest/simpleType',valid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF002.xsd','./msxsdtest/simpleType',valid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF003.xsd','./msxsdtest/simpleType',valid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF004.xsd','./msxsdtest/simpleType',valid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF005.xsd','./msxsdtest/simpleType',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF006.xsd','./msxsdtest/simpleType',valid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF007.xsd','./msxsdtest/simpleType',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF008.xsd','./msxsdtest/simpleType',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF009.xsd','./msxsdtest/simpleType',invalid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF010.xsd','./msxsdtest/simpleType',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF011.xsd','./msxsdtest/simpleType',invalid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF012.xsd','./msxsdtest/simpleType',invalid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF013.xsd','./msxsdtest/simpleType',invalid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF014.xsd','./msxsdtest/simpleType',invalid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF015.xsd','./msxsdtest/simpleType',invalid),
+ STResList15 = [STRes14|STResList14],
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF016.xsd','./msxsdtest/simpleType',valid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF017.xsd','./msxsdtest/simpleType',valid),
+ STResList17 = [STRes16|STResList16],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF018.xsd','./msxsdtest/simpleType',invalid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF019.xsd','./msxsdtest/simpleType',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF020.xsd','./msxsdtest/simpleType',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF021.xsd','./msxsdtest/simpleType',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF022.xsd','./msxsdtest/simpleType',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF023.xsd','./msxsdtest/simpleType',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF024.xsd','./msxsdtest/simpleType',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF025.xsd','./msxsdtest/simpleType',invalid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF026.xsd','./msxsdtest/simpleType',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF027.xsd','./msxsdtest/simpleType',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF028.xsd','./msxsdtest/simpleType',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF029.xsd','./msxsdtest/simpleType',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF030.xsd','./msxsdtest/simpleType',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF031.xsd','./msxsdtest/simpleType',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF032.xsd','./msxsdtest/simpleType',valid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF033.xsd','./msxsdtest/simpleType',invalid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF034.xsd','./msxsdtest/simpleType',valid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF035.xsd','./msxsdtest/simpleType',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF036.xsd','./msxsdtest/simpleType',valid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stF037.xsd','./msxsdtest/simpleType',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,S37} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG001.xsd','./msxsdtest/simpleType',valid),
+ STResList38 = [STRes37|STResList37],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG001.xml','./msxsdtest/simpleType',valid,S37),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes38,S38} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG002.xsd','./msxsdtest/simpleType',valid),
+ STResList39 = [STRes38|STResList38],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG002.xml','./msxsdtest/simpleType',valid,S38),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG003.xsd','./msxsdtest/simpleType',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG003.xml','./msxsdtest/simpleType',invalid,S39),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG004.xsd','./msxsdtest/simpleType',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG004.xml','./msxsdtest/simpleType',valid,S40),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes41,S41} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG005.xsd','./msxsdtest/simpleType',valid),
+ STResList42 = [STRes41|STResList41],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG005.xml','./msxsdtest/simpleType',invalid,S41),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes42,S42} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG006.xsd','./msxsdtest/simpleType',valid),
+ STResList43 = [STRes42|STResList42],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG006.xml','./msxsdtest/simpleType',valid,S42),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes43,S43} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG007.xsd','./msxsdtest/simpleType',valid),
+ STResList44 = [STRes43|STResList43],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG007.xml','./msxsdtest/simpleType',invalid,S43),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes44,S44} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG008.xsd','./msxsdtest/simpleType',valid),
+ STResList45 = [STRes44|STResList44],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG008.xml','./msxsdtest/simpleType',valid,S44),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes45,S45} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG009.xsd','./msxsdtest/simpleType',valid),
+ STResList46 = [STRes45|STResList45],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG009.xml','./msxsdtest/simpleType',invalid,S45),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes46,S46} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG010.xsd','./msxsdtest/simpleType',valid),
+ STResList47 = [STRes46|STResList46],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG010.xml','./msxsdtest/simpleType',valid,S46),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG011.xsd','./msxsdtest/simpleType',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG011.xml','./msxsdtest/simpleType',invalid,S47),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes48,S48} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG012.xsd','./msxsdtest/simpleType',valid),
+ STResList49 = [STRes48|STResList48],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG012.xml','./msxsdtest/simpleType',valid,S48),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes49,S49} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stG013.xsd','./msxsdtest/simpleType',valid),
+ STResList50 = [STRes49|STResList49],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stG013.xml','./msxsdtest/simpleType',invalid,S49),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes50,S50} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stH001.xsd','./msxsdtest/simpleType',valid),
+ STResList51 = [STRes50|STResList50],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stH001.xml','./msxsdtest/simpleType',valid,S50),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes51,S51} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stH002.xsd','./msxsdtest/simpleType',valid),
+ STResList52 = [STRes51|STResList51],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stH002.xml','./msxsdtest/simpleType',invalid,S51),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stH003.xsd','./msxsdtest/simpleType',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stH003.xml','./msxsdtest/simpleType',valid,S52),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes53,S53} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stH004.xsd','./msxsdtest/simpleType',valid),
+ STResList54 = [STRes53|STResList53],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stH004.xml','./msxsdtest/simpleType',invalid,S53),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes54,S54} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stH005.xsd','./msxsdtest/simpleType',valid),
+ STResList55 = [STRes54|STResList54],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stH005.xml','./msxsdtest/simpleType',valid,S54),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes55,S55} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stH006.xsd','./msxsdtest/simpleType',valid),
+ STResList56 = [STRes55|STResList55],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stH006.xml','./msxsdtest/simpleType',invalid,S55),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes56,S56} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stH007.xsd','./msxsdtest/simpleType',valid),
+ STResList57 = [STRes56|STResList56],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stH007.xml','./msxsdtest/simpleType',valid,S56),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes57,S57} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stH008.xsd','./msxsdtest/simpleType',valid),
+ STResList58 = [STRes57|STResList57],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stH008.xml','./msxsdtest/simpleType',invalid,S57),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList58,ITResList21).
+
+%% simpleType Schema Component Constraints.
+
+stIJK(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stI001.xsd','./msxsdtest/simpleType',valid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stI002.xsd','./msxsdtest/simpleType',valid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stI003.xsd','./msxsdtest/simpleType',valid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stI004.xsd','./msxsdtest/simpleType',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stI005.xsd','./msxsdtest/simpleType',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ001.xsd','./msxsdtest/simpleType',valid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ002.xsd','./msxsdtest/simpleType',valid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ003.xsd','./msxsdtest/simpleType',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ004.xsd','./msxsdtest/simpleType',valid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ005.xsd','./msxsdtest/simpleType',valid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ006.xsd','./msxsdtest/simpleType',valid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ007.xsd','./msxsdtest/simpleType',valid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ008.xsd','./msxsdtest/simpleType',valid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ009.xsd','./msxsdtest/simpleType',invalid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ010.xsd','./msxsdtest/simpleType',invalid),
+ STResList15 = [STRes14|STResList14],
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ011.xsd','./msxsdtest/simpleType',invalid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ012.xsd','./msxsdtest/simpleType',invalid),
+ STResList17 = [STRes16|STResList16],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ013.xsd','./msxsdtest/simpleType',invalid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ014.xsd','./msxsdtest/simpleType',invalid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ015.xsd','./msxsdtest/simpleType',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ016.xsd','./msxsdtest/simpleType',invalid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ017.xsd','./msxsdtest/simpleType',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ018.xsd','./msxsdtest/simpleType',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stJ019.xsd','./msxsdtest/simpleType',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK001.xsd','./msxsdtest/simpleType',valid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK002.xsd','./msxsdtest/simpleType',invalid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK003.xsd','./msxsdtest/simpleType',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK004.xsd','./msxsdtest/simpleType',valid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK005.xsd','./msxsdtest/simpleType',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK006.xsd','./msxsdtest/simpleType',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK007.xsd','./msxsdtest/simpleType',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK008.xsd','./msxsdtest/simpleType',valid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK009.xsd','./msxsdtest/simpleType',valid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK010.xsd','./msxsdtest/simpleType',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK011.xsd','./msxsdtest/simpleType',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK012.xsd','./msxsdtest/simpleType',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK013.xsd','./msxsdtest/simpleType',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK014.xsd','./msxsdtest/simpleType',invalid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK015.xsd','./msxsdtest/simpleType',invalid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK016.xsd','./msxsdtest/simpleType',invalid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK017.xsd','./msxsdtest/simpleType',invalid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK018.xsd','./msxsdtest/simpleType',invalid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stK019.xsd','./msxsdtest/simpleType',invalid),
+ STResList43 = [STRes42|STResList42],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList43,[]).
+
+%% Bug Regressions.
+
+stZ(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stZ001.xsd','./msxsdtest/simpleType',valid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stZ002.xsd','./msxsdtest/simpleType',invalid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stZ003.xsd','./msxsdtest/simpleType',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/simpleType/stZ004.xsd','./msxsdtest/simpleType',valid),
+ STResList4 = [STRes3|STResList3],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/simpleType/stZ004.xml','./msxsdtest/simpleType',valid,S3),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList4,ITResList1).
+
+%% Syntax Validation - any.
+
+wildABCDEF(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildA001.xsd','./msxsdtest/wildCards',valid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildA002.xsd','./msxsdtest/wildCards',valid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildA003.xsd','./msxsdtest/wildCards',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildA004.xsd','./msxsdtest/wildCards',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildA005.xsd','./msxsdtest/wildCards',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildA006.xsd','./msxsdtest/wildCards',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildA007.xsd','./msxsdtest/wildCards',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildA008.xsd','./msxsdtest/wildCards',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB009.xsd','./msxsdtest/wildCards',valid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB010.xsd','./msxsdtest/wildCards',valid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB011.xsd','./msxsdtest/wildCards',valid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB012.xsd','./msxsdtest/wildCards',valid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB013.xsd','./msxsdtest/wildCards',valid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB014.xsd','./msxsdtest/wildCards',invalid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB015.xsd','./msxsdtest/wildCards',invalid),
+ STResList15 = [STRes14|STResList14],
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB016.xsd','./msxsdtest/wildCards',invalid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB017.xsd','./msxsdtest/wildCards',valid),
+ STResList17 = [STRes16|STResList16],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB018.xsd','./msxsdtest/wildCards',valid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB019.xsd','./msxsdtest/wildCards',valid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB020.xsd','./msxsdtest/wildCards',invalid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB021.xsd','./msxsdtest/wildCards',valid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB022.xsd','./msxsdtest/wildCards',invalid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB023.xsd','./msxsdtest/wildCards',invalid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB024.xsd','./msxsdtest/wildCards',invalid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB025.xsd','./msxsdtest/wildCards',valid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB026.xsd','./msxsdtest/wildCards',valid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB027.xsd','./msxsdtest/wildCards',invalid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB028.xsd','./msxsdtest/wildCards',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildB029.xsd','./msxsdtest/wildCards',valid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC030.xsd','./msxsdtest/wildCards',valid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC031.xsd','./msxsdtest/wildCards',valid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC032.xsd','./msxsdtest/wildCards',valid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC033.xsd','./msxsdtest/wildCards',valid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC034.xsd','./msxsdtest/wildCards',valid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC035.xsd','./msxsdtest/wildCards',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC036.xsd','./msxsdtest/wildCards',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC037.xsd','./msxsdtest/wildCards',valid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC038.xsd','./msxsdtest/wildCards',valid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC039.xsd','./msxsdtest/wildCards',valid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC040.xsd','./msxsdtest/wildCards',valid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC041.xsd','./msxsdtest/wildCards',valid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC042.xsd','./msxsdtest/wildCards',valid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC043.xsd','./msxsdtest/wildCards',valid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC044.xsd','./msxsdtest/wildCards',valid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC045.xsd','./msxsdtest/wildCards',valid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC046.xsd','./msxsdtest/wildCards',valid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC047.xsd','./msxsdtest/wildCards',valid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC048.xsd','./msxsdtest/wildCards',valid),
+ STResList48 = [STRes47|STResList47],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC049.xsd','./msxsdtest/wildCards',invalid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC050.xsd','./msxsdtest/wildCards',invalid),
+ STResList50 = [STRes49|STResList49],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC051.xsd','./msxsdtest/wildCards',invalid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC052.xsd','./msxsdtest/wildCards',invalid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC053.xsd','./msxsdtest/wildCards',invalid),
+ STResList53 = [STRes52|STResList52],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC054.xsd','./msxsdtest/wildCards',valid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC055.xsd','./msxsdtest/wildCards',invalid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC056.xsd','./msxsdtest/wildCards',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC057.xsd','./msxsdtest/wildCards',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC058.xsd','./msxsdtest/wildCards',invalid),
+ STResList58 = [STRes57|STResList57],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC059.xsd','./msxsdtest/wildCards',valid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC060.xsd','./msxsdtest/wildCards',valid),
+ STResList60 = [STRes59|STResList59],
+
+
+ ?line {STRes60,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC061.xsd','./msxsdtest/wildCards',valid),
+ STResList61 = [STRes60|STResList60],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC062.xsd','./msxsdtest/wildCards',valid),
+ STResList62 = [STRes61|STResList61],
+
+
+ ?line {STRes62,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC063.xsd','./msxsdtest/wildCards',valid),
+ STResList63 = [STRes62|STResList62],
+
+
+ ?line {STRes63,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC064.xsd','./msxsdtest/wildCards',valid),
+ STResList64 = [STRes63|STResList63],
+
+
+ ?line {STRes64,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC065.xsd','./msxsdtest/wildCards',valid),
+ STResList65 = [STRes64|STResList64],
+
+
+ ?line {STRes65,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC066.xsd','./msxsdtest/wildCards',invalid),
+ STResList66 = [STRes65|STResList65],
+
+
+ ?line {STRes66,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC067.xsd','./msxsdtest/wildCards',invalid),
+ STResList67 = [STRes66|STResList66],
+
+
+ ?line {STRes67,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC068.xsd','./msxsdtest/wildCards',valid),
+ STResList68 = [STRes67|STResList67],
+
+
+ ?line {STRes68,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC069.xsd','./msxsdtest/wildCards',valid),
+ STResList69 = [STRes68|STResList68],
+
+
+ ?line {STRes69,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildC070.xsd','./msxsdtest/wildCards',valid),
+ STResList70 = [STRes69|STResList69],
+
+
+ ?line {STRes70,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildD071.xsd','./msxsdtest/wildCards',invalid),
+ STResList71 = [STRes70|STResList70],
+
+
+ ?line {STRes71,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildD072.xsd','./msxsdtest/wildCards',valid),
+ STResList72 = [STRes71|STResList71],
+
+
+ ?line {STRes72,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildD073.xsd','./msxsdtest/wildCards',valid),
+ STResList73 = [STRes72|STResList72],
+
+
+ ?line {STRes73,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildD074.xsd','./msxsdtest/wildCards',valid),
+ STResList74 = [STRes73|STResList73],
+
+
+ ?line {STRes74,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildD075.xsd','./msxsdtest/wildCards',invalid),
+ STResList75 = [STRes74|STResList74],
+
+
+ ?line {STRes75,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildD076.xsd','./msxsdtest/wildCards',invalid),
+ STResList76 = [STRes75|STResList75],
+
+
+ ?line {STRes76,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildD077.xsd','./msxsdtest/wildCards',invalid),
+ STResList77 = [STRes76|STResList76],
+
+
+ ?line {STRes77,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildD078.xsd','./msxsdtest/wildCards',invalid),
+ STResList78 = [STRes77|STResList77],
+
+
+ ?line {STRes78,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildD079.xsd','./msxsdtest/wildCards',invalid),
+ STResList79 = [STRes78|STResList78],
+
+
+ ?line {STRes79,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildE001.xsd','./msxsdtest/wildCards',valid),
+ STResList80 = [STRes79|STResList79],
+
+
+ ?line {STRes80,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildE002.xsd','./msxsdtest/wildCards',invalid),
+ STResList81 = [STRes80|STResList80],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF001.xsd','./msxsdtest/wildCards',valid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF002.xsd','./msxsdtest/wildCards',valid),
+ STResList83 = [STRes82|STResList82],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF003.xsd','./msxsdtest/wildCards',valid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF004.xsd','./msxsdtest/wildCards',valid),
+ STResList85 = [STRes84|STResList84],
+
+
+ ?line {STRes85,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF005.xsd','./msxsdtest/wildCards',valid),
+ STResList86 = [STRes85|STResList85],
+
+
+ ?line {STRes86,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF006.xsd','./msxsdtest/wildCards',invalid),
+ STResList87 = [STRes86|STResList86],
+
+
+ ?line {STRes87,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF007.xsd','./msxsdtest/wildCards',invalid),
+ STResList88 = [STRes87|STResList87],
+
+
+ ?line {STRes88,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF008.xsd','./msxsdtest/wildCards',invalid),
+ STResList89 = [STRes88|STResList88],
+
+
+ ?line {STRes89,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF009.xsd','./msxsdtest/wildCards',invalid),
+ STResList90 = [STRes89|STResList89],
+
+
+ ?line {STRes90,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF010.xsd','./msxsdtest/wildCards',invalid),
+ STResList91 = [STRes90|STResList90],
+
+
+ ?line {STRes91,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF011.xsd','./msxsdtest/wildCards',valid),
+ STResList92 = [STRes91|STResList91],
+
+
+ ?line {STRes92,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF012.xsd','./msxsdtest/wildCards',invalid),
+ STResList93 = [STRes92|STResList92],
+
+
+ ?line {STRes93,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF013.xsd','./msxsdtest/wildCards',invalid),
+ STResList94 = [STRes93|STResList93],
+
+
+ ?line {STRes94,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF014.xsd','./msxsdtest/wildCards',invalid),
+ STResList95 = [STRes94|STResList94],
+
+
+ ?line {STRes95,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF015.xsd','./msxsdtest/wildCards',invalid),
+ STResList96 = [STRes95|STResList95],
+
+
+ ?line {STRes96,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF016.xsd','./msxsdtest/wildCards',invalid),
+ STResList97 = [STRes96|STResList96],
+
+
+ ?line {STRes97,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF017.xsd','./msxsdtest/wildCards',valid),
+ STResList98 = [STRes97|STResList97],
+
+
+ ?line {STRes98,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF018.xsd','./msxsdtest/wildCards',invalid),
+ STResList99 = [STRes98|STResList98],
+
+
+ ?line {STRes99,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF019.xsd','./msxsdtest/wildCards',valid),
+ STResList100 = [STRes99|STResList99],
+
+
+ ?line {STRes100,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildF020.xsd','./msxsdtest/wildCards',valid),
+ STResList101 = [STRes100|STResList100],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList101,[]).
+
+%% 3.10.4 Wildcard Validation Rules - any.
+
+wildGHI(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG001.xsd','./msxsdtest/wildCards',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG001.xml','./msxsdtest/wildCards',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG002.xsd','./msxsdtest/wildCards',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG002.xml','./msxsdtest/wildCards',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG003.xsd','./msxsdtest/wildCards',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG003.xml','./msxsdtest/wildCards',invalid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG004.xsd','./msxsdtest/wildCards',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG004.xml','./msxsdtest/wildCards',valid,S3),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG005.xsd','./msxsdtest/wildCards',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG005.xml','./msxsdtest/wildCards',invalid,S4),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG006.xsd','./msxsdtest/wildCards',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG006.xml','./msxsdtest/wildCards',valid,S5),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG007.xsd','./msxsdtest/wildCards',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG007.xml','./msxsdtest/wildCards',valid,S6),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG008.xsd','./msxsdtest/wildCards',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG008.xml','./msxsdtest/wildCards',invalid,S7),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG009.xsd','./msxsdtest/wildCards',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG009.xml','./msxsdtest/wildCards',invalid,S8),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG010.xsd','./msxsdtest/wildCards',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG010.xml','./msxsdtest/wildCards',valid,S9),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG011.xsd','./msxsdtest/wildCards',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG011.xml','./msxsdtest/wildCards',invalid,S10),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG012.xsd','./msxsdtest/wildCards',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG012.xml','./msxsdtest/wildCards',valid,S11),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG013.xsd','./msxsdtest/wildCards',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG013.xml','./msxsdtest/wildCards',valid,S12),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG014.xsd','./msxsdtest/wildCards',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG014.xml','./msxsdtest/wildCards',invalid,S13),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG015.xsd','./msxsdtest/wildCards',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG015.xml','./msxsdtest/wildCards',valid,S14),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG016.xsd','./msxsdtest/wildCards',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG016.xml','./msxsdtest/wildCards',valid,S15),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG017.xsd','./msxsdtest/wildCards',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG017.xml','./msxsdtest/wildCards',invalid,S16),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG018.xsd','./msxsdtest/wildCards',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG018.xml','./msxsdtest/wildCards',valid,S17),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG019.xsd','./msxsdtest/wildCards',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG019.xml','./msxsdtest/wildCards',invalid,S18),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG020.xsd','./msxsdtest/wildCards',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG020.xml','./msxsdtest/wildCards',invalid,S19),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG021.xsd','./msxsdtest/wildCards',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG021.xml','./msxsdtest/wildCards',valid,S20),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG022.xsd','./msxsdtest/wildCards',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG022.xml','./msxsdtest/wildCards',invalid,S21),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG023.xsd','./msxsdtest/wildCards',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG023.xml','./msxsdtest/wildCards',valid,S22),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG024.xsd','./msxsdtest/wildCards',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG024.xml','./msxsdtest/wildCards',invalid,S23),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG025.xsd','./msxsdtest/wildCards',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG025.xml','./msxsdtest/wildCards',invalid,S24),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG026.xsd','./msxsdtest/wildCards',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG026.xml','./msxsdtest/wildCards',valid,S25),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG027.xsd','./msxsdtest/wildCards',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG027.xml','./msxsdtest/wildCards',valid,S26),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG028.xsd','./msxsdtest/wildCards',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG028.xml','./msxsdtest/wildCards',invalid,S27),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG029.xsd','./msxsdtest/wildCards',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG029.xml','./msxsdtest/wildCards',invalid,S28),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG030.xsd','./msxsdtest/wildCards',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG030.xml','./msxsdtest/wildCards',invalid,S29),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG031.xsd','./msxsdtest/wildCards',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG031.xml','./msxsdtest/wildCards',valid,S30),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG032.xsd','./msxsdtest/wildCards',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG032.xml','./msxsdtest/wildCards',invalid,S31),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG033.xsd','./msxsdtest/wildCards',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG033.xml','./msxsdtest/wildCards',valid,S32),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG034.xsd','./msxsdtest/wildCards',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG034.xml','./msxsdtest/wildCards',invalid,S33),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG035.xsd','./msxsdtest/wildCards',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG035.xml','./msxsdtest/wildCards',valid,S34),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG036.xsd','./msxsdtest/wildCards',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG036.xml','./msxsdtest/wildCards',invalid,S35),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG037.xsd','./msxsdtest/wildCards',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG037.xml','./msxsdtest/wildCards',valid,S36),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes37,S37} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG038.xsd','./msxsdtest/wildCards',valid),
+ STResList38 = [STRes37|STResList37],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG038.xml','./msxsdtest/wildCards',valid,S37),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes38,S38} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG039.xsd','./msxsdtest/wildCards',valid),
+ STResList39 = [STRes38|STResList38],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG039.xml','./msxsdtest/wildCards',invalid,S38),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildG040.xsd','./msxsdtest/wildCards',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildG040.xml','./msxsdtest/wildCards',valid,S39),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildH001.xsd','./msxsdtest/wildCards',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildH001.xml','./msxsdtest/wildCards',invalid,S40),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes41,S41} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildH002.xsd','./msxsdtest/wildCards',valid),
+ STResList42 = [STRes41|STResList41],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildH002.xml','./msxsdtest/wildCards',invalid,S41),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes42,S42} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildH003.xsd','./msxsdtest/wildCards',valid),
+ STResList43 = [STRes42|STResList42],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildH003.xml','./msxsdtest/wildCards',valid,S42),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes43,S43} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildH004.xsd','./msxsdtest/wildCards',valid),
+ STResList44 = [STRes43|STResList43],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildH004.xml','./msxsdtest/wildCards',valid,S43),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes44,S44} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildH006.xsd','./msxsdtest/wildCards',valid),
+ STResList45 = [STRes44|STResList44],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildH006.xml','./msxsdtest/wildCards',invalid,S44),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes45,S45} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildH007.xsd','./msxsdtest/wildCards',valid),
+ STResList46 = [STRes45|STResList45],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildH007.xml','./msxsdtest/wildCards',valid,S45),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes46,S46} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildH008.xsd','./msxsdtest/wildCards',valid),
+ STResList47 = [STRes46|STResList46],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildH008.xml','./msxsdtest/wildCards',invalid,S46),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes47,S47} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildH009.xsd','./msxsdtest/wildCards',valid),
+ STResList48 = [STRes47|STResList47],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildH009.xml','./msxsdtest/wildCards',valid,S47),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes48,S48} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildH010.xsd','./msxsdtest/wildCards',valid),
+ STResList49 = [STRes48|STResList48],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildH010.xml','./msxsdtest/wildCards',valid,S48),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes49,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI001.xsd','./msxsdtest/wildCards',valid),
+ STResList50 = [STRes49|STResList49],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI002.xsd','./msxsdtest/wildCards',invalid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI003.xsd','./msxsdtest/wildCards',invalid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,S52} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI004.xsd','./msxsdtest/wildCards',valid),
+ STResList53 = [STRes52|STResList52],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildI004.xml','./msxsdtest/wildCards',valid,S52),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes53,S53} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI005.xsd','./msxsdtest/wildCards',valid),
+ STResList54 = [STRes53|STResList53],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildI005.xml','./msxsdtest/wildCards',valid,S53),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes54,S54} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI006.xsd','./msxsdtest/wildCards',valid),
+ STResList55 = [STRes54|STResList54],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildI006.xml','./msxsdtest/wildCards',valid,S54),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes55,S55} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI007.xsd','./msxsdtest/wildCards',valid),
+ STResList56 = [STRes55|STResList55],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildI007.xml','./msxsdtest/wildCards',valid,S55),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI008.xsd','./msxsdtest/wildCards',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI009.xsd','./msxsdtest/wildCards',invalid),
+ STResList58 = [STRes57|STResList57],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI010.xsd','./msxsdtest/wildCards',invalid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,S59} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI011.xsd','./msxsdtest/wildCards',valid),
+ STResList60 = [STRes59|STResList59],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildI011.xml','./msxsdtest/wildCards',valid,S59),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes60,S60} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI012.xsd','./msxsdtest/wildCards',valid),
+ STResList61 = [STRes60|STResList60],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildI012.xml','./msxsdtest/wildCards',valid,S60),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildI013.xsd','./msxsdtest/wildCards',invalid),
+ STResList62 = [STRes61|STResList61],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList62,ITResList55).
+
+%% Syntax Validation - anyAttribute.
+
+wildJKLMNQOP(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildJ001.xsd','./msxsdtest/wildCards',valid),
+ STResList1 = [STRes0|STResList0],
+
+
+ ?line {STRes1,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildJ002.xsd','./msxsdtest/wildCards',valid),
+ STResList2 = [STRes1|STResList1],
+
+
+ ?line {STRes2,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildJ003.xsd','./msxsdtest/wildCards',invalid),
+ STResList3 = [STRes2|STResList2],
+
+
+ ?line {STRes3,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildJ004.xsd','./msxsdtest/wildCards',invalid),
+ STResList4 = [STRes3|STResList3],
+
+
+ ?line {STRes4,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildJ005.xsd','./msxsdtest/wildCards',invalid),
+ STResList5 = [STRes4|STResList4],
+
+
+ ?line {STRes5,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildJ006.xsd','./msxsdtest/wildCards',invalid),
+ STResList6 = [STRes5|STResList5],
+
+
+ ?line {STRes6,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildJ007.xsd','./msxsdtest/wildCards',invalid),
+ STResList7 = [STRes6|STResList6],
+
+
+ ?line {STRes7,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildJ008.xsd','./msxsdtest/wildCards',invalid),
+ STResList8 = [STRes7|STResList7],
+
+
+ ?line {STRes8,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK001.xsd','./msxsdtest/wildCards',valid),
+ STResList9 = [STRes8|STResList8],
+
+
+ ?line {STRes9,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK002.xsd','./msxsdtest/wildCards',invalid),
+ STResList10 = [STRes9|STResList9],
+
+
+ ?line {STRes10,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK003.xsd','./msxsdtest/wildCards',valid),
+ STResList11 = [STRes10|STResList10],
+
+
+ ?line {STRes11,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK004.xsd','./msxsdtest/wildCards',valid),
+ STResList12 = [STRes11|STResList11],
+
+
+ ?line {STRes12,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK005.xsd','./msxsdtest/wildCards',valid),
+ STResList13 = [STRes12|STResList12],
+
+
+ ?line {STRes13,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK006.xsd','./msxsdtest/wildCards',invalid),
+ STResList14 = [STRes13|STResList13],
+
+
+ ?line {STRes14,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK007.xsd','./msxsdtest/wildCards',invalid),
+ STResList15 = [STRes14|STResList14],
+
+
+ ?line {STRes15,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK008.xsd','./msxsdtest/wildCards',valid),
+ STResList16 = [STRes15|STResList15],
+
+
+ ?line {STRes16,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK009.xsd','./msxsdtest/wildCards',valid),
+ STResList17 = [STRes16|STResList16],
+
+
+ ?line {STRes17,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK010.xsd','./msxsdtest/wildCards',valid),
+ STResList18 = [STRes17|STResList17],
+
+
+ ?line {STRes18,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK011.xsd','./msxsdtest/wildCards',valid),
+ STResList19 = [STRes18|STResList18],
+
+
+ ?line {STRes19,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK012.xsd','./msxsdtest/wildCards',valid),
+ STResList20 = [STRes19|STResList19],
+
+
+ ?line {STRes20,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK013.xsd','./msxsdtest/wildCards',valid),
+ STResList21 = [STRes20|STResList20],
+
+
+ ?line {STRes21,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK014.xsd','./msxsdtest/wildCards',valid),
+ STResList22 = [STRes21|STResList21],
+
+
+ ?line {STRes22,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK015.xsd','./msxsdtest/wildCards',valid),
+ STResList23 = [STRes22|STResList22],
+
+
+ ?line {STRes23,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK016.xsd','./msxsdtest/wildCards',valid),
+ STResList24 = [STRes23|STResList23],
+
+
+ ?line {STRes24,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK017.xsd','./msxsdtest/wildCards',valid),
+ STResList25 = [STRes24|STResList24],
+
+
+ ?line {STRes25,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK018.xsd','./msxsdtest/wildCards',valid),
+ STResList26 = [STRes25|STResList25],
+
+
+ ?line {STRes26,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK019.xsd','./msxsdtest/wildCards',valid),
+ STResList27 = [STRes26|STResList26],
+
+
+ ?line {STRes27,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK020.xsd','./msxsdtest/wildCards',invalid),
+ STResList28 = [STRes27|STResList27],
+
+
+ ?line {STRes28,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK021.xsd','./msxsdtest/wildCards',invalid),
+ STResList29 = [STRes28|STResList28],
+
+
+ ?line {STRes29,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK022.xsd','./msxsdtest/wildCards',invalid),
+ STResList30 = [STRes29|STResList29],
+
+
+ ?line {STRes30,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK023.xsd','./msxsdtest/wildCards',invalid),
+ STResList31 = [STRes30|STResList30],
+
+
+ ?line {STRes31,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK024.xsd','./msxsdtest/wildCards',invalid),
+ STResList32 = [STRes31|STResList31],
+
+
+ ?line {STRes32,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK025.xsd','./msxsdtest/wildCards',valid),
+ STResList33 = [STRes32|STResList32],
+
+
+ ?line {STRes33,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK026.xsd','./msxsdtest/wildCards',invalid),
+ STResList34 = [STRes33|STResList33],
+
+
+ ?line {STRes34,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK027.xsd','./msxsdtest/wildCards',invalid),
+ STResList35 = [STRes34|STResList34],
+
+
+ ?line {STRes35,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK028.xsd','./msxsdtest/wildCards',invalid),
+ STResList36 = [STRes35|STResList35],
+
+
+ ?line {STRes36,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK029.xsd','./msxsdtest/wildCards',invalid),
+ STResList37 = [STRes36|STResList36],
+
+
+ ?line {STRes37,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK030.xsd','./msxsdtest/wildCards',valid),
+ STResList38 = [STRes37|STResList37],
+
+
+ ?line {STRes38,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK031.xsd','./msxsdtest/wildCards',valid),
+ STResList39 = [STRes38|STResList38],
+
+
+ ?line {STRes39,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK032.xsd','./msxsdtest/wildCards',valid),
+ STResList40 = [STRes39|STResList39],
+
+
+ ?line {STRes40,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK033.xsd','./msxsdtest/wildCards',valid),
+ STResList41 = [STRes40|STResList40],
+
+
+ ?line {STRes41,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK034.xsd','./msxsdtest/wildCards',valid),
+ STResList42 = [STRes41|STResList41],
+
+
+ ?line {STRes42,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK035.xsd','./msxsdtest/wildCards',valid),
+ STResList43 = [STRes42|STResList42],
+
+
+ ?line {STRes43,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK036.xsd','./msxsdtest/wildCards',valid),
+ STResList44 = [STRes43|STResList43],
+
+
+ ?line {STRes44,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK037.xsd','./msxsdtest/wildCards',valid),
+ STResList45 = [STRes44|STResList44],
+
+
+ ?line {STRes45,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK038.xsd','./msxsdtest/wildCards',invalid),
+ STResList46 = [STRes45|STResList45],
+
+
+ ?line {STRes46,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK039.xsd','./msxsdtest/wildCards',valid),
+ STResList47 = [STRes46|STResList46],
+
+
+ ?line {STRes47,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK040.xsd','./msxsdtest/wildCards',valid),
+ STResList48 = [STRes47|STResList47],
+
+
+ ?line {STRes48,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildK041.xsd','./msxsdtest/wildCards',valid),
+ STResList49 = [STRes48|STResList48],
+
+
+ ?line {STRes49,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildL001.xsd','./msxsdtest/wildCards',invalid),
+ STResList50 = [STRes49|STResList49],
+
+
+ ?line {STRes50,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildL002.xsd','./msxsdtest/wildCards',valid),
+ STResList51 = [STRes50|STResList50],
+
+
+ ?line {STRes51,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildL003.xsd','./msxsdtest/wildCards',valid),
+ STResList52 = [STRes51|STResList51],
+
+
+ ?line {STRes52,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildL004.xsd','./msxsdtest/wildCards',valid),
+ STResList53 = [STRes52|STResList52],
+
+
+ ?line {STRes53,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildL005.xsd','./msxsdtest/wildCards',invalid),
+ STResList54 = [STRes53|STResList53],
+
+
+ ?line {STRes54,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildL006.xsd','./msxsdtest/wildCards',invalid),
+ STResList55 = [STRes54|STResList54],
+
+
+ ?line {STRes55,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildL007.xsd','./msxsdtest/wildCards',invalid),
+ STResList56 = [STRes55|STResList55],
+
+
+ ?line {STRes56,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildL008.xsd','./msxsdtest/wildCards',invalid),
+ STResList57 = [STRes56|STResList56],
+
+
+ ?line {STRes57,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildL009.xsd','./msxsdtest/wildCards',invalid),
+ STResList58 = [STRes57|STResList57],
+
+
+ ?line {STRes58,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildM001.xsd','./msxsdtest/wildCards',valid),
+ STResList59 = [STRes58|STResList58],
+
+
+ ?line {STRes59,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildM002.xsd','./msxsdtest/wildCards',invalid),
+ STResList60 = [STRes59|STResList59],
+
+
+ ?line {STRes60,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN001.xsd','./msxsdtest/wildCards',invalid),
+ STResList61 = [STRes60|STResList60],
+
+
+ ?line {STRes61,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN002.xsd','./msxsdtest/wildCards',valid),
+ STResList62 = [STRes61|STResList61],
+
+
+ ?line {STRes62,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN003.xsd','./msxsdtest/wildCards',valid),
+ STResList63 = [STRes62|STResList62],
+
+
+ ?line {STRes63,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN004.xsd','./msxsdtest/wildCards',valid),
+ STResList64 = [STRes63|STResList63],
+
+
+ ?line {STRes64,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN005.xsd','./msxsdtest/wildCards',valid),
+ STResList65 = [STRes64|STResList64],
+
+
+ ?line {STRes65,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN006.xsd','./msxsdtest/wildCards',invalid),
+ STResList66 = [STRes65|STResList65],
+
+
+ ?line {STRes66,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN007.xsd','./msxsdtest/wildCards',invalid),
+ STResList67 = [STRes66|STResList66],
+
+
+ ?line {STRes67,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN008.xsd','./msxsdtest/wildCards',invalid),
+ STResList68 = [STRes67|STResList67],
+
+
+ ?line {STRes68,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN009.xsd','./msxsdtest/wildCards',invalid),
+ STResList69 = [STRes68|STResList68],
+
+
+ ?line {STRes69,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN010.xsd','./msxsdtest/wildCards',invalid),
+ STResList70 = [STRes69|STResList69],
+
+
+ ?line {STRes70,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN011.xsd','./msxsdtest/wildCards',valid),
+ STResList71 = [STRes70|STResList70],
+
+
+ ?line {STRes71,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN012.xsd','./msxsdtest/wildCards',invalid),
+ STResList72 = [STRes71|STResList71],
+
+
+ ?line {STRes72,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN013.xsd','./msxsdtest/wildCards',invalid),
+ STResList73 = [STRes72|STResList72],
+
+
+ ?line {STRes73,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN014.xsd','./msxsdtest/wildCards',invalid),
+ STResList74 = [STRes73|STResList73],
+
+
+ ?line {STRes74,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN015.xsd','./msxsdtest/wildCards',invalid),
+ STResList75 = [STRes74|STResList74],
+
+
+ ?line {STRes75,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN016.xsd','./msxsdtest/wildCards',invalid),
+ STResList76 = [STRes75|STResList75],
+
+
+ ?line {STRes76,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN017.xsd','./msxsdtest/wildCards',valid),
+ STResList77 = [STRes76|STResList76],
+
+
+ ?line {STRes77,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN018.xsd','./msxsdtest/wildCards',invalid),
+ STResList78 = [STRes77|STResList77],
+
+
+ ?line {STRes78,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN019.xsd','./msxsdtest/wildCards',valid),
+ STResList79 = [STRes78|STResList78],
+
+
+ ?line {STRes79,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildN020.xsd','./msxsdtest/wildCards',valid),
+ STResList80 = [STRes79|STResList79],
+
+
+ ?line {STRes80,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildQ001.xsd','./msxsdtest/wildCards',invalid),
+ STResList81 = [STRes80|STResList80],
+
+
+ ?line {STRes81,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildQ002.xsd','./msxsdtest/wildCards',invalid),
+ STResList82 = [STRes81|STResList81],
+
+
+ ?line {STRes82,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildQ003.xsd','./msxsdtest/wildCards',invalid),
+ STResList83 = [STRes82|STResList82],
+
+
+ ?line {STRes83,_} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildQ004.xsd','./msxsdtest/wildCards',invalid),
+ STResList84 = [STRes83|STResList83],
+
+
+ ?line {STRes84,S84} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO001.xsd','./msxsdtest/wildCards',valid),
+ STResList85 = [STRes84|STResList84],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO001.xml','./msxsdtest/wildCards',valid,S84),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes85,S85} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO002.xsd','./msxsdtest/wildCards',valid),
+ STResList86 = [STRes85|STResList85],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO002.xml','./msxsdtest/wildCards',valid,S85),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes86,S86} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO003.xsd','./msxsdtest/wildCards',valid),
+ STResList87 = [STRes86|STResList86],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO003.xml','./msxsdtest/wildCards',invalid,S86),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes87,S87} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO004.xsd','./msxsdtest/wildCards',valid),
+ STResList88 = [STRes87|STResList87],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO004.xml','./msxsdtest/wildCards',valid,S87),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes88,S88} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO005.xsd','./msxsdtest/wildCards',valid),
+ STResList89 = [STRes88|STResList88],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO005.xml','./msxsdtest/wildCards',valid,S88),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes89,S89} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO006.xsd','./msxsdtest/wildCards',valid),
+ STResList90 = [STRes89|STResList89],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO006.xml','./msxsdtest/wildCards',invalid,S89),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes90,S90} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO007.xsd','./msxsdtest/wildCards',valid),
+ STResList91 = [STRes90|STResList90],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO007.xml','./msxsdtest/wildCards',valid,S90),
+ ITResList7 = [ITRes6|ITResList6],
+
+
+ ?line {STRes91,S91} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO008.xsd','./msxsdtest/wildCards',valid),
+ STResList92 = [STRes91|STResList91],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO008.xml','./msxsdtest/wildCards',invalid,S91),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ ?line {STRes92,S92} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO009.xsd','./msxsdtest/wildCards',valid),
+ STResList93 = [STRes92|STResList92],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO009.xml','./msxsdtest/wildCards',invalid,S92),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes93,S93} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO010.xsd','./msxsdtest/wildCards',valid),
+ STResList94 = [STRes93|STResList93],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO010.xml','./msxsdtest/wildCards',valid,S93),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes94,S94} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO011.xsd','./msxsdtest/wildCards',valid),
+ STResList95 = [STRes94|STResList94],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO011.xml','./msxsdtest/wildCards',invalid,S94),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes95,S95} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO012.xsd','./msxsdtest/wildCards',valid),
+ STResList96 = [STRes95|STResList95],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO012.xml','./msxsdtest/wildCards',valid,S95),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ ?line {STRes96,S96} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO013.xsd','./msxsdtest/wildCards',valid),
+ STResList97 = [STRes96|STResList96],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO013.xml','./msxsdtest/wildCards',valid,S96),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes97,S97} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO014.xsd','./msxsdtest/wildCards',valid),
+ STResList98 = [STRes97|STResList97],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO014.xml','./msxsdtest/wildCards',invalid,S97),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ ?line {STRes98,S98} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO015.xsd','./msxsdtest/wildCards',valid),
+ STResList99 = [STRes98|STResList98],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO015.xml','./msxsdtest/wildCards',valid,S98),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes99,S99} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO016.xsd','./msxsdtest/wildCards',valid),
+ STResList100 = [STRes99|STResList99],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO016.xml','./msxsdtest/wildCards',valid,S99),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes100,S100} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO017.xsd','./msxsdtest/wildCards',valid),
+ STResList101 = [STRes100|STResList100],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO017.xml','./msxsdtest/wildCards',invalid,S100),
+ ITResList17 = [ITRes16|ITResList16],
+
+
+ ?line {STRes101,S101} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO018.xsd','./msxsdtest/wildCards',valid),
+ STResList102 = [STRes101|STResList101],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO018.xml','./msxsdtest/wildCards',valid,S101),
+ ITResList18 = [ITRes17|ITResList17],
+
+
+ ?line {STRes102,S102} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO019.xsd','./msxsdtest/wildCards',valid),
+ STResList103 = [STRes102|STResList102],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO019.xml','./msxsdtest/wildCards',valid,S102),
+ ITResList19 = [ITRes18|ITResList18],
+
+
+ ?line {STRes103,S103} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO020.xsd','./msxsdtest/wildCards',valid),
+ STResList104 = [STRes103|STResList103],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO020.xml','./msxsdtest/wildCards',invalid,S103),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes104,S104} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO021.xsd','./msxsdtest/wildCards',valid),
+ STResList105 = [STRes104|STResList104],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO021.xml','./msxsdtest/wildCards',valid,S104),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes105,S105} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO022.xsd','./msxsdtest/wildCards',valid),
+ STResList106 = [STRes105|STResList105],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO022.xml','./msxsdtest/wildCards',invalid,S105),
+ ITResList22 = [ITRes21|ITResList21],
+
+
+ ?line {STRes106,S106} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO023.xsd','./msxsdtest/wildCards',valid),
+ STResList107 = [STRes106|STResList106],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO023.xml','./msxsdtest/wildCards',valid,S106),
+ ITResList23 = [ITRes22|ITResList22],
+
+
+ ?line {STRes107,S107} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO024.xsd','./msxsdtest/wildCards',valid),
+ STResList108 = [STRes107|STResList107],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO024.xml','./msxsdtest/wildCards',invalid,S107),
+ ITResList24 = [ITRes23|ITResList23],
+
+
+ ?line {STRes108,S108} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO025.xsd','./msxsdtest/wildCards',valid),
+ STResList109 = [STRes108|STResList108],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO025.xml','./msxsdtest/wildCards',invalid,S108),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes109,S109} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO026.xsd','./msxsdtest/wildCards',valid),
+ STResList110 = [STRes109|STResList109],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO026.xml','./msxsdtest/wildCards',valid,S109),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes110,S110} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO027.xsd','./msxsdtest/wildCards',valid),
+ STResList111 = [STRes110|STResList110],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO027.xml','./msxsdtest/wildCards',valid,S110),
+ ITResList27 = [ITRes26|ITResList26],
+
+
+ ?line {STRes111,S111} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO028.xsd','./msxsdtest/wildCards',valid),
+ STResList112 = [STRes111|STResList111],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO028.xml','./msxsdtest/wildCards',invalid,S111),
+ ITResList28 = [ITRes27|ITResList27],
+
+
+ ?line {STRes112,S112} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO029.xsd','./msxsdtest/wildCards',valid),
+ STResList113 = [STRes112|STResList112],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO029.xml','./msxsdtest/wildCards',valid,S112),
+ ITResList29 = [ITRes28|ITResList28],
+
+
+ ?line {STRes113,S113} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO030.xsd','./msxsdtest/wildCards',valid),
+ STResList114 = [STRes113|STResList113],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO030.xml','./msxsdtest/wildCards',invalid,S113),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes114,S114} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO031.xsd','./msxsdtest/wildCards',valid),
+ STResList115 = [STRes114|STResList114],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO031.xml','./msxsdtest/wildCards',valid,S114),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes115,S115} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO032.xsd','./msxsdtest/wildCards',valid),
+ STResList116 = [STRes115|STResList115],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO032.xml','./msxsdtest/wildCards',invalid,S115),
+ ITResList32 = [ITRes31|ITResList31],
+
+
+ ?line {STRes116,S116} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO033.xsd','./msxsdtest/wildCards',valid),
+ STResList117 = [STRes116|STResList116],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO033.xml','./msxsdtest/wildCards',valid,S116),
+ ITResList33 = [ITRes32|ITResList32],
+
+
+ ?line {STRes117,S117} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO034.xsd','./msxsdtest/wildCards',valid),
+ STResList118 = [STRes117|STResList117],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO034.xml','./msxsdtest/wildCards',invalid,S117),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ ?line {STRes118,S118} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO035.xsd','./msxsdtest/wildCards',valid),
+ STResList119 = [STRes118|STResList118],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO035.xml','./msxsdtest/wildCards',invalid,S118),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes119,S119} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO037.xsd','./msxsdtest/wildCards',valid),
+ STResList120 = [STRes119|STResList119],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO037.xml','./msxsdtest/wildCards',valid,S119),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes120,S120} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO038.xsd','./msxsdtest/wildCards',valid),
+ STResList121 = [STRes120|STResList120],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO038.xml','./msxsdtest/wildCards',valid,S120),
+ ITResList37 = [ITRes36|ITResList36],
+
+
+ ?line {STRes121,S121} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO039.xsd','./msxsdtest/wildCards',valid),
+ STResList122 = [STRes121|STResList121],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO039.xml','./msxsdtest/wildCards',invalid,S121),
+ ITResList38 = [ITRes37|ITResList37],
+
+
+ ?line {STRes122,S122} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildO040.xsd','./msxsdtest/wildCards',valid),
+ STResList123 = [STRes122|STResList122],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildO040.xml','./msxsdtest/wildCards',valid,S122),
+ ITResList39 = [ITRes38|ITResList38],
+
+
+ ?line {STRes123,S123} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildP001.xsd','./msxsdtest/wildCards',valid),
+ STResList124 = [STRes123|STResList123],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildP001.xml','./msxsdtest/wildCards',valid,S123),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes124,S124} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildP002.xsd','./msxsdtest/wildCards',valid),
+ STResList125 = [STRes124|STResList124],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildP002.xml','./msxsdtest/wildCards',invalid,S124),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes125,S125} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildP003.xsd','./msxsdtest/wildCards',valid),
+ STResList126 = [STRes125|STResList125],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildP003.xml','./msxsdtest/wildCards',valid,S125),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes126,S126} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildP004.xsd','./msxsdtest/wildCards',valid),
+ STResList127 = [STRes126|STResList126],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildP004.xml','./msxsdtest/wildCards',valid,S126),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes127,S127} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildP005.xsd','./msxsdtest/wildCards',valid),
+ STResList128 = [STRes127|STResList127],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildP005.xml','./msxsdtest/wildCards',valid,S127),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes128,S128} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildP006.xsd','./msxsdtest/wildCards',valid),
+ STResList129 = [STRes128|STResList128],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildP006.xml','./msxsdtest/wildCards',valid,S128),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList129,ITResList45).
+
+%% Bugs - Wildcards.
+
+wildZ(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./msxsdtest/wildCards/wildZ001.xsd','./msxsdtest/wildCards',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./msxsdtest/wildCards/wildZ001.xml','./msxsdtest/wildCards',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList1).
+
diff --git a/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msx_failed_cases.log b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msx_failed_cases.log
new file mode 100644
index 0000000000..a89a9a798c
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msx_failed_cases.log
@@ -0,0 +1,2234 @@
+{att,{["attgD041.xsd",
+ "attgD039.xsd",
+ "attgD038.xsd",
+ "attgD037.xsd",
+ "attgD017.xsd",
+ "attgD015.xsd",
+ "attgD012.xsd",
+ "attgD009.xsd",
+ "attgD008.xsd",
+ "attgD007.xsd",
+ "attgD006.xsd",
+ "attgD002.xsd",
+ "attgC044.xsd",
+ "attgC033.xsd",
+ "attgC028.xsd",
+ "attgC027.xsd",
+ "attgC026.xsd",
+ "attgC025.xsd",
+ "attgC024.xsd",
+ "attgC023.xsd",
+ "attgC020.xsd",
+ "attgC010.xsd",
+ "attgC001.xsd",
+ "attgB006.xsd",
+ "attgB003.xsd",
+ "attgB002.xsd",
+ "attgA009.xsd",
+ "attgA008.xsd",
+ "attgA007.xsd",
+ "attgA006.xsd",
+ "attgA005.xsd",
+ "attgA004.xsd",
+ "attgA003.xsd",
+ "attgA002.xsd",
+ "attZ003.xsd",
+ "attQ013.xsd",
+ "attQ012.xsd",
+ "attQ011.xsd",
+ "attQ009.xsd",
+ "attQ008.xsd",
+ "attQ007.xsd",
+ "attQ006.xsd",
+ "attQ004.xsd",
+ "attQ002.xsd",
+ "attQ001.xsd",
+ "attP030.xsd",
+ "attP006.xsd",
+ "attP002.xsd",
+ "attP001.xsd",
+ "attO024.xsd",
+ "attO023.xsd",
+ "attO022.xsd",
+ "attO021.xsd",
+ "attO020.xsd",
+ "attO019.xsd",
+ "attO017.xsd",
+ "attO016.xsd",
+ "attO015.xsd",
+ "attO014.xsd",
+ "attO013.xsd",
+ "attO005.xsd",
+ "attO003.xsd",
+ "attO002.xsd",
+ "attKc018.xsd",
+ "attKc017.xsd",
+ "attKc016.xsd",
+ "attKc015.xsd",
+ "attKc014.xsd",
+ "attKc013.xsd",
+ "attKc012.xsd",
+ "attKc011.xsd",
+ "attKc010.xsd",
+ "attKc005.xsd",
+ "attKc004.xsd",
+ "attKc001.xsd",
+ "attKb018.xsd",
+ "attKb017.xsd",
+ "attKb016.xsd",
+ "attKb015.xsd",
+ "attKb014.xsd",
+ "attKb013.xsd",
+ "attKb012.xsd",
+ "attKb011.xsd",
+ "attKb010.xsd",
+ "attKb005.xsd",
+ "attKb004.xsd",
+ "attKb001.xsd",
+ "attKa015.xsd",
+ "attKa011.xsd",
+ "attKa009.xsd",
+ "attKa008.xsd",
+ "attKa007.xsd",
+ "attKa005.xsd",
+ "attKa004.xsd",
+ "attKa003.xsd",
+ "attI005.xsd",
+ "attI004.xsd",
+ "attH001.xsd",
+ "attE006.xsd",
+ "attC010.xsd",
+ "attC009.xsd",
+ "attC008.xsd",
+ "attC007.xsd",
+ "attC006.xsd",
+ "attC005.xsd",
+ "attA002.xsd",
+ "attA001.xsd",
+ "attgD036.xml",
+ "attgD034.xml",
+ "attgD033.xml",
+ "attgD031.xml",
+ "attgD029.xml",
+ "attgD027.xml",
+ "attgD026.xml",
+ "attgD024.xml",
+ "attgD022.xml",
+ "attgC038.xml",
+ "attgC037.xml",
+ "attgC036.xml",
+ "attgC035.xml",
+ "attgC026.xml",
+ "attgC024.xml",
+ "attgC007.xml",
+ "attZ002.xml",
+ "attZ001.xml",
+ "attP031.xml",
+ "attP020.xml",
+ "attP018.xml",
+ "attP016.xml",
+ "attP014.xml",
+ "attP012.xml",
+ "attP010.xml",
+ "attP009.xml",
+ "attP005.xml",
+ "attO012.xml",
+ "attO008.xml",
+ "attO006.xml",
+ "attMc012.xml",
+ "attMc011.xml",
+ "attMc010.xml",
+ "attMc003.xml",
+ "attMc002.xml",
+ "attMc001.xml",
+ "attMb012.xml",
+ "attMb011.xml",
+ "attMb010.xml",
+ "attMb003.xml",
+ "attMb002.xml",
+ "attMb001.xml",
+ "attMa002.xml",
+ "attMa001.xml",
+ "attLc005.xml",
+ "attLb005.xml",
+ "attLa005.xml",
+ "attJ008.xml",
+ "attJ003.xml",
+ "attJ002.xml",
+ "attF001.xml",
+ "attD007.xml",
+ "attD004.xml"],[]}}.
+{ct,{["ctO004.xsd",
+ "ctO002.xsd",
+ "ctN002.xsd",
+ "ctM004.xsd",
+ "ctM003.xsd",
+ "ctM001.xsd",
+ "ctJ003.xsd",
+ "ctJ002.xsd",
+ "ctI024.xsd",
+ "ctI020.xsd",
+ "ctI017.xsd",
+ "ctI016.xsd",
+ "ctI013.xsd",
+ "ctI012.xsd",
+ "ctI011.xsd",
+ "ctI008.xsd",
+ "ctI007.xsd",
+ "ctI006.xsd",
+ "ctH081.xsd",
+ "ctH078.xsd",
+ "ctH077.xsd",
+ "ctH076.xsd",
+ "ctH075.xsd",
+ "ctH074.xsd",
+ "ctH073.xsd",
+ "ctH072.xsd",
+ "ctH069.xsd",
+ "ctH068.xsd",
+ "ctH067.xsd",
+ "ctH066.xsd",
+ "ctH060.xsd",
+ "ctH059.xsd",
+ "ctH057.xsd",
+ "ctH056.xsd",
+ "ctH054.xsd",
+ "ctH053.xsd",
+ "ctH052.xsd",
+ "ctH051.xsd",
+ "ctH050.xsd",
+ "ctH048.xsd",
+ "ctH046.xsd",
+ "ctH045.xsd",
+ "ctH042.xsd",
+ "ctH041.xsd",
+ "ctH040.xsd",
+ "ctH039.xsd",
+ "ctH038.xsd",
+ "ctH036.xsd",
+ "ctH034.xsd",
+ "ctH033.xsd",
+ "ctH030.xsd",
+ "ctH029.xsd",
+ "ctH028.xsd",
+ "ctH027.xsd",
+ "ctH026.xsd",
+ "ctH024.xsd",
+ "ctH022.xsd",
+ "ctH021.xsd",
+ "ctH018.xsd",
+ "ctH017.xsd",
+ "ctH016.xsd",
+ "ctH015.xsd",
+ "ctH014.xsd",
+ "ctH012.xsd",
+ "ctH010.xsd",
+ "ctH009.xsd",
+ "ctH006.xsd",
+ "ctH005.xsd",
+ "ctH004.xsd",
+ "ctH003.xsd",
+ "ctH002.xsd",
+ "ctG076.xsd",
+ "ctG075.xsd",
+ "ctG071.xsd",
+ "ctG069.xsd",
+ "ctG068.xsd",
+ "ctG067.xsd",
+ "ctG066.xsd",
+ "ctG060.xsd",
+ "ctG058.xsd",
+ "ctG057.xsd",
+ "ctG056.xsd",
+ "ctG055.xsd",
+ "ctG054.xsd",
+ "ctG053.xsd",
+ "ctG049.xsd",
+ "ctG046.xsd",
+ "ctG045.xsd",
+ "ctG038.xsd",
+ "ctG034.xsd",
+ "ctG033.xsd",
+ "ctG026.xsd",
+ "ctG023.xsd",
+ "ctG022.xsd",
+ "ctG021.xsd",
+ "ctG020.xsd",
+ "ctG019.xsd",
+ "ctG013.xsd",
+ "ctG011.xsd",
+ "ctG010.xsd",
+ "ctG009.xsd",
+ "ctG008.xsd",
+ "ctG007.xsd",
+ "ctG001.xsd",
+ "ctF013.xsd",
+ "ctF009.xsd",
+ "ctF008.xsd",
+ "ctF007.xsd",
+ "ctF005.xsd",
+ "ctF004.xsd",
+ "ctF003.xsd",
+ "ctF002.xsd",
+ "ctE016.xsd",
+ "ctE015.xsd",
+ "ctE014.xsd",
+ "ctE013.xsd",
+ "ctE012.xsd",
+ "ctE011.xsd",
+ "ctE009.xsd",
+ "ctE005.xsd",
+ "ctE003.xsd",
+ "ctD043.xsd",
+ "ctD042.xsd",
+ "ctD041.xsd",
+ "ctD040.xsd",
+ "ctD032.xsd",
+ "ctD031.xsd",
+ "ctD011.xsd",
+ "ctD007.xsd",
+ "ctD004.xsd",
+ "ctD001.xsd",
+ "ctC005.xsd",
+ "ctC004.xsd",
+ "ctC003.xsd",
+ "ctC002.xsd",
+ "ctB125.xsd",
+ "ctB124.xsd",
+ "ctB123.xsd",
+ "ctB122.xsd",
+ "ctB121.xsd",
+ "ctB120.xsd",
+ "ctB119.xsd",
+ "ctB118.xsd",
+ "ctB117.xsd",
+ "ctB116.xsd",
+ "ctB115.xsd",
+ "ctB114.xsd",
+ "ctB112.xsd",
+ "ctB107.xsd",
+ "ctB106.xsd",
+ "ctB105.xsd",
+ "ctB104.xsd",
+ "ctB102.xsd",
+ "ctB101.xsd",
+ "ctB099.xsd",
+ "ctB094.xsd",
+ "ctB093.xsd",
+ "ctB092.xsd",
+ "ctB091.xsd",
+ "ctB090.xsd",
+ "ctB089.xsd",
+ "ctB088.xsd",
+ "ctB086.xsd",
+ "ctB080.xsd",
+ "ctB079.xsd",
+ "ctB078.xsd",
+ "ctB077.xsd",
+ "ctB076.xsd",
+ "ctB075.xsd",
+ "ctB074.xsd",
+ "ctB072.xsd",
+ "ctB066.xsd",
+ "ctB065.xsd",
+ "ctB064.xsd",
+ "ctB063.xsd",
+ "ctB062.xsd",
+ "ctB061.xsd",
+ "ctB060.xsd",
+ "ctB058.xsd",
+ "ctB052.xsd",
+ "ctB051.xsd",
+ "ctB050.xsd",
+ "ctB049.xsd",
+ "ctB048.xsd",
+ "ctB047.xsd",
+ "ctB046.xsd",
+ "ctB044.xsd",
+ "ctB038.xsd",
+ "ctB037.xsd",
+ "ctB036.xsd",
+ "ctB035.xsd",
+ "ctB034.xsd",
+ "ctB033.xsd",
+ "ctB032.xsd",
+ "ctB030.xsd",
+ "ctB029.xsd",
+ "ctB026.xsd",
+ "ctB025.xsd",
+ "ctB024.xsd",
+ "ctB023.xsd",
+ "ctB022.xsd",
+ "ctB021.xsd",
+ "ctB020.xsd",
+ "ctB019.xsd",
+ "ctB018.xsd",
+ "ctB016.xsd",
+ "ctB015.xsd",
+ "ctB014.xsd",
+ "ctB013.xsd",
+ "ctB012.xsd",
+ "ctB011.xsd",
+ "ctB010.xsd",
+ "ctB009.xsd",
+ "ctB008.xsd",
+ "ctB007.xsd",
+ "ctB005.xsd",
+ "ctB004.xsd",
+ "ctB002.xsd",
+ "ctA046.xsd",
+ "ctA044.xsd",
+ "ctA043.xsd",
+ "ctA042.xsd",
+ "ctA031.xsd",
+ "ctA030.xsd",
+ "ctA029.xsd",
+ "ctA028.xsd",
+ "ctA024.xsd",
+ "ctA023.xsd",
+ "ctA015.xsd",
+ "ctA014.xsd",
+ "ctO006.xml",
+ "ctL021.xml",
+ "ctL018.xml",
+ "ctL016.xml",
+ "ctL005.xml",
+ "ctJ001.xml",
+ "ctI049.xml",
+ "ctI048.xml",
+ "ctI045.xml",
+ "ctI042.xml",
+ "ctI041.xml",
+ "ctI040.xml",
+ "ctI035.xml",
+ "ctI032.xml",
+ "ctI031.xml",
+ "ctI030.xml",
+ "ctH082.xml",
+ "ctH069.xml",
+ "ctH068.xml",
+ "ctH067.xml",
+ "ctH066.xml",
+ "ctH060.xml",
+ "ctH057.xml",
+ "ctH056.xml",
+ "ctH046.xml",
+ "ctH045.xml",
+ "ctH035.xml",
+ "ctH034.xml",
+ "ctH033.xml",
+ "ctH032.xml",
+ "ctH031.xml",
+ "ctH025.xml",
+ "ctH023.xml",
+ "ctH022.xml",
+ "ctH021.xml",
+ "ctH020.xml",
+ "ctH019.xml",
+ "ctH013.xml",
+ "ctH011.xml",
+ "ctH010.xml",
+ "ctH009.xml",
+ "ctH008.xml",
+ "ctH007.xml",
+ "ctH001.xml",
+ "ctG071.xml",
+ "ctG069.xml",
+ "ctG068.xml",
+ "ctG067.xml",
+ "ctG066.xml",
+ "ctG060.xml",
+ "ctG058.xml",
+ "ctG057.xml",
+ "ctG056.xml",
+ "ctG055.xml",
+ "ctG049.xml",
+ "ctG047.xml",
+ "ctG046.xml",
+ "ctG045.xml",
+ "ctG035.xml",
+ "ctG034.xml",
+ "ctG033.xml",
+ "ctG023.xml",
+ "ctG022.xml",
+ "ctG021.xml",
+ "ctG020.xml",
+ "ctG019.xml",
+ "ctG013.xml",
+ "ctG011.xml",
+ "ctG010.xml",
+ "ctG009.xml",
+ "ctG008.xml",
+ "ctG007.xml",
+ "ctG001.xml",
+ "ctF014.xml",
+ "ctF013.xml",
+ "ctF011.xml",
+ "ctF007.xml",
+ "ctF006.xml",
+ "ctD032.xml",
+ "ctD031.xml"],[]}}.
+{elem,{["elemT015.xsd",
+ "elemT014.xsd",
+ "elemT013.xsd",
+ "elemT012.xsd",
+ "elemT011.xsd",
+ "elemS006.xsd",
+ "elemS005.xsd",
+ "elemS004.xsd",
+ "elemS001.xsd",
+ "elemQ006.xsd",
+ "elemQ004.xsd",
+ "elemP006.xsd",
+ "elemN006.xsd",
+ "elemL003.xsd",
+ "elemK007.xsd",
+ "elemJ020.xsd",
+ "elemJ019.xsd",
+ "elemJ015.xsd",
+ "elemJ012.xsd",
+ "elemJ007.xsd",
+ "elemH006.xsd",
+ "elemH005.xsd",
+ "elemH004.xsd",
+ "elemH003.xsd",
+ "elemG004.xsd",
+ "elemG003.xsd",
+ "elemE006.xsd",
+ "elemD005.xsd",
+ "elemD004.xsd",
+ "elemA014.xsd",
+ "elemA013.xsd",
+ "elemA011.xsd",
+ "elemA010.xsd",
+ "elemA009.xsd",
+ "elemA006.xsd",
+ "elemZ001.xml",
+ "elemZ002.xml",
+ "elemU007.xml",
+ "elemU006.xml",
+ "elemU005.xml",
+ "elemU003.xml",
+ "elemT058.xml",
+ "elemT044.xml",
+ "elemT043.xml",
+ "elemT042.xml",
+ "elemT041.xml",
+ "elemT040.xml",
+ "elemT039.xml",
+ "elemT029.xml",
+ "elemT028.xml",
+ "elemT027.xml",
+ "elemT026.xml",
+ "elemT024.xml",
+ "elemT022.xml",
+ "elemT018.xml",
+ "elemT015.xml",
+ "elemT014.xml",
+ "elemT004.xml",
+ "elemT001.xml",
+ "elemQ022.xml",
+ "elemQ019.xml",
+ "elemQ018.xml",
+ "elemO011.xml",
+ "elemO006.xml"],[]}}.
+{group,{["groupO027.xsd",
+ "groupO025.xsd",
+ "groupO024.xsd",
+ "groupO023.xsd",
+ "groupO022.xsd",
+ "groupO021.xsd",
+ "groupO020.xsd",
+ "groupO019.xsd",
+ "groupO018.xsd",
+ "groupO017.xsd",
+ "groupO016.xsd",
+ "groupO015.xsd",
+ "groupO013.xsd",
+ "groupO012.xsd",
+ "groupO011.xsd",
+ "groupO010.xsd",
+ "groupO003.xsd",
+ "groupO002.xsd",
+ "groupN025.xsd",
+ "groupN024.xsd",
+ "groupN023.xsd",
+ "groupN022.xsd",
+ "groupM002.xsd",
+ "groupL025.xsd",
+ "groupL024.xsd",
+ "groupL023.xsd",
+ "groupL022.xsd",
+ "groupK002.xsd",
+ "groupJ025.xsd",
+ "groupJ024.xsd",
+ "groupJ023.xsd",
+ "groupJ022.xsd",
+ "groupI003.xsd",
+ "groupI002.xsd",
+ "groupH019.xsd",
+ "groupH018.xsd",
+ "groupH016.xsd",
+ "groupH015.xsd",
+ "groupH014.xsd",
+ "groupH013.xsd",
+ "groupH012.xsd",
+ "groupH011.xsd",
+ "groupH010.xsd",
+ "groupH009.xsd",
+ "groupH008.xsd",
+ "groupH006.xsd",
+ "groupH005.xsd",
+ "groupH004.xsd",
+ "groupH003.xsd",
+ "groupH002.xsd",
+ "groupH001.xsd",
+ "groupG005.xsd",
+ "groupG004.xsd",
+ "groupG003.xsd",
+ "groupG001.xsd",
+ "groupF025.xsd",
+ "groupF024.xsd",
+ "groupF023.xsd",
+ "groupF022.xsd",
+ "groupE002.xsd",
+ "groupD003.xsd",
+ "groupD001.xsd",
+ "groupC010.xsd",
+ "groupC008.xsd",
+ "groupC007.xsd",
+ "groupC006.xsd",
+ "groupC004.xsd",
+ "groupB017.xsd",
+ "groupB015.xsd",
+ "groupB014.xsd",
+ "groupB013.xsd",
+ "groupB012.xsd",
+ "groupB002.xsd",
+ "groupB001.xsd",
+ "groupA012.xsd",
+ "groupA010.xsd",
+ "groupA009.xsd",
+ "groupA007.xsd",
+ "groupA006.xsd",
+ "groupA005.xsd",
+ "groupA004.xsd",
+ "groupA003.xsd",
+ "groupO009.xml",
+ "groupO007.xml",
+ "groupO004.xml",
+ "groupN019.xml",
+ "groupN015.xml",
+ "groupN012.xml",
+ "groupN008.xml",
+ "groupN007.xml",
+ "groupN006.xml",
+ "groupN003.xml",
+ "groupM005.xml",
+ "groupL019.xml",
+ "groupL015.xml",
+ "groupL012.xml",
+ "groupL008.xml",
+ "groupL007.xml",
+ "groupL006.xml",
+ "groupL003.xml",
+ "groupK005.xml",
+ "groupJ019.xml",
+ "groupJ015.xml",
+ "groupJ012.xml",
+ "groupJ008.xml",
+ "groupJ007.xml",
+ "groupJ006.xml",
+ "groupJ003.xml",
+ "groupI005.xml",
+ "groupH018.xml",
+ "groupH014.xml",
+ "groupH011.xml",
+ "groupH009.xml",
+ "groupH007.xml",
+ "groupH005.xml",
+ "groupH004.xml",
+ "groupH002.xml",
+ "groupH001.xml",
+ "groupG004.xml",
+ "groupF021.xml",
+ "groupF018.xml",
+ "groupF017.xml",
+ "groupF016.xml",
+ "groupF014.xml",
+ "groupF013.xml",
+ "groupF011.xml",
+ "groupF010.xml",
+ "groupF009.xml",
+ "groupF005.xml",
+ "groupF002.xml",
+ "groupE004.xml",
+ "groupE003.xml",
+ "groupB010.xml",
+ "groupB009.xml",
+ "groupB002.xml"],[]}}.
+{idc_,{["idc_gMonth_gMonth.xml",
+ "idc_gDay_gDay.xml",
+ "idc_gMonthDay_gMonthDay.xml",
+ "idc_gYear_gYear.xml",
+ "idc_gYearMonth_gYearMonth.xml",
+ "idc_date_date.xml",
+ "idc_time_time.xml",
+ "idc_dateTime_dateTime.xml",
+ "idc_duration_duration.xml",
+ "idc_NOTATION_NOTATION.xml",
+ "idc_QName_QName.xml",
+ "idc_anyURI_anyURI.xml",
+ "idc_double_double.xml",
+ "idc_unsignedByte_unsignedByte.xml",
+ "idc_unsignedByte_unsignedShort.xml",
+ "idc_unsignedByte_unsignedInt.xml",
+ "idc_unsignedByte_unsignedLong.xml",
+ "idc_unsignedByte_integer.xml",
+ "idc_unsignedByte_decimal.xml",
+ "idc_unsignedShort_unsignedByte.xml",
+ "idc_unsignedShort_unsignedShort.xml",
+ "idc_unsignedShort_unsignedInt.xml",
+ "idc_unsignedShort_unsignedLong.xml",
+ "idc_unsignedShort_integer.xml",
+ "idc_unsignedShort_decimal.xml",
+ "idc_unsignedInt_unsignedByte.xml",
+ "idc_unsignedInt_unsignedShort.xml",
+ "idc_unsignedInt_unsignedInt.xml",
+ "idc_unsignedInt_unsignedLong.xml",
+ "idc_unsignedInt_integer.xml",
+ "idc_unsignedInt_decimal.xml",
+ "idc_unsignedLong_unsignedByte.xml",
+ "idc_unsignedLong_unsignedShort.xml",
+ "idc_unsignedLong_unsignedInt.xml",
+ "idc_unsignedLong_unsignedLong.xml",
+ "idc_unsignedLong_integer.xml",
+ "idc_unsignedLong_decimal.xml",
+ "idc_positiveInteger_integer.xml",
+ "idc_positiveInteger_decimal.xml",
+ "idc_nonNegativeInteger_integer.xml",
+ "idc_nonNegativeInteger_decimal.xml",
+ "idc_byte_byte.xml",
+ "idc_byte_short.xml",
+ "idc_byte_int.xml",
+ "idc_byte_long.xml",
+ "idc_byte_integer.xml",
+ "idc_byte_decimal.xml",
+ "idc_short_byte.xml",
+ "idc_short_short.xml",
+ "idc_short_int.xml",
+ "idc_short_long.xml",
+ "idc_short_integer.xml",
+ "idc_short_decimal.xml",
+ "idc_int_byte.xml",
+ "idc_int_short.xml",
+ "idc_int_int.xml",
+ "idc_int_long.xml",
+ "idc_int_integer.xml",
+ "idc_int_decimal.xml",
+ "idc_long_byte.xml",
+ "idc_long_short.xml",
+ "idc_long_int.xml",
+ "idc_long_long.xml",
+ "idc_long_integer.xml",
+ "idc_long_decimal.xml",
+ "idc_negativeInteger_integer.xml",
+ "idc_negativeInteger_decimal.xml",
+ "idc_nonPositiveInteger_integer.xml",
+ "idc_nonPositiveInteger_decimal.xml",
+ "idc_integer_unsignedByte.xml",
+ "idc_integer_unsignedShort.xml",
+ "idc_integer_unsignedInt.xml",
+ "idc_integer_unsignedLong.xml",
+ "idc_integer_positiveInteger.xml",
+ "idc_integer_nonNegativeInteger.xml",
+ "idc_integer_byte.xml",
+ "idc_integer_short.xml",
+ "idc_integer_int.xml",
+ "idc_integer_long.xml",
+ "idc_integer_negativeInteger.xml",
+ "idc_integer_nonPositiveInteger.xml",
+ "idc_integer_integer.xml",
+ "idc_integer_decimal.xml",
+ "idc_decimal_unsignedByte.xml",
+ "idc_decimal_unsignedShort.xml",
+ "idc_decimal_unsignedInt.xml",
+ "idc_decimal_unsignedLong.xml",
+ "idc_decimal_positiveInteger.xml",
+ "idc_decimal_nonNegativeInteger.xml",
+ "idc_decimal_byte.xml",
+ "idc_decimal_short.xml",
+ "idc_decimal_int.xml",
+ "idc_decimal_long.xml",
+ "idc_decimal_negativeInteger.xml",
+ "idc_decimal_nonPositiveInteger.xml",
+ "idc_decimal_integer.xml",
+ "idc_decimal_decimal.xml",
+ "idc_float_float.xml",
+ "idc_boolean_boolean.xml",
+ "idc_NMTOKEN_NMTOKEN.xml",
+ "idc_NMTOKEN_token.xml",
+ "idc_NMTOKEN_normalizedString.xml",
+ "idc_NMTOKEN_string.xml",
+ "idc_IDREF_IDREF.xml",
+ "idc_IDREF_NCName.xml",
+ "idc_IDREF_Name.xml",
+ "idc_IDREF_token.xml",
+ "idc_IDREF_normalizedString.xml",
+ "idc_IDREF_string.xml",
+ "idc_ID_NCName.xml",
+ "idc_ID_Name.xml",
+ "idc_ID_token.xml",
+ "idc_ID_normalizedString.xml",
+ "idc_ID_string.xml",
+ "idc_NCName_IDREF.xml",
+ "idc_NCName_ID.xml",
+ "idc_NCName_NCName.xml",
+ "idc_NCName_Name.xml",
+ "idc_NCName_token.xml",
+ "idc_NCName_normalizedString.xml",
+ "idc_NCName_string.xml",
+ "idc_Name_IDREF.xml",
+ "idc_Name_ID.xml",
+ "idc_Name_NCName.xml",
+ "idc_Name_Name.xml",
+ "idc_Name_token.xml",
+ "idc_Name_normalizedString.xml",
+ "idc_Name_string.xml",
+ "idc_language_language.xml",
+ "idc_language_token.xml",
+ "idc_language_normalizedString.xml",
+ "idc_language_string.xml",
+ "idc_token_NMTOKEN.xml",
+ "idc_token_IDREF.xml",
+ "idc_token_ID.xml",
+ "idc_token_NCName.xml",
+ "idc_token_Name.xml",
+ "idc_token_language.xml",
+ "idc_token_token.xml",
+ "idc_token_normalizedString.xml",
+ "idc_token_string.xml",
+ "idc_normalizedString_NMTOKEN.xml",
+ "idc_normalizedString_IDREF.xml",
+ "idc_normalizedString_ID.xml",
+ "idc_normalizedString_NCName.xml",
+ "idc_normalizedString_Name.xml",
+ "idc_normalizedString_language.xml",
+ "idc_normalizedString_token.xml",
+ "idc_normalizedString_string.xml",
+ "idc_string_NMTOKEN.xml",
+ "idc_string_IDREF.xml",
+ "idc_string_ID.xml",
+ "idc_string_NCName.xml",
+ "idc_string_Name.xml",
+ "idc_string_language.xml",
+ "idc_string_token.xml",
+ "idc_string_normalizedString.xml",
+ "idc_string_string.xml"],["idc_unsignedByte_nonNegativeInteger.xsd",
+ "idc_unsignedByte_normalizedString.xsd",
+ "idc_unsignedShort_positiveInteger.xsd",
+ "idc_unsignedShort_nonNegativeInteger.xsd",
+ "idc_unsignedShort_normalizedString.xsd",
+ "idc_unsignedInt_nonNegativeInteger.xsd",
+ "idc_unsignedLong_nonNegativeInteger.xsd",
+ "idc_unsignedLong_normalizedString.xsd",
+ "idc_positiveInteger_unsignedShort.xsd",
+ "idc_positiveInteger_positiveInteger.xsd",
+ "idc_positiveInteger_nonNegativeInteger.xsd",
+ "idc_positiveInteger_normalizedString.xsd",
+ "idc_nonNegativeInteger_unsignedByte.xsd",
+ "idc_nonNegativeInteger_unsignedShort.xsd",
+ "idc_nonNegativeInteger_unsignedInt.xsd",
+ "idc_nonNegativeInteger_unsignedLong.xsd",
+ "idc_nonNegativeInteger_positiveInteger.xsd",
+ "idc_nonNegativeInteger_nonNegativeInteger.xsd",
+ "idc_nonNegativeInteger_base64Binary.xsd",
+ "idc_nonNegativeInteger_normalizedString.xsd",
+ "idc_negativeInteger_negativeInteger.xsd",
+ "idc_negativeInteger_nonPositiveInteger.xsd",
+ "idc_negativeInteger_normalizedString.xsd",
+ "idc_nonPositiveInteger_negativeInteger.xsd",
+ "idc_nonPositiveInteger_nonPositiveInteger.xsd",
+ "idc_nonPositiveInteger_normalizedString.xsd",
+ "idc_base64Binary_nonNegativeInteger.xsd",
+ "idc_base64Binary_normalizedString.xsd",
+ "idc_normalizedString_unsignedByte.xsd",
+ "idc_normalizedString_unsignedShort.xsd",
+ "idc_normalizedString_unsignedLong.xsd",
+ "idc_normalizedString_positiveInteger.xsd",
+ "idc_normalizedString_nonNegativeInteger.xsd",
+ "idc_normalizedString_negativeInteger.xsd",
+ "idc_normalizedString_nonPositiveInteger.xsd",
+ "idc_normalizedString_base64Binary.xsd",
+ "idc_normalizedString_normalizedString.xsd",
+ "idc_unsignedByte_nonNegativeInteger.xml",
+ "idc_unsignedByte_normalizedString.xml",
+ "idc_unsignedShort_positiveInteger.xml",
+ "idc_unsignedShort_nonNegativeInteger.xml",
+ "idc_unsignedShort_normalizedString.xml",
+ "idc_unsignedInt_nonNegativeInteger.xml",
+ "idc_unsignedLong_nonNegativeInteger.xml",
+ "idc_unsignedLong_normalizedString.xml",
+ "idc_positiveInteger_unsignedShort.xml",
+ "idc_positiveInteger_positiveInteger.xml",
+ "idc_positiveInteger_nonNegativeInteger.xml",
+ "idc_positiveInteger_normalizedString.xml",
+ "idc_nonNegativeInteger_unsignedByte.xml",
+ "idc_nonNegativeInteger_unsignedShort.xml",
+ "idc_nonNegativeInteger_unsignedInt.xml",
+ "idc_nonNegativeInteger_unsignedLong.xml",
+ "idc_nonNegativeInteger_positiveInteger.xml",
+ "idc_nonNegativeInteger_nonNegativeInteger.xml",
+ "idc_nonNegativeInteger_base64Binary.xml",
+ "idc_nonNegativeInteger_normalizedString.xml",
+ "idc_negativeInteger_negativeInteger.xml",
+ "idc_negativeInteger_nonPositiveInteger.xml",
+ "idc_negativeInteger_normalizedString.xml",
+ "idc_nonPositiveInteger_negativeInteger.xml",
+ "idc_nonPositiveInteger_nonPositiveInteger.xml",
+ "idc_nonPositiveInteger_normalizedString.xml",
+ "idc_base64Binary_nonNegativeInteger.xml",
+ "idc_base64Binary_normalizedString.xml",
+ "idc_normalizedString_unsignedByte.xml",
+ "idc_normalizedString_unsignedShort.xml",
+ "idc_normalizedString_unsignedLong.xml",
+ "idc_normalizedString_positiveInteger.xml",
+ "idc_normalizedString_nonNegativeInteger.xml",
+ "idc_normalizedString_negativeInteger.xml",
+ "idc_normalizedString_nonPositiveInteger.xml",
+ "idc_normalizedString_base64Binary.xml",
+ "idc_normalizedString_normalizedString.xml"]}}.
+{id,{["idK016.xsd",
+ "idK015.xsd",
+ "idJ204.xsd",
+ "idJ203.xsd",
+ "idJ202.xsd",
+ "idJ201.xsd",
+ "idJ200.xsd",
+ "idJ199.xsd",
+ "idJ198.xsd",
+ "idJ197.xsd",
+ "idJ196.xsd",
+ "idJ195.xsd",
+ "idJ194.xsd",
+ "idJ193.xsd",
+ "idJ192.xsd",
+ "idJ191.xsd",
+ "idJ190.xsd",
+ "idJ189.xsd",
+ "idJ188.xsd",
+ "idJ187.xsd",
+ "idJ186.xsd",
+ "idJ185.xsd",
+ "idJ184.xsd",
+ "idJ183.xsd",
+ "idJ182.xsd",
+ "idJ181.xsd",
+ "idJ180.xsd",
+ "idJ179.xsd",
+ "idJ178.xsd",
+ "idJ177.xsd",
+ "idJ176.xsd",
+ "idJ175.xsd",
+ "idJ174.xsd",
+ "idJ173.xsd",
+ "idJ172.xsd",
+ "idJ171.xsd",
+ "idJ170.xsd",
+ "idJ169.xsd",
+ "idJ168.xsd",
+ "idJ167.xsd",
+ "idJ166.xsd",
+ "idJ165.xsd",
+ "idJ164.xsd",
+ "idJ163.xsd",
+ "idJ162.xsd",
+ "idJ161.xsd",
+ "idJ160.xsd",
+ "idJ159.xsd",
+ "idJ158.xsd",
+ "idJ157.xsd",
+ "idJ156.xsd",
+ "idJ155.xsd",
+ "idJ154.xsd",
+ "idJ153.xsd",
+ "idJ152.xsd",
+ "idJ151.xsd",
+ "idJ150.xsd",
+ "idJ149.xsd",
+ "idJ148.xsd",
+ "idJ147.xsd",
+ "idJ146.xsd",
+ "idJ145.xsd",
+ "idJ144.xsd",
+ "idJ143.xsd",
+ "idJ142.xsd",
+ "idJ141.xsd",
+ "idJ140.xsd",
+ "idJ139.xsd",
+ "idJ138.xsd",
+ "idJ137.xsd",
+ "idJ136.xsd",
+ "idJ135.xsd",
+ "idJ134.xsd",
+ "idJ133.xsd",
+ "idJ132.xsd",
+ "idJ131.xsd",
+ "idJ130.xsd",
+ "idJ129.xsd",
+ "idJ128.xsd",
+ "idJ127.xsd",
+ "idJ126.xsd",
+ "idJ125.xsd",
+ "idJ124.xsd",
+ "idJ123.xsd",
+ "idJ122.xsd",
+ "idJ121.xsd",
+ "idJ120.xsd",
+ "idJ119.xsd",
+ "idJ118.xsd",
+ "idJ117.xsd",
+ "idJ116.xsd",
+ "idJ115.xsd",
+ "idJ114.xsd",
+ "idJ113.xsd",
+ "idJ112.xsd",
+ "idJ111.xsd",
+ "idJ110.xsd",
+ "idJ109.xsd",
+ "idJ108.xsd",
+ "idJ107.xsd",
+ "idJ106.xsd",
+ "idJ105.xsd",
+ "idJ104.xsd",
+ "idJ103.xsd",
+ "idJ102.xsd",
+ "idJ101.xsd",
+ "idJ100.xsd",
+ "idJ099.xsd",
+ "idJ098.xsd",
+ "idJ097.xsd",
+ "idJ096.xsd",
+ "idJ095.xsd",
+ "idJ094.xsd",
+ "idJ093.xsd",
+ "idJ092.xsd",
+ "idJ091.xsd",
+ "idJ090.xsd",
+ "idJ089.xsd",
+ "idJ088.xsd",
+ "idJ087.xsd",
+ "idJ086.xsd",
+ "idJ085.xsd",
+ "idJ084.xsd",
+ "idJ083.xsd",
+ "idJ082.xsd",
+ "idJ081.xsd",
+ "idJ080.xsd",
+ "idJ079.xsd",
+ "idJ078.xsd",
+ "idJ077.xsd",
+ "idJ076.xsd",
+ "idJ075.xsd",
+ "idJ074.xsd",
+ "idJ073.xsd",
+ "idJ072.xsd",
+ "idJ071.xsd",
+ "idJ070.xsd",
+ "idJ069.xsd",
+ "idJ068.xsd",
+ "idJ067.xsd",
+ "idJ066.xsd",
+ "idJ065.xsd",
+ "idJ064.xsd",
+ "idJ063.xsd",
+ "idJ062.xsd",
+ "idJ061.xsd",
+ "idJ060.xsd",
+ "idJ059.xsd",
+ "idJ058.xsd",
+ "idJ057.xsd",
+ "idJ055.xsd",
+ "idJ054.xsd",
+ "idJ053.xsd",
+ "idJ051.xsd",
+ "idJ050.xsd",
+ "idJ049.xsd",
+ "idJ048.xsd",
+ "idJ047.xsd",
+ "idJ046.xsd",
+ "idJ045.xsd",
+ "idJ044.xsd",
+ "idJ043.xsd",
+ "idJ042.xsd",
+ "idJ041.xsd",
+ "idJ040.xsd",
+ "idJ039.xsd",
+ "idJ038.xsd",
+ "idJ037.xsd",
+ "idJ035.xsd",
+ "idJ034.xsd",
+ "idJ033.xsd",
+ "idJ031.xsd",
+ "idJ029.xsd",
+ "idJ028.xsd",
+ "idJ027.xsd",
+ "idJ024.xsd",
+ "idJ023.xsd",
+ "idJ022.xsd",
+ "idJ021.xsd",
+ "idJ020.xsd",
+ "idJ019.xsd",
+ "idJ018.xsd",
+ "idJ014.xsd",
+ "idJ013.xsd",
+ "idJ012.xsd",
+ "idJ011.xsd",
+ "idJ010.xsd",
+ "idJ009.xsd",
+ "idJ004.xsd",
+ "idI144.xsd",
+ "idI143.xsd",
+ "idI142.xsd",
+ "idI141.xsd",
+ "idI140.xsd",
+ "idI139.xsd",
+ "idI138.xsd",
+ "idI137.xsd",
+ "idI136.xsd",
+ "idI135.xsd",
+ "idI134.xsd",
+ "idI133.xsd",
+ "idI132.xsd",
+ "idI131.xsd",
+ "idI130.xsd",
+ "idI129.xsd",
+ "idI128.xsd",
+ "idI127.xsd",
+ "idI126.xsd",
+ "idI125.xsd",
+ "idI124.xsd",
+ "idI123.xsd",
+ "idI122.xsd",
+ "idI121.xsd",
+ "idI120.xsd",
+ "idI119.xsd",
+ "idI118.xsd",
+ "idI117.xsd",
+ "idI116.xsd",
+ "idI115.xsd",
+ "idI114.xsd",
+ "idI113.xsd",
+ "idI112.xsd",
+ "idI111.xsd",
+ "idI110.xsd",
+ "idI109.xsd",
+ "idI108.xsd",
+ "idI107.xsd",
+ "idI106.xsd",
+ "idI105.xsd",
+ "idI104.xsd",
+ "idI103.xsd",
+ "idI102.xsd",
+ "idI101.xsd",
+ "idI100.xsd",
+ "idI099.xsd",
+ "idI098.xsd",
+ "idI097.xsd",
+ "idI096.xsd",
+ "idI095.xsd",
+ "idI094.xsd",
+ "idI093.xsd",
+ "idI092.xsd",
+ "idI091.xsd",
+ "idI090.xsd",
+ "idI089.xsd",
+ "idI088.xsd",
+ "idI087.xsd",
+ "idI086.xsd",
+ "idI085.xsd",
+ "idI084.xsd",
+ "idI083.xsd",
+ "idI082.xsd",
+ "idI081.xsd",
+ "idI080.xsd",
+ "idI079.xsd",
+ "idI078.xsd",
+ "idI077.xsd",
+ "idI076.xsd",
+ "idI075.xsd",
+ "idI074.xsd",
+ "idI073.xsd",
+ "idI072.xsd",
+ "idI071.xsd",
+ "idI070.xsd",
+ "idI069.xsd",
+ "idI068.xsd",
+ "idI067.xsd",
+ "idI066.xsd",
+ "idI065.xsd",
+ "idI064.xsd",
+ "idI063.xsd",
+ "idI062.xsd",
+ "idI061.xsd",
+ "idI060.xsd",
+ "idI059.xsd",
+ "idI058.xsd",
+ "idI057.xsd",
+ "idI056.xsd",
+ "idI055.xsd",
+ "idI054.xsd",
+ "idI053.xsd",
+ "idI052.xsd",
+ "idI051.xsd",
+ "idI050.xsd",
+ "idI049.xsd",
+ "idI048.xsd",
+ "idI047.xsd",
+ "idI046.xsd",
+ "idI045.xsd",
+ "idI044.xsd",
+ "idI043.xsd",
+ "idI042.xsd",
+ "idI041.xsd",
+ "idI040.xsd",
+ "idI039.xsd",
+ "idI037.xsd",
+ "idI036.xsd",
+ "idI035.xsd",
+ "idI034.xsd",
+ "idI033.xsd",
+ "idI032.xsd",
+ "idI031.xsd",
+ "idI030.xsd",
+ "idI029.xsd",
+ "idI027.xsd",
+ "idI026.xsd",
+ "idI025.xsd",
+ "idI024.xsd",
+ "idI021.xsd",
+ "idI020.xsd",
+ "idI019.xsd",
+ "idI017.xsd",
+ "idI013.xsd",
+ "idI012.xsd",
+ "idI011.xsd",
+ "idI010.xsd",
+ "idI009.xsd",
+ "idI008.xsd",
+ "idI002.xsd",
+ "idE033.xsd",
+ "idE032.xsd",
+ "idE031.xsd",
+ "idE030.xsd",
+ "idE029.xsd",
+ "idE028.xsd",
+ "idE027.xsd",
+ "idE026.xsd",
+ "idE025.xsd",
+ "idE024.xsd",
+ "idE023.xsd",
+ "idE022.xsd",
+ "idE021.xsd",
+ "idE020.xsd",
+ "idE019.xsd",
+ "idE018.xsd",
+ "idE017.xsd",
+ "idE014.xsd",
+ "idE012.xsd",
+ "idE011.xsd",
+ "idE007.xsd",
+ "idE006.xsd",
+ "idE005.xsd",
+ "idE004.xsd",
+ "idE003.xsd",
+ "idE002.xsd",
+ "idD033.xsd",
+ "idD032.xsd",
+ "idD031.xsd",
+ "idD030.xsd",
+ "idD029.xsd",
+ "idD028.xsd",
+ "idD027.xsd",
+ "idD026.xsd",
+ "idD025.xsd",
+ "idD024.xsd",
+ "idD023.xsd",
+ "idD022.xsd",
+ "idD021.xsd",
+ "idD020.xsd",
+ "idD019.xsd",
+ "idD018.xsd",
+ "idD017.xsd",
+ "idD014.xsd",
+ "idD012.xsd",
+ "idD011.xsd",
+ "idD006.xsd",
+ "idD005.xsd",
+ "idD004.xsd",
+ "idD003.xsd",
+ "idD002.xsd",
+ "idC047.xsd",
+ "idC046.xsd",
+ "idC045.xsd",
+ "idC032.xsd",
+ "idC031.xsd",
+ "idC030.xsd",
+ "idC029.xsd",
+ "idC028.xsd",
+ "idC027.xsd",
+ "idC026.xsd",
+ "idC025.xsd",
+ "idC024.xsd",
+ "idC023.xsd",
+ "idC021.xsd",
+ "idC020.xsd",
+ "idC018.xsd",
+ "idC017.xsd",
+ "idC016.xsd",
+ "idC007.xsd",
+ "idC006.xsd",
+ "idC005.xsd",
+ "idC004.xsd",
+ "idC003.xsd",
+ "idC002.xsd",
+ "idB044.xsd",
+ "idB043.xsd",
+ "idB042.xsd",
+ "idB035.xsd",
+ "idB032.xsd",
+ "idB031.xsd",
+ "idB030.xsd",
+ "idB029.xsd",
+ "idB028.xsd",
+ "idB027.xsd",
+ "idB026.xsd",
+ "idB025.xsd",
+ "idB024.xsd",
+ "idB023.xsd",
+ "idB021.xsd",
+ "idB020.xsd",
+ "idB019.xsd",
+ "idB017.xsd",
+ "idB016.xsd",
+ "idB007.xsd",
+ "idB006.xsd",
+ "idB004.xsd",
+ "idB003.xsd",
+ "idB002.xsd",
+ "idA044.xsd",
+ "idA043.xsd",
+ "idA042.xsd",
+ "idA035.xsd",
+ "idA032.xsd",
+ "idA031.xsd",
+ "idA030.xsd",
+ "idA029.xsd",
+ "idA028.xsd",
+ "idA027.xsd",
+ "idA026.xsd",
+ "idA025.xsd",
+ "idA024.xsd",
+ "idA023.xsd",
+ "idA021.xsd",
+ "idA020.xsd",
+ "idA019.xsd",
+ "idA018.xsd",
+ "idA016.xsd",
+ "idA007.xsd",
+ "idA006.xsd",
+ "idA005.xsd",
+ "idA004.xsd",
+ "idA003.xsd",
+ "idA002.xsd",
+ "idL102.xml",
+ "idL100.xml",
+ "idL098.xml",
+ "idL096.xml",
+ "idL094.xml",
+ "idL092.xml",
+ "idL090.xml",
+ "idL075.xml",
+ "idL072.xml",
+ "idL069.xml",
+ "idL065.xml",
+ "idL062.xml",
+ "idL061.xml",
+ "idL057.xml",
+ "idL056.xml",
+ "idL052.xml",
+ "idL049.xml",
+ "idL048.xml",
+ "idL025.xml",
+ "idL024.xml",
+ "idL023.xml",
+ "idK015.xml",
+ "idK014.xml",
+ "idK012.xml",
+ "idK003.xml",
+ "idH034.xml",
+ "idH032.xml",
+ "idH023.xml",
+ "idH012.xml",
+ "idH010.xml",
+ "idH006.xml",
+ "idG030.xml",
+ "idG028.xml",
+ "idG019.xml",
+ "idG012.xml",
+ "idG011.xml",
+ "idG006.xml",
+ "idF036.xml",
+ "idF034.xml",
+ "idF033.xml",
+ "idF031.xml",
+ "idF026.xml",
+ "idF025.xml",
+ "idF017.xml",
+ "idF016.xml",
+ "idF014.xml",
+ "idF013.xml",
+ "idF012.xml",
+ "idF010.xml",
+ "idF009.xml",
+ "idF004.xml",
+ "idF003.xml"],[]}}.
+{mgABCD,{["mgC013.xsd",
+ "mgC009.xsd",
+ "mgC008.xsd",
+ "mgB010.xsd",
+ "mgB009.xsd",
+ "mgB008.xsd",
+ "mgB007.xsd",
+ "mgB003.xsd",
+ "mgAb007.xsd",
+ "mgAb006.xsd",
+ "mgAb004.xsd",
+ "mgAb003.xsd",
+ "mgAb002.xsd",
+ "mgAa007.xsd",
+ "mgAa006.xsd",
+ "mgAa004.xsd",
+ "mgAa002.xsd",
+ "mgA019.xsd",
+ "mgA018.xsd",
+ "mgA013.xsd",
+ "mgA012.xsd",
+ "mgA011.xsd",
+ "mgA008.xsd",
+ "mgA007.xsd",
+ "mgA005.xsd",
+ "mgA004.xsd",
+ "mgA003.xsd",
+ "mgA002.xsd",
+ "mgA015.xml"],[]}}.
+{mgEFG,{["mgG030.xsd",
+ "mgG029.xsd",
+ "mgG028.xsd",
+ "mgG027.xsd",
+ "mgG025.xsd",
+ "mgG002.xsd",
+ "mgF023.xsd",
+ "mgF022.xsd",
+ "mgF021.xsd",
+ "mgF020.xsd",
+ "mgF003.xsd",
+ "mgEb002.xsd",
+ "mgEa005.xsd",
+ "mgEa004.xsd",
+ "mgEa002.xsd",
+ "mgE012.xsd",
+ "mgE011.xsd",
+ "mgE010.xsd",
+ "mgE008.xsd",
+ "mgE007.xsd",
+ "mgE006.xsd",
+ "mgE005.xsd",
+ "mgE004.xsd",
+ "mgE003.xsd",
+ "mgE002.xsd",
+ "mgG026.xml",
+ "mgG023.xml",
+ "mgG013.xml",
+ "mgF019.xml",
+ "mgF016.xml",
+ "mgF015.xml",
+ "mgF014.xml",
+ "mgF013.xml",
+ "mgF012.xml",
+ "mgF011.xml",
+ "mgF010.xml",
+ "mgF009.xml",
+ "mgEb005.xml",
+ "mgEb004.xml",
+ "mgE014.xml"],[]}}.
+{mgHIJ,{["mgJ030.xsd",
+ "mgJ029.xsd",
+ "mgJ028.xsd",
+ "mgJ027.xsd",
+ "mgJ025.xsd",
+ "mgJ002.xsd",
+ "mgI023.xsd",
+ "mgI022.xsd",
+ "mgI021.xsd",
+ "mgI020.xsd",
+ "mgI003.xsd",
+ "mgHb002.xsd",
+ "mgHa005.xsd",
+ "mgHa004.xsd",
+ "mgHa002.xsd",
+ "mgH012.xsd",
+ "mgH011.xsd",
+ "mgH008.xsd",
+ "mgH007.xsd",
+ "mgH006.xsd",
+ "mgH005.xsd",
+ "mgH004.xsd",
+ "mgH003.xsd",
+ "mgH002.xsd",
+ "mgJ026.xml",
+ "mgJ023.xml",
+ "mgJ013.xml",
+ "mgJ001.xml",
+ "mgHb005.xml",
+ "mgHb004.xml",
+ "mgH015.xml"],[]}}.
+{mgOP,{["mgP056.xsd",
+ "mgP055.xsd",
+ "mgP049.xsd",
+ "mgP042.xsd",
+ "mgP040.xsd",
+ "mgP039.xsd",
+ "mgO036.xsd",
+ "mgO029.xsd",
+ "mgO027.xsd",
+ "mgO019.xsd",
+ "mgO018.xsd",
+ "mgO015.xsd",
+ "mgO008.xsd",
+ "mgO003.xsd",
+ "mgO001.xsd",
+ "mgO038.xml",
+ "mgO037.xml",
+ "mgO036.xml",
+ "mgO035.xml",
+ "mgO034.xml",
+ "mgO031.xml",
+ "mgO029.xml",
+ "mgO017.xml",
+ "mgO016.xml",
+ "mgO015.xml",
+ "mgO014.xml",
+ "mgO013.xml",
+ "mgO011.xml",
+ "mgO010.xml",
+ "mgO009.xml",
+ "mgO008.xml",
+ "mgO007.xml",
+ "mgO006.xml",
+ "mgO005.xml"],[]}}.
+{mgQR,{["mgR022.xsd",
+ "mgR021.xsd",
+ "mgR020.xsd",
+ "mgR019.xsd",
+ "mgR018.xsd",
+ "mgR017.xsd",
+ "mgR016.xsd",
+ "mgR015.xsd",
+ "mgR014.xsd",
+ "mgR013.xsd",
+ "mgR012.xsd",
+ "mgR011.xsd",
+ "mgR010.xsd",
+ "mgR009.xsd",
+ "mgR008.xsd",
+ "mgR007.xsd",
+ "mgR006.xsd",
+ "mgR005.xsd",
+ "mgR004.xsd",
+ "mgR003.xsd",
+ "mgR002.xsd",
+ "mgR001.xsd",
+ "mgQ021.xsd",
+ "mgQ013.xsd",
+ "mgQ012.xsd",
+ "mgQ011.xsd",
+ "mgQ010.xsd",
+ "mgQ005.xsd",
+ "mgQ004.xsd",
+ "mgQ001.xsd",
+ "mgQ017.xml",
+ "mgQ016.xml",
+ "mgQ015.xml",
+ "mgQ014.xml",
+ "mgQ002.xml"],[]}}.
+{particlesAB,{["particlesB015.xml",
+ "particlesB010.xml",
+ "particlesA013.xml",
+ "particlesA011.xml",
+ "particlesA010.xml",
+ "particlesA009.xml",
+ "particlesA007.xml",
+ "particlesA006.xml",
+ "particlesA005.xml"],[]}}.
+{particlesCDE,{["particlesEd001.xsd",
+ "particlesEc009.xsd",
+ "particlesEb015.xsd",
+ "particlesEa025.xsd",
+ "particlesEa024.xsd",
+ "particlesEa023.xsd",
+ "particlesEa022.xsd",
+ "particlesEc039.xml",
+ "particlesEc038.xml",
+ "particlesEc023.xml",
+ "particlesEc022.xml",
+ "particlesEc013.xml",
+ "particlesEc010.xml",
+ "particlesEc007.xml",
+ "particlesEc003.xml",
+ "particlesEb030.xml",
+ "particlesEb022.xml",
+ "particlesEb016.xml",
+ "particlesEb013.xml",
+ "particlesEb006.xml",
+ "particlesEa018.xml",
+ "particlesEa017.xml",
+ "particlesEa011.xml",
+ "particlesEa010.xml",
+ "particlesEa004.xml",
+ "particlesEa003.xml",
+ "particlesC039.xml",
+ "particlesC036.xml",
+ "particlesC035.xml",
+ "particlesC032.xml",
+ "particlesC031.xml",
+ "particlesC025.xml",
+ "particlesC024.xml",
+ "particlesC023.xml",
+ "particlesC022.xml",
+ "particlesC020.xml",
+ "particlesC019.xml",
+ "particlesC018.xml",
+ "particlesC017.xml",
+ "particlesC014.xml",
+ "particlesC013.xml",
+ "particlesC012.xml",
+ "particlesC010.xml",
+ "particlesC009.xml"],[]}}.
+{particlesFHI,{["particlesIk026.xsd",
+ "particlesIk024.xsd",
+ "particlesIk021.xsd",
+ "particlesIk019.xsd",
+ "particlesIk012.xsd",
+ "particlesIk007.xsd",
+ "particlesIk006.xsd",
+ "particlesIk005.xsd",
+ "particlesIk003.xsd",
+ "particlesIk002.xsd",
+ "particlesIj016.xsd",
+ "particlesIj015.xsd",
+ "particlesIj013.xsd",
+ "particlesIj011.xsd",
+ "particlesIj010.xsd",
+ "particlesIj009.xsd",
+ "particlesIj008.xsd",
+ "particlesIj007.xsd",
+ "particlesIj004.xsd",
+ "particlesIj003.xsd",
+ "particlesIh001.xsd",
+ "particlesIg016.xsd",
+ "particlesIg013.xsd",
+ "particlesIg010.xsd",
+ "particlesIg009.xsd",
+ "particlesIg008.xsd",
+ "particlesIg007.xsd",
+ "particlesIg004.xsd",
+ "particlesIf009.xsd",
+ "particlesIf008.xsd",
+ "particlesIf007.xsd",
+ "particlesIe014.xsd",
+ "particlesIe012.xsd",
+ "particlesIe009.xsd",
+ "particlesIe006.xsd",
+ "particlesId012.xsd",
+ "particlesId006.xsd",
+ "particlesId003.xsd",
+ "particlesIb007.xsd",
+ "particlesIb006.xsd",
+ "particlesIa008.xsd",
+ "particlesIa006.xsd",
+ "particlesHb011.xsd",
+ "particlesHb008.xsd",
+ "particlesHb004.xsd",
+ "particlesHb003.xsd",
+ "particlesHb001.xsd",
+ "particlesHa008.xsd",
+ "particlesHa007.xsd",
+ "particlesHa006.xsd",
+ "particlesHa005.xsd",
+ "particlesHa004.xsd",
+ "particlesHa003.xsd",
+ "particlesHa002.xsd",
+ "particlesFb006.xsd",
+ "particlesFb005.xsd",
+ "particlesFb004.xsd",
+ "particlesFb003.xsd",
+ "particlesFb002.xsd",
+ "particlesIk026.xml",
+ "particlesIk012.xml",
+ "particlesIf006.xml",
+ "particlesIf001.xml",
+ "particlesIe004.xml",
+ "particlesHa007.xml",
+ "particlesHa006.xml",
+ "particlesHa005.xml",
+ "particlesHa004.xml",
+ "particlesHa003.xml",
+ "particlesHa002.xml",
+ "particlesFb004.xml",
+ "particlesFb001.xml",
+ "particlesFa001.xml"],[]}}.
+{particlesJ,{["particlesJk015.xsd",
+ "particlesJk013.xsd",
+ "particlesJk011.xsd",
+ "particlesJk010.xsd",
+ "particlesJk008.xsd",
+ "particlesJk007.xsd",
+ "particlesJk005.xsd",
+ "particlesJk004.xsd",
+ "particlesJk003.xsd",
+ "particlesJk002.xsd",
+ "particlesJk001.xsd",
+ "particlesJj011.xsd",
+ "particlesJj010.xsd",
+ "particlesJj009.xsd",
+ "particlesJj008.xsd",
+ "particlesJj007.xsd",
+ "particlesJj005.xsd",
+ "particlesJj004.xsd",
+ "particlesJj002.xsd",
+ "particlesJj001.xsd",
+ "particlesJf016.xsd",
+ "particlesJf015.xsd",
+ "particlesJf013.xsd",
+ "particlesJf011.xsd",
+ "particlesJf010.xsd",
+ "particlesJf008.xsd",
+ "particlesJf007.xsd",
+ "particlesJf005.xsd",
+ "particlesJf004.xsd",
+ "particlesJf003.xsd",
+ "particlesJf002.xsd",
+ "particlesJf001.xsd",
+ "particlesJe011.xsd",
+ "particlesJe010.xsd",
+ "particlesJe009.xsd",
+ "particlesJe008.xsd",
+ "particlesJe007.xsd",
+ "particlesJe005.xsd",
+ "particlesJe004.xsd",
+ "particlesJe002.xsd",
+ "particlesJe001.xsd",
+ "particlesJd016.xsd",
+ "particlesJd015.xsd",
+ "particlesJd013.xsd",
+ "particlesJd011.xsd",
+ "particlesJd010.xsd",
+ "particlesJd008.xsd",
+ "particlesJd007.xsd",
+ "particlesJd005.xsd",
+ "particlesJd004.xsd",
+ "particlesJd003.xsd",
+ "particlesJd002.xsd",
+ "particlesJd001.xsd",
+ "particlesJc011.xsd",
+ "particlesJc010.xsd",
+ "particlesJc009.xsd",
+ "particlesJc008.xsd",
+ "particlesJc007.xsd",
+ "particlesJc005.xsd",
+ "particlesJc004.xsd",
+ "particlesJc002.xsd",
+ "particlesJc001.xsd",
+ "particlesJb016.xsd",
+ "particlesJb015.xsd",
+ "particlesJb013.xsd",
+ "particlesJb011.xsd",
+ "particlesJb010.xsd",
+ "particlesJb008.xsd",
+ "particlesJb007.xsd",
+ "particlesJb005.xsd",
+ "particlesJb004.xsd",
+ "particlesJb003.xsd",
+ "particlesJb002.xsd",
+ "particlesJb001.xsd",
+ "particlesJa011.xsd",
+ "particlesJa010.xsd",
+ "particlesJa009.xsd",
+ "particlesJa008.xsd",
+ "particlesJa007.xsd",
+ "particlesJa005.xsd",
+ "particlesJa004.xsd",
+ "particlesJa002.xsd",
+ "particlesJa001.xsd",
+ "particlesJk015.xml",
+ "particlesJk013.xml",
+ "particlesJk011.xml",
+ "particlesJk010.xml",
+ "particlesJk008.xml",
+ "particlesJk007.xml",
+ "particlesJk005.xml",
+ "particlesJk004.xml",
+ "particlesJk003.xml",
+ "particlesJk002.xml",
+ "particlesJk001.xml",
+ "particlesJj011.xml",
+ "particlesJj010.xml",
+ "particlesJj009.xml",
+ "particlesJj008.xml",
+ "particlesJj007.xml",
+ "particlesJj005.xml",
+ "particlesJj004.xml",
+ "particlesJj002.xml",
+ "particlesJj001.xml",
+ "particlesJf016.xml",
+ "particlesJf015.xml",
+ "particlesJf013.xml",
+ "particlesJf011.xml",
+ "particlesJf010.xml",
+ "particlesJf008.xml",
+ "particlesJf007.xml",
+ "particlesJf005.xml",
+ "particlesJf004.xml",
+ "particlesJf003.xml",
+ "particlesJf002.xml",
+ "particlesJf001.xml",
+ "particlesJe011.xml",
+ "particlesJe010.xml",
+ "particlesJe009.xml",
+ "particlesJe008.xml",
+ "particlesJe007.xml",
+ "particlesJe005.xml",
+ "particlesJe004.xml",
+ "particlesJe002.xml",
+ "particlesJe001.xml",
+ "particlesJd016.xml",
+ "particlesJd015.xml",
+ "particlesJd013.xml",
+ "particlesJd011.xml",
+ "particlesJd010.xml",
+ "particlesJd008.xml",
+ "particlesJd007.xml",
+ "particlesJd005.xml",
+ "particlesJd004.xml",
+ "particlesJd003.xml",
+ "particlesJd002.xml",
+ "particlesJd001.xml",
+ "particlesJc011.xml",
+ "particlesJc010.xml",
+ "particlesJc009.xml",
+ "particlesJc008.xml",
+ "particlesJc007.xml",
+ "particlesJc005.xml",
+ "particlesJc004.xml",
+ "particlesJc002.xml",
+ "particlesJc001.xml",
+ "particlesJb016.xml",
+ "particlesJb015.xml",
+ "particlesJb013.xml",
+ "particlesJb011.xml",
+ "particlesJb010.xml",
+ "particlesJb008.xml",
+ "particlesJb007.xml",
+ "particlesJb005.xml",
+ "particlesJb004.xml",
+ "particlesJb003.xml",
+ "particlesJb002.xml",
+ "particlesJb001.xml",
+ "particlesJa011.xml",
+ "particlesJa010.xml",
+ "particlesJa009.xml",
+ "particlesJa008.xml",
+ "particlesJa007.xml",
+ "particlesJa005.xml",
+ "particlesJa004.xml",
+ "particlesJa002.xml",
+ "particlesJa001.xml"],[]}}.
+{particlesKOSRTQUVW,{["particlesW015.xsd",
+ "particlesW013.xsd",
+ "particlesW010.xsd",
+ "particlesW007.xsd",
+ "particlesW005.xsd",
+ "particlesW002.xsd",
+ "particlesV015.xsd",
+ "particlesV014.xsd",
+ "particlesV013.xsd",
+ "particlesV012.xsd",
+ "particlesV011.xsd",
+ "particlesV010.xsd",
+ "particlesV009.xsd",
+ "particlesV008.xsd",
+ "particlesV007.xsd",
+ "particlesV006.xsd",
+ "particlesV003.xsd",
+ "particlesU007.xsd",
+ "particlesU005.xsd",
+ "particlesU004.xsd",
+ "particlesU003.xsd",
+ "particlesQ031.xsd",
+ "particlesQ028.xsd",
+ "particlesQ027.xsd",
+ "particlesQ026.xsd",
+ "particlesQ025.xsd",
+ "particlesQ023.xsd",
+ "particlesQ021.xsd",
+ "particlesQ018.xsd",
+ "particlesQ012.xsd",
+ "particlesQ008.xsd",
+ "particlesQ006.xsd",
+ "particlesT011.xsd",
+ "particlesT010.xsd",
+ "particlesT009.xsd",
+ "particlesT008.xsd",
+ "particlesT002.xsd",
+ "particlesR031.xsd",
+ "particlesR028.xsd",
+ "particlesR027.xsd",
+ "particlesR026.xsd",
+ "particlesR025.xsd",
+ "particlesR023.xsd",
+ "particlesR021.xsd",
+ "particlesR018.xsd",
+ "particlesR014.xsd",
+ "particlesR010.xsd",
+ "particlesR006.xsd",
+ "particlesS011.xsd",
+ "particlesS007.xsd",
+ "particlesS004.xsd",
+ "particlesS003.xsd",
+ "particlesS001.xsd",
+ "particlesOb058.xsd",
+ "particlesOb051.xsd",
+ "particlesOb050.xsd",
+ "particlesOb049.xsd",
+ "particlesOb046.xsd",
+ "particlesOb045.xsd",
+ "particlesOb044.xsd",
+ "particlesOb043.xsd",
+ "particlesOb041.xsd",
+ "particlesOb040.xsd",
+ "particlesOb039.xsd",
+ "particlesOb038.xsd",
+ "particlesOb037.xsd",
+ "particlesOb036.xsd",
+ "particlesOb035.xsd",
+ "particlesOb034.xsd",
+ "particlesOb033.xsd",
+ "particlesOb031.xsd",
+ "particlesOb030.xsd",
+ "particlesOb029.xsd",
+ "particlesOb028.xsd",
+ "particlesOb027.xsd",
+ "particlesOb026.xsd",
+ "particlesOb025.xsd",
+ "particlesOb024.xsd",
+ "particlesOb023.xsd",
+ "particlesOb021.xsd",
+ "particlesOb020.xsd",
+ "particlesOb019.xsd",
+ "particlesOb017.xsd",
+ "particlesOb016.xsd",
+ "particlesOb014.xsd",
+ "particlesOb011.xsd",
+ "particlesOb010.xsd",
+ "particlesOa015.xsd",
+ "particlesOa010.xsd",
+ "particlesOa009.xsd",
+ "particlesOa008.xsd",
+ "particlesOa007.xsd",
+ "particlesOa005.xsd",
+ "particlesOa004.xsd",
+ "particlesOa002.xsd",
+ "particlesK008.xsd",
+ "particlesK005.xsd",
+ "particlesK003.xsd",
+ "particlesK002.xsd",
+ "particlesK001.xsd",
+ "particlesV015.xml",
+ "particlesV014.xml",
+ "particlesV013.xml",
+ "particlesV012.xml",
+ "particlesV011.xml",
+ "particlesV010.xml",
+ "particlesV009.xml",
+ "particlesV008.xml",
+ "particlesV007.xml",
+ "particlesV006.xml",
+ "particlesV003.xml",
+ "particlesU007.xml",
+ "particlesU005.xml",
+ "particlesU004.xml",
+ "particlesU003.xml",
+ "particlesQ022.xml",
+ "particlesQ020.xml",
+ "particlesQ019.xml",
+ "particlesQ017.xml",
+ "particlesQ016.xml",
+ "particlesT003.xml",
+ "particlesR022.xml",
+ "particlesR019.xml",
+ "particlesR016.xml",
+ "particlesR011.xml",
+ "particlesS011.xml",
+ "particlesS007.xml",
+ "particlesS004.xml",
+ "particlesS003.xml",
+ "particlesS001.xml",
+ "particlesOb055.xml",
+ "particlesOb042.xml",
+ "particlesOb007.xml",
+ "particlesOb003.xml",
+ "particlesOa014.xml",
+ "particlesOa013.xml",
+ "particlesOa012.xml",
+ "particlesOa011.xml",
+ "particlesK008.xml",
+ "particlesK005.xml",
+ "particlesK003.xml",
+ "particlesK002.xml",
+ "particlesK001.xml"],[]}}.
+{stABCDE,{["stE016.xsd",
+ "stE015.xsd",
+ "stE014.xsd",
+ "stE012.xsd",
+ "stE008.xsd",
+ "stE005.xsd",
+ "stE004.xsd",
+ "stE003.xsd",
+ "stE002.xsd",
+ "stD020.xsd",
+ "stD018.xsd",
+ "stD017.xsd",
+ "stD016.xsd",
+ "stD010.xsd",
+ "stD009.xsd",
+ "stD005.xsd",
+ "stD004.xsd",
+ "stD003.xsd",
+ "stD002.xsd",
+ "stC032.xsd",
+ "stC029.xsd",
+ "stC009.xsd",
+ "stC008.xsd",
+ "stC007.xsd",
+ "stC006.xsd",
+ "stC003.xsd",
+ "stB024.xsd",
+ "stB023.xsd",
+ "stB022.xsd",
+ "stB021.xsd",
+ "stB020.xsd",
+ "stB019.xsd",
+ "stB018.xsd",
+ "stB017.xsd",
+ "stB016.xsd",
+ "stB014.xsd",
+ "stB013.xsd",
+ "stB010.xsd",
+ "stB009.xsd",
+ "stB004.xsd",
+ "stB002.xsd",
+ "stB001.xsd",
+ "stA017.xsd",
+ "stA015.xsd",
+ "stA014.xsd",
+ "stA013.xsd",
+ "stA012.xsd",
+ "stA011.xsd",
+ "stA010.xsd",
+ "stA009.xsd",
+ "stA008.xsd",
+ "stA005.xsd",
+ "stA004.xsd",
+ "stA003.xsd",
+ "stA002.xsd"],[]}}.
+{stFGH,{["stH002.xsd",
+ "stH001.xsd",
+ "stG005.xsd",
+ "stG004.xsd",
+ "stF037.xsd",
+ "stF035.xsd",
+ "stF033.xsd",
+ "stF031.xsd",
+ "stF027.xsd",
+ "stF026.xsd",
+ "stF025.xsd",
+ "stF024.xsd",
+ "stF020.xsd",
+ "stF019.xsd",
+ "stF018.xsd",
+ "stF012.xsd",
+ "stF011.xsd",
+ "stF010.xsd",
+ "stF009.xsd",
+ "stH007.xml",
+ "stH005.xml",
+ "stH003.xml",
+ "stH001.xml",
+ "stG012.xml",
+ "stG010.xml",
+ "stG008.xml",
+ "stG006.xml",
+ "stG004.xml",
+ "stG002.xml",
+ "stG001.xml"],[]}}.
+{stIJK,{["stK014.xsd",
+ "stK013.xsd",
+ "stK012.xsd",
+ "stK011.xsd",
+ "stK007.xsd",
+ "stK006.xsd",
+ "stK005.xsd",
+ "stJ019.xsd",
+ "stJ013.xsd",
+ "stJ012.xsd",
+ "stJ011.xsd",
+ "stJ010.xsd",
+ "stJ002.xsd",
+ "stI005.xsd"],[]}}.
+{stZ,{["stZ003.xsd","stZ002.xsd"],[]}}.
+{wildABCDEF,{["wildF018.xsd",
+ "wildF016.xsd",
+ "wildF015.xsd",
+ "wildF014.xsd",
+ "wildF013.xsd",
+ "wildF012.xsd",
+ "wildF010.xsd",
+ "wildF009.xsd",
+ "wildF008.xsd",
+ "wildF007.xsd",
+ "wildF006.xsd",
+ "wildE002.xsd",
+ "wildD079.xsd",
+ "wildD078.xsd",
+ "wildD077.xsd",
+ "wildD076.xsd",
+ "wildD075.xsd",
+ "wildD071.xsd",
+ "wildC067.xsd",
+ "wildC066.xsd",
+ "wildC058.xsd",
+ "wildC057.xsd",
+ "wildC056.xsd",
+ "wildC055.xsd",
+ "wildC053.xsd",
+ "wildC052.xsd",
+ "wildC051.xsd",
+ "wildC050.xsd",
+ "wildC049.xsd",
+ "wildC036.xsd",
+ "wildC035.xsd",
+ "wildB028.xsd",
+ "wildB027.xsd",
+ "wildB023.xsd",
+ "wildB020.xsd",
+ "wildB015.xsd",
+ "wildA008.xsd",
+ "wildA007.xsd",
+ "wildA006.xsd",
+ "wildA005.xsd",
+ "wildA004.xsd",
+ "wildA003.xsd"],[]}}.
+{wildGHI,{["wildI013.xsd",
+ "wildI010.xsd",
+ "wildI009.xsd",
+ "wildI008.xsd",
+ "wildI003.xsd",
+ "wildI002.xsd",
+ "wildI007.xml",
+ "wildH006.xml",
+ "wildH002.xml",
+ "wildG039.xml",
+ "wildG037.xml",
+ "wildG036.xml",
+ "wildG032.xml",
+ "wildG029.xml",
+ "wildG028.xml",
+ "wildG024.xml",
+ "wildG022.xml",
+ "wildG020.xml",
+ "wildG019.xml",
+ "wildG014.xml",
+ "wildG013.xml",
+ "wildG011.xml",
+ "wildG010.xml",
+ "wildG009.xml",
+ "wildG008.xml",
+ "wildG005.xml",
+ "wildG004.xml",
+ "wildG002.xml"],[]}}.
+{wildJKLMNQOP,{["wildQ004.xsd",
+ "wildQ003.xsd",
+ "wildQ002.xsd",
+ "wildQ001.xsd",
+ "wildN018.xsd",
+ "wildN016.xsd",
+ "wildN015.xsd",
+ "wildN014.xsd",
+ "wildN013.xsd",
+ "wildN012.xsd",
+ "wildN010.xsd",
+ "wildN009.xsd",
+ "wildN008.xsd",
+ "wildN007.xsd",
+ "wildN006.xsd",
+ "wildN001.xsd",
+ "wildM002.xsd",
+ "wildL009.xsd",
+ "wildL008.xsd",
+ "wildL007.xsd",
+ "wildL006.xsd",
+ "wildL005.xsd",
+ "wildL001.xsd",
+ "wildK038.xsd",
+ "wildK029.xsd",
+ "wildK028.xsd",
+ "wildK027.xsd",
+ "wildK026.xsd",
+ "wildK024.xsd",
+ "wildK023.xsd",
+ "wildK022.xsd",
+ "wildK021.xsd",
+ "wildK020.xsd",
+ "wildK007.xsd",
+ "wildK006.xsd",
+ "wildK002.xsd",
+ "wildJ008.xsd",
+ "wildJ007.xsd",
+ "wildJ006.xsd",
+ "wildJ005.xsd",
+ "wildJ004.xsd",
+ "wildJ003.xsd",
+ "wildP006.xml",
+ "wildP005.xml",
+ "wildP004.xml",
+ "wildP003.xml",
+ "wildP001.xml",
+ "wildO040.xml",
+ "wildO038.xml",
+ "wildO037.xml",
+ "wildO033.xml",
+ "wildO031.xml",
+ "wildO030.xml",
+ "wildO027.xml",
+ "wildO026.xml",
+ "wildO023.xml",
+ "wildO021.xml",
+ "wildO020.xml",
+ "wildO018.xml",
+ "wildO013.xml",
+ "wildO012.xml",
+ "wildO010.xml",
+ "wildO007.xml",
+ "wildO006.xml",
+ "wildO004.xml"],[]}}.
diff --git a/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msxsdtest.tar.gz b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msxsdtest.tar.gz
new file mode 100644
index 0000000000..05f9dfe08f
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msxsdtest.tar.gz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html
new file mode 100644
index 0000000000..5c89ffd95e
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+
+
+ <meta http-equiv="Content-Type" content="text/html"><title>DOCUMENT NOTICE</title>
+
+ <link rel="stylesheet" type="text/css" href="copyright-documents-19990405_files/base.css"></head><body bgcolor="#ffffff" text="#000000">
+<h1>W3C<sup>�</sup> DOCUMENT NOTICE AND LICENSE</h1>
+
+<h3>Copyright � 1994-2002 <a href="http://www.w3.org/">World Wide Web
+Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de Recherche
+en Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio
+University</a>). All Rights Reserved.<br>
+http://www.w3.org/Consortium/Legal/</h3>
+
+<p>Public documents on the W3C site are provided by the copyright holders
+under the following license. The software or Document Type Definitions (DTDs)
+associated with W3C specifications are governed by the <a href="http://www.w3.org/Consortium/Legal/copyright-software.html"> Software
+Notice</a>. By using and/or copying this document, or the W3C document from
+which this statement is linked, you (the licensee) agree that you have read,
+understood, and will comply with the following terms and conditions:</p>
+
+<p>Permission to use, copy, and distribute the contents of this document, or
+the W3C document from which this statement is linked, in any medium for any
+purpose and without fee or royalty is hereby granted, provided that you
+include the following on <i>ALL</i> copies of the document, or portions
+thereof, that you use:</p>
+<ol>
+ <li>A link or URL to the original W3C document.</li>
+ <li>The pre-existing copyright notice of the original author, or if it
+ doesn't exist, a notice of the form: "Copyright � [$date-of-document] <a href="http://www.w3.org/">World Wide Web Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of Technology</a>,
+ <a href="http://www.inria.fr/"> Institut National de Recherche en
+ Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio
+ University</a>). All Rights Reserved.
+ http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but a
+ textual representation is permitted.)</li>
+ <li><em>If it exists</em>, the STATUS of the W3C document.</li>
+</ol>
+
+<p>When space permits, inclusion of the full text of this <b> NOTICE</b>
+should be provided. We request that authorship attribution be provided in any
+software, documents, or other items or products that you create pursuant to
+the implementation of the contents of this document, or any portion
+thereof.</p>
+
+<p>No right to create modifications or derivatives of W3C documents is
+granted pursuant to this license. However, if additional requirements
+(documented in the <a href="http://www.w3.org/Consortium/Legal/IPR-FAQ.html">Copyright FAQ</a>) are satisfied,
+the right to create modifications or derivatives is&nbsp;sometimes granted by the
+W3C to individuals complying with those requirements.</p>
+
+<p>THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
+REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED
+TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE
+FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT
+INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
+
+<p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE
+PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.</p>
+
+<p>The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to this document or its contents without
+specific, written prior permission. Title to copyright in this document will
+at all times remain with copyright holders.</p>
+
+<p>----------------------------------------------------------------------------</p>
+
+<p>This formulation of W3C's notice and license became active on April 05
+1999 so as to account for the treatment of DTDs, schema's and bindings. See
+the <a href="http://www.w3.org/Consortium/Legal/copyright-documents-19990218.html"> older formulation</a> for
+the policy prior to this date. Please see our <a href="http://www.w3.org/Consortium/Legal/IPR-FAQ.html">Copyright FAQ</a> for common questions about using
+materials from our site, including specific terms and conditions for packages
+like libwww, Amaya, and Jigsaw. Other questions about this notice can be
+directed to <a href="mailto:[email protected]">[email protected]</a>.</p>
+<address>
+ <a href="http://w3.org/Help/Webmaster.html">webmaster</a><br>
+ (last updated by reagle on 1999/04/99.)
+</address>
+</body></html> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE.erl b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE.erl
new file mode 100644
index 0000000000..daebf1393d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE.erl
@@ -0,0 +1,15962 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2006-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%%% Purpose : Test suite for the xmerl application
+
+%% Do NOT edit this file. It is generated by the generate_xsd_suite module
+%% For more info read the comments in the header of that file.
+
+-module('xmerl_xsd_NIST2002-01-16_SUITE').
+
+-compile(export_all).
+
+-include_lib("test_server/include/test_server.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+-include_lib("xmerl/include/xmerl_xsd.hrl").
+
+
+all() ->
+ ['NISTSchema-anyURI', 'NISTSchema-base64Binary',
+ 'NISTSchema-boolean', 'NISTSchema-byte',
+ 'NISTSchema-date-', 'NISTSchema-dateTime',
+ 'NISTSchema-decimal', 'NISTSchema-double',
+ 'NISTSchema-duration', 'NISTSchema-float',
+ 'NISTSchema-gDay', 'NISTSchema-gMonth-',
+ 'NISTSchema-gMonthDay', 'NISTSchema-gYear-',
+ 'NISTSchema-gYearMonth', 'NISTSchema-hexBinary',
+ 'NISTSchema-ID', 'NISTSchema-int-',
+ 'NISTSchema-integer', 'NISTSchema-language',
+ 'NISTSchema-long', 'NISTSchema-Name',
+ 'NISTSchema-NCName', 'NISTSchema-negativeInteger',
+ 'NISTSchema-NMTOKEN', 'NISTSchema-nonNegativeInteger',
+ 'NISTSchema-nonPositiveInteger',
+ 'NISTSchema-normalizedString',
+ 'NISTSchema-positiveInteger', 'NISTSchema-QName',
+ 'NISTSchema-short', 'NISTSchema-string',
+ 'NISTSchema-time', 'NISTSchema-token',
+ 'NISTSchema-unsignedByte', 'NISTSchema-unsignedInt',
+ 'NISTSchema-unsignedLong', 'NISTSchema-unsignedShort'].
+
+groups() ->
+ [].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+
+%% initialization before the test suite
+init_per_suite(Config) ->
+ Dog=test_server:timetrap({minutes,10}),
+ xmerl_xsd_lib:unpack(Config,nist),
+ {ok,LogFile} = xmerl_xsd_lib:create_error_log_file(Config,nist),
+ test_server:timetrap_cancel(Dog),
+ [{suite,nist},{xmerl_error_log,LogFile}|Config].
+
+end_per_suite(Config) ->
+ xmerl_xsd_lib:rmdir(Config,nist),
+ xmerl_xsd_lib:close_error_log_file(Config),
+ ok.
+
+%% initialization before each testcase
+init_per_testcase(TestCase,Config) ->
+ Dog=test_server:timetrap({minutes,3}),
+ [{testcase,TestCase},{watchdog, Dog}|Config].
+
+%% clean up after each testcase
+end_per_testcase(_Func,Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ ok.
+
+%% Data type derived by restriction of anyURI by facets
+
+'NISTSchema-anyURI'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./NISTTestsAll/NISTSchema-anyURI-maxLength-1.xsd','./NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList44 = [ITRes43|ITResList43],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList49 = [ITRes48|ITResList48],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-1-2.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-1-3.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-1-4.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-1-5.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList54 = [ITRes53|ITResList53],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList59 = [ITRes58|ITResList58],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-anyURI-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-anyURI-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList129).
+
+%% Data type derived by restriction of base64binary by facets
+
+'NISTSchema-base64Binary'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-1-2.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-1-3.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-1-4.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-1-5.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-base64Binary-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList129 = [ITRes128|ITResList128],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-base64Binary-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList130).
+
+%% Data type derived by restriction of boolean by facets
+
+'NISTSchema-boolean'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-boolean-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-boolean-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-boolean-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-boolean-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-boolean-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-boolean-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-boolean-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-boolean-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-boolean-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-boolean-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-boolean-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-boolean-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-boolean-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-boolean-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList5,ITResList9).
+
+%% Data type derived by restriction of byte by facets
+
+'NISTSchema-byte'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-byte-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-byte-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList35,ITResList159).
+
+%% Data type derived by restriction of date by facets
+
+'NISTSchema-date-'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-date-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-date-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList139).
+
+%% Data type derived by restriction of dateTime by facets
+
+'NISTSchema-dateTime'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-dateTime-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-dateTime-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList139).
+
+%% Data type derived by restriction of decimal by facets
+
+'NISTSchema-decimal'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-fractionDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-fractionDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-fractionDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-fractionDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-fractionDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ ?line {STRes37,S37} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList38 = [STRes37|STResList37],
+ ?line ITRes169 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S37),
+ ITResList170 = [ITRes169|ITResList169],
+ ?line ITRes170 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S37),
+ ITResList171 = [ITRes170|ITResList170],
+ ?line ITRes171 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S37),
+ ITResList172 = [ITRes171|ITResList171],
+ ?line ITRes172 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S37),
+ ITResList173 = [ITRes172|ITResList172],
+ ?line ITRes173 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S37),
+ ITResList174 = [ITRes173|ITResList173],
+
+
+ ?line {STRes38,S38} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList39 = [STRes38|STResList38],
+ ?line ITRes174 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S38),
+ ITResList175 = [ITRes174|ITResList174],
+ ?line ITRes175 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S38),
+ ITResList176 = [ITRes175|ITResList175],
+ ?line ITRes176 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S38),
+ ITResList177 = [ITRes176|ITResList176],
+ ?line ITRes177 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S38),
+ ITResList178 = [ITRes177|ITResList177],
+ ?line ITRes178 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S38),
+ ITResList179 = [ITRes178|ITResList178],
+
+
+ ?line {STRes39,S39} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList40 = [STRes39|STResList39],
+ ?line ITRes179 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S39),
+ ITResList180 = [ITRes179|ITResList179],
+ ?line ITRes180 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S39),
+ ITResList181 = [ITRes180|ITResList180],
+ ?line ITRes181 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S39),
+ ITResList182 = [ITRes181|ITResList181],
+ ?line ITRes182 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S39),
+ ITResList183 = [ITRes182|ITResList182],
+ ?line ITRes183 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S39),
+ ITResList184 = [ITRes183|ITResList183],
+
+
+ ?line {STRes40,S40} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-decimal-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList41 = [STRes40|STResList40],
+ ?line ITRes184 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S40),
+ ITResList185 = [ITRes184|ITResList184],
+ ?line ITRes185 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S40),
+ ITResList186 = [ITRes185|ITResList185],
+ ?line ITRes186 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S40),
+ ITResList187 = [ITRes186|ITResList186],
+ ?line ITRes187 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S40),
+ ITResList188 = [ITRes187|ITResList187],
+ ?line ITRes188 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-decimal-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S40),
+ ITResList189 = [ITRes188|ITResList188],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList41,ITResList189).
+
+%% Data type derived by restriction of double by facets
+
+'NISTSchema-double'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-double-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-double-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList139).
+
+%% Data type derived by restriction of duration by facets
+
+'NISTSchema-duration'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-duration-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-duration-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList139).
+
+%% Data type derived by restriction of float by facets
+
+'NISTSchema-float'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-float-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-float-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList139).
+
+%% Data type derived by restriction of gDay by facets
+
+'NISTSchema-gDay'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList129 = [ITRes128|ITResList128],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gDay-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList134 = [ITRes133|ITResList133],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gDay-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList135).
+
+%% Data type derived by restriction of gMonth by facets
+
+'NISTSchema-gMonth-'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonth-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonth-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList139).
+
+%% Data type derived by restriction of gMonthDay by facets
+
+'NISTSchema-gMonthDay'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gMonthDay-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gMonthDay-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList139).
+
+%% Data type derived by restriction of gYear by facets
+
+'NISTSchema-gYear-'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList129 = [ITRes128|ITResList128],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYear-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList134 = [ITRes133|ITResList133],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYear-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList135).
+
+%% Data type derived by restriction of gYearMonth by facets
+
+'NISTSchema-gYearMonth'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-gYearMonth-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-gYearMonth-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList139).
+
+%% Data type derived by restriction of hexBinary by facets
+
+'NISTSchema-hexBinary'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-1-2.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-1-3.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-1-4.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-1-5.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-hexBinary-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList129 = [ITRes128|ITResList128],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-hexBinary-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList130).
+
+%% Data type derived by restriction of ID by facets
+
+'NISTSchema-ID'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-1-2.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-1-3.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-1-4.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-1-5.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-ID-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList129 = [ITRes128|ITResList128],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-ID-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList130).
+
+%% Data type derived by restriction of int by facets
+
+'NISTSchema-int-'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-int-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-int-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of integer by facets
+
+'NISTSchema-integer'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-integer-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-integer-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of language by facets
+
+'NISTSchema-language'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList10 = [ITRes9|ITResList9],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList15 = [ITRes14|ITResList14],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList20 = [ITRes19|ITResList19],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-1-2.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-1-3.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-1-4.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-1-5.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList51 = [ITRes50|ITResList50],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList56 = [ITRes55|ITResList55],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList61 = [ITRes60|ITResList60],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList66 = [ITRes65|ITResList65],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList71 = [ITRes70|ITResList70],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList76 = [ITRes75|ITResList75],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList81 = [ITRes80|ITResList80],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList86 = [ITRes85|ITResList85],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList91 = [ITRes90|ITResList90],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList96 = [ITRes95|ITResList95],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList101 = [ITRes100|ITResList100],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList106 = [ITRes105|ITResList105],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList111 = [ITRes110|ITResList110],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList116 = [ITRes115|ITResList115],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList121 = [ITRes120|ITResList120],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-language-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-language-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList126 = [ITRes125|ITResList125],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList126).
+
+%% Data type derived by restriction of long by facets
+
+'NISTSchema-long'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-long-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-long-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of Name by facets
+
+'NISTSchema-Name'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-1-2.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-1-3.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-1-4.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-1-5.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-Name-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList129 = [ITRes128|ITResList128],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-Name-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList130).
+
+%% Data type derived by restriction of NCName by facets
+
+'NISTSchema-NCName'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-1-2.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-1-3.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-1-4.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-1-5.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NCName-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList129 = [ITRes128|ITResList128],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NCName-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList130).
+
+%% Data type derived by restriction of negativeInteger by facets
+
+'NISTSchema-negativeInteger'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-negativeInteger-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-negativeInteger-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of NMTOKEN by facets
+
+'NISTSchema-NMTOKEN'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-1-2.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-1-3.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-1-4.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-1-5.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList118 = [ITRes117|ITResList117],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList123 = [ITRes122|ITResList122],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-NMTOKEN-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-NMTOKEN-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList128 = [ITRes127|ITResList127],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList128).
+
+%% Data type derived by restriction of nonNegativeInteger by facets
+
+'NISTSchema-nonNegativeInteger'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonNegativeInteger-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonNegativeInteger-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of nonPositiveInteger by facets
+
+'NISTSchema-nonPositiveInteger'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-nonPositiveInteger-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-nonPositiveInteger-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of normalizedString by facets
+
+'NISTSchema-normalizedString'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList10 = [ITRes9|ITResList9],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList15 = [ITRes14|ITResList14],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList20 = [ITRes19|ITResList19],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList117 = [ITRes116|ITResList116],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList122 = [ITRes121|ITResList121],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-normalizedString-whiteSpace-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-normalizedString-whiteSpace-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList127 = [ITRes126|ITResList126],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList27,ITResList127).
+
+%% Data type derived by restriction of positiveInteger by facets
+
+'NISTSchema-positiveInteger'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-positiveInteger-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-positiveInteger-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of QName by facets
+
+'NISTSchema-QName'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList25 = [ITRes24|ITResList24],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList30 = [ITRes29|ITResList29],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList35 = [ITRes34|ITResList34],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList40 = [ITRes39|ITResList39],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList45 = [ITRes44|ITResList44],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList50 = [ITRes49|ITResList49],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-1-2.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-1-3.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-1-4.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-1-5.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList55 = [ITRes54|ITResList54],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList60 = [ITRes59|ITResList59],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList65 = [ITRes64|ITResList64],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList70 = [ITRes69|ITResList69],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList75 = [ITRes74|ITResList74],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList80 = [ITRes79|ITResList79],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList85 = [ITRes84|ITResList84],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList90 = [ITRes89|ITResList89],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList95 = [ITRes94|ITResList94],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList100 = [ITRes99|ITResList99],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList105 = [ITRes104|ITResList104],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList110 = [ITRes109|ITResList109],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList115 = [ITRes114|ITResList114],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList120 = [ITRes119|ITResList119],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList125 = [ITRes124|ITResList124],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-QName-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList129 = [ITRes128|ITResList128],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-QName-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList130 = [ITRes129|ITResList129],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList130).
+
+%% Data type derived by restriction of short by facets
+
+'NISTSchema-short'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-short-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-short-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of string by facets
+
+'NISTSchema-string'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList10 = [ITRes9|ITResList9],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList15 = [ITRes14|ITResList14],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList20 = [ITRes19|ITResList19],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList117 = [ITRes116|ITResList116],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList122 = [ITRes121|ITResList121],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-whiteSpace-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList124 = [ITRes123|ITResList123],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList127 = [ITRes126|ITResList126],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-string-whiteSpace-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList129 = [ITRes128|ITResList128],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-string-whiteSpace-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList132 = [ITRes131|ITResList131],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList28,ITResList132).
+
+%% Data type derived by restriction of time by facets
+
+'NISTSchema-time'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-time-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-time-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList31,ITResList139).
+
+%% Data type derived by restriction of token by facets
+
+'NISTSchema-token'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-maxLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-maxLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-maxLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList10 = [ITRes9|ITResList9],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-maxLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList15 = [ITRes14|ITResList14],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-maxLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-5-2.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-5-3.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-5-4.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList20 = [ITRes19|ITResList19],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-maxLength-5-5.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-minLength-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-minLength-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-minLength-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-minLength-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-minLength-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-5-2.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList43 = [ITRes42|ITResList42],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-5-3.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-5-4.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-minLength-5-5.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList46 = [ITRes45|ITResList45],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-length-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList47 = [ITRes46|ITResList46],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-length-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList52 = [ITRes51|ITResList51],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-length-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList57 = [ITRes56|ITResList56],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-length-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList62 = [ITRes61|ITResList61],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-length-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList64 = [ITRes63|ITResList63],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-length-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList67 = [ITRes66|ITResList66],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList69 = [ITRes68|ITResList68],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList72 = [ITRes71|ITResList71],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList74 = [ITRes73|ITResList73],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList77 = [ITRes76|ITResList76],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList79 = [ITRes78|ITResList78],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList82 = [ITRes81|ITResList81],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList84 = [ITRes83|ITResList83],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList87 = [ITRes86|ITResList86],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList89 = [ITRes88|ITResList88],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList92 = [ITRes91|ITResList91],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList94 = [ITRes93|ITResList93],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList97 = [ITRes96|ITResList96],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList99 = [ITRes98|ITResList98],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList102 = [ITRes101|ITResList101],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList104 = [ITRes103|ITResList103],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList107 = [ITRes106|ITResList106],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList109 = [ITRes108|ITResList108],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList112 = [ITRes111|ITResList111],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList114 = [ITRes113|ITResList113],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList117 = [ITRes116|ITResList116],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-token-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList119 = [ITRes118|ITResList118],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-token-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList122 = [ITRes121|ITResList121],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList26,ITResList122).
+
+%% Data type derived by restriction of unsignedByte by facets
+
+'NISTSchema-unsignedByte'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedByte-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedByte-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList33,ITResList149).
+
+%% Data type derived by restriction of unsignedInt by facets
+
+'NISTSchema-unsignedInt'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedInt-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedInt-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of unsignedLong by facets
+
+'NISTSchema-unsignedLong'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedLong-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedLong-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
+%% Data type derived by restriction of unsignedShort by facets
+
+'NISTSchema-unsignedShort'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ ?line {STRes1,S1} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList2 = [STRes1|STResList1],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S1),
+ ITResList10 = [ITRes9|ITResList9],
+
+
+ ?line {STRes2,S2} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList3 = [STRes2|STResList2],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S2),
+ ITResList15 = [ITRes14|ITResList14],
+
+
+ ?line {STRes3,S3} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList4 = [STRes3|STResList3],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S3),
+ ITResList20 = [ITRes19|ITResList19],
+
+
+ ?line {STRes4,S4} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList5 = [STRes4|STResList4],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S4),
+ ITResList21 = [ITRes20|ITResList20],
+
+
+ ?line {STRes5,S5} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList6 = [STRes5|STResList5],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-1-2.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-1-3.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-1-4.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-1-5.xml','./nisttest/NISTTestsAll',valid,S5),
+ ITResList26 = [ITRes25|ITResList25],
+
+
+ ?line {STRes6,S6} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList7 = [STRes6|STResList6],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S6),
+ ITResList31 = [ITRes30|ITResList30],
+
+
+ ?line {STRes7,S7} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList8 = [STRes7|STResList7],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList34 = [ITRes33|ITResList33],
+ ?line ITRes34 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList35 = [ITRes34|ITResList34],
+ ?line ITRes35 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S7),
+ ITResList36 = [ITRes35|ITResList35],
+
+
+ ?line {STRes8,S8} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList9 = [STRes8|STResList8],
+ ?line ITRes36 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList37 = [ITRes36|ITResList36],
+ ?line ITRes37 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList38 = [ITRes37|ITResList37],
+ ?line ITRes38 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList39 = [ITRes38|ITResList38],
+ ?line ITRes39 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList40 = [ITRes39|ITResList39],
+ ?line ITRes40 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S8),
+ ITResList41 = [ITRes40|ITResList40],
+
+
+ ?line {STRes9,S9} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-minInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList10 = [STRes9|STResList9],
+ ?line ITRes41 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-minInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S9),
+ ITResList42 = [ITRes41|ITResList41],
+
+
+ ?line {STRes10,S10} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxExclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList11 = [STRes10|STResList10],
+ ?line ITRes42 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S10),
+ ITResList43 = [ITRes42|ITResList42],
+
+
+ ?line {STRes11,S11} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxExclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList12 = [STRes11|STResList11],
+ ?line ITRes43 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList44 = [ITRes43|ITResList43],
+ ?line ITRes44 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList45 = [ITRes44|ITResList44],
+ ?line ITRes45 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList46 = [ITRes45|ITResList45],
+ ?line ITRes46 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList47 = [ITRes46|ITResList46],
+ ?line ITRes47 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S11),
+ ITResList48 = [ITRes47|ITResList47],
+
+
+ ?line {STRes12,S12} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxExclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList13 = [STRes12|STResList12],
+ ?line ITRes48 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList49 = [ITRes48|ITResList48],
+ ?line ITRes49 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList50 = [ITRes49|ITResList49],
+ ?line ITRes50 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList51 = [ITRes50|ITResList50],
+ ?line ITRes51 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList52 = [ITRes51|ITResList51],
+ ?line ITRes52 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S12),
+ ITResList53 = [ITRes52|ITResList52],
+
+
+ ?line {STRes13,S13} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxExclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList14 = [STRes13|STResList13],
+ ?line ITRes53 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList54 = [ITRes53|ITResList53],
+ ?line ITRes54 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList55 = [ITRes54|ITResList54],
+ ?line ITRes55 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList56 = [ITRes55|ITResList55],
+ ?line ITRes56 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList57 = [ITRes56|ITResList56],
+ ?line ITRes57 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S13),
+ ITResList58 = [ITRes57|ITResList57],
+
+
+ ?line {STRes14,S14} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxExclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList15 = [STRes14|STResList14],
+ ?line ITRes58 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList59 = [ITRes58|ITResList58],
+ ?line ITRes59 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList60 = [ITRes59|ITResList59],
+ ?line ITRes60 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList61 = [ITRes60|ITResList60],
+ ?line ITRes61 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList62 = [ITRes61|ITResList61],
+ ?line ITRes62 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxExclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S14),
+ ITResList63 = [ITRes62|ITResList62],
+
+
+ ?line {STRes15,S15} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxInclusive-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList16 = [STRes15|STResList15],
+ ?line ITRes63 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-1-1.xml','./nisttest/NISTTestsAll',valid,S15),
+ ITResList64 = [ITRes63|ITResList63],
+
+
+ ?line {STRes16,S16} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxInclusive-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList17 = [STRes16|STResList16],
+ ?line ITRes64 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-2-1.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList65 = [ITRes64|ITResList64],
+ ?line ITRes65 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-2-2.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList66 = [ITRes65|ITResList65],
+ ?line ITRes66 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-2-3.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList67 = [ITRes66|ITResList66],
+ ?line ITRes67 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-2-4.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList68 = [ITRes67|ITResList67],
+ ?line ITRes68 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-2-5.xml','./nisttest/NISTTestsAll',valid,S16),
+ ITResList69 = [ITRes68|ITResList68],
+
+
+ ?line {STRes17,S17} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxInclusive-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList18 = [STRes17|STResList17],
+ ?line ITRes69 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-3-1.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList70 = [ITRes69|ITResList69],
+ ?line ITRes70 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-3-2.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList71 = [ITRes70|ITResList70],
+ ?line ITRes71 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-3-3.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList72 = [ITRes71|ITResList71],
+ ?line ITRes72 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-3-4.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList73 = [ITRes72|ITResList72],
+ ?line ITRes73 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-3-5.xml','./nisttest/NISTTestsAll',valid,S17),
+ ITResList74 = [ITRes73|ITResList73],
+
+
+ ?line {STRes18,S18} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxInclusive-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList19 = [STRes18|STResList18],
+ ?line ITRes74 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-4-1.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList75 = [ITRes74|ITResList74],
+ ?line ITRes75 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-4-2.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList76 = [ITRes75|ITResList75],
+ ?line ITRes76 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-4-3.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList77 = [ITRes76|ITResList76],
+ ?line ITRes77 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-4-4.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList78 = [ITRes77|ITResList77],
+ ?line ITRes78 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-4-5.xml','./nisttest/NISTTestsAll',valid,S18),
+ ITResList79 = [ITRes78|ITResList78],
+
+
+ ?line {STRes19,S19} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-maxInclusive-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList20 = [STRes19|STResList19],
+ ?line ITRes79 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-5-1.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList80 = [ITRes79|ITResList79],
+ ?line ITRes80 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-5-2.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList81 = [ITRes80|ITResList80],
+ ?line ITRes81 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-5-3.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList82 = [ITRes81|ITResList81],
+ ?line ITRes82 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-5-4.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList83 = [ITRes82|ITResList82],
+ ?line ITRes83 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-maxInclusive-5-5.xml','./nisttest/NISTTestsAll',valid,S19),
+ ITResList84 = [ITRes83|ITResList83],
+
+
+ ?line {STRes20,S20} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-fractionDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList21 = [STRes20|STResList20],
+ ?line ITRes84 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-fractionDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList85 = [ITRes84|ITResList84],
+ ?line ITRes85 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-fractionDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList86 = [ITRes85|ITResList85],
+ ?line ITRes86 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-fractionDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList87 = [ITRes86|ITResList86],
+ ?line ITRes87 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-fractionDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList88 = [ITRes87|ITResList87],
+ ?line ITRes88 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-fractionDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S20),
+ ITResList89 = [ITRes88|ITResList88],
+
+
+ ?line {STRes21,S21} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-totalDigits-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList22 = [STRes21|STResList21],
+ ?line ITRes89 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-1-1.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList90 = [ITRes89|ITResList89],
+ ?line ITRes90 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-1-2.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList91 = [ITRes90|ITResList90],
+ ?line ITRes91 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-1-3.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList92 = [ITRes91|ITResList91],
+ ?line ITRes92 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-1-4.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList93 = [ITRes92|ITResList92],
+ ?line ITRes93 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-1-5.xml','./nisttest/NISTTestsAll',valid,S21),
+ ITResList94 = [ITRes93|ITResList93],
+
+
+ ?line {STRes22,S22} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-totalDigits-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList23 = [STRes22|STResList22],
+ ?line ITRes94 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-2-1.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList95 = [ITRes94|ITResList94],
+ ?line ITRes95 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-2-2.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList96 = [ITRes95|ITResList95],
+ ?line ITRes96 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-2-3.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList97 = [ITRes96|ITResList96],
+ ?line ITRes97 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-2-4.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList98 = [ITRes97|ITResList97],
+ ?line ITRes98 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-2-5.xml','./nisttest/NISTTestsAll',valid,S22),
+ ITResList99 = [ITRes98|ITResList98],
+
+
+ ?line {STRes23,S23} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-totalDigits-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList24 = [STRes23|STResList23],
+ ?line ITRes99 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-3-1.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList100 = [ITRes99|ITResList99],
+ ?line ITRes100 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-3-2.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList101 = [ITRes100|ITResList100],
+ ?line ITRes101 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-3-3.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList102 = [ITRes101|ITResList101],
+ ?line ITRes102 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-3-4.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList103 = [ITRes102|ITResList102],
+ ?line ITRes103 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-3-5.xml','./nisttest/NISTTestsAll',valid,S23),
+ ITResList104 = [ITRes103|ITResList103],
+
+
+ ?line {STRes24,S24} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-totalDigits-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList25 = [STRes24|STResList24],
+ ?line ITRes104 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-4-1.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList105 = [ITRes104|ITResList104],
+ ?line ITRes105 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-4-2.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList106 = [ITRes105|ITResList105],
+ ?line ITRes106 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-4-3.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList107 = [ITRes106|ITResList106],
+ ?line ITRes107 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-4-4.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList108 = [ITRes107|ITResList107],
+ ?line ITRes108 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-4-5.xml','./nisttest/NISTTestsAll',valid,S24),
+ ITResList109 = [ITRes108|ITResList108],
+
+
+ ?line {STRes25,S25} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-totalDigits-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList26 = [STRes25|STResList25],
+ ?line ITRes109 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-5-1.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList110 = [ITRes109|ITResList109],
+ ?line ITRes110 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-5-2.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList111 = [ITRes110|ITResList110],
+ ?line ITRes111 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-5-3.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList112 = [ITRes111|ITResList111],
+ ?line ITRes112 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-5-4.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList113 = [ITRes112|ITResList112],
+ ?line ITRes113 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-totalDigits-5-5.xml','./nisttest/NISTTestsAll',valid,S25),
+ ITResList114 = [ITRes113|ITResList113],
+
+
+ ?line {STRes26,S26} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-pattern-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList27 = [STRes26|STResList26],
+ ?line ITRes114 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-1-1.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList115 = [ITRes114|ITResList114],
+ ?line ITRes115 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-1-2.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList116 = [ITRes115|ITResList115],
+ ?line ITRes116 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-1-3.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList117 = [ITRes116|ITResList116],
+ ?line ITRes117 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-1-4.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList118 = [ITRes117|ITResList117],
+ ?line ITRes118 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-1-5.xml','./nisttest/NISTTestsAll',valid,S26),
+ ITResList119 = [ITRes118|ITResList118],
+
+
+ ?line {STRes27,S27} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-pattern-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList28 = [STRes27|STResList27],
+ ?line ITRes119 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-2-1.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList120 = [ITRes119|ITResList119],
+ ?line ITRes120 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-2-2.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList121 = [ITRes120|ITResList120],
+ ?line ITRes121 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-2-3.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList122 = [ITRes121|ITResList121],
+ ?line ITRes122 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-2-4.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList123 = [ITRes122|ITResList122],
+ ?line ITRes123 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-2-5.xml','./nisttest/NISTTestsAll',valid,S27),
+ ITResList124 = [ITRes123|ITResList123],
+
+
+ ?line {STRes28,S28} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-pattern-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList29 = [STRes28|STResList28],
+ ?line ITRes124 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-3-1.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList125 = [ITRes124|ITResList124],
+ ?line ITRes125 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-3-2.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList126 = [ITRes125|ITResList125],
+ ?line ITRes126 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-3-3.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList127 = [ITRes126|ITResList126],
+ ?line ITRes127 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-3-4.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList128 = [ITRes127|ITResList127],
+ ?line ITRes128 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-3-5.xml','./nisttest/NISTTestsAll',valid,S28),
+ ITResList129 = [ITRes128|ITResList128],
+
+
+ ?line {STRes29,S29} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-pattern-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList30 = [STRes29|STResList29],
+ ?line ITRes129 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-4-1.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList130 = [ITRes129|ITResList129],
+ ?line ITRes130 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-4-2.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList131 = [ITRes130|ITResList130],
+ ?line ITRes131 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-4-3.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList132 = [ITRes131|ITResList131],
+ ?line ITRes132 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-4-4.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList133 = [ITRes132|ITResList132],
+ ?line ITRes133 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-4-5.xml','./nisttest/NISTTestsAll',valid,S29),
+ ITResList134 = [ITRes133|ITResList133],
+
+
+ ?line {STRes30,S30} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-pattern-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList31 = [STRes30|STResList30],
+ ?line ITRes134 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-5-1.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList135 = [ITRes134|ITResList134],
+ ?line ITRes135 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-5-2.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList136 = [ITRes135|ITResList135],
+ ?line ITRes136 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-5-3.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList137 = [ITRes136|ITResList136],
+ ?line ITRes137 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-5-4.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList138 = [ITRes137|ITResList137],
+ ?line ITRes138 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-pattern-5-5.xml','./nisttest/NISTTestsAll',valid,S30),
+ ITResList139 = [ITRes138|ITResList138],
+
+
+ ?line {STRes31,S31} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-enumeration-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList32 = [STRes31|STResList31],
+ ?line ITRes139 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-1-1.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList140 = [ITRes139|ITResList139],
+ ?line ITRes140 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-1-2.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList141 = [ITRes140|ITResList140],
+ ?line ITRes141 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-1-3.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList142 = [ITRes141|ITResList141],
+ ?line ITRes142 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-1-4.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList143 = [ITRes142|ITResList142],
+ ?line ITRes143 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-1-5.xml','./nisttest/NISTTestsAll',valid,S31),
+ ITResList144 = [ITRes143|ITResList143],
+
+
+ ?line {STRes32,S32} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-enumeration-2.xsd','./nisttest/NISTTestsAll',valid),
+ STResList33 = [STRes32|STResList32],
+ ?line ITRes144 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-2-1.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList145 = [ITRes144|ITResList144],
+ ?line ITRes145 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-2-2.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList146 = [ITRes145|ITResList145],
+ ?line ITRes146 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-2-3.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList147 = [ITRes146|ITResList146],
+ ?line ITRes147 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-2-4.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList148 = [ITRes147|ITResList147],
+ ?line ITRes148 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-2-5.xml','./nisttest/NISTTestsAll',valid,S32),
+ ITResList149 = [ITRes148|ITResList148],
+
+
+ ?line {STRes33,S33} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-enumeration-3.xsd','./nisttest/NISTTestsAll',valid),
+ STResList34 = [STRes33|STResList33],
+ ?line ITRes149 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-3-1.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList150 = [ITRes149|ITResList149],
+ ?line ITRes150 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-3-2.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList151 = [ITRes150|ITResList150],
+ ?line ITRes151 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-3-3.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList152 = [ITRes151|ITResList151],
+ ?line ITRes152 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-3-4.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList153 = [ITRes152|ITResList152],
+ ?line ITRes153 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-3-5.xml','./nisttest/NISTTestsAll',valid,S33),
+ ITResList154 = [ITRes153|ITResList153],
+
+
+ ?line {STRes34,S34} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-enumeration-4.xsd','./nisttest/NISTTestsAll',valid),
+ STResList35 = [STRes34|STResList34],
+ ?line ITRes154 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-4-1.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList155 = [ITRes154|ITResList154],
+ ?line ITRes155 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-4-2.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList156 = [ITRes155|ITResList155],
+ ?line ITRes156 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-4-3.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList157 = [ITRes156|ITResList156],
+ ?line ITRes157 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-4-4.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList158 = [ITRes157|ITResList157],
+ ?line ITRes158 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-4-5.xml','./nisttest/NISTTestsAll',valid,S34),
+ ITResList159 = [ITRes158|ITResList158],
+
+
+ ?line {STRes35,S35} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-enumeration-5.xsd','./nisttest/NISTTestsAll',valid),
+ STResList36 = [STRes35|STResList35],
+ ?line ITRes159 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-5-1.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList160 = [ITRes159|ITResList159],
+ ?line ITRes160 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-5-2.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList161 = [ITRes160|ITResList160],
+ ?line ITRes161 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-5-3.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList162 = [ITRes161|ITResList161],
+ ?line ITRes162 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-5-4.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList163 = [ITRes162|ITResList162],
+ ?line ITRes163 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-enumeration-5-5.xml','./nisttest/NISTTestsAll',valid,S35),
+ ITResList164 = [ITRes163|ITResList163],
+
+
+ ?line {STRes36,S36} = xmerl_xsd_lib:schema_test(Config,'./nisttest/NISTTestsAll/NISTSchema-unsignedShort-whiteSpace-1.xsd','./nisttest/NISTTestsAll',valid),
+ STResList37 = [STRes36|STResList36],
+ ?line ITRes164 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-whiteSpace-1-1.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList165 = [ITRes164|ITResList164],
+ ?line ITRes165 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-whiteSpace-1-2.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList166 = [ITRes165|ITResList165],
+ ?line ITRes166 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-whiteSpace-1-3.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList167 = [ITRes166|ITResList166],
+ ?line ITRes167 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-whiteSpace-1-4.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList168 = [ITRes167|ITResList167],
+ ?line ITRes168 = xmerl_xsd_lib:instance_test(Config,'./nisttest/NISTTestsAll/NISTXML-unsignedShort-whiteSpace-1-5.xml','./nisttest/NISTTestsAll',valid,S36),
+ ITResList169 = [ITRes168|ITResList168],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList37,ITResList169).
+
diff --git a/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nist_failed_cases.log b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nist_failed_cases.log
new file mode 100644
index 0000000000..e10b6463fe
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nist_failed_cases.log
@@ -0,0 +1,894 @@
+{'NISTSchema-anyURI',{["NISTXML-anyURI-maxLength-1-5.xml",
+ "NISTXML-anyURI-maxLength-1-4.xml",
+ "NISTXML-anyURI-maxLength-1-3.xml",
+ "NISTXML-anyURI-maxLength-1-2.xml",
+ "NISTXML-anyURI-maxLength-1-1.xml"],["NISTSchema-anyURI-maxLength-1.xsd"]}}.
+{'NISTSchema-base64Binary',{["NISTXML-base64Binary-length-5-5.xml",
+ "NISTXML-base64Binary-length-5-4.xml",
+ "NISTXML-base64Binary-length-5-3.xml",
+ "NISTXML-base64Binary-length-5-2.xml",
+ "NISTXML-base64Binary-length-5-1.xml",
+ "NISTXML-base64Binary-length-4-5.xml",
+ "NISTXML-base64Binary-length-4-4.xml",
+ "NISTXML-base64Binary-length-4-3.xml",
+ "NISTXML-base64Binary-length-4-2.xml",
+ "NISTXML-base64Binary-length-4-1.xml",
+ "NISTXML-base64Binary-length-3-5.xml",
+ "NISTXML-base64Binary-length-3-4.xml",
+ "NISTXML-base64Binary-length-3-3.xml",
+ "NISTXML-base64Binary-length-3-2.xml",
+ "NISTXML-base64Binary-length-3-1.xml",
+ "NISTXML-base64Binary-length-2-5.xml",
+ "NISTXML-base64Binary-length-2-4.xml",
+ "NISTXML-base64Binary-length-2-3.xml",
+ "NISTXML-base64Binary-length-2-2.xml",
+ "NISTXML-base64Binary-length-2-1.xml",
+ "NISTXML-base64Binary-length-1-5.xml",
+ "NISTXML-base64Binary-length-1-4.xml",
+ "NISTXML-base64Binary-length-1-3.xml",
+ "NISTXML-base64Binary-length-1-2.xml",
+ "NISTXML-base64Binary-length-1-1.xml",
+ "NISTXML-base64Binary-maxLength-5-5.xml",
+ "NISTXML-base64Binary-maxLength-5-4.xml",
+ "NISTXML-base64Binary-maxLength-4-5.xml",
+ "NISTXML-base64Binary-maxLength-4-4.xml",
+ "NISTXML-base64Binary-maxLength-3-5.xml",
+ "NISTXML-base64Binary-maxLength-3-4.xml",
+ "NISTXML-base64Binary-maxLength-2-5.xml",
+ "NISTXML-base64Binary-maxLength-2-4.xml",
+ "NISTXML-base64Binary-maxLength-1-5.xml",
+ "NISTXML-base64Binary-maxLength-1-4.xml",
+ "NISTXML-base64Binary-maxLength-1-3.xml",
+ "NISTXML-base64Binary-maxLength-1-2.xml",
+ "NISTXML-base64Binary-maxLength-1-1.xml"],[]}}.
+{'NISTSchema-date-',{["NISTXML-date-maxInclusive-5-5.xml",
+ "NISTXML-date-maxInclusive-5-4.xml",
+ "NISTXML-date-maxInclusive-5-3.xml",
+ "NISTXML-date-maxInclusive-5-2.xml",
+ "NISTXML-date-maxInclusive-5-1.xml",
+ "NISTXML-date-maxInclusive-4-5.xml",
+ "NISTXML-date-maxInclusive-4-4.xml",
+ "NISTXML-date-maxInclusive-4-3.xml",
+ "NISTXML-date-maxInclusive-4-2.xml",
+ "NISTXML-date-maxInclusive-4-1.xml",
+ "NISTXML-date-maxInclusive-3-5.xml",
+ "NISTXML-date-maxInclusive-3-4.xml",
+ "NISTXML-date-maxInclusive-3-3.xml",
+ "NISTXML-date-maxInclusive-3-2.xml",
+ "NISTXML-date-maxInclusive-3-1.xml",
+ "NISTXML-date-maxInclusive-2-5.xml",
+ "NISTXML-date-maxInclusive-2-4.xml",
+ "NISTXML-date-maxInclusive-2-3.xml",
+ "NISTXML-date-maxInclusive-2-2.xml",
+ "NISTXML-date-maxInclusive-2-1.xml",
+ "NISTXML-date-maxInclusive-1-1.xml",
+ "NISTXML-date-maxExclusive-5-5.xml",
+ "NISTXML-date-maxExclusive-5-4.xml",
+ "NISTXML-date-maxExclusive-5-3.xml",
+ "NISTXML-date-maxExclusive-5-2.xml",
+ "NISTXML-date-maxExclusive-5-1.xml",
+ "NISTXML-date-maxExclusive-4-5.xml",
+ "NISTXML-date-maxExclusive-4-4.xml",
+ "NISTXML-date-maxExclusive-4-3.xml",
+ "NISTXML-date-maxExclusive-4-2.xml",
+ "NISTXML-date-maxExclusive-4-1.xml",
+ "NISTXML-date-maxExclusive-3-5.xml",
+ "NISTXML-date-maxExclusive-3-4.xml",
+ "NISTXML-date-maxExclusive-3-3.xml",
+ "NISTXML-date-maxExclusive-3-2.xml",
+ "NISTXML-date-maxExclusive-3-1.xml",
+ "NISTXML-date-maxExclusive-2-5.xml",
+ "NISTXML-date-maxExclusive-2-4.xml",
+ "NISTXML-date-maxExclusive-2-3.xml",
+ "NISTXML-date-maxExclusive-2-2.xml",
+ "NISTXML-date-maxExclusive-2-1.xml",
+ "NISTXML-date-maxExclusive-1-1.xml",
+ "NISTXML-date-minInclusive-5-1.xml",
+ "NISTXML-date-minInclusive-4-5.xml",
+ "NISTXML-date-minInclusive-4-4.xml",
+ "NISTXML-date-minInclusive-4-3.xml",
+ "NISTXML-date-minInclusive-4-2.xml",
+ "NISTXML-date-minInclusive-4-1.xml",
+ "NISTXML-date-minInclusive-3-5.xml",
+ "NISTXML-date-minInclusive-3-4.xml",
+ "NISTXML-date-minInclusive-3-3.xml",
+ "NISTXML-date-minInclusive-3-2.xml",
+ "NISTXML-date-minInclusive-3-1.xml",
+ "NISTXML-date-minInclusive-2-5.xml",
+ "NISTXML-date-minInclusive-2-4.xml",
+ "NISTXML-date-minInclusive-2-3.xml",
+ "NISTXML-date-minInclusive-2-2.xml",
+ "NISTXML-date-minInclusive-2-1.xml",
+ "NISTXML-date-minInclusive-1-5.xml",
+ "NISTXML-date-minInclusive-1-4.xml",
+ "NISTXML-date-minInclusive-1-3.xml",
+ "NISTXML-date-minInclusive-1-2.xml",
+ "NISTXML-date-minInclusive-1-1.xml",
+ "NISTXML-date-minExclusive-5-1.xml",
+ "NISTXML-date-minExclusive-4-5.xml",
+ "NISTXML-date-minExclusive-4-4.xml",
+ "NISTXML-date-minExclusive-4-3.xml",
+ "NISTXML-date-minExclusive-4-2.xml",
+ "NISTXML-date-minExclusive-4-1.xml",
+ "NISTXML-date-minExclusive-3-5.xml",
+ "NISTXML-date-minExclusive-3-4.xml",
+ "NISTXML-date-minExclusive-3-3.xml",
+ "NISTXML-date-minExclusive-3-2.xml",
+ "NISTXML-date-minExclusive-3-1.xml",
+ "NISTXML-date-minExclusive-2-5.xml",
+ "NISTXML-date-minExclusive-2-4.xml",
+ "NISTXML-date-minExclusive-2-3.xml",
+ "NISTXML-date-minExclusive-2-2.xml",
+ "NISTXML-date-minExclusive-2-1.xml",
+ "NISTXML-date-minExclusive-1-5.xml",
+ "NISTXML-date-minExclusive-1-4.xml",
+ "NISTXML-date-minExclusive-1-3.xml",
+ "NISTXML-date-minExclusive-1-2.xml",
+ "NISTXML-date-minExclusive-1-1.xml"],[]}}.
+{'NISTSchema-decimal',{["NISTXML-decimal-maxExclusive-5-5.xml",
+ "NISTXML-decimal-maxExclusive-4-5.xml",
+ "NISTXML-decimal-maxExclusive-3-5.xml",
+ "NISTXML-decimal-maxExclusive-2-5.xml",
+ "NISTXML-decimal-maxExclusive-1-1.xml",
+ "NISTXML-decimal-minExclusive-5-1.xml",
+ "NISTXML-decimal-minExclusive-4-5.xml",
+ "NISTXML-decimal-minExclusive-4-4.xml",
+ "NISTXML-decimal-minExclusive-4-1.xml",
+ "NISTXML-decimal-minExclusive-3-1.xml",
+ "NISTXML-decimal-minExclusive-2-1.xml",
+ "NISTXML-decimal-minExclusive-1-1.xml"],[]}}.
+{'NISTSchema-double',{["NISTXML-double-maxInclusive-5-5.xml",
+ "NISTXML-double-maxInclusive-5-4.xml",
+ "NISTXML-double-maxInclusive-5-3.xml",
+ "NISTXML-double-maxInclusive-5-2.xml",
+ "NISTXML-double-maxInclusive-5-1.xml",
+ "NISTXML-double-maxInclusive-4-5.xml",
+ "NISTXML-double-maxInclusive-4-4.xml",
+ "NISTXML-double-maxInclusive-4-3.xml",
+ "NISTXML-double-maxInclusive-4-2.xml",
+ "NISTXML-double-maxInclusive-4-1.xml",
+ "NISTXML-double-maxInclusive-3-5.xml",
+ "NISTXML-double-maxInclusive-3-4.xml",
+ "NISTXML-double-maxInclusive-3-3.xml",
+ "NISTXML-double-maxInclusive-3-2.xml",
+ "NISTXML-double-maxInclusive-3-1.xml",
+ "NISTXML-double-maxInclusive-2-5.xml",
+ "NISTXML-double-maxInclusive-2-4.xml",
+ "NISTXML-double-maxInclusive-2-3.xml",
+ "NISTXML-double-maxInclusive-2-2.xml",
+ "NISTXML-double-maxInclusive-2-1.xml",
+ "NISTXML-double-maxExclusive-5-5.xml",
+ "NISTXML-double-maxExclusive-5-4.xml",
+ "NISTXML-double-maxExclusive-5-3.xml",
+ "NISTXML-double-maxExclusive-5-2.xml",
+ "NISTXML-double-maxExclusive-5-1.xml",
+ "NISTXML-double-maxExclusive-4-5.xml",
+ "NISTXML-double-maxExclusive-4-4.xml",
+ "NISTXML-double-maxExclusive-4-3.xml",
+ "NISTXML-double-maxExclusive-4-2.xml",
+ "NISTXML-double-maxExclusive-4-1.xml",
+ "NISTXML-double-maxExclusive-3-5.xml",
+ "NISTXML-double-maxExclusive-3-4.xml",
+ "NISTXML-double-maxExclusive-3-3.xml",
+ "NISTXML-double-maxExclusive-3-2.xml",
+ "NISTXML-double-maxExclusive-3-1.xml",
+ "NISTXML-double-maxExclusive-2-5.xml",
+ "NISTXML-double-maxExclusive-2-4.xml",
+ "NISTXML-double-maxExclusive-2-3.xml",
+ "NISTXML-double-maxExclusive-2-2.xml",
+ "NISTXML-double-maxExclusive-2-1.xml",
+ "NISTXML-double-maxExclusive-1-1.xml",
+ "NISTXML-double-minInclusive-4-5.xml",
+ "NISTXML-double-minInclusive-4-4.xml",
+ "NISTXML-double-minInclusive-4-3.xml",
+ "NISTXML-double-minInclusive-4-2.xml",
+ "NISTXML-double-minInclusive-3-5.xml",
+ "NISTXML-double-minInclusive-3-4.xml",
+ "NISTXML-double-minInclusive-3-3.xml",
+ "NISTXML-double-minInclusive-3-2.xml",
+ "NISTXML-double-minInclusive-2-5.xml",
+ "NISTXML-double-minInclusive-2-4.xml",
+ "NISTXML-double-minInclusive-2-3.xml",
+ "NISTXML-double-minInclusive-2-2.xml",
+ "NISTXML-double-minInclusive-1-5.xml",
+ "NISTXML-double-minInclusive-1-4.xml",
+ "NISTXML-double-minInclusive-1-3.xml",
+ "NISTXML-double-minInclusive-1-2.xml",
+ "NISTXML-double-minExclusive-5-1.xml",
+ "NISTXML-double-minExclusive-4-5.xml",
+ "NISTXML-double-minExclusive-4-4.xml",
+ "NISTXML-double-minExclusive-4-3.xml",
+ "NISTXML-double-minExclusive-3-5.xml",
+ "NISTXML-double-minExclusive-3-4.xml",
+ "NISTXML-double-minExclusive-3-3.xml",
+ "NISTXML-double-minExclusive-3-2.xml",
+ "NISTXML-double-minExclusive-3-1.xml",
+ "NISTXML-double-minExclusive-2-5.xml",
+ "NISTXML-double-minExclusive-2-4.xml",
+ "NISTXML-double-minExclusive-2-3.xml",
+ "NISTXML-double-minExclusive-2-2.xml",
+ "NISTXML-double-minExclusive-2-1.xml",
+ "NISTXML-double-minExclusive-1-5.xml",
+ "NISTXML-double-minExclusive-1-4.xml",
+ "NISTXML-double-minExclusive-1-3.xml",
+ "NISTXML-double-minExclusive-1-2.xml",
+ "NISTXML-double-minExclusive-1-1.xml"],[]}}.
+{'NISTSchema-gDay',{["NISTXML-gDay-maxInclusive-5-5.xml",
+ "NISTXML-gDay-maxInclusive-5-4.xml",
+ "NISTXML-gDay-maxInclusive-5-3.xml",
+ "NISTXML-gDay-maxInclusive-5-2.xml",
+ "NISTXML-gDay-maxInclusive-5-1.xml",
+ "NISTXML-gDay-maxInclusive-4-1.xml",
+ "NISTXML-gDay-maxInclusive-3-5.xml",
+ "NISTXML-gDay-maxInclusive-3-4.xml",
+ "NISTXML-gDay-maxInclusive-3-3.xml",
+ "NISTXML-gDay-maxInclusive-3-2.xml",
+ "NISTXML-gDay-maxInclusive-3-1.xml",
+ "NISTXML-gDay-maxInclusive-2-5.xml",
+ "NISTXML-gDay-maxInclusive-2-4.xml",
+ "NISTXML-gDay-maxInclusive-2-3.xml",
+ "NISTXML-gDay-maxInclusive-2-2.xml",
+ "NISTXML-gDay-maxInclusive-2-1.xml",
+ "NISTXML-gDay-maxInclusive-1-1.xml",
+ "NISTXML-gDay-maxExclusive-5-5.xml",
+ "NISTXML-gDay-maxExclusive-5-4.xml",
+ "NISTXML-gDay-maxExclusive-5-3.xml",
+ "NISTXML-gDay-maxExclusive-5-2.xml",
+ "NISTXML-gDay-maxExclusive-5-1.xml",
+ "NISTXML-gDay-maxExclusive-4-5.xml",
+ "NISTXML-gDay-maxExclusive-4-4.xml",
+ "NISTXML-gDay-maxExclusive-4-3.xml",
+ "NISTXML-gDay-maxExclusive-4-2.xml",
+ "NISTXML-gDay-maxExclusive-4-1.xml",
+ "NISTXML-gDay-maxExclusive-3-5.xml",
+ "NISTXML-gDay-maxExclusive-3-4.xml",
+ "NISTXML-gDay-maxExclusive-3-3.xml",
+ "NISTXML-gDay-maxExclusive-3-2.xml",
+ "NISTXML-gDay-maxExclusive-3-1.xml",
+ "NISTXML-gDay-maxExclusive-2-5.xml",
+ "NISTXML-gDay-maxExclusive-2-4.xml",
+ "NISTXML-gDay-maxExclusive-2-3.xml",
+ "NISTXML-gDay-maxExclusive-2-2.xml",
+ "NISTXML-gDay-maxExclusive-2-1.xml",
+ "NISTXML-gDay-maxExclusive-1-1.xml",
+ "NISTXML-gDay-minInclusive-5-1.xml",
+ "NISTXML-gDay-minInclusive-4-5.xml",
+ "NISTXML-gDay-minInclusive-4-4.xml",
+ "NISTXML-gDay-minInclusive-4-3.xml",
+ "NISTXML-gDay-minInclusive-4-2.xml",
+ "NISTXML-gDay-minInclusive-4-1.xml",
+ "NISTXML-gDay-minInclusive-3-5.xml",
+ "NISTXML-gDay-minInclusive-3-4.xml",
+ "NISTXML-gDay-minInclusive-3-3.xml",
+ "NISTXML-gDay-minInclusive-3-2.xml",
+ "NISTXML-gDay-minInclusive-3-1.xml",
+ "NISTXML-gDay-minInclusive-2-5.xml",
+ "NISTXML-gDay-minInclusive-2-4.xml",
+ "NISTXML-gDay-minInclusive-2-3.xml",
+ "NISTXML-gDay-minInclusive-2-2.xml",
+ "NISTXML-gDay-minInclusive-2-1.xml",
+ "NISTXML-gDay-minInclusive-1-5.xml",
+ "NISTXML-gDay-minInclusive-1-4.xml",
+ "NISTXML-gDay-minInclusive-1-3.xml",
+ "NISTXML-gDay-minInclusive-1-2.xml",
+ "NISTXML-gDay-minInclusive-1-1.xml",
+ "NISTXML-gDay-minExclusive-5-1.xml",
+ "NISTXML-gDay-minExclusive-4-5.xml",
+ "NISTXML-gDay-minExclusive-4-4.xml",
+ "NISTXML-gDay-minExclusive-4-3.xml",
+ "NISTXML-gDay-minExclusive-4-2.xml",
+ "NISTXML-gDay-minExclusive-4-1.xml",
+ "NISTXML-gDay-minExclusive-3-5.xml",
+ "NISTXML-gDay-minExclusive-3-4.xml",
+ "NISTXML-gDay-minExclusive-3-3.xml",
+ "NISTXML-gDay-minExclusive-3-2.xml",
+ "NISTXML-gDay-minExclusive-3-1.xml",
+ "NISTXML-gDay-minExclusive-2-5.xml",
+ "NISTXML-gDay-minExclusive-2-4.xml",
+ "NISTXML-gDay-minExclusive-2-3.xml",
+ "NISTXML-gDay-minExclusive-2-2.xml",
+ "NISTXML-gDay-minExclusive-2-1.xml",
+ "NISTXML-gDay-minExclusive-1-5.xml",
+ "NISTXML-gDay-minExclusive-1-4.xml",
+ "NISTXML-gDay-minExclusive-1-3.xml",
+ "NISTXML-gDay-minExclusive-1-2.xml",
+ "NISTXML-gDay-minExclusive-1-1.xml"],[]}}.
+{'NISTSchema-gMonth-',{["NISTXML-gMonth-whiteSpace-1-5.xml",
+ "NISTXML-gMonth-whiteSpace-1-4.xml",
+ "NISTXML-gMonth-whiteSpace-1-3.xml",
+ "NISTXML-gMonth-whiteSpace-1-2.xml",
+ "NISTXML-gMonth-whiteSpace-1-1.xml",
+ "NISTXML-gMonth-enumeration-5-5.xml",
+ "NISTXML-gMonth-enumeration-5-4.xml",
+ "NISTXML-gMonth-enumeration-5-3.xml",
+ "NISTXML-gMonth-enumeration-5-2.xml",
+ "NISTXML-gMonth-enumeration-5-1.xml",
+ "NISTXML-gMonth-enumeration-4-5.xml",
+ "NISTXML-gMonth-enumeration-4-4.xml",
+ "NISTXML-gMonth-enumeration-4-3.xml",
+ "NISTXML-gMonth-enumeration-4-2.xml",
+ "NISTXML-gMonth-enumeration-4-1.xml",
+ "NISTXML-gMonth-enumeration-3-5.xml",
+ "NISTXML-gMonth-enumeration-3-4.xml",
+ "NISTXML-gMonth-enumeration-3-3.xml",
+ "NISTXML-gMonth-enumeration-3-2.xml",
+ "NISTXML-gMonth-enumeration-3-1.xml",
+ "NISTXML-gMonth-enumeration-2-5.xml",
+ "NISTXML-gMonth-enumeration-2-4.xml",
+ "NISTXML-gMonth-enumeration-2-3.xml",
+ "NISTXML-gMonth-enumeration-2-2.xml",
+ "NISTXML-gMonth-enumeration-2-1.xml",
+ "NISTXML-gMonth-enumeration-1-5.xml",
+ "NISTXML-gMonth-enumeration-1-4.xml",
+ "NISTXML-gMonth-enumeration-1-3.xml",
+ "NISTXML-gMonth-enumeration-1-2.xml",
+ "NISTXML-gMonth-enumeration-1-1.xml",
+ "NISTXML-gMonth-pattern-5-5.xml",
+ "NISTXML-gMonth-pattern-5-4.xml",
+ "NISTXML-gMonth-pattern-5-3.xml",
+ "NISTXML-gMonth-pattern-5-2.xml",
+ "NISTXML-gMonth-pattern-5-1.xml",
+ "NISTXML-gMonth-pattern-4-5.xml",
+ "NISTXML-gMonth-pattern-4-4.xml",
+ "NISTXML-gMonth-pattern-4-3.xml",
+ "NISTXML-gMonth-pattern-4-2.xml",
+ "NISTXML-gMonth-pattern-4-1.xml",
+ "NISTXML-gMonth-pattern-3-5.xml",
+ "NISTXML-gMonth-pattern-3-4.xml",
+ "NISTXML-gMonth-pattern-3-3.xml",
+ "NISTXML-gMonth-pattern-3-2.xml",
+ "NISTXML-gMonth-pattern-3-1.xml",
+ "NISTXML-gMonth-pattern-2-5.xml",
+ "NISTXML-gMonth-pattern-2-4.xml",
+ "NISTXML-gMonth-pattern-2-3.xml",
+ "NISTXML-gMonth-pattern-2-2.xml",
+ "NISTXML-gMonth-pattern-2-1.xml",
+ "NISTXML-gMonth-pattern-1-5.xml",
+ "NISTXML-gMonth-pattern-1-4.xml",
+ "NISTXML-gMonth-pattern-1-3.xml",
+ "NISTXML-gMonth-pattern-1-2.xml",
+ "NISTXML-gMonth-pattern-1-1.xml",
+ "NISTXML-gMonth-maxInclusive-5-5.xml",
+ "NISTXML-gMonth-maxInclusive-5-4.xml",
+ "NISTXML-gMonth-maxInclusive-5-3.xml",
+ "NISTXML-gMonth-maxInclusive-5-2.xml",
+ "NISTXML-gMonth-maxInclusive-5-1.xml",
+ "NISTXML-gMonth-maxInclusive-4-5.xml",
+ "NISTXML-gMonth-maxInclusive-4-4.xml",
+ "NISTXML-gMonth-maxInclusive-4-3.xml",
+ "NISTXML-gMonth-maxInclusive-4-2.xml",
+ "NISTXML-gMonth-maxInclusive-4-1.xml",
+ "NISTXML-gMonth-maxInclusive-3-5.xml",
+ "NISTXML-gMonth-maxInclusive-3-4.xml",
+ "NISTXML-gMonth-maxInclusive-3-3.xml",
+ "NISTXML-gMonth-maxInclusive-3-2.xml",
+ "NISTXML-gMonth-maxInclusive-3-1.xml",
+ "NISTXML-gMonth-maxInclusive-2-5.xml",
+ "NISTXML-gMonth-maxInclusive-2-4.xml",
+ "NISTXML-gMonth-maxInclusive-2-3.xml",
+ "NISTXML-gMonth-maxInclusive-2-2.xml",
+ "NISTXML-gMonth-maxInclusive-2-1.xml",
+ "NISTXML-gMonth-maxInclusive-1-1.xml",
+ "NISTXML-gMonth-maxExclusive-5-5.xml",
+ "NISTXML-gMonth-maxExclusive-5-4.xml",
+ "NISTXML-gMonth-maxExclusive-5-3.xml",
+ "NISTXML-gMonth-maxExclusive-5-2.xml",
+ "NISTXML-gMonth-maxExclusive-5-1.xml",
+ "NISTXML-gMonth-maxExclusive-4-5.xml",
+ "NISTXML-gMonth-maxExclusive-4-4.xml",
+ "NISTXML-gMonth-maxExclusive-4-3.xml",
+ "NISTXML-gMonth-maxExclusive-4-2.xml",
+ "NISTXML-gMonth-maxExclusive-4-1.xml",
+ "NISTXML-gMonth-maxExclusive-3-5.xml",
+ "NISTXML-gMonth-maxExclusive-3-4.xml",
+ "NISTXML-gMonth-maxExclusive-3-3.xml",
+ "NISTXML-gMonth-maxExclusive-3-2.xml",
+ "NISTXML-gMonth-maxExclusive-3-1.xml",
+ "NISTXML-gMonth-maxExclusive-2-5.xml",
+ "NISTXML-gMonth-maxExclusive-2-4.xml",
+ "NISTXML-gMonth-maxExclusive-2-3.xml",
+ "NISTXML-gMonth-maxExclusive-2-2.xml",
+ "NISTXML-gMonth-maxExclusive-2-1.xml",
+ "NISTXML-gMonth-maxExclusive-1-1.xml",
+ "NISTXML-gMonth-minInclusive-5-1.xml",
+ "NISTXML-gMonth-minInclusive-4-5.xml",
+ "NISTXML-gMonth-minInclusive-4-4.xml",
+ "NISTXML-gMonth-minInclusive-4-3.xml",
+ "NISTXML-gMonth-minInclusive-4-2.xml",
+ "NISTXML-gMonth-minInclusive-4-1.xml",
+ "NISTXML-gMonth-minInclusive-3-5.xml",
+ "NISTXML-gMonth-minInclusive-3-4.xml",
+ "NISTXML-gMonth-minInclusive-3-3.xml",
+ "NISTXML-gMonth-minInclusive-3-2.xml",
+ "NISTXML-gMonth-minInclusive-3-1.xml",
+ "NISTXML-gMonth-minInclusive-2-5.xml",
+ "NISTXML-gMonth-minInclusive-2-4.xml",
+ "NISTXML-gMonth-minInclusive-2-3.xml",
+ "NISTXML-gMonth-minInclusive-2-2.xml",
+ "NISTXML-gMonth-minInclusive-2-1.xml",
+ "NISTXML-gMonth-minInclusive-1-5.xml",
+ "NISTXML-gMonth-minInclusive-1-4.xml",
+ "NISTXML-gMonth-minInclusive-1-3.xml",
+ "NISTXML-gMonth-minInclusive-1-2.xml",
+ "NISTXML-gMonth-minInclusive-1-1.xml",
+ "NISTXML-gMonth-minExclusive-5-1.xml",
+ "NISTXML-gMonth-minExclusive-4-5.xml",
+ "NISTXML-gMonth-minExclusive-4-4.xml",
+ "NISTXML-gMonth-minExclusive-4-3.xml",
+ "NISTXML-gMonth-minExclusive-4-2.xml",
+ "NISTXML-gMonth-minExclusive-4-1.xml",
+ "NISTXML-gMonth-minExclusive-3-5.xml",
+ "NISTXML-gMonth-minExclusive-3-4.xml",
+ "NISTXML-gMonth-minExclusive-3-3.xml",
+ "NISTXML-gMonth-minExclusive-3-2.xml",
+ "NISTXML-gMonth-minExclusive-3-1.xml",
+ "NISTXML-gMonth-minExclusive-2-5.xml",
+ "NISTXML-gMonth-minExclusive-2-4.xml",
+ "NISTXML-gMonth-minExclusive-2-3.xml",
+ "NISTXML-gMonth-minExclusive-2-2.xml",
+ "NISTXML-gMonth-minExclusive-2-1.xml",
+ "NISTXML-gMonth-minExclusive-1-5.xml",
+ "NISTXML-gMonth-minExclusive-1-4.xml",
+ "NISTXML-gMonth-minExclusive-1-3.xml",
+ "NISTXML-gMonth-minExclusive-1-2.xml",
+ "NISTXML-gMonth-minExclusive-1-1.xml"],[]}}.
+{'NISTSchema-gMonthDay',{["NISTXML-gMonthDay-maxInclusive-5-5.xml",
+ "NISTXML-gMonthDay-maxInclusive-5-4.xml",
+ "NISTXML-gMonthDay-maxInclusive-5-3.xml",
+ "NISTXML-gMonthDay-maxInclusive-5-2.xml",
+ "NISTXML-gMonthDay-maxInclusive-5-1.xml",
+ "NISTXML-gMonthDay-maxInclusive-4-5.xml",
+ "NISTXML-gMonthDay-maxInclusive-4-4.xml",
+ "NISTXML-gMonthDay-maxInclusive-4-3.xml",
+ "NISTXML-gMonthDay-maxInclusive-4-2.xml",
+ "NISTXML-gMonthDay-maxInclusive-4-1.xml",
+ "NISTXML-gMonthDay-maxInclusive-3-5.xml",
+ "NISTXML-gMonthDay-maxInclusive-3-4.xml",
+ "NISTXML-gMonthDay-maxInclusive-3-3.xml",
+ "NISTXML-gMonthDay-maxInclusive-3-2.xml",
+ "NISTXML-gMonthDay-maxInclusive-3-1.xml",
+ "NISTXML-gMonthDay-maxInclusive-2-5.xml",
+ "NISTXML-gMonthDay-maxInclusive-2-4.xml",
+ "NISTXML-gMonthDay-maxInclusive-2-3.xml",
+ "NISTXML-gMonthDay-maxInclusive-2-2.xml",
+ "NISTXML-gMonthDay-maxInclusive-2-1.xml",
+ "NISTXML-gMonthDay-maxInclusive-1-1.xml",
+ "NISTXML-gMonthDay-maxExclusive-5-5.xml",
+ "NISTXML-gMonthDay-maxExclusive-5-4.xml",
+ "NISTXML-gMonthDay-maxExclusive-5-3.xml",
+ "NISTXML-gMonthDay-maxExclusive-5-2.xml",
+ "NISTXML-gMonthDay-maxExclusive-5-1.xml",
+ "NISTXML-gMonthDay-maxExclusive-4-5.xml",
+ "NISTXML-gMonthDay-maxExclusive-4-4.xml",
+ "NISTXML-gMonthDay-maxExclusive-4-3.xml",
+ "NISTXML-gMonthDay-maxExclusive-4-2.xml",
+ "NISTXML-gMonthDay-maxExclusive-4-1.xml",
+ "NISTXML-gMonthDay-maxExclusive-3-5.xml",
+ "NISTXML-gMonthDay-maxExclusive-3-4.xml",
+ "NISTXML-gMonthDay-maxExclusive-3-3.xml",
+ "NISTXML-gMonthDay-maxExclusive-3-2.xml",
+ "NISTXML-gMonthDay-maxExclusive-3-1.xml",
+ "NISTXML-gMonthDay-maxExclusive-2-5.xml",
+ "NISTXML-gMonthDay-maxExclusive-2-4.xml",
+ "NISTXML-gMonthDay-maxExclusive-2-3.xml",
+ "NISTXML-gMonthDay-maxExclusive-2-2.xml",
+ "NISTXML-gMonthDay-maxExclusive-2-1.xml",
+ "NISTXML-gMonthDay-maxExclusive-1-1.xml",
+ "NISTXML-gMonthDay-minInclusive-5-1.xml",
+ "NISTXML-gMonthDay-minInclusive-4-5.xml",
+ "NISTXML-gMonthDay-minInclusive-4-4.xml",
+ "NISTXML-gMonthDay-minInclusive-4-3.xml",
+ "NISTXML-gMonthDay-minInclusive-4-2.xml",
+ "NISTXML-gMonthDay-minInclusive-4-1.xml",
+ "NISTXML-gMonthDay-minInclusive-3-5.xml",
+ "NISTXML-gMonthDay-minInclusive-3-4.xml",
+ "NISTXML-gMonthDay-minInclusive-3-3.xml",
+ "NISTXML-gMonthDay-minInclusive-3-2.xml",
+ "NISTXML-gMonthDay-minInclusive-3-1.xml",
+ "NISTXML-gMonthDay-minInclusive-2-5.xml",
+ "NISTXML-gMonthDay-minInclusive-2-4.xml",
+ "NISTXML-gMonthDay-minInclusive-2-3.xml",
+ "NISTXML-gMonthDay-minInclusive-2-2.xml",
+ "NISTXML-gMonthDay-minInclusive-2-1.xml",
+ "NISTXML-gMonthDay-minInclusive-1-5.xml",
+ "NISTXML-gMonthDay-minInclusive-1-4.xml",
+ "NISTXML-gMonthDay-minInclusive-1-3.xml",
+ "NISTXML-gMonthDay-minInclusive-1-2.xml",
+ "NISTXML-gMonthDay-minInclusive-1-1.xml",
+ "NISTXML-gMonthDay-minExclusive-5-1.xml",
+ "NISTXML-gMonthDay-minExclusive-4-5.xml",
+ "NISTXML-gMonthDay-minExclusive-4-4.xml",
+ "NISTXML-gMonthDay-minExclusive-4-3.xml",
+ "NISTXML-gMonthDay-minExclusive-4-2.xml",
+ "NISTXML-gMonthDay-minExclusive-4-1.xml",
+ "NISTXML-gMonthDay-minExclusive-3-5.xml",
+ "NISTXML-gMonthDay-minExclusive-3-4.xml",
+ "NISTXML-gMonthDay-minExclusive-3-3.xml",
+ "NISTXML-gMonthDay-minExclusive-3-2.xml",
+ "NISTXML-gMonthDay-minExclusive-3-1.xml",
+ "NISTXML-gMonthDay-minExclusive-2-5.xml",
+ "NISTXML-gMonthDay-minExclusive-2-4.xml",
+ "NISTXML-gMonthDay-minExclusive-2-3.xml",
+ "NISTXML-gMonthDay-minExclusive-2-2.xml",
+ "NISTXML-gMonthDay-minExclusive-2-1.xml",
+ "NISTXML-gMonthDay-minExclusive-1-5.xml",
+ "NISTXML-gMonthDay-minExclusive-1-4.xml",
+ "NISTXML-gMonthDay-minExclusive-1-3.xml",
+ "NISTXML-gMonthDay-minExclusive-1-2.xml",
+ "NISTXML-gMonthDay-minExclusive-1-1.xml"],[]}}.
+{'NISTSchema-gYear-',{["NISTXML-gYear-maxInclusive-5-5.xml",
+ "NISTXML-gYear-maxInclusive-5-4.xml",
+ "NISTXML-gYear-maxInclusive-5-3.xml",
+ "NISTXML-gYear-maxInclusive-5-2.xml",
+ "NISTXML-gYear-maxInclusive-5-1.xml",
+ "NISTXML-gYear-maxInclusive-4-5.xml",
+ "NISTXML-gYear-maxInclusive-4-4.xml",
+ "NISTXML-gYear-maxInclusive-4-3.xml",
+ "NISTXML-gYear-maxInclusive-4-2.xml",
+ "NISTXML-gYear-maxInclusive-4-1.xml",
+ "NISTXML-gYear-maxInclusive-3-5.xml",
+ "NISTXML-gYear-maxInclusive-3-4.xml",
+ "NISTXML-gYear-maxInclusive-3-3.xml",
+ "NISTXML-gYear-maxInclusive-3-2.xml",
+ "NISTXML-gYear-maxInclusive-3-1.xml",
+ "NISTXML-gYear-maxInclusive-2-1.xml",
+ "NISTXML-gYear-maxInclusive-1-1.xml",
+ "NISTXML-gYear-maxExclusive-5-5.xml",
+ "NISTXML-gYear-maxExclusive-5-4.xml",
+ "NISTXML-gYear-maxExclusive-5-3.xml",
+ "NISTXML-gYear-maxExclusive-5-2.xml",
+ "NISTXML-gYear-maxExclusive-5-1.xml",
+ "NISTXML-gYear-maxExclusive-4-5.xml",
+ "NISTXML-gYear-maxExclusive-4-4.xml",
+ "NISTXML-gYear-maxExclusive-4-3.xml",
+ "NISTXML-gYear-maxExclusive-4-2.xml",
+ "NISTXML-gYear-maxExclusive-4-1.xml",
+ "NISTXML-gYear-maxExclusive-3-5.xml",
+ "NISTXML-gYear-maxExclusive-3-4.xml",
+ "NISTXML-gYear-maxExclusive-3-3.xml",
+ "NISTXML-gYear-maxExclusive-3-2.xml",
+ "NISTXML-gYear-maxExclusive-3-1.xml",
+ "NISTXML-gYear-maxExclusive-2-5.xml",
+ "NISTXML-gYear-maxExclusive-2-4.xml",
+ "NISTXML-gYear-maxExclusive-2-3.xml",
+ "NISTXML-gYear-maxExclusive-2-2.xml",
+ "NISTXML-gYear-maxExclusive-2-1.xml",
+ "NISTXML-gYear-maxExclusive-1-1.xml",
+ "NISTXML-gYear-minInclusive-5-1.xml",
+ "NISTXML-gYear-minInclusive-4-5.xml",
+ "NISTXML-gYear-minInclusive-4-4.xml",
+ "NISTXML-gYear-minInclusive-4-3.xml",
+ "NISTXML-gYear-minInclusive-4-2.xml",
+ "NISTXML-gYear-minInclusive-4-1.xml",
+ "NISTXML-gYear-minInclusive-3-5.xml",
+ "NISTXML-gYear-minInclusive-3-4.xml",
+ "NISTXML-gYear-minInclusive-3-3.xml",
+ "NISTXML-gYear-minInclusive-3-2.xml",
+ "NISTXML-gYear-minInclusive-3-1.xml",
+ "NISTXML-gYear-minInclusive-2-5.xml",
+ "NISTXML-gYear-minInclusive-2-4.xml",
+ "NISTXML-gYear-minInclusive-2-3.xml",
+ "NISTXML-gYear-minInclusive-2-2.xml",
+ "NISTXML-gYear-minInclusive-2-1.xml",
+ "NISTXML-gYear-minInclusive-1-5.xml",
+ "NISTXML-gYear-minInclusive-1-4.xml",
+ "NISTXML-gYear-minInclusive-1-3.xml",
+ "NISTXML-gYear-minInclusive-1-2.xml",
+ "NISTXML-gYear-minInclusive-1-1.xml",
+ "NISTXML-gYear-minExclusive-5-1.xml",
+ "NISTXML-gYear-minExclusive-4-5.xml",
+ "NISTXML-gYear-minExclusive-4-4.xml",
+ "NISTXML-gYear-minExclusive-4-3.xml",
+ "NISTXML-gYear-minExclusive-4-2.xml",
+ "NISTXML-gYear-minExclusive-4-1.xml",
+ "NISTXML-gYear-minExclusive-3-5.xml",
+ "NISTXML-gYear-minExclusive-3-4.xml",
+ "NISTXML-gYear-minExclusive-3-3.xml",
+ "NISTXML-gYear-minExclusive-3-2.xml",
+ "NISTXML-gYear-minExclusive-3-1.xml",
+ "NISTXML-gYear-minExclusive-2-5.xml",
+ "NISTXML-gYear-minExclusive-2-4.xml",
+ "NISTXML-gYear-minExclusive-2-3.xml",
+ "NISTXML-gYear-minExclusive-2-2.xml",
+ "NISTXML-gYear-minExclusive-2-1.xml",
+ "NISTXML-gYear-minExclusive-1-5.xml",
+ "NISTXML-gYear-minExclusive-1-4.xml",
+ "NISTXML-gYear-minExclusive-1-3.xml",
+ "NISTXML-gYear-minExclusive-1-2.xml",
+ "NISTXML-gYear-minExclusive-1-1.xml"],[]}}.
+{'NISTSchema-gYearMonth',{["NISTXML-gYearMonth-maxInclusive-5-5.xml",
+ "NISTXML-gYearMonth-maxInclusive-5-4.xml",
+ "NISTXML-gYearMonth-maxInclusive-5-3.xml",
+ "NISTXML-gYearMonth-maxInclusive-5-2.xml",
+ "NISTXML-gYearMonth-maxInclusive-5-1.xml",
+ "NISTXML-gYearMonth-maxInclusive-4-5.xml",
+ "NISTXML-gYearMonth-maxInclusive-4-4.xml",
+ "NISTXML-gYearMonth-maxInclusive-4-3.xml",
+ "NISTXML-gYearMonth-maxInclusive-4-2.xml",
+ "NISTXML-gYearMonth-maxInclusive-4-1.xml",
+ "NISTXML-gYearMonth-maxInclusive-3-5.xml",
+ "NISTXML-gYearMonth-maxInclusive-3-4.xml",
+ "NISTXML-gYearMonth-maxInclusive-3-3.xml",
+ "NISTXML-gYearMonth-maxInclusive-3-2.xml",
+ "NISTXML-gYearMonth-maxInclusive-3-1.xml",
+ "NISTXML-gYearMonth-maxInclusive-2-5.xml",
+ "NISTXML-gYearMonth-maxInclusive-2-4.xml",
+ "NISTXML-gYearMonth-maxInclusive-2-3.xml",
+ "NISTXML-gYearMonth-maxInclusive-2-2.xml",
+ "NISTXML-gYearMonth-maxInclusive-2-1.xml",
+ "NISTXML-gYearMonth-maxInclusive-1-1.xml",
+ "NISTXML-gYearMonth-maxExclusive-5-5.xml",
+ "NISTXML-gYearMonth-maxExclusive-5-4.xml",
+ "NISTXML-gYearMonth-maxExclusive-5-3.xml",
+ "NISTXML-gYearMonth-maxExclusive-5-2.xml",
+ "NISTXML-gYearMonth-maxExclusive-5-1.xml",
+ "NISTXML-gYearMonth-maxExclusive-4-5.xml",
+ "NISTXML-gYearMonth-maxExclusive-4-4.xml",
+ "NISTXML-gYearMonth-maxExclusive-4-3.xml",
+ "NISTXML-gYearMonth-maxExclusive-4-2.xml",
+ "NISTXML-gYearMonth-maxExclusive-4-1.xml",
+ "NISTXML-gYearMonth-maxExclusive-3-5.xml",
+ "NISTXML-gYearMonth-maxExclusive-3-4.xml",
+ "NISTXML-gYearMonth-maxExclusive-3-3.xml",
+ "NISTXML-gYearMonth-maxExclusive-3-2.xml",
+ "NISTXML-gYearMonth-maxExclusive-3-1.xml",
+ "NISTXML-gYearMonth-maxExclusive-2-5.xml",
+ "NISTXML-gYearMonth-maxExclusive-2-4.xml",
+ "NISTXML-gYearMonth-maxExclusive-2-3.xml",
+ "NISTXML-gYearMonth-maxExclusive-2-2.xml",
+ "NISTXML-gYearMonth-maxExclusive-2-1.xml",
+ "NISTXML-gYearMonth-maxExclusive-1-1.xml",
+ "NISTXML-gYearMonth-minInclusive-5-1.xml",
+ "NISTXML-gYearMonth-minInclusive-4-5.xml",
+ "NISTXML-gYearMonth-minInclusive-4-4.xml",
+ "NISTXML-gYearMonth-minInclusive-4-3.xml",
+ "NISTXML-gYearMonth-minInclusive-4-2.xml",
+ "NISTXML-gYearMonth-minInclusive-4-1.xml",
+ "NISTXML-gYearMonth-minInclusive-3-5.xml",
+ "NISTXML-gYearMonth-minInclusive-3-4.xml",
+ "NISTXML-gYearMonth-minInclusive-3-3.xml",
+ "NISTXML-gYearMonth-minInclusive-3-2.xml",
+ "NISTXML-gYearMonth-minInclusive-3-1.xml",
+ "NISTXML-gYearMonth-minInclusive-2-5.xml",
+ "NISTXML-gYearMonth-minInclusive-2-4.xml",
+ "NISTXML-gYearMonth-minInclusive-2-3.xml",
+ "NISTXML-gYearMonth-minInclusive-2-2.xml",
+ "NISTXML-gYearMonth-minInclusive-2-1.xml",
+ "NISTXML-gYearMonth-minInclusive-1-5.xml",
+ "NISTXML-gYearMonth-minInclusive-1-4.xml",
+ "NISTXML-gYearMonth-minInclusive-1-3.xml",
+ "NISTXML-gYearMonth-minInclusive-1-2.xml",
+ "NISTXML-gYearMonth-minInclusive-1-1.xml",
+ "NISTXML-gYearMonth-minExclusive-5-1.xml",
+ "NISTXML-gYearMonth-minExclusive-4-5.xml",
+ "NISTXML-gYearMonth-minExclusive-4-4.xml",
+ "NISTXML-gYearMonth-minExclusive-4-3.xml",
+ "NISTXML-gYearMonth-minExclusive-4-2.xml",
+ "NISTXML-gYearMonth-minExclusive-4-1.xml",
+ "NISTXML-gYearMonth-minExclusive-3-5.xml",
+ "NISTXML-gYearMonth-minExclusive-3-4.xml",
+ "NISTXML-gYearMonth-minExclusive-3-3.xml",
+ "NISTXML-gYearMonth-minExclusive-3-2.xml",
+ "NISTXML-gYearMonth-minExclusive-3-1.xml",
+ "NISTXML-gYearMonth-minExclusive-2-5.xml",
+ "NISTXML-gYearMonth-minExclusive-2-4.xml",
+ "NISTXML-gYearMonth-minExclusive-2-3.xml",
+ "NISTXML-gYearMonth-minExclusive-2-2.xml",
+ "NISTXML-gYearMonth-minExclusive-2-1.xml",
+ "NISTXML-gYearMonth-minExclusive-1-5.xml",
+ "NISTXML-gYearMonth-minExclusive-1-4.xml",
+ "NISTXML-gYearMonth-minExclusive-1-3.xml",
+ "NISTXML-gYearMonth-minExclusive-1-2.xml",
+ "NISTXML-gYearMonth-minExclusive-1-1.xml"],[]}}.
+{'NISTSchema-hexBinary',{["NISTXML-hexBinary-length-5-5.xml",
+ "NISTXML-hexBinary-length-5-4.xml",
+ "NISTXML-hexBinary-length-5-3.xml",
+ "NISTXML-hexBinary-length-5-2.xml",
+ "NISTXML-hexBinary-length-5-1.xml",
+ "NISTXML-hexBinary-length-4-5.xml",
+ "NISTXML-hexBinary-length-4-4.xml",
+ "NISTXML-hexBinary-length-4-3.xml",
+ "NISTXML-hexBinary-length-4-2.xml",
+ "NISTXML-hexBinary-length-4-1.xml",
+ "NISTXML-hexBinary-length-3-5.xml",
+ "NISTXML-hexBinary-length-3-4.xml",
+ "NISTXML-hexBinary-length-3-3.xml",
+ "NISTXML-hexBinary-length-3-2.xml",
+ "NISTXML-hexBinary-length-3-1.xml",
+ "NISTXML-hexBinary-length-2-5.xml",
+ "NISTXML-hexBinary-length-2-4.xml",
+ "NISTXML-hexBinary-length-2-3.xml",
+ "NISTXML-hexBinary-length-2-2.xml",
+ "NISTXML-hexBinary-length-2-1.xml",
+ "NISTXML-hexBinary-length-1-5.xml",
+ "NISTXML-hexBinary-length-1-4.xml",
+ "NISTXML-hexBinary-length-1-3.xml",
+ "NISTXML-hexBinary-length-1-2.xml",
+ "NISTXML-hexBinary-length-1-1.xml",
+ "NISTXML-hexBinary-maxLength-5-5.xml",
+ "NISTXML-hexBinary-maxLength-5-4.xml",
+ "NISTXML-hexBinary-maxLength-4-5.xml",
+ "NISTXML-hexBinary-maxLength-4-4.xml",
+ "NISTXML-hexBinary-maxLength-3-5.xml",
+ "NISTXML-hexBinary-maxLength-3-4.xml",
+ "NISTXML-hexBinary-maxLength-2-5.xml",
+ "NISTXML-hexBinary-maxLength-2-4.xml",
+ "NISTXML-hexBinary-maxLength-2-3.xml",
+ "NISTXML-hexBinary-maxLength-1-5.xml",
+ "NISTXML-hexBinary-maxLength-1-4.xml",
+ "NISTXML-hexBinary-maxLength-1-3.xml",
+ "NISTXML-hexBinary-maxLength-1-2.xml",
+ "NISTXML-hexBinary-maxLength-1-1.xml"],[]}}.
+{'NISTSchema-negativeInteger',{["NISTXML-negativeInteger-totalDigits-5-5.xml",
+ "NISTXML-negativeInteger-totalDigits-4-5.xml",
+ "NISTXML-negativeInteger-totalDigits-3-5.xml",
+ "NISTXML-negativeInteger-totalDigits-2-5.xml",
+ "NISTXML-negativeInteger-totalDigits-1-5.xml",
+ "NISTXML-negativeInteger-totalDigits-1-4.xml",
+ "NISTXML-negativeInteger-totalDigits-1-3.xml",
+ "NISTXML-negativeInteger-totalDigits-1-2.xml",
+ "NISTXML-negativeInteger-totalDigits-1-1.xml"],[]}}.
+{'NISTSchema-nonPositiveInteger',{["NISTXML-nonPositiveInteger-totalDigits-5-5.xml",
+ "NISTXML-nonPositiveInteger-totalDigits-4-5.xml",
+ "NISTXML-nonPositiveInteger-totalDigits-3-5.xml",
+ "NISTXML-nonPositiveInteger-totalDigits-2-5.xml",
+ "NISTXML-nonPositiveInteger-totalDigits-1-5.xml",
+ "NISTXML-nonPositiveInteger-totalDigits-1-4.xml",
+ "NISTXML-nonPositiveInteger-totalDigits-1-3.xml",
+ "NISTXML-nonPositiveInteger-totalDigits-1-2.xml",
+ "NISTXML-nonPositiveInteger-totalDigits-1-1.xml"],[]}}.
+{'NISTSchema-normalizedString',{["NISTXML-normalizedString-length-1-1.xml",
+ "NISTXML-normalizedString-maxLength-5-5.xml",
+ "NISTXML-normalizedString-maxLength-5-4.xml",
+ "NISTXML-normalizedString-maxLength-5-3.xml",
+ "NISTXML-normalizedString-maxLength-5-2.xml",
+ "NISTXML-normalizedString-maxLength-5-1.xml",
+ "NISTXML-normalizedString-maxLength-4-5.xml",
+ "NISTXML-normalizedString-maxLength-4-4.xml",
+ "NISTXML-normalizedString-maxLength-4-3.xml",
+ "NISTXML-normalizedString-maxLength-4-2.xml",
+ "NISTXML-normalizedString-maxLength-4-1.xml",
+ "NISTXML-normalizedString-maxLength-3-5.xml",
+ "NISTXML-normalizedString-maxLength-3-4.xml",
+ "NISTXML-normalizedString-maxLength-3-3.xml",
+ "NISTXML-normalizedString-maxLength-3-2.xml",
+ "NISTXML-normalizedString-maxLength-3-1.xml",
+ "NISTXML-normalizedString-maxLength-2-5.xml",
+ "NISTXML-normalizedString-maxLength-2-4.xml",
+ "NISTXML-normalizedString-maxLength-2-3.xml",
+ "NISTXML-normalizedString-maxLength-2-2.xml",
+ "NISTXML-normalizedString-maxLength-2-1.xml",
+ "NISTXML-normalizedString-maxLength-1-1.xml"],[]}}.
+{'NISTSchema-string',{["NISTXML-string-length-1-1.xml",
+ "NISTXML-string-maxLength-5-5.xml",
+ "NISTXML-string-maxLength-5-4.xml",
+ "NISTXML-string-maxLength-5-3.xml",
+ "NISTXML-string-maxLength-5-2.xml",
+ "NISTXML-string-maxLength-5-1.xml",
+ "NISTXML-string-maxLength-4-5.xml",
+ "NISTXML-string-maxLength-4-4.xml",
+ "NISTXML-string-maxLength-4-3.xml",
+ "NISTXML-string-maxLength-4-2.xml",
+ "NISTXML-string-maxLength-4-1.xml",
+ "NISTXML-string-maxLength-3-5.xml",
+ "NISTXML-string-maxLength-3-4.xml",
+ "NISTXML-string-maxLength-3-3.xml",
+ "NISTXML-string-maxLength-3-2.xml",
+ "NISTXML-string-maxLength-3-1.xml",
+ "NISTXML-string-maxLength-2-5.xml",
+ "NISTXML-string-maxLength-2-4.xml",
+ "NISTXML-string-maxLength-2-3.xml",
+ "NISTXML-string-maxLength-2-2.xml",
+ "NISTXML-string-maxLength-2-1.xml",
+ "NISTXML-string-maxLength-1-1.xml"],[]}}.
+{'NISTSchema-time',{["NISTXML-time-maxInclusive-5-5.xml",
+ "NISTXML-time-maxInclusive-5-4.xml",
+ "NISTXML-time-maxInclusive-5-3.xml",
+ "NISTXML-time-maxInclusive-5-2.xml",
+ "NISTXML-time-maxInclusive-5-1.xml",
+ "NISTXML-time-maxInclusive-4-5.xml",
+ "NISTXML-time-maxInclusive-4-4.xml",
+ "NISTXML-time-maxInclusive-4-3.xml",
+ "NISTXML-time-maxInclusive-4-2.xml",
+ "NISTXML-time-maxInclusive-4-1.xml",
+ "NISTXML-time-maxInclusive-3-5.xml",
+ "NISTXML-time-maxInclusive-3-4.xml",
+ "NISTXML-time-maxInclusive-3-3.xml",
+ "NISTXML-time-maxInclusive-3-2.xml",
+ "NISTXML-time-maxInclusive-3-1.xml",
+ "NISTXML-time-maxInclusive-2-5.xml",
+ "NISTXML-time-maxInclusive-2-4.xml",
+ "NISTXML-time-maxInclusive-2-3.xml",
+ "NISTXML-time-maxInclusive-2-2.xml",
+ "NISTXML-time-maxInclusive-2-1.xml",
+ "NISTXML-time-maxInclusive-1-1.xml",
+ "NISTXML-time-maxExclusive-5-5.xml",
+ "NISTXML-time-maxExclusive-5-4.xml",
+ "NISTXML-time-maxExclusive-5-3.xml",
+ "NISTXML-time-maxExclusive-5-2.xml",
+ "NISTXML-time-maxExclusive-5-1.xml",
+ "NISTXML-time-maxExclusive-4-5.xml",
+ "NISTXML-time-maxExclusive-4-4.xml",
+ "NISTXML-time-maxExclusive-4-3.xml",
+ "NISTXML-time-maxExclusive-4-2.xml",
+ "NISTXML-time-maxExclusive-4-1.xml",
+ "NISTXML-time-maxExclusive-3-5.xml",
+ "NISTXML-time-maxExclusive-3-4.xml",
+ "NISTXML-time-maxExclusive-3-3.xml",
+ "NISTXML-time-maxExclusive-3-2.xml",
+ "NISTXML-time-maxExclusive-3-1.xml",
+ "NISTXML-time-maxExclusive-2-5.xml",
+ "NISTXML-time-maxExclusive-2-4.xml",
+ "NISTXML-time-maxExclusive-2-3.xml",
+ "NISTXML-time-maxExclusive-2-2.xml",
+ "NISTXML-time-maxExclusive-2-1.xml",
+ "NISTXML-time-maxExclusive-1-1.xml",
+ "NISTXML-time-minInclusive-5-1.xml",
+ "NISTXML-time-minInclusive-4-5.xml",
+ "NISTXML-time-minInclusive-4-4.xml",
+ "NISTXML-time-minInclusive-4-3.xml",
+ "NISTXML-time-minInclusive-4-2.xml",
+ "NISTXML-time-minInclusive-4-1.xml",
+ "NISTXML-time-minInclusive-3-5.xml",
+ "NISTXML-time-minInclusive-3-4.xml",
+ "NISTXML-time-minInclusive-3-3.xml",
+ "NISTXML-time-minInclusive-3-2.xml",
+ "NISTXML-time-minInclusive-3-1.xml",
+ "NISTXML-time-minInclusive-2-5.xml",
+ "NISTXML-time-minInclusive-2-4.xml",
+ "NISTXML-time-minInclusive-2-3.xml",
+ "NISTXML-time-minInclusive-2-2.xml",
+ "NISTXML-time-minInclusive-2-1.xml",
+ "NISTXML-time-minInclusive-1-5.xml",
+ "NISTXML-time-minInclusive-1-4.xml",
+ "NISTXML-time-minInclusive-1-3.xml",
+ "NISTXML-time-minInclusive-1-2.xml",
+ "NISTXML-time-minInclusive-1-1.xml",
+ "NISTXML-time-minExclusive-5-1.xml",
+ "NISTXML-time-minExclusive-4-5.xml",
+ "NISTXML-time-minExclusive-4-4.xml",
+ "NISTXML-time-minExclusive-4-3.xml",
+ "NISTXML-time-minExclusive-4-2.xml",
+ "NISTXML-time-minExclusive-4-1.xml",
+ "NISTXML-time-minExclusive-3-5.xml",
+ "NISTXML-time-minExclusive-3-4.xml",
+ "NISTXML-time-minExclusive-3-3.xml",
+ "NISTXML-time-minExclusive-3-2.xml",
+ "NISTXML-time-minExclusive-3-1.xml",
+ "NISTXML-time-minExclusive-2-5.xml",
+ "NISTXML-time-minExclusive-2-4.xml",
+ "NISTXML-time-minExclusive-2-3.xml",
+ "NISTXML-time-minExclusive-2-2.xml",
+ "NISTXML-time-minExclusive-2-1.xml",
+ "NISTXML-time-minExclusive-1-5.xml",
+ "NISTXML-time-minExclusive-1-4.xml",
+ "NISTXML-time-minExclusive-1-3.xml",
+ "NISTXML-time-minExclusive-1-2.xml",
+ "NISTXML-time-minExclusive-1-1.xml"],[]}}.
+{'NISTSchema-token',{["NISTXML-token-length-1-1.xml",
+ "NISTXML-token-minLength-1-5.xml",
+ "NISTXML-token-minLength-1-4.xml",
+ "NISTXML-token-minLength-1-3.xml",
+ "NISTXML-token-minLength-1-2.xml",
+ "NISTXML-token-minLength-1-1.xml",
+ "NISTXML-token-maxLength-5-5.xml",
+ "NISTXML-token-maxLength-5-4.xml",
+ "NISTXML-token-maxLength-5-3.xml",
+ "NISTXML-token-maxLength-5-2.xml",
+ "NISTXML-token-maxLength-5-1.xml",
+ "NISTXML-token-maxLength-4-5.xml",
+ "NISTXML-token-maxLength-4-4.xml",
+ "NISTXML-token-maxLength-4-3.xml",
+ "NISTXML-token-maxLength-4-2.xml",
+ "NISTXML-token-maxLength-4-1.xml",
+ "NISTXML-token-maxLength-3-5.xml",
+ "NISTXML-token-maxLength-3-4.xml",
+ "NISTXML-token-maxLength-3-3.xml",
+ "NISTXML-token-maxLength-3-2.xml",
+ "NISTXML-token-maxLength-3-1.xml",
+ "NISTXML-token-maxLength-2-5.xml",
+ "NISTXML-token-maxLength-2-4.xml",
+ "NISTXML-token-maxLength-2-3.xml",
+ "NISTXML-token-maxLength-2-2.xml",
+ "NISTXML-token-maxLength-2-1.xml",
+ "NISTXML-token-maxLength-1-1.xml"],[]}}.
diff --git a/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nisttest.tar.gz b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nisttest.tar.gz
new file mode 100644
index 0000000000..03d575c268
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nisttest.tar.gz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html
new file mode 100644
index 0000000000..5c89ffd95e
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+
+
+ <meta http-equiv="Content-Type" content="text/html"><title>DOCUMENT NOTICE</title>
+
+ <link rel="stylesheet" type="text/css" href="copyright-documents-19990405_files/base.css"></head><body bgcolor="#ffffff" text="#000000">
+<h1>W3C<sup>�</sup> DOCUMENT NOTICE AND LICENSE</h1>
+
+<h3>Copyright � 1994-2002 <a href="http://www.w3.org/">World Wide Web
+Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de Recherche
+en Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio
+University</a>). All Rights Reserved.<br>
+http://www.w3.org/Consortium/Legal/</h3>
+
+<p>Public documents on the W3C site are provided by the copyright holders
+under the following license. The software or Document Type Definitions (DTDs)
+associated with W3C specifications are governed by the <a href="http://www.w3.org/Consortium/Legal/copyright-software.html"> Software
+Notice</a>. By using and/or copying this document, or the W3C document from
+which this statement is linked, you (the licensee) agree that you have read,
+understood, and will comply with the following terms and conditions:</p>
+
+<p>Permission to use, copy, and distribute the contents of this document, or
+the W3C document from which this statement is linked, in any medium for any
+purpose and without fee or royalty is hereby granted, provided that you
+include the following on <i>ALL</i> copies of the document, or portions
+thereof, that you use:</p>
+<ol>
+ <li>A link or URL to the original W3C document.</li>
+ <li>The pre-existing copyright notice of the original author, or if it
+ doesn't exist, a notice of the form: "Copyright � [$date-of-document] <a href="http://www.w3.org/">World Wide Web Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of Technology</a>,
+ <a href="http://www.inria.fr/"> Institut National de Recherche en
+ Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio
+ University</a>). All Rights Reserved.
+ http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but a
+ textual representation is permitted.)</li>
+ <li><em>If it exists</em>, the STATUS of the W3C document.</li>
+</ol>
+
+<p>When space permits, inclusion of the full text of this <b> NOTICE</b>
+should be provided. We request that authorship attribution be provided in any
+software, documents, or other items or products that you create pursuant to
+the implementation of the contents of this document, or any portion
+thereof.</p>
+
+<p>No right to create modifications or derivatives of W3C documents is
+granted pursuant to this license. However, if additional requirements
+(documented in the <a href="http://www.w3.org/Consortium/Legal/IPR-FAQ.html">Copyright FAQ</a>) are satisfied,
+the right to create modifications or derivatives is&nbsp;sometimes granted by the
+W3C to individuals complying with those requirements.</p>
+
+<p>THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
+REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED
+TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE
+FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT
+INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
+
+<p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE
+PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.</p>
+
+<p>The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to this document or its contents without
+specific, written prior permission. Title to copyright in this document will
+at all times remain with copyright holders.</p>
+
+<p>----------------------------------------------------------------------------</p>
+
+<p>This formulation of W3C's notice and license became active on April 05
+1999 so as to account for the treatment of DTDs, schema's and bindings. See
+the <a href="http://www.w3.org/Consortium/Legal/copyright-documents-19990218.html"> older formulation</a> for
+the policy prior to this date. Please see our <a href="http://www.w3.org/Consortium/Legal/IPR-FAQ.html">Copyright FAQ</a> for common questions about using
+materials from our site, including specific terms and conditions for packages
+like libwww, Amaya, and Jigsaw. Other questions about this notice can be
+directed to <a href="mailto:[email protected]">[email protected]</a>.</p>
+<address>
+ <a href="http://w3.org/Help/Webmaster.html">webmaster</a><br>
+ (last updated by reagle on 1999/04/99.)
+</address>
+</body></html> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE.erl b/lib/xmerl/test/xmerl_xsd_SUITE.erl
new file mode 100644
index 0000000000..74de42aee5
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE.erl
@@ -0,0 +1,1148 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2006-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%%% Purpose : Test suite for the ASN.1 application
+
+-module(xmerl_xsd_SUITE).
+
+-compile(export_all).
+%%-export([Function/Arity, ...]).
+
+-include_lib("test_server/include/test_server.hrl").
+%%-include("xmerl.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+
+-import(xmerl_xsd_type,[check_simpleType/3]).
+
+all() ->
+ [{group, type_tests}, {group, facets},
+ {group, misc_block_tests}, {group, validation_tests},
+ {group, ticket_tests}].
+
+groups() ->
+ [{type_tests, [],
+ [{group, primitive_datatypes},
+ {group, derived_datatypes}]},
+ {validation_tests, [],
+ [{group, xmlSchemaPrimerExamples},
+ {group, miscXMLexamples}]},
+ {primitive_datatypes, [],
+ [string, boolean, decimal, float, double, duration,
+ dateTime, time, date, gYearMonth, gYear, gMonthDay,
+ gDay, gMonth, hexBinary, base64Binary, anyURI, 'QName',
+ 'NOTATION']},
+ {derived_datatypes, [],
+ [normalizedString, token, language, 'NMTOKEN',
+ 'NMTOKENS', 'Name', 'NCName', 'ID', 'IDREF', 'IDREFS',
+ 'ENTITY', 'ENTITIES', integer, nonPositiveInteger,
+ negativeInteger, long, int, short, byte,
+ nonNegativeInteger, unsignedLong, unsignedInt,
+ unsignedShort, unsignedByte, positiveInteger]},
+ {xmlSchemaPrimerExamples, [],
+ [po, po1, po2, ipo, ipo_redefine, '4Q99']},
+ {miscXMLexamples, [],
+ [small, complexType1, model_group_all,
+ substitutionGroup, attributeGroup, test_key1, sis1,
+ sis2, state2file_file2state, union]},
+ {ticket_tests, [],
+ [ticket_6910, ticket_7165, ticket_7190, ticket_7288,
+ ticket_7736, ticket_8599]},
+ {facets, [],
+ [length, minLength, maxLength, pattern, enumeration,
+ whiteSpace, maxInclusive, maxExclusive, minExclusive,
+ minInclusive, totalDigits, fractionDigits]},
+ {misc_block_tests, [],
+ [compare_dateTime, compare_duration]}].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+init_per_testcase(_TestCase,Config) ->
+ {ok, _} =
+ file:read_file_info(filename:join([?config(priv_dir,Config)])),
+ code:add_patha(?config(priv_dir,Config)),
+ Dog=test_server:timetrap({minutes,10}),
+ [{watchdog, Dog}|Config].
+
+end_per_testcase(_Func,Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ ok.
+
+
+string(suite) -> [];
+string(_Config) ->
+ %% #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
+ Str = [16#9,16#A,16#D,16#20,16#D7FF,16#E000,16#FFFD,16#10000,
+ 16#10FFFF],
+ ?line {ok,_} = check_simpleType(string,Str,dummy).
+
+boolean(suite) -> [];
+boolean(_Config) ->
+ ?line {ok,_} = check_simpleType(boolean,"1",dummy),
+ ?line {ok,_} = check_simpleType(boolean,"0",dummy),
+ ?line {ok,_} = check_simpleType(boolean,"true",dummy),
+ ?line {ok,_} = check_simpleType(boolean,"false",dummy),
+ ?line {error,_Reason} = check_simpleType(boolean,"gurka",dummy).
+
+decimal(suite) -> [];
+decimal(_Config) ->
+ ?line {ok,_} = check_simpleType(decimal,"-1.23",dummy),
+ ?line {ok,_} = check_simpleType(decimal,"12678967.543233",dummy),
+ ?line {ok,_} = check_simpleType(decimal,"+100000.00",dummy),
+ ?line {ok,_} = check_simpleType(decimal,"210",dummy).
+
+float(suite) -> [];
+float(_Config) ->
+ %% -1E4, 1267.43233E12, 12.78e-2, 12 , -0, 0 , INF, -INF, NaN
+ ?line {ok,_} = check_simpleType(float,"-1E4",dummy),
+ ?line {ok,_} = check_simpleType(float,"1267.43233E12",dummy),
+ ?line {ok,_} = check_simpleType(float,"12.78e-2",dummy),
+ ?line {ok,_} = check_simpleType(float,"12",dummy),
+ ?line {ok,_} = check_simpleType(float,"-0",dummy),
+ ?line {ok,_} = check_simpleType(float,"0",dummy),
+ ?line {ok,_} = check_simpleType(float,"INF",dummy),
+ ?line {ok,_} = check_simpleType(float,"-INF",dummy),
+ ?line {ok,_} = check_simpleType(float,"NaN",dummy).
+
+
+double(suite) -> [];
+double(_Config) ->
+ %% -1E4, 1267.43233E12, 12.78e-2, 12 , -0, 0 , INF, -INF, NaN
+ ?line {ok,_} = check_simpleType(double,"-1E4",dummy),
+ ?line {ok,_} = check_simpleType(double,"1267.43233E12",dummy),
+ ?line {ok,_} = check_simpleType(double,"12.78e-2",dummy),
+ ?line {ok,_} = check_simpleType(double,"12",dummy),
+ ?line {ok,_} = check_simpleType(double,"-0",dummy),
+ ?line {ok,_} = check_simpleType(double,"0",dummy),
+ ?line {ok,_} = check_simpleType(double,"INF",dummy),
+ ?line {ok,_} = check_simpleType(double,"-INF",dummy),
+ ?line {ok,_} = check_simpleType(double,"NaN",dummy).
+
+
+duration(suite) -> [];
+duration(_Config) ->
+ %% allowed: P1Y2M3DT10H30M -P120D P1347Y P1347M P1Y2MT2H
+ %% P0Y1347M P0Y1347M0D -P1347M
+ %% not allowed: P-1347M P1Y2MT
+ ?line {ok,_} = check_simpleType(duration,"P1Y2M3DT10H30M",dummy),
+ ?line {ok,_} = check_simpleType(duration,"-P120D",dummy),
+ ?line {ok,_} = check_simpleType(duration,"P1347Y",dummy),
+ ?line {ok,_} = check_simpleType(duration,"P1347M",dummy),
+ ?line {ok,_} = check_simpleType(duration,"P1Y2MT2H",dummy),
+ ?line {ok,_} = check_simpleType(duration,"P0Y1347M",dummy),
+ ?line {ok,_} = check_simpleType(duration,"P0Y1347M0D",dummy),
+ ?line {ok,_} = check_simpleType(duration,"-P1347M",dummy),
+
+ ?line {error,_} = check_simpleType(duration,"P-1347M",dummy),
+ ?line {error,_} = check_simpleType(duration,"P1Y2MT",dummy).
+
+%% '-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
+dateTime(suite) -> [];
+dateTime(_Config) ->
+ %% 2002-10-10T12:00:00-05:00
+ DT1 = "2002-10-10T12:00:00-05:00",
+ ?line {ok,_} = check_simpleType(dateTime,DT1,dummy),
+ DT2 = "2002-10-10T17:00:00Z",
+ ?line {ok,_} = check_simpleType(dateTime,DT2,dummy),
+ %% plus sign prohibited
+ DT3 = "+2002-10-10T17:00:00Z",
+ ?line {error,_Reason3} = check_simpleType(dateTime,DT3,dummy),
+ %% leading zeros when year are more than four digits prohibited
+ DT4 = "002002-10-10T17:00:00Z",
+ ?line {error,_Reason4} = check_simpleType(dateTime,DT4,dummy),
+ DT5 = "1953-12-31T12:10:10.10+12:00",
+ ?line {ok,_} = check_simpleType(dateTime,DT5,dummy).
+
+time(suite) -> [];
+time(_Config) ->
+ %% hh:mm:ss.sss with optional following time zone indicator.
+ T1 = "13:20:00-05:00",
+ ?line {ok,_} = check_simpleType(time,T1,dummy),
+ %% canonical repr. of midnight
+ T2 = "00:00:00",
+ ?line {ok,_} = check_simpleType(time,T2,dummy),
+ T3 = "12:34:56",
+ ?line {ok,_} = check_simpleType(time,T3,dummy),
+ T4 = "12:34:56.552",
+ ?line {ok,_} = check_simpleType(time,T4,dummy),
+ T5 = "12:34:56.552Z",
+ ?line {ok,_} = check_simpleType(time,T5,dummy).
+
+date(suite) -> [];
+date(_Config) ->
+ %% '-'? yyyy '-' mm '-' dd zzzzzz?
+ %% is
+ D1 = "2002-10-10+13:00",
+ ?line {ok,_} = check_simpleType(date,D1,dummy),
+ D2 = "2002-10-09-11:00",
+ ?line {ok,_} = check_simpleType(date,D2,dummy),
+
+ D12 = "+2002-13-09-11:00",
+ ?line {error,_Reason12} = check_simpleType(date,D12,dummy),
+ D13 = "2002-13-09-11:00",
+ ?line {error,_Reason13} = check_simpleType(date,D13,dummy),
+ D14 = "2002-12-39-11:00",
+ ?line {error,_Reason14} = check_simpleType(date,D14,dummy).
+
+gYearMonth(suite) -> [];
+gYearMonth(_Config) ->
+ %% '-'? yyyy '-' mm zzzzzz?
+ GYM1 = "1955-10",
+ ?line {ok,_} = check_simpleType(gYearMonth,GYM1,dummy),
+ GYM2 = "-1955-10",
+ ?line {ok,_} = check_simpleType(gYearMonth,GYM2,dummy),
+ GYM3 = "1955-10Z",
+ ?line {ok,_} = check_simpleType(gYearMonth,GYM3,dummy),
+ GYM4 = "0055-10+10:00",
+ ?line {ok,_} = check_simpleType(gYearMonth,GYM4,dummy),
+ GYM5 = "0955-10Z",
+ ?line {ok,_} = check_simpleType(gYearMonth,GYM5,dummy),
+ GYM6 = "-11955-01",
+ ?line {ok,_} = check_simpleType(gYearMonth,GYM6,dummy),
+
+ ?line {error,_} = check_simpleType(gYearMonth,"+2000-10",dummy),
+ ?line {error,_} = check_simpleType(gYearMonth,"2000-00",dummy),
+ ?line {error,_} = check_simpleType(gYearMonth,"2000-10+10:70",dummy).
+
+gYear(suite) -> [];
+gYear(_Config) ->
+ %% '-'? yyyy zzzzzz?
+ ?line {ok,_} = check_simpleType(gYear,"2000",dummy),
+ ?line {ok,_} = check_simpleType(gYear,"2000-11:30",dummy),
+ ?line {ok,_} = check_simpleType(gYear,"-2000",dummy),
+ ?line {error,_} = check_simpleType(gYear,"0000",dummy).
+
+gMonthDay(suite) -> [];
+gMonthDay(_Config) ->
+ %% mm '-' dd zzzzzz?
+ ?line {ok,_} = check_simpleType(gMonthDay,"--05-03",dummy),
+ ?line {ok,_} = check_simpleType(gMonthDay,"--05-03Z",dummy),
+ ?line {error,_} = check_simpleType(gMonthDay,"05-00",dummy),
+ ?line {error,_} = check_simpleType(gMonthDay,"00-03",dummy),
+ ?line {error,_} = check_simpleType(gMonthDay,"-05-03",dummy).
+
+gDay(suite) -> [];
+gDay(_Config) ->
+ %% dd zzzzzz?
+ ?line {ok,_} = check_simpleType(gDay,"---05",dummy),
+ ?line {ok,_} = check_simpleType(gDay,"---30+03:00",dummy),
+ ?line {error,_} = check_simpleType(gDay,"-30+03:00",dummy),
+ ?line {error,_} = check_simpleType(gDay,"---00+03:00",dummy),
+ ?line {error,_} = check_simpleType(gDay,"---40+03:00",dummy),
+ ?line {error,_} = check_simpleType(gDay,"05",dummy).
+
+gMonth(suite) -> [];
+gMonth(_Config) ->
+ %% mm zzzzzz?
+ ?line {ok,_} = check_simpleType(gMonth,"--05",dummy),
+ ?line {ok,_} = check_simpleType(gMonth,"--10+03:00",dummy),
+ ?line {error,_} = check_simpleType(gMonth,"-10+03:00",dummy),
+ ?line {error,_} = check_simpleType(gMonth,"00+03:00",dummy),
+ ?line {error,_} = check_simpleType(gMonth,"14",dummy),
+ ?line {error,_} = check_simpleType(gMonth,"05",dummy).
+
+
+hexBinary(suite) -> [];
+hexBinary(_Config) ->
+ %% an even number of hexadecimal digits ([0-9a-fA-F]).
+ ?line {ok,_} = check_simpleType(hexBinary,"05",dummy),
+ ?line {ok,_} = check_simpleType(hexBinary,"aF",dummy),
+ ?line {ok,_} = check_simpleType(hexBinary,
+ "0123456789abcdefABCDEF",dummy),
+ ?line {error,_} = check_simpleType(hexBinary,
+ "0123456789absdefABCDEF",dummy),
+ ?line {error,_} = check_simpleType(hexBinary,"aF5",dummy),
+ ?line {error,_} = check_simpleType(hexBinary,"aFG",dummy).
+
+base64Binary(suite) -> [];
+base64Binary(_Config) ->
+ %% a-z, A-Z, 0-9, the plus sign (+), the forward slash (/) and the
+ %% equal sign (=), together with the characters defined in [XML
+ %% 1.0 (Second Edition)] as white space.(16#9, 16#A, 16#D, 16#20)
+ ?line {ok,_} = check_simpleType(base64Binary,"05+/AA==",dummy),
+ ?line {ok,_} = check_simpleType(base64Binary,"05+/AA= =",dummy),
+ ?line {ok,_} = check_simpleType(base64Binary,"05+/A A= =",dummy),
+ ?line {ok,_} = check_simpleType(base64Binary,"05+/ AA= =",dummy),
+ ?line {error,_} = check_simpleType(base64Binary,"05+/AA== ",dummy),
+ B64B1 = "AbCd GhZz 09w=",
+ ?line {ok,_} = check_simpleType(base64Binary,B64B1,dummy),
+ B64B2 = "AbCd GhZ9 0z8 =",
+ ?line {ok,_} = check_simpleType(base64Binary,B64B2,dummy),
+ ?line {ok,_} = check_simpleType(base64Binary,"0z8 =",dummy),
+ ErrB641 = "AbCd GZ9 0z8 =",
+ ?line {error,_} = check_simpleType(base64Binary,ErrB641,dummy).
+
+anyURI(suite) -> [];
+anyURI(_Config) ->
+ URI1 = "ftp://ftp.is.co.za/rfc/rfc1808.txt",
+ URI2 = "gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles",
+ URI3 = "http://www.math.uio.no/faq/compression-faq/part1.html",
+ URI4 = "mailto:[email protected]",
+ URI5 = "news:comp.infosystems.www.servers.unix",
+ URI6 = "telnet://melvyl.ucop.edu/",
+ ?line ok=ok_loop(anyURI,[URI1,URI2,URI3,URI4,URI5,URI6]).
+
+
+'QName'(suite) -> [];
+'QName'(_Config) ->
+ %% QName ::= (Prefix ':')? LocalPart
+ %% Prefix ::= NCName
+ %% LocalPart ::= NCName
+ ?line {ok,_} = check_simpleType('QName',"abc:def",dummy),
+ ?line {ok,_} = check_simpleType('QName',"abc",dummy),
+ ?line {ok,_} = check_simpleType('QName',"abc:def:ijk",dummy).
+
+'NOTATION'(suite) -> [];
+'NOTATION'(_Config) ->
+ ?line {ok,_} = check_simpleType('NOTATION',"abc:def",dummy),
+ ?line {ok,_} = check_simpleType('NOTATION',"abc",dummy),
+ ?line {ok,_} = check_simpleType('NOTATION',"abc:def:ijk",dummy).
+
+normalizedString(suite) -> [];
+normalizedString(_Config) ->
+ %% not contain the carriage return (#xD), line feed (#xA) nor tab
+ %% (#x9) characters.
+ NStr1 = "this string is ok with extra space between characters",
+ NotNStr1 = "this string is not normalized \t",
+ NotNStr2 = "neither is this \n string",
+ NotNStr3 = "or this \r string",
+ ?line {ok,_} = check_simpleType(normalizedString,NStr1,dummy),
+ ?line ok=error_loop(normalizedString,[NotNStr1,NotNStr2,NotNStr3]).
+
+token(suite) -> [];
+token(_Config) ->
+ %% not contain the carriage return (#xD), line feed (#xA) nor tab
+ %% (#x9) characters, that have no leading or trailing spaces
+ %% (#x20) and that have no internal sequences of two or more
+ %% spaces.
+ T1 = "this string is tokenized with only single space between characters",
+ NotT1 = "this string is not ok with extra space between characters",
+ NotT2 = " neither leading space",
+ NotT3 = "nor trailing space ",
+ NotT4 = "tabs not \t allowed",
+ NotT5 = "newlines not allowed\n",
+ NotT6 = "or \r (carriage return)",
+ ?line {ok,_} = check_simpleType(token,T1,dummy),
+ ?line ok=error_loop(token,[NotT1,NotT2,NotT3,NotT4,NotT5,NotT6]).
+
+language(suite) -> [];
+language(_Config) ->
+ %% strings that conform to the pattern
+ %% [a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*
+ L = "Abra-cadabra-123",
+ NotL1 = "Abra123-cadabra!",
+ NotL2 = "Abra-",
+ NotL3 = "Abracadabra",
+ NotL4 = "Abra-cadabrrra",
+ ?line {ok,_} = check_simpleType(language,L,dummy),
+ ?line ok=error_loop(language,[NotL1,NotL2,NotL3,NotL4]).
+
+'NMTOKEN'(suite) -> [];
+'NMTOKEN'(_Config) ->
+ N = "name:withoutspace",
+ NotN1 = "name with space",
+ NotN2 = "namewith#strang/chars)",
+ ?line {ok,_} = check_simpleType('NMTOKEN',N,dummy),
+ ?line {error,_} = check_simpleType('NMTOKEN',NotN1,dummy),
+ ?line {error,_} = check_simpleType('NMTOKEN',NotN2,dummy).
+
+'NMTOKENS'(suite) -> [];
+'NMTOKENS'(_Config) ->
+ N1 = "name1 name:2 name:three",
+ NotN1 = "name na%me",
+ ?line {ok,_} = check_simpleType('NMTOKENS',N1,dummy),
+ ?line {error,_} = check_simpleType('NMTOKENS',NotN1,dummy).
+
+'Name'(suite) -> [];
+'Name'(_Config) ->
+ ?line {ok,_} = check_simpleType('Name',"_valid_Name",dummy).
+
+'NCName'(suite) -> [];
+'NCName'(_Config) ->
+ ?line {ok,_} = check_simpleType('NCName',"_valid_Name",dummy).
+
+'ID'(suite) -> [];
+'ID'(_Config) ->
+ ?line {ok,_} = check_simpleType('ID',"_valid_Name",dummy).
+
+'IDREF'(suite) -> [];
+'IDREF'(_Config) ->
+ ?line {ok,_} = check_simpleType('IDREF',"_valid_Name",dummy).
+
+'IDREFS'(suite) -> [];
+'IDREFS'(_Config) ->
+ ?line {ok,_} = check_simpleType('IDREFS',"_valid_Name Name2",dummy).
+
+'ENTITY'(suite) -> [];
+'ENTITY'(_Config) ->
+ ?line {ok,_} = check_simpleType('ENTITY',"_valid_Name",dummy).
+
+'ENTITIES'(suite) -> [];
+'ENTITIES'(_Config) ->
+ ?line {ok,_} = check_simpleType('ENTITIES',"name name3",dummy).
+
+integer(suite) -> [];
+integer(_Config) ->
+ IntList = ["-1", "0", "12678967543233", "+100000"],
+ ?line ok = ok_loop(integer,IntList),
+ ?line {error,_} = check_simpleType(integer,"1.3",dummy).
+
+nonPositiveInteger(suite) -> [];
+nonPositiveInteger(_Config) ->
+ NPIList = ["0", "-12678967543233", "-100000"],
+ ?line ok = ok_loop(nonPositiveInteger,NPIList),
+ ?line {error,_} = check_simpleType(nonPositiveInteger,"1",dummy).
+
+negativeInteger(suite) -> [];
+negativeInteger(_Config) ->
+ NIList = ["-1", "-12678967543233", "-100000"],
+ ?line ok = ok_loop(negativeInteger,NIList),
+ ?line {error,_} = check_simpleType(negativeInteger,"1",dummy),
+ ?line {error,_} = check_simpleType(negativeInteger,"0",dummy).
+
+long(suite) -> [];
+long(_Config) ->
+ L = ["9223372036854775807","-9223372036854775808","-1", "0",
+ "12678967543233", "+100000"],
+ ?line ok = ok_loop(long,L),
+ Err = ["9223372036854775808","-9223372036854775809"],
+ ?line ok = error_loop(long,Err).
+
+int(suite) -> [];
+int(_Config) ->
+ L = ["2147483647", "-2147483648", "-1", "0", "126789675", "+100000"],
+ ?line ok = ok_loop(int,L),
+ Err = ["2147483648", "-2147483649"],
+ ?line ok = error_loop(int,Err).
+
+short(suite) -> [];
+short(_Config) ->
+ L = ["32767", "-32768", "-1", "0", "12678", "+10000"],
+ ?line ok = ok_loop(short,L),
+ Err = ["32768", "-32769"],
+ ?line ok = error_loop(short,Err).
+
+byte(suite) -> [];
+byte(_Config) ->
+ L = ["-1", "0", "126", "+100", "127", "-128"],
+ ?line ok = ok_loop(byte,L),
+ Err = ["128", "-129"],
+ ?line ok = error_loop(byte,Err).
+
+nonNegativeInteger(suite) -> [];
+nonNegativeInteger(_Config) ->
+ L = ["1", "0", "12678967543233", "+100000"],
+ ?line ok = ok_loop(nonNegativeInteger,L),
+ ?line {error,_} = check_simpleType(nonNegativeInteger,"-1",dummy).
+
+unsignedLong(suite) -> [];
+unsignedLong(_Config) ->
+ L = ["0", "12678967543233", "100000", "18446744073709551615"],
+ ?line ok = ok_loop(unsignedLong,L),
+ Err = ["-1","18446744073709551616"],
+ ?line ok = error_loop(unsignedLong,Err).
+
+unsignedInt(suite) -> [];
+unsignedInt(_Config) ->
+ L = ["4294967295", "0", "1267896754", "100000"],
+ ?line ok = ok_loop(unsignedInt,L),
+ Err = ["-1","4294967296"],
+ ?line ok = error_loop(unsignedInt,Err).
+
+unsignedShort(suite) -> [];
+unsignedShort(_Config) ->
+ L = ["65535", "0", "12678", "10000"],
+ ?line ok = ok_loop(unsignedShort,L),
+ Err = ["-1","65536"],
+ ?line ok = error_loop(unsignedShort,Err).
+
+unsignedByte(suite) -> [];
+unsignedByte(_Config) ->
+ L = ["255", "0", "126", "100"],
+ ?line ok = ok_loop(unsignedByte,L),
+ Err = ["-1","256"],
+ ?line ok = error_loop(unsignedByte,Err).
+
+positiveInteger(suite) -> [];
+positiveInteger(_Config) ->
+ L = ["1", "12678967543233", "+100000"],
+ ?line ok = ok_loop(positiveInteger,L),
+ Err = ["-1","0"],
+ ?line ok = error_loop(positiveInteger,Err).
+
+
+
+ok_loop(_Type,[]) ->
+ ok;
+ok_loop(Type,[H|T]) ->
+ ?line {ok,_} = check_simpleType(Type,H,dummy),
+ ok_loop(Type,T).
+
+error_loop(_T,[]) ->
+ ok;
+error_loop(Type,[H|T]) ->
+ ?line {error,_} = check_simpleType(Type,H,dummy),
+ error_loop(Type,T).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Testing facets
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+length(suite) -> [];
+length(_Config) ->
+ ?line {ok,"string"} =
+ (xmerl_xsd_type:facet_fun(string,{length,"6"}))("string"),
+ ?line {error,{length,12,should_be,6}} =
+ (xmerl_xsd_type:facet_fun(string,{length,"6"}))("stringstring"),
+ ok.
+
+minLength(suite) -> [];
+minLength(_Config) ->
+ ?line {ok,"string"} =
+ (xmerl_xsd_type:facet_fun(string,{minLength,"6"}))("string"),
+ ?line {error,{minLength,3,should_at_least_be,6}} =
+ (xmerl_xsd_type:facet_fun(string,{minLength,"6"}))("str"),
+ ok.
+
+maxLength(suite) -> [];
+maxLength(_Config) ->
+ ?line {ok,"string"} =
+ (xmerl_xsd_type:facet_fun(string,{maxLength,"6"}))("string"),
+ ?line {error,{maxLength,12,should_not_be_more_than,6}} =
+ (xmerl_xsd_type:facet_fun(string,{maxLength,"6"}))("stringstring"),
+ ok.
+
+pattern(suite) -> [];
+pattern(_Config) ->
+ RE1 = "[a-z]{5}",
+ ?line {ok,"calle"} =
+ (xmerl_xsd_type:facet_fun(string,{pattern,RE1}))
+ ("calle"),
+ ?line {error,{pattern_mismatch,"cal",RE1}} =
+ (xmerl_xsd_type:facet_fun(string,{pattern,RE1}))
+ ("cal"),
+ RE2 = "[A-Z]{2}\\d\\s\\d[A-Z]{2}",
+ ?line {ok,"AY2 3BC"} =
+ (xmerl_xsd_type:facet_fun(string,{pattern,RE2}))
+ ("AY2 3BC"),
+ ?line {error,{pattern_mismatch,"AY23BC",RE2}} =
+ (xmerl_xsd_type:facet_fun(string,{pattern,RE2}))
+ ("AY23BC").
+
+enumeration(suite) -> [];
+enumeration(_Config) ->
+ ?line {ok,"tomat"} =
+ (xmerl_xsd_type:facet_fun(string,{enumeration,["gurka","tomat","sallad"]}))("tomat"),
+ ?line {error,{enumeration,"morot",should_be_one_of,["gurka","tomat","sallad"]}} =
+ (xmerl_xsd_type:facet_fun(string,{enumeration,["gurka","tomat","sallad"]}))("morot"),
+ ok.
+
+whiteSpace(suite) -> [];
+whiteSpace(_Config) ->
+ ?line {ok,"gur ka"} = (xmerl_xsd_type:facet_fun(string,{whiteSpace,"collapse"}))(" gur\tka "),
+ ?line {ok," gur ka "} = (xmerl_xsd_type:facet_fun(string,{whiteSpace,"replace"}))(" gur\nka\t"),
+ ?line {ok," gurk\na\t"} = (xmerl_xsd_type:facet_fun(string,{whiteSpace,"preserve"}))(" gurk\na\t"),
+ ok.
+
+maxInclusive(suite) -> [];
+maxInclusive(_Config) ->
+ ?line {error,{maxInclusive,"3",should_be_less_than_or_equal_with,"2"}} =
+ (xmerl_xsd_type:facet_fun(integer,{maxInclusive,"2"}))("3"),
+
+ ?line {error,{maxInclusive,"3",should_be_less_than_or_equal_with,"2"}} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxInclusive,"2"}))("3"),
+ ?line {error,{maxInclusive,_,should_be_less_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxInclusive,"2.234"}))("2.235"),
+ ?line {error,{maxInclusive,_,should_be_less_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxInclusive,"-2.222"}))("-2.221"),
+
+ ?line {error,{maxInclusive,_,should_be_less_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(double,{maxInclusive,"2.333"}))("INF"),
+ ?line {error,{maxInclusive,_,should_be_less_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(double,{maxInclusive,"1E3"}))("1001"),
+
+ ?line {error,{maxInclusive,_,should_be_less_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(float,{maxInclusive,"-0.1"}))("-0"),
+ ?line {error,{maxInclusive,_,should_be_less_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(float,{maxInclusive,"0"}))("0.01"),
+
+ ?line {ok,"3"} = (xmerl_xsd_type:facet_fun(integer,{maxInclusive,"3"}))("3"),
+
+ ?line {ok,"+100000.00"} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxInclusive,"1E6"}))("+100000.00"),
+ ?line {ok,"12678967.543222"} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxInclusive,"12678967.543233"}))("12678967.543222"),
+
+ ?line {ok,"3.2E-11"} =
+ (xmerl_xsd_type:facet_fun(double,{maxInclusive,"2E-10"}))("3.2E-11"),
+ ?line {ok,"10E20"} =
+ (xmerl_xsd_type:facet_fun(double,{maxInclusive,"INF"}))("10E20"),
+ ?line {ok,"0.127"} =
+ (xmerl_xsd_type:facet_fun(double,{maxInclusive,"12.78e-2"}))("0.127"),
+
+ ?line {ok,"1267.43233E12"} = (xmerl_xsd_type:facet_fun(float,{maxInclusive,"1267.43233E12"}))("1267.43233E12"),
+ ?line {ok,"34E-26"} = (xmerl_xsd_type:facet_fun(float,{maxInclusive,"33E-25"}))("34E-26"),
+
+ ?line {ok,"2007-10-26T12:00:00+03:00"} =
+ (xmerl_xsd_type:facet_fun(dateTime,{maxInclusive,"2007-10-26T12:00:00+03:00"}))("2007-10-26T12:00:00+03:00"),
+ ?line {ok,"2007-10-26T11:00:00+03:00"} =
+ (xmerl_xsd_type:facet_fun(dateTime,{maxInclusive,"2007-10-26T12:00:00+03:00"}))("2007-10-26T11:00:00+03:00"),
+ ?line {error,{maxInclusive,_,should_be_less_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(dateTime,{maxInclusive,"2007-10-26T12:00:00+03:00"}))("2007-10-26T12:00:00"),
+
+ ?line {ok,"P1Y2M3DT10H30M"} =
+ (xmerl_xsd_type:facet_fun(duration,{maxInclusive,"P1Y2M4D"}))("P1Y2M3DT10H30M"),
+ ?line {error,{maxInclusive,_,should_be_less_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(duration,{maxInclusive,"P1Y2M3DT10H"}))("P1Y2M3DT10H30M"),
+ ok.
+
+maxExclusive(suite) -> [];
+maxExclusive(_Config) ->
+ ?line {error,{maxExclusive,"2",not_less_than,"2"}} =
+ (xmerl_xsd_type:facet_fun(integer,{maxExclusive,"2"}))("2"),
+ ?line {error,{maxExclusive,"-19999",not_less_than,"-20000"}} =
+ (xmerl_xsd_type:facet_fun(integer,{maxExclusive,"-20000"}))("-19999"),
+
+ ?line {error,{maxExclusive,"3.0000",not_less_than,"2.9999"}} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxExclusive,"2.9999"}))("3.0000"),
+ ?line {error,{maxExclusive,_,not_less_than,_}} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxExclusive,"2.234"}))("2.234"),
+ ?line {error,{maxExclusive,_,not_less_than,_}} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxExclusive,"-2.22222222"}))("-2.22222222"),
+
+ ?line {error,{maxExclusive,_,not_less_than,_}} =
+ (xmerl_xsd_type:facet_fun(double,{maxExclusive,"2.333E23"}))("INF"),
+ ?line {error,{maxExclusive,_,not_less_than,_}} =
+ (xmerl_xsd_type:facet_fun(double,{maxExclusive,"1E3"}))("1000"),
+ ?line {error,{maxExclusive,_,not_less_than,_}} =
+ (xmerl_xsd_type:facet_fun(double,{maxExclusive,"1E-13"}))("0.999E-12"),
+
+ ?line {error,{maxExclusive,_,not_less_than,_}} =
+ (xmerl_xsd_type:facet_fun(float,{maxExclusive,"-0.1"}))("-0.01E1"),
+ ?line {error,{maxExclusive,_,not_less_than,_}} =
+ (xmerl_xsd_type:facet_fun(float,{maxExclusive,"-1E-1"}))("-0"),
+
+ ?line {ok,"-4"} = (xmerl_xsd_type:facet_fun(integer,{maxExclusive,"3"}))("-4"),
+
+ ?line {ok,"+100000.00"} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxExclusive,"1E6"}))("+100000.00"),
+ %% must support 18 digits
+ ?line {ok,"12678967.5432323456"} =
+ (xmerl_xsd_type:facet_fun(decimal,{maxExclusive,"12678967.5432323457"}))("12678967.5432323456"),
+
+ ?line {ok,"3.2E-11"} =
+ (xmerl_xsd_type:facet_fun(double,{maxExclusive,"2E-10"}))("3.2E-11"),
+ ?line {ok,"10E20"} =
+ (xmerl_xsd_type:facet_fun(double,{maxExclusive,"INF"}))("10E20"),
+ ?line {ok,"0.127"} =
+ (xmerl_xsd_type:facet_fun(double,{maxExclusive,"12.78e-2"}))("0.127"),
+
+ ?line {ok,"1267.43233E11"} = (xmerl_xsd_type:facet_fun(float,{maxExclusive,"1267.43233E12"}))("1267.43233E11"),
+ ?line {ok,"34E-26"} = (xmerl_xsd_type:facet_fun(float,{maxExclusive,"33E-25"}))("34E-26"),
+
+ ?line {ok,"P1Y2M3DT10H30M"} = (xmerl_xsd_type:facet_fun(duration,{maxExclusive,"P1Y2M4D"}))("P1Y2M3DT10H30M"),
+
+ ?line {ok,"2006-09-06T19:17:45Z"} = (xmerl_xsd_type:facet_fun(dateTime,{maxExclusive,"2006-09-06T19:17:46Z"}))("2006-09-06T19:17:45Z"),
+ ok.
+
+minExclusive(suite) -> [];
+minExclusive(_Config) ->
+ ?line {error,{minExclusive,"2",not_greater_than,"2"}} =
+ (xmerl_xsd_type:facet_fun(integer,{minExclusive,"2"}))("2"),
+ ?line {error,{minExclusive,"-20001",not_greater_than,"-20000"}} =
+ (xmerl_xsd_type:facet_fun(integer,{minExclusive,"-20000"}))("-20001"),
+
+ ?line {error,{minExclusive,"2.9999",not_greater_than,"2.9999"}} =
+ (xmerl_xsd_type:facet_fun(decimal,{minExclusive,"2.9999"}))("2.9999"),
+ ?line {error,{minExclusive,_,not_greater_than,_}} =
+ (xmerl_xsd_type:facet_fun(decimal,{minExclusive,"-123456789.123456788"}))("-123456789.123456789"),
+ ?line {error,{minExclusive,_,not_greater_than,_}} =
+ (xmerl_xsd_type:facet_fun(decimal,{minExclusive,"-2.222222000"}))("-2.22222222"),
+
+ ?line {error,{minExclusive,_,not_greater_than,_}} =
+ (xmerl_xsd_type:facet_fun(double,{minExclusive,"INF"}))("2.333E23"),
+ ?line {error,{minExclusive,_,not_greater_than,_}} =
+ (xmerl_xsd_type:facet_fun(double,{minExclusive,"1E3"}))("1000"),
+ ?line {error,{minExclusive,_,not_greater_than,_}} =
+ (xmerl_xsd_type:facet_fun(double,{minExclusive,"1E-13"}))("0.999E-14"),
+
+ ?line {error,{minExclusive,_,not_greater_than,_}} =
+ (xmerl_xsd_type:facet_fun(float,{minExclusive,"-0.1"}))("-0.01E1"),
+ ?line {error,{minExclusive,_,not_greater_than,_}} =
+ (xmerl_xsd_type:facet_fun(float,{minExclusive,"-0"}))("-1E-1"),
+
+ ?line {ok,"4"} = (xmerl_xsd_type:facet_fun(integer,{minExclusive,"-3"}))("4"),
+
+ ?line {ok,"+1000001.00"} =
+ (xmerl_xsd_type:facet_fun(decimal,{minExclusive,"1E6"}))("+1000001.00"),
+ %% must support 18 digits
+ ?line {ok,"12678967.5432323456"} =
+ (xmerl_xsd_type:facet_fun(decimal,{minExclusive,"12678967.54323234555"}))("12678967.5432323456"),
+
+ ?line {ok,"3.2E-11"} =
+ (xmerl_xsd_type:facet_fun(double,{minExclusive,"2E-12"}))("3.2E-11"),
+ ?line {ok,"10E20"} =
+ (xmerl_xsd_type:facet_fun(double,{minExclusive,"-INF"}))("10E20"),
+ ?line {ok,"0.1279"} =
+ (xmerl_xsd_type:facet_fun(double,{minExclusive,"12.78e-2"}))("0.1279"),
+
+ ?line {ok,"126743.233E11"} = (xmerl_xsd_type:facet_fun(float,{minExclusive,"1267.43233E12"}))("126743.233E11"),
+ ?line {ok,"34E-26"} = (xmerl_xsd_type:facet_fun(float,{minExclusive,"33E-27"}))("34E-26"),
+
+ ?line {ok,"P1Y2M3DT10H30M"} = (xmerl_xsd_type:facet_fun(duration,{minExclusive,"P1Y2M3D"}))("P1Y2M3DT10H30M"),
+
+ ?line {ok,"2006-09-06T19:17:45Z"} = (xmerl_xsd_type:facet_fun(dateTime,{minExclusive,"2006-09-06T19:17:44Z"}))("2006-09-06T19:17:45Z"),
+ ok.
+
+minInclusive(suite) -> [];
+minInclusive(_Config) ->
+ ?line {error,{minInclusive,"1",not_greater_than_or_equal_with,"2"}} =
+ (xmerl_xsd_type:facet_fun(integer,{minInclusive,"2"}))("1"),
+ ?line {error,{minInclusive,"-20001",not_greater_than_or_equal_with,
+ "-20000"}} =
+ (xmerl_xsd_type:facet_fun(integer,{minInclusive,"-20000"}))("-20001"),
+
+ ?line {error,{minInclusive,"2.9999",not_greater_than_or_equal_with,
+ "2.99999"}} =
+ (xmerl_xsd_type:facet_fun(decimal,{minInclusive,"2.99999"}))("2.9999"),
+ ?line {error,{minInclusive,_,not_greater_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(decimal,{minInclusive,"-123456789.123456788"}))("-123456789.123456789"),
+ ?line {error,{minInclusive,_,not_greater_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(decimal,{minInclusive,"-2.222222000"}))("-2.22222222"),
+
+ ?line {error,{minInclusive,_,not_greater_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(double,{minInclusive,"2.333E23"}))("-INF"),
+ ?line {error,{minInclusive,_,not_greater_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(double,{minInclusive,"1E3"}))("100"),
+ ?line {error,{minInclusive,_,not_greater_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(double,{minInclusive,"1E-13"}))("0.999E-14"),
+
+ ?line {error,{minInclusive,_,not_greater_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(float,{minInclusive,"-0.1"}))("-0.1E1"),
+ ?line {error,{minInclusive,_,not_greater_than_or_equal_with,_}} =
+ (xmerl_xsd_type:facet_fun(float,{minInclusive,"-0"}))("-1E-1"),
+ ?line {error,_}=(xmerl_xsd_type:facet_fun(float,{minInclusive,"10E-10"}))("10E-11"),
+
+ ?line {ok,"4"} = (xmerl_xsd_type:facet_fun(integer,{minInclusive,"-3"}))("4"),
+
+ ?line {ok,"+1000000.00"} =
+ (xmerl_xsd_type:facet_fun(decimal,{minInclusive,"1E6"}))("+1000000.00"),
+ %% must support 18 digits
+ ?line {ok,"12678967.5432323456"} =
+ (xmerl_xsd_type:facet_fun(decimal,{minInclusive,"12678967.54323234555"}))("12678967.5432323456"),
+
+ ?line {ok,"3.2E-11"} =
+ (xmerl_xsd_type:facet_fun(double,{minInclusive,"2E-12"}))("3.2E-11"),
+ ?line {ok,"10E20"} =
+ (xmerl_xsd_type:facet_fun(double,{minInclusive,"-INF"}))("10E20"),
+ ?line {ok,"0.1279"} =
+ (xmerl_xsd_type:facet_fun(double,{minInclusive,"12.78e-2"}))("0.1279"),
+
+ ?line {ok,"126743.233E11"} = (xmerl_xsd_type:facet_fun(float,{minInclusive,"1267.43233E12"}))("126743.233E11"),
+ ?line {ok,"34E-26"} = (xmerl_xsd_type:facet_fun(float,{minInclusive,"33E-27"}))("34E-26"),
+ ?line {ok,"34E-26"} = (xmerl_xsd_type:facet_fun(float,{minInclusive,"340E-27"}))("34E-26"),
+
+ ?line {ok,"P1Y2M3DT10H30M"} = (xmerl_xsd_type:facet_fun(duration,{minInclusive,"P1Y2M3D"}))("P1Y2M3DT10H30M"),
+
+ ?line {ok,"2006-09-06T19:17:45Z"} = (xmerl_xsd_type:facet_fun(dateTime,{minInclusive,"2006-09-06T19:17:45Z"}))("2006-09-06T19:17:45Z"),
+ ok.
+
+totalDigits(suite) -> [];
+totalDigits(_Config) ->
+ ?line {error,{totalDigits,4,to_many_digits}} =
+ (xmerl_xsd_type:facet_fun(integer,{totalDigits,"3"}))("3456"),
+ ?line {error,{totalDigits,4,to_many_digits}} =
+ (xmerl_xsd_type:facet_fun(decimal,{totalDigits,"3"}))("00345.600"),
+
+ ?line {ok,"555"} =
+ (xmerl_xsd_type:facet_fun(integer,{totalDigits,"3"}))("555"),
+ ?line {ok,"555"} =
+ (xmerl_xsd_type:facet_fun(integer,{totalDigits,"7"}))("555"),
+ ?line {ok,"555.555"} =
+ (xmerl_xsd_type:facet_fun(decimal,{totalDigits,"7"}))("555.555"),
+ ?line {ok,"555.555000000"} =
+ (xmerl_xsd_type:facet_fun(decimal,{totalDigits,"7"}))("555.555000000"),
+ ok.
+
+fractionDigits(suite) -> [];
+fractionDigits(_Config) ->
+ ?line {error,{fractionDigits,3,to_many_digits_in,"555.555000000"}} =
+ (xmerl_xsd_type:facet_fun(decimal,{fractionDigits,"2"}))("555.555000000"),
+ ?line {error,{fractionDigits,6,to_many_digits_in,"555.555001"}} =
+ (xmerl_xsd_type:facet_fun(decimal,{fractionDigits,"5"}))("555.555001"),
+
+ ?line {ok,"555.55500"} =
+ (xmerl_xsd_type:facet_fun(decimal,{fractionDigits,"5"}))("555.55500"),
+ ?line {ok,"555"} =
+ (xmerl_xsd_type:facet_fun(decimal,{fractionDigits,"5"}))("555"),
+ ?line {ok,"555.000"} =
+ (xmerl_xsd_type:facet_fun(decimal,{fractionDigits,"0"}))("555.000"),
+
+ ?line {ok,"555"} =
+ (xmerl_xsd_type:facet_fun(integer,{fractionDigits,"0"}))("555"),
+ ok.
+
+%% some block testing of dateTime and duration comparisons
+compare_dateTime(suite) -> [];
+compare_dateTime(_Config) ->
+ %% comparison results according to table in section 3.2.7.4 of XML
+ %% Schema part 2
+ ?line lt = xmerl_xsd_type:compare_dateTime("2000-01-15T00:00:00",
+ "2000-02-15T00:00:00"),
+ ?line gt = xmerl_xsd_type:compare_dateTime("2000-02-15T00:00:00",
+ "2000-01-15T00:00:00"),
+
+ ?line lt = xmerl_xsd_type:compare_dateTime("2000-01-15T12:00:00",
+ "2000-01-16T12:00:00Z"),
+ ?line gt = xmerl_xsd_type:compare_dateTime("2000-01-16T12:00:00Z",
+ "2000-01-15T12:00:00"),
+
+ ?line indefinite = xmerl_xsd_type:compare_dateTime("2000-01-01T12:00:00",
+ "1999-12-31T23:00:00Z"),
+ ?line indefinite = xmerl_xsd_type:compare_dateTime("1999-12-31T23:00:00Z",
+ "2000-01-01T12:00:00"),
+
+ ?line indefinite = xmerl_xsd_type:compare_dateTime("2000-01-16T12:00:00",
+ "2000-01-16T12:00:00Z"),
+ ?line indefinite = xmerl_xsd_type:compare_dateTime("2000-01-16T12:00:00Z",
+ "2000-01-16T12:00:00"),
+
+ ?line indefinite = xmerl_xsd_type:compare_dateTime("2000-01-16T00:00:00",
+ "2000-01-16T12:00:00Z"),
+ ?line indefinite = xmerl_xsd_type:compare_dateTime("2000-01-16T12:00:00Z",
+ "2000-01-16T00:00:00"),
+
+ %% example in appendix E.1 in XML Schema part 2.
+ ?line {2001,4,17,19,23,17.3000,{pos,0,0}} =
+ xmerl_xsd_type:add_duration2dateTime("2000-01-12T12:13:14Z",
+ "P1Y3M5DT7H10M3.3S").
+
+compare_duration(suite) -> [];
+compare_duration(_Config) ->
+ %% order relations according to section 3.2.6.2 in XML Schema
+ %% part2.
+ ?line gt = xmerl_xsd_type:compare_durations("P1Y","P364D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P1Y","P365D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P1Y","P366D"),
+ ?line lt = xmerl_xsd_type:compare_durations("P1Y","P367D"),
+
+ ?line gt = xmerl_xsd_type:compare_durations("P1M","P27D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P1M","P28D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P1M","P29D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P1M","P30D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P1M","P31D"),
+ ?line lt = xmerl_xsd_type:compare_durations("P1M","P32D"),
+
+ ?line gt = xmerl_xsd_type:compare_durations("P5M","P149D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P5M","P150D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P5M","P151D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P5M","P152D"),
+ ?line indefinite = xmerl_xsd_type:compare_durations("P5M","P153D"),
+ ?line lt = xmerl_xsd_type:compare_durations("P5M","P154D").
+
+
+po(suite) -> [];
+po(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po.xml"]),[]),
+ ?line {E,_} = xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "po.xsd"]),E,[]).
+
+po1(suite) -> [];
+po1(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po1.xml"]),[]),
+ ?line {E2,_} = xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "po1.xsd"]),E,[]),
+ ?line ok = xmerl_test_lib:cmp_element(E,E2).
+
+po2(suite) -> [];
+po2(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po2.xml"]),[]),
+ ?line {E2,_} = xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "po1.xsd"]),E,[]),
+ ?line ok = xmerl_test_lib:cmp_element(E,E2).
+
+ipo(suite) -> [];
+ipo(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "ipo.xml"]),[]),
+ ?line {VE,_} = xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "ipo.xsd"]),E,[]),
+ ?line ok = xmerl_test_lib:cmp_element(E,VE).
+
+ipo_redefine(suite) -> [];
+ipo_redefine(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "ipo_redefine.xml"]),[]),
+ ?line {VE,_} = xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "ipo_redefine.xsd"]),E,[]),
+ ?line ok = xmerl_test_lib:cmp_element(E,VE).
+
+'4Q99'(suite) -> [];
+'4Q99'(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "4Q99.xml"]),[]),
+ %% the import in report.xsd lacks schemaLocation, so the imported
+ %% namespace definitions have to be loaded separately.
+ ?line {ok,S} =
+ xmerl_xsd:process_schema(filename:join([?config(data_dir,Config),
+ "ipo.xsd"])),
+ ?line {VE,_} = xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "report.xsd"]),E,[{state,S}]),
+ ?line ok = xmerl_test_lib:cmp_element(E,VE),
+
+ %% report2.xsd has an import element with a schemaLocation attribute
+ ?line {VE,_} = xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "report2.xsd"]),E,[]).
+
+small(suite) -> [];
+small(Config) ->
+ ?line {E=#xmlElement{},_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "small.xml"]),[]),
+ ?line {VE=#xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "small.xsd"]),E,[]),
+ ?line #xmlElement{attributes=Atts,content=C} = VE,
+ ?line C = E#xmlElement.content,
+ %% The attribute orderStatus with default value was absent in small.xml
+
+ %% Test of validation "on the fly" when parsing XML.
+ ?line {VE,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "small.xml"]),
+ [{validation,schema},
+ {schemaLocation,[{"small",filename:join(?config(data_dir,Config),"small.xsd")}]}]),
+ ?line {VE,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "small.xml"]),
+ [{validation,schema}]),
+ ?line true = lists:keymember(orderStatus,#xmlAttribute.name,Atts).
+
+complexType1(suite) -> [];
+complexType1(Config) ->
+ ?line {E1=#xmlElement{},_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "complexTypes1.xml"]),[]),
+ ?line {VE1=#xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "complexTypes.xsd"]),E1,[]),
+ ?line ok = xmerl_test_lib:cmp_element(E1,VE1),
+
+ ?line {E2=#xmlElement{},_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "complexTypes2.xml"]),[]),
+ ?line {VE2=#xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "complexTypes.xsd"]),E2,[]),
+ ?line ok = xmerl_test_lib:cmp_element(E2,VE2).
+
+model_group_all(suite) -> [];
+model_group_all(Config) ->
+ ?line {E=#xmlElement{},_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po1.xml"]),[]),
+ ?line {E,_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "po1_all.xsd"]),E,[]),
+
+ ?line {E1=#xmlElement{},_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po1_all1.xml"]),[]),
+ ?line {E1,_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "po1_all.xsd"]),E1,[]),
+
+ ?line {E2=#xmlElement{},_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po1_all2.xml"]),[]),
+ ?line {E2,_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "po1_all.xsd"]),E2,[]),
+
+ ?line {E3=#xmlElement{},_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po1_all_err1.xml"]),[]),
+ ?line {error,_Reason1} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "po1_all.xsd"]),E3,[]),
+
+
+ ?line {E4=#xmlElement{},_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po1_all_err2.xml"]),[]),
+ ?line {error,_Reason2} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "po1_all.xsd"]),E4,[]).
+
+substitutionGroup(suite) -> [];
+substitutionGroup(Config) ->
+ ?line {E,_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "ipo_substGroup.xml"]),[]),
+ ?line {E,_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "ipo_substGroup.xsd"]),E,[]).
+attributeGroup(suite) -> [];
+attributeGroup(Config) ->
+ ?line {E,_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po_attrGroup.xml"]),[]),
+ ?line {E,_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "po_attrGroup.xsd"]),E,[]).
+test_key1(suite) -> [];
+test_key1(Config) ->
+ ?line {E,_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "vehicle2.xml"]),[]),
+ ?line {E,_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "vehicle.xsd"]),E,[]),
+
+ ?line {E2,_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "vehicle.xml"]),[]),
+ ?line {error,L2} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "vehicle.xsd"]),E2,[]),
+ ?line 10 = erlang:length(L2),
+
+ ?line {E3 = #xmlElement{},_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "vehicle3.xml"]),[]),
+ ?line {E3 = #xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "vehicle.xsd"]),E3,[]).
+
+sis1(suite) -> [];
+sis1(Config) ->
+ ?line {E,_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),sis,
+ "instance.xml"]),[]),
+ ?line {#xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),sis,
+ "IntegratedSite.xsd"]),E,[]).
+sis2(suite) -> [];
+sis2(Config) ->
+ ?line {BS_E,_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),sis,
+ "bs_mim.xml"]),[]),
+ ?line {SW_E,_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),sis,
+ "swm_mim.xml"]),[]),
+ ?line {HW_E,_} =
+ xmerl_scan:file(filename:join([?config(data_dir,Config),sis,
+ "hwm_mim.xml"]),[]),
+
+ ?line {#xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),sis,
+ "mim.xsd"]),BS_E,[]),
+ ?line {#xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),sis,
+ "mim.xsd"]),SW_E,[]),
+ ?line {#xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),sis,
+ "mim.xsd"]),HW_E,[]).
+
+state2file_file2state(suite) -> [];
+state2file_file2state(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "po.xml"]),[]),
+ ?line {ok,S} = xmerl_xsd:process_schema(filename:join([?config(data_dir,Config),"po.xsd"])),
+ ?line {E,_} = xmerl_xsd:validate(E,S),
+ ?line ok = xmerl_xsd:state2file(S),
+ ?line {ok,S} = xmerl_xsd:file2state(filename:join([?config(data_dir,Config),"po.xss"])),
+ ?line {E,_} = xmerl_xsd:validate(E,S),
+
+ ?line ok = xmerl_xsd:state2file(S,filename:join([?config(data_dir,Config),"po_state"])),
+ ?line {ok,S} = xmerl_xsd:file2state(filename:join([?config(data_dir,Config),"po_state.xss"])),
+
+ ?line {E,_} = xmerl_xsd:validate(E,S).
+
+
+union(suite) -> [];
+union(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "instance.xml"])),
+
+ ?line {_E2 = #xmlElement{},_} = xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),"measCollec.xsd"]),E).
+
+
+ticket_6910(suite) -> [];
+ticket_6910(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ sis,"dummy_action_mim.xml"])),
+ ?line {_E2 = #xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ sis,"mim2.xsd"]),E).
+ticket_7165(suite) -> [];
+ticket_7165(Config) ->
+ %% The validation option seems not to work
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "ticket_7288.xml"]),
+ [{validation, schema}]),
+ %% The option xsdbase gave {error, enoent}.
+ ?line {ok,_} = xmerl_xsd:process_schema("CxDataType_Rel5.xsd", [{xsdbase, ?config(data_dir,Config)}]).
+
+
+
+ticket_7190(suite) -> [];
+ticket_7190(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),
+ "int.xml"])),
+ ?line {_E2 = #xmlElement{},_} =
+ xmerl_xsd:process_validate(filename:join([?config(data_dir,Config),
+ "simple_int.xsd"]),E).
+ticket_7288(suite) -> [];
+ticket_7288(Config) ->
+ %% The schema table in the state where deleted by xmerl_xsd:validate if there was an error.
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),"ticket_7288.xml"])),
+
+ ?line {ok,S} = xmerl_xsd:process_schema(filename:join([?config(data_dir,Config),"CxDataType_Rel5.xsd"])),
+
+ ?line {error, EL} = xmerl_xsd:validate(E, S),
+
+ ?line {error, EL} = xmerl_xsd:validate(E, S).
+
+ticket_7736(suite) -> [];
+ticket_7736(Config) ->
+ DataDir = ?config(data_dir,Config),
+ ?line {ok, State } =
+ xmerl_xsd:process_schema(filename:join([DataDir,"enum_bug.xsd"])),
+
+ ?line {Entity ,_} =
+ xmerl_scan:file(filename:join([DataDir,"enum_bug.xml"])),
+
+ ?line {#xmlElement{},_} = xmerl_xsd:validate(Entity, State).
+
+ticket_8599(suite) -> [];
+ticket_8599(Config) ->
+ ?line {E,_} = xmerl_scan:file(filename:join([?config(data_dir,Config),"ticket_8599.xml"])),
+
+ ?line {ok, S} = xmerl_xsd:process_schema(filename:join([?config(data_dir,Config),"ticket_8599.xsd"])),
+
+ ?line {{xmlElement,persons,persons,_,_,_,_,_,_,_,_,_},_GlobalState} = xmerl_xsd:validate(E, S).
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/4Q99.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/4Q99.xml
new file mode 100644
index 0000000000..a0c4df72bd
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/4Q99.xml
@@ -0,0 +1,25 @@
+<purchaseReport
+ xmlns="http://www.example.com/Report"
+ period="P3M" periodEnding="1999-12-31">
+
+ <regions>
+ <zip code="95819">
+ <part number="872-AA" quantity="1"/>
+ <part number="926-AA" quantity="1"/>
+ <part number="833-AA" quantity="1"/>
+ <part number="455-BX" quantity="1"/>
+ </zip>
+ <zip code="63143">
+ <part number="455-BX" quantity="4"/>
+ </zip>
+ </regions>
+
+ <parts>
+ <part number="872-AA">Lawnmower</part>
+ <part number="926-AA">Baby Monitor</part>
+ <part number="833-AA">Lapis Necklace</part>
+ <part number="455-BX">Sturdy Shelves</part>
+ </parts>
+
+</purchaseReport>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/CxDataType_Rel5.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/CxDataType_Rel5.xsd
new file mode 100644
index 0000000000..8a26fd1492
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/CxDataType_Rel5.xsd
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:simpleType name="tPriority" final="list restriction">
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="tProfilePartIndicator" final="list restriction">
+ <xs:restriction base="xs:unsignedByte">
+ <xs:maxInclusive value="1"/>
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>
+ <label xml:lang="en">REGISTERED</label>
+ <definition xml:lang="en">iFC is part of the registered profile</definition>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>
+ <label xml:lang="en">UNREGISTERED</label>
+ <definition xml:lang="en">iFC is part of the unregistered profile</definition>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="tGroupID" final="list restriction">
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="tDefaultHandling" final="list restriction">
+ <xs:restriction base="xs:unsignedByte">
+ <xs:maxInclusive value="1"/>
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>
+ <label xml:lang="en">SESSION_CONTINUED</label>
+ <definition xml:lang="en">Session Continued</definition>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>
+ <label xml:lang="en">SESSION_TERMINATED</label>
+ <definition xml:lang="en">Session Terminated</definition>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="tDirectionOfRequest" final="list restriction">
+ <xs:restriction base="xs:unsignedByte">
+ <xs:maxInclusive value="3"/>
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>
+ <label xml:lang="en">ORIGINATING_SESSION</label>
+ <definition xml:lang="en">Originating Session</definition>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>
+ <label xml:lang="en">TERMINATING_REGISTERED</label>
+ <definition xml:lang="en">Terminating Session for registered user</definition>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="2">
+ <xs:annotation>
+ <xs:documentation>
+ <label xml:lang="en">TERMINATING_UNREGISTERED</label>
+ <definition xml:lang="en">Terminating Session for unregistered user</definition>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="tPrivateID" final="list restriction">
+ <xs:restriction base="xs:anyURI"/>
+ </xs:simpleType>
+ <xs:simpleType name="tSIP_URL" final="list restriction">
+ <xs:restriction base="xs:anyURI"/>
+ </xs:simpleType>
+ <xs:simpleType name="tTEL_URL" final="list restriction">
+ <xs:restriction base="xs:anyURI"/>
+ </xs:simpleType>
+ <xs:simpleType name="tIdentity" final="list restriction">
+ <xs:union memberTypes="tSIP_URL tTEL_URL"/>
+ </xs:simpleType>
+ <xs:simpleType name="tServiceInfo" final="list restriction">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="tString" final="list restriction">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="tBool">
+ <xs:restriction base="xs:boolean"/>
+ </xs:simpleType>
+ <xs:simpleType name="tSubscribedMediaProfileId" final="list restriction">
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="tExtension">
+ <xs:sequence>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tIMSSubscription">
+ <xs:sequence>
+ <xs:element name="PrivateID" type="tPrivateID"/>
+ <xs:element name="ServiceProfile" type="tServiceProfile" maxOccurs="unbounded"/>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tServiceProfile">
+ <xs:sequence>
+ <xs:element name="PublicIdentity" type="tPublicIdentity" maxOccurs="unbounded"/>
+ <xs:element name="CoreNetworkServicesAuthorization" type="tCoreNetworkServicesAuthorization" minOccurs="0"/>
+ <xs:element name="InitialFilterCriteria" type="tInitialFilterCriteria" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tCoreNetworkServicesAuthorization">
+ <xs:sequence>
+ <xs:element name="SubscribedMediaProfileId" type="tSubscribedMediaProfileId" minOccurs="0"/>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tInitialFilterCriteria">
+ <xs:sequence>
+ <xs:element name="Priority" type="tPriority"/>
+ <xs:element name="TriggerPoint" type="tTrigger" minOccurs="0"/>
+ <xs:element name="ApplicationServer" type="tApplicationServer"/>
+ <xs:element name="ProfilePartIndicator" type="tProfilePartIndicator" minOccurs="0"/>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tTrigger">
+ <xs:sequence>
+ <xs:element name="ConditionTypeCNF" type="tBool"/>
+ <xs:element name="SPT" type="tSePoTri" maxOccurs="unbounded"/>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tSePoTri">
+ <xs:sequence>
+ <xs:element name="ConditionNegated" type="tBool" default="0" minOccurs="0"/>
+ <xs:element name="Group" type="tGroupID" maxOccurs="unbounded"/>
+ <xs:choice>
+ <xs:element name="RequestURI" type="tString"/>
+ <xs:element name="Method" type="tString"/>
+ <xs:element name="SIPHeader" type="tHeader"/>
+ <xs:element name="SessionCase" type="tDirectionOfRequest"/>
+ <xs:element name="SessionDescription" type="tSessionDescription"/>
+ </xs:choice>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tHeader">
+ <xs:sequence>
+ <xs:element name="Header" type="tString"/>
+ <xs:element name="Content" type="tString" minOccurs="0"/>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tSessionDescription">
+ <xs:sequence>
+ <xs:element name="Line" type="tString"/>
+ <xs:element name="Content" type="tString" minOccurs="0"/>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tApplicationServer">
+ <xs:sequence>
+ <xs:element name="ServerName" type="tSIP_URL"/>
+ <xs:element name="DefaultHandling" type="tDefaultHandling" minOccurs="0"/> <!-- the DefaultHandling element should not be sent by a Rel-5 HSS -->
+ <xs:element name="ServiceInfo" type="tServiceInfo" minOccurs="0"/>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="tPublicIdentity">
+ <xs:sequence>
+ <xs:element name="BarringIndication" type="tBool" default="0" minOccurs="0"/>
+ <xs:element name="Identity" type="tIdentity"/>
+ <xs:element name="Extension" type="tExtension" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="IMSSubscription" type="tIMSSubscription"/>
+</xs:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/address.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/address.xsd
new file mode 100644
index 0000000000..147d1fe01e
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/address.xsd
@@ -0,0 +1,69 @@
+<schema targetNamespace="http://www.example.com/IPO"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ipo="http://www.example.com/IPO">
+
+ <annotation>
+ <documentation xml:lang="en">
+ Addresses for International Purchase order schema
+ Copyright 2000 Example.com. All rights reserved.
+ </documentation>
+ </annotation>
+
+ <complexType name="Address">
+ <sequence>
+ <element name="name" type="string"/>
+ <element name="street" type="string"/>
+ <element name="city" type="string"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="USAddress">
+ <complexContent>
+ <extension base="ipo:Address">
+ <sequence>
+ <element name="state" type="ipo:USState"/>
+ <element name="zip" type="positiveInteger"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="UKAddress">
+ <complexContent>
+ <extension base="ipo:Address">
+ <sequence>
+ <element name="postcode" type="ipo:UKPostcode"/>
+ </sequence>
+ <attribute name="exportCode" type="positiveInteger" fixed="1"/>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <!-- other Address derivations for more countries -->
+
+ <simpleType name="USState">
+ <restriction base="string">
+ <enumeration value="AK"/>
+ <enumeration value="AL"/>
+ <enumeration value="AR"/>
+ <enumeration value="PA"/>
+ <!-- and so on ... -->
+ </restriction>
+ </simpleType>
+
+ <!-- simple type definition for UKPostcode -->
+ <simpleType name="UKPostcode">
+ <restriction base="ipo:Postcode">
+ <pattern value="[A-Z]{2}\d\s\d[A-Z]{2}"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="Postcode">
+ <restriction base="string">
+ <length value="7" fixed="true"/>
+ </restriction>
+ </simpleType>
+
+
+</schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes.xsd
new file mode 100644
index 0000000000..78140cda9b
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes.xsd
@@ -0,0 +1,112 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:po="http://www.example.com/ComplexTypes"
+ targetNamespace="http://www.example.com/ComplexTypes"
+ elementFormDefault="unqualified"
+ attributeFormDefault="unqualified">
+
+ <element name="purchaseOrder" type="po:PurchaseOrderType"/>
+
+ <element name="purchaseOrder2" type="po:PurchaseOrderType2"/>
+
+ <element name="comment" type="string"/>
+
+
+<complexType name="PurchaseOrderType2">
+ <sequence>
+ <choice>
+ <group ref="po:shipAndBill"/>
+ <element name="singleUSAddress" type="po:USAddress"/>
+ </choice>
+ <element ref="po:comment" minOccurs="0"/>
+ <element name="items" type="po:Items"/>
+ </sequence>
+ <attribute name="orderDate" type="date"/>
+</complexType>
+
+<group name="shipAndBill">
+ <sequence>
+ <element name="shipTo" type="po:USAddress"/>
+ <element name="billTo" type="po:USAddress"/>
+ </sequence>
+</group>
+
+
+
+ <complexType name="PurchaseOrderType">
+ <sequence>
+ <element name="shipTo" type="po:USAddress"/>
+ <element name="billTo" type="po:USAddress"/>
+ <element ref="po:comment" minOccurs="0"/>
+ <element name="items" type="po:Items"/>
+ </sequence>
+ <attribute name="orderDate" type="date"/>
+ </complexType>
+
+ <complexType name="USAddress">
+ <sequence>
+ <element name="name" type="string"/>
+ <element name="street" type="string"/>
+ <element name="city" type="string"/>
+ <element name="state" type="string"/>
+ <element name="zip" type="decimal"/>
+ <element name="contact" type="po:Contact" minOccurs="0"/>
+ </sequence>
+ <attribute name="country" type="NMTOKEN"
+ fixed="US"/>
+ </complexType>
+
+ <complexType name="Items">
+ <sequence>
+ <element name="item" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="productName" type="string"/>
+ <element name="quantity">
+ <simpleType>
+ <restriction base="positiveInteger">
+ <maxExclusive value="100"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="USPrice" type="decimal"/>
+ <element ref="po:comment" minOccurs="0"/>
+ <element name="shipDate" type="date" minOccurs="0"/>
+ </sequence>
+ <attribute name="partNum" type="po:SKU" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+ <complexType name="Contact">
+ <sequence>
+ <element name="phone" type="decimal"/>
+ <element name="mail" type="string" minOccurs="0"/>
+ <element name="e-mail" type="string"/>
+ <element name="cell-phone" type="decimal" minOccurs="0"/>
+ <element name="other" type="string" minOccurs="0"/>
+ <element name="prefCont" type="po:PreferredContact" minOccurs="0" maxOccurs="2"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="PreferredContact">
+ <choice>
+ <element name="phone" type="string"/>
+ <element name="mail" type="string"/>
+ <element name="e-mail" type="string"/>
+ <element name="cell-phone" type="string"/>
+ <element name="other" type="string"/>
+ </choice>
+ <attribute name="priority" type="NMTOKEN"
+ fixed="medium"/>
+ </complexType>
+
+ <!-- Stock Keeping Unit, a code for identifying products -->
+ <simpleType name="SKU">
+ <restriction base="string">
+ <pattern value="\d{3}-[A-Z]{2}"/>
+ </restriction>
+ </simpleType>
+
+</schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes1.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes1.xml
new file mode 100644
index 0000000000..a46a562c37
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes1.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder xmlns:apo="http://www.example.com/ComplexTypes"
+ orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <!-- etc. -->
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ <contact>
+ <phone>081234567</phone>
+ <e-mail>[email protected]</e-mail>
+ <cell-phone>070122345</cell-phone>
+ <prefCont>
+ <cell-phone>070122345</cell-phone>
+ </prefCont>
+ </contact>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <!-- etc. -->
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <!-- etc. -->
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes2.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes2.xml
new file mode 100644
index 0000000000..80687b9c1c
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/complexTypes2.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder2 xmlns:apo="http://www.example.com/ComplexTypes"
+ orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <!-- etc. -->
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ <contact>
+ <phone>081234567</phone>
+ <e-mail>[email protected]</e-mail>
+ <cell-phone>070122345</cell-phone>
+ <prefCont>
+ <cell-phone>070122345</cell-phone>
+ </prefCont>
+ </contact>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <!-- etc. -->
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <!-- etc. -->
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder2>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/enum_bug.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/enum_bug.xml
new file mode 100644
index 0000000000..1a4b601c32
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/enum_bug.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<status/>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/enum_bug.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/enum_bug.xsd
new file mode 100644
index 0000000000..996e0d5b4d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/enum_bug.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+ <xs:element name="status">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="status-type"/>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:simpleType name="status-type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Valid" />
+ <xs:enumeration value="Invalid" />
+ <xs:enumeration value="" />
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/gpx/clementine_loop.gpx b/lib/xmerl/test/xmerl_xsd_SUITE_data/gpx/clementine_loop.gpx
new file mode 100644
index 0000000000..f4e3185c56
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/gpx/clementine_loop.gpx
@@ -0,0 +1,3594 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
+<gpx
+ version="1.0"
+ creator="ExpertGPS 1.2 - http://www.topografix.com"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://www.topografix.com/GPX/1/0"
+ xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2"
+ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/Private/TopoGrafix/0/2 http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd">
+<time>2003-02-05T19:17:02Z</time>
+<bounds minlat="38.625526" minlon="-121.516943" maxlat="38.937285" maxlon="-121.011830"/>
+<wpt lat="38.916370006" lon="-121.035340039">
+ <ele>182.775024</ele>
+ <time>2003-02-05T18:19:15Z</time>
+ <name>CLEMEN TR</name>
+ <desc>CLEMEN TR</desc>
+ <sym>Trail Head</sym>
+ <type>Trail Head</type>
+</wpt>
+<wpt lat="38.920639999" lon="-121.012300031">
+ <ele>313.993896</ele>
+ <time>2003-02-05T18:19:15Z</time>
+ <name>CONFL TR</name>
+ <desc>CONFL TR</desc>
+ <sym>Trail Head</sym>
+ <type>Trail Head</type>
+</wpt>
+<wpt lat="38.932889983" lon="-121.011829974">
+ <ele>437.041748</ele>
+ <time>2003-02-05T18:19:15Z</time>
+ <name>CULVERT TR</name>
+ <desc>CULVERT TR</desc>
+ <sym>Trail Head</sym>
+ <type>Trail Head</type>
+</wpt>
+<wpt lat="38.905900003" lon="-121.055939991">
+ <ele>371.912964</ele>
+ <time>2003-02-04T21:14:35Z</time>
+ <name>MANZANITA</name>
+ <desc>MANZANITA</desc>
+ <sym>Trail Head</sym>
+ <type>Trail Head</type>
+</wpt>
+<wpt lat="38.911470029" lon="-121.054369977">
+ <ele>405.318481</ele>
+ <time>2003-02-04T21:14:35Z</time>
+ <name>STAGECOACH</name>
+ <desc>STAGECOACH</desc>
+ <sym>Trail Head</sym>
+ <type>Trail Head</type>
+</wpt>
+<rte>
+ <name>SAC-CLEM</name>
+ <desc>Auto route from Sacramento to Clementine Loop trail head.</desc>
+ <number>1</number>
+ <topografix:color>ff0000</topografix:color>
+<rtept lat="38.625526432" lon="-121.516942989">
+ <time>2003-02-05T18:08:15Z</time>
+ <name>I-5</name>
+ <desc>I-5</desc>
+ <sym>Waypoint</sym>
+ <type>Waypoint</type>
+</rtept>
+<rtept lat="38.646984104" lon="-121.374807369">
+ <time>2003-02-05T18:08:15Z</time>
+ <name>I-80BUSRTE</name>
+ <desc>I-80BUSRTE</desc>
+ <sym>Waypoint</sym>
+ <type>Waypoint</type>
+</rtept>
+<rtept lat="38.917007450" lon="-121.062297832">
+ <time>2003-02-05T18:08:15Z</time>
+ <name>I-801</name>
+ <desc>I-801</desc>
+ <sym>Waypoint</sym>
+ <type>Waypoint</type>
+</rtept>
+<rtept lat="38.917522434" lon="-121.060409557">
+ <time>2003-02-05T18:08:15Z</time>
+ <name>LINCOLNWAY</name>
+ <desc>LINCOLNWAY</desc>
+ <sym>Waypoint</sym>
+ <type>Waypoint</type>
+</rtept>
+<rtept lat="38.915805820" lon="-121.061010372">
+ <time>2003-02-05T18:08:15Z</time>
+ <name>LINCOLNWY1</name>
+ <desc>LINCOLNWY1</desc>
+ <sym>Waypoint</sym>
+ <type>Waypoint</type>
+</rtept>
+<rtept lat="38.916149143" lon="-121.057147991">
+ <time>2003-02-05T18:08:15Z</time>
+ <name>RUSSELL RD</name>
+ <desc>RUSSELL RD</desc>
+ <sym>Waypoint</sym>
+ <type>Waypoint</type>
+</rtept>
+<rtept lat="38.911467012" lon="-121.054374419">
+ <time>2003-02-05T18:08:15Z</time>
+ <name>STAGECOACH</name>
+ <desc>STAGECOACH</desc>
+ <sym>Trail Head</sym>
+ <type>Trail Head</type>
+</rtept>
+</rte>
+<trk>
+ <name>CLEMENTINE</name>
+ <desc>Clementine Loop</desc>
+ <number>1</number>
+ <topografix:color>ff0000</topografix:color>
+<trkseg>
+<trkpt lat="38.919839863" lon="-121.020112049">
+ <ele>265.447754</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919796947" lon="-121.020240795">
+ <ele>264.967041</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919861320" lon="-121.020498287">
+ <ele>263.044434</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919990066" lon="-121.020798694">
+ <ele>263.525146</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919925693" lon="-121.021056187">
+ <ele>260.160522</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919904236" lon="-121.021163475">
+ <ele>260.160522</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919818405" lon="-121.021292221">
+ <ele>259.679932</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919646744" lon="-121.021614086">
+ <ele>259.199219</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919539455" lon="-121.021764290">
+ <ele>256.795898</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919432167" lon="-121.022086155">
+ <ele>255.834717</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919281963" lon="-121.022450935">
+ <ele>252.950684</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919281963" lon="-121.022515308">
+ <ele>253.431396</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919196132" lon="-121.022665512">
+ <ele>251.989380</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919131759" lon="-121.022837173">
+ <ele>251.027954</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918981556" lon="-121.023073208">
+ <ele>248.624756</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918895725" lon="-121.023223411">
+ <ele>248.624756</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918745521" lon="-121.023609649">
+ <ele>246.702148</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918681148" lon="-121.023845684">
+ <ele>244.298950</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918681148" lon="-121.024081718">
+ <ele>243.337524</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918681148" lon="-121.024210464">
+ <ele>242.856934</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918724064" lon="-121.024403583">
+ <ele>241.895630</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918745521" lon="-121.024703991">
+ <ele>239.492310</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918595318" lon="-121.024854194">
+ <ele>238.050415</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918337826" lon="-121.025025856">
+ <ele>236.608521</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918187622" lon="-121.025090229">
+ <ele>235.646973</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917994503" lon="-121.025326263">
+ <ele>234.205078</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917951587" lon="-121.025519382">
+ <ele>233.243774</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917908672" lon="-121.025691044">
+ <ele>232.282471</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917887214" lon="-121.025927078">
+ <ele>231.801758</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917651180" lon="-121.025991451">
+ <ele>230.840576</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917415146" lon="-121.025884163">
+ <ele>228.437256</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917114738" lon="-121.025691044">
+ <ele>226.514648</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916792873" lon="-121.025648128">
+ <ele>223.630737</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916192058" lon="-121.025819790">
+ <ele>219.785400</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915848736" lon="-121.025884163">
+ <ele>217.382202</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915677074" lon="-121.026034366">
+ <ele>215.459595</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915634159" lon="-121.026227485">
+ <ele>214.017578</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915634159" lon="-121.026356232">
+ <ele>214.017578</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915569786" lon="-121.026806843">
+ <ele>212.094971</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915462498" lon="-121.026914131">
+ <ele>210.172363</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915376667" lon="-121.027021419">
+ <ele>209.691772</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915140632" lon="-121.027686607">
+ <ele>206.807739</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915119175" lon="-121.027858269">
+ <ele>206.327148</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915054802" lon="-121.028094303">
+ <ele>204.404541</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915054802" lon="-121.028137218">
+ <ele>204.404541</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914990429" lon="-121.028373253">
+ <ele>201.520508</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914947513" lon="-121.028738033">
+ <ele>200.559204</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914861683" lon="-121.028931152">
+ <ele>199.597900</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914840225" lon="-121.029145729">
+ <ele>200.559204</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914797310" lon="-121.029253017">
+ <ele>201.039795</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914647106" lon="-121.029489052">
+ <ele>196.713989</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914625648" lon="-121.029531967">
+ <ele>196.713989</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914539818" lon="-121.029832374">
+ <ele>194.310791</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914518360" lon="-121.030004036">
+ <ele>192.868774</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914496902" lon="-121.030519020">
+ <ele>191.426758</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914368156" lon="-121.030626308">
+ <ele>189.984863</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914217953" lon="-121.030733597">
+ <ele>189.023560</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914024833" lon="-121.031162750">
+ <ele>184.697632</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913981918" lon="-121.031377327">
+ <ele>183.736206</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913939003" lon="-121.031699192">
+ <ele>183.255615</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913939003" lon="-121.031785023">
+ <ele>183.255615</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913831714" lon="-121.032021057">
+ <ele>182.775024</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913831714" lon="-121.032278549">
+ <ele>180.852417</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913788799" lon="-121.032471668">
+ <ele>178.929810</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913788799" lon="-121.032536041">
+ <ele>179.410400</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913681511" lon="-121.032857906">
+ <ele>177.487793</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913660053" lon="-121.033115398">
+ <ele>175.084595</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913660053" lon="-121.033244144">
+ <ele>174.603882</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913660053" lon="-121.033458721">
+ <ele>174.123169</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913702968" lon="-121.034145366">
+ <ele>172.200562</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913660053" lon="-121.034231197">
+ <ele>171.239258</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913767341" lon="-121.034510147">
+ <ele>173.642578</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913767341" lon="-121.034767639">
+ <ele>172.200562</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913831714" lon="-121.035046589">
+ <ele>168.835938</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913896087" lon="-121.035218250">
+ <ele>167.874634</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913960460" lon="-121.035454284">
+ <ele>167.394043</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914024833" lon="-121.035625946">
+ <ele>166.913330</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914260868" lon="-121.035776150">
+ <ele>165.952026</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914518360" lon="-121.035904896">
+ <ele>166.913330</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914818767" lon="-121.036012184">
+ <ele>166.913330</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914947513" lon="-121.036119472">
+ <ele>166.913330</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915119175" lon="-121.036248218">
+ <ele>167.874634</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915290836" lon="-121.036291134">
+ <ele>168.835938</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915441040" lon="-121.036076557">
+ <ele>170.758545</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915634159" lon="-121.035883438">
+ <ele>174.123169</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915784363" lon="-121.035690319">
+ <ele>174.123169</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916020397" lon="-121.035625946">
+ <ele>173.161987</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916256431" lon="-121.035647404">
+ <ele>172.200562</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916385177" lon="-121.035690319">
+ <ele>171.239258</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916814331" lon="-121.036269676">
+ <ele>169.316650</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916878704" lon="-121.036484253">
+ <ele>167.394043</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916964535" lon="-121.036548626">
+ <ele>166.913330</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917050365" lon="-121.036527168">
+ <ele>166.432617</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917458061" lon="-121.036398422">
+ <ele>166.432617</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917887214" lon="-121.036570083">
+ <ele>168.835938</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918037418" lon="-121.036698829">
+ <ele>171.719849</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918058876" lon="-121.036698829">
+ <ele>172.681274</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918144707" lon="-121.036720287">
+ <ele>174.603882</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918187622" lon="-121.036827576">
+ <ele>176.526489</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918316368" lon="-121.036977779">
+ <ele>180.371704</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918466572" lon="-121.037127983">
+ <ele>183.255615</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918530945" lon="-121.037299644">
+ <ele>186.620239</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918659691" lon="-121.037514221">
+ <ele>189.023560</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918766979" lon="-121.037707340">
+ <ele>191.907471</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918852810" lon="-121.037836086">
+ <ele>195.271973</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919067386" lon="-121.038050663">
+ <ele>197.194580</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919239048" lon="-121.038222324">
+ <ele>200.078613</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919346336" lon="-121.038393986">
+ <ele>202.481812</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919517998" lon="-121.038587105">
+ <ele>205.846558</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919539455" lon="-121.038630020">
+ <ele>206.327148</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919496540" lon="-121.038672935">
+ <ele>206.807739</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919260505" lon="-121.038544189">
+ <ele>210.652954</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918960098" lon="-121.038351070">
+ <ele>214.017578</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918402199" lon="-121.037986290">
+ <ele>217.382202</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918037418" lon="-121.037728798">
+ <ele>220.266113</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917565349" lon="-121.037685882">
+ <ele>223.630737</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917350773" lon="-121.038050663">
+ <ele>226.514648</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917329315" lon="-121.038329613">
+ <ele>228.917969</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917222027" lon="-121.038887512">
+ <ele>231.801758</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917243484" lon="-121.039402496">
+ <ele>235.166382</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917350773" lon="-121.039831650">
+ <ele>238.050415</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917651180" lon="-121.040067684">
+ <ele>241.414917</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917887214" lon="-121.040282261">
+ <ele>244.298950</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918294910" lon="-121.040647041">
+ <ele>245.260132</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918423656" lon="-121.041119110">
+ <ele>248.144165</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918659691" lon="-121.041462433">
+ <ele>251.508667</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918852810" lon="-121.041655552">
+ <ele>254.392700</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918809894" lon="-121.042191994">
+ <ele>256.795898</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918809894" lon="-121.042814266">
+ <ele>259.199219</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918509487" lon="-121.042964470">
+ <ele>261.602539</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918488029" lon="-121.042964470">
+ <ele>261.602539</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918101791" lon="-121.042792808">
+ <ele>264.486328</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917586807" lon="-121.042621147">
+ <ele>268.331665</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917329315" lon="-121.042792808">
+ <ele>270.254272</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917157654" lon="-121.043200504">
+ <ele>273.138306</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916878704" lon="-121.043479454">
+ <ele>276.022095</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916471008" lon="-121.043629658">
+ <ele>278.906128</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916428093" lon="-121.043608200">
+ <ele>279.867310</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916020397" lon="-121.043457996">
+ <ele>283.231934</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915805820" lon="-121.043694031">
+ <ele>286.115967</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915655617" lon="-121.044209015">
+ <ele>288.038574</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915419582" lon="-121.044316303">
+ <ele>290.922485</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915140632" lon="-121.044466507">
+ <ele>293.325684</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914818767" lon="-121.044230472">
+ <ele>294.287109</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914496902" lon="-121.044101726">
+ <ele>297.651611</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914217953" lon="-121.044230472">
+ <ele>301.016235</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913939003" lon="-121.044445049">
+ <ele>303.419556</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913810257" lon="-121.044552337">
+ <ele>304.861450</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913488392" lon="-121.044681084">
+ <ele>307.745483</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913187984" lon="-121.044681084">
+ <ele>308.706665</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912887577" lon="-121.044681084">
+ <ele>311.109985</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912565712" lon="-121.044788372">
+ <ele>313.513306</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912372593" lon="-121.045110237">
+ <ele>316.877930</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912265304" lon="-121.045281898">
+ <ele>316.877930</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912072185" lon="-121.045582306">
+ <ele>320.242432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912007812" lon="-121.045925628">
+ <ele>322.165039</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912007812" lon="-121.046075832">
+ <ele>323.126465</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912072185" lon="-121.046547901">
+ <ele>325.529663</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912243847" lon="-121.046998512">
+ <ele>327.452271</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912158016" lon="-121.047277462">
+ <ele>330.816895</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911964897" lon="-121.047577869">
+ <ele>333.220215</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911771778" lon="-121.047964107">
+ <ele>335.623413</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911471371" lon="-121.048307430">
+ <ele>338.988037</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911235336" lon="-121.048650753">
+ <ele>342.352661</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911042217" lon="-121.049079906">
+ <ele>344.275269</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910634521" lon="-121.049187195">
+ <ele>346.678467</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910248283" lon="-121.049444687">
+ <ele>350.043213</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910119537" lon="-121.049659263">
+ <ele>353.407715</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910183910" lon="-121.050109875">
+ <ele>354.849609</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910462860" lon="-121.050453197">
+ <ele>357.733643</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910849098" lon="-121.050710689">
+ <ele>360.617432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911213878" lon="-121.050882351">
+ <ele>363.501465</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911406997" lon="-121.051311504">
+ <ele>366.866089</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911664490" lon="-121.051590454">
+ <ele>370.230591</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912007812" lon="-121.051719200">
+ <ele>371.672607</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912007812" lon="-121.052105438">
+ <ele>373.595215</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912050728" lon="-121.052491676">
+ <ele>376.959839</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912351135" lon="-121.052856457">
+ <ele>379.363037</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912758831" lon="-121.052985203">
+ <ele>382.727783</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913059238" lon="-121.053135406">
+ <ele>385.130981</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913273815" lon="-121.053628933">
+ <ele>388.014893</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913273815" lon="-121.053843510">
+ <ele>388.976196</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913187984" lon="-121.053843510">
+ <ele>389.456787</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913037781" lon="-121.053822052">
+ <ele>390.418213</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912673000" lon="-121.053864967">
+ <ele>393.302002</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912308220" lon="-121.053972256">
+ <ele>396.186157</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911921982" lon="-121.054122459">
+ <ele>399.069946</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911664490" lon="-121.054143917">
+ <ele>400.031372</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911492828" lon="-121.054101002">
+ <ele>400.992554</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911342624" lon="-121.054251205">
+ <ele>403.876587</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911385540" lon="-121.054358494">
+ <ele>403.876587</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911385540" lon="-121.054379951">
+ <ele>403.395874</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911406997" lon="-121.054379951">
+ <ele>402.915161</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911492828" lon="-121.054487240">
+ <ele>402.915161</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911492828" lon="-121.054487240">
+ <ele>403.395874</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911492828" lon="-121.054508697">
+ <ele>403.395874</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911492828" lon="-121.054337036">
+ <ele>413.489746</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911514286" lon="-121.054379951">
+ <ele>413.489746</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911557201" lon="-121.055088054">
+ <ele>410.605591</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911535744" lon="-121.055431377">
+ <ele>408.202393</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911364082" lon="-121.055989277">
+ <ele>404.357178</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911256794" lon="-121.056354057">
+ <ele>400.511963</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911213878" lon="-121.056482803">
+ <ele>399.550659</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911085132" lon="-121.056633007">
+ <ele>397.147339</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910484318" lon="-121.056268226">
+ <ele>394.744019</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909926418" lon="-121.056118023">
+ <ele>391.379395</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909754757" lon="-121.056096565">
+ <ele>390.418213</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909540180" lon="-121.056182396">
+ <ele>389.937500</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908746246" lon="-121.056311142">
+ <ele>386.572998</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908681873" lon="-121.056311142">
+ <ele>386.572998</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908295635" lon="-121.056311142">
+ <ele>386.092285</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907995228" lon="-121.056418430">
+ <ele>387.534180</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907845024" lon="-121.056461346">
+ <ele>386.572998</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907630447" lon="-121.056418430">
+ <ele>387.053589</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907480243" lon="-121.056289684">
+ <ele>387.053589</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907458786" lon="-121.056203853">
+ <ele>386.092285</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907394413" lon="-121.056182396">
+ <ele>386.092285</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907115463" lon="-121.056096565">
+ <ele>383.208374</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906836513" lon="-121.056182396">
+ <ele>381.285767</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906729225" lon="-121.056289684">
+ <ele>379.843628</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906536106" lon="-121.056504261">
+ <ele>377.921021</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906321529" lon="-121.056504261">
+ <ele>376.479126</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906064037" lon="-121.056203853">
+ <ele>375.037231</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905892376" lon="-121.055967819">
+ <ele>371.672607</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905892376" lon="-121.055946361">
+ <ele>370.711304</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906021122" lon="-121.055667412">
+ <ele>366.866089</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906085495" lon="-121.055452835">
+ <ele>363.982056</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906128410" lon="-121.055152428">
+ <ele>360.617432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906149868" lon="-121.055088054">
+ <ele>359.656250</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906214241" lon="-121.054852020">
+ <ele>358.214233</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906300072" lon="-121.054744732">
+ <ele>356.291626</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906364445" lon="-121.054658901">
+ <ele>354.849609</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906407360" lon="-121.054508697">
+ <ele>351.965820</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906385902" lon="-121.054465782">
+ <ele>351.485107</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906021122" lon="-121.054551613">
+ <ele>348.120605</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905677799" lon="-121.054744732">
+ <ele>344.755859</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905591968" lon="-121.054809105">
+ <ele>342.352661</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905441765" lon="-121.054937851">
+ <ele>340.430054</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905441765" lon="-121.054852020">
+ <ele>339.949341</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905463222" lon="-121.054744732">
+ <ele>338.988037</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905549053" lon="-121.054508697">
+ <ele>335.142822</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905570511" lon="-121.054465782">
+ <ele>335.142822</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905785087" lon="-121.054058086">
+ <ele>333.700806</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.905978206" lon="-121.053800594">
+ <ele>330.816895</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906149868" lon="-121.053628933">
+ <ele>330.336182</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906257156" lon="-121.053586017">
+ <ele>329.855469</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906385902" lon="-121.053521644">
+ <ele>329.855469</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906514648" lon="-121.053457271">
+ <ele>328.413574</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906879429" lon="-121.053543102">
+ <ele>325.529663</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906900886" lon="-121.053586017">
+ <ele>324.087646</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906965259" lon="-121.053714763">
+ <ele>322.165039</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.906965259" lon="-121.053714763">
+ <ele>322.165039</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907008175" lon="-121.053671848">
+ <ele>322.645752</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907158378" lon="-121.053435814">
+ <ele>326.490967</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907244209" lon="-121.053199779">
+ <ele>329.855469</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907544617" lon="-121.053071033">
+ <ele>327.932861</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907630447" lon="-121.053071033">
+ <ele>327.452271</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907673363" lon="-121.053028118">
+ <ele>326.010254</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907802109" lon="-121.052920830">
+ <ele>324.087646</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907887939" lon="-121.052792084">
+ <ele>322.645752</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.907930855" lon="-121.052598965">
+ <ele>322.645752</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908317093" lon="-121.052105438">
+ <ele>322.165039</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908445839" lon="-121.051869404">
+ <ele>322.645752</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908252720" lon="-121.051461708">
+ <ele>323.607056</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908274177" lon="-121.050968181">
+ <ele>321.684448</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908381466" lon="-121.050839435">
+ <ele>320.242432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908424381" lon="-121.050817978">
+ <ele>319.761841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908531669" lon="-121.050710689">
+ <ele>315.916504</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908574585" lon="-121.050689232">
+ <ele>315.916504</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908638958" lon="-121.050646316">
+ <ele>313.513306</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908789161" lon="-121.050581943">
+ <ele>313.513306</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908917908" lon="-121.050496113">
+ <ele>315.435913</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909025196" lon="-121.050453197">
+ <ele>316.397217</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909432892" lon="-121.050367367">
+ <ele>317.358643</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909540180" lon="-121.050324451">
+ <ele>317.358643</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909540180" lon="-121.050260078">
+ <ele>320.242432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909175400" lon="-121.049852382">
+ <ele>321.203857</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908746246" lon="-121.049251568">
+ <ele>323.126465</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908531669" lon="-121.048629295">
+ <ele>323.126465</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.908660415" lon="-121.048393261">
+ <ele>321.684448</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909196857" lon="-121.048264515">
+ <ele>318.800537</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909239773" lon="-121.048264515">
+ <ele>318.800537</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909325603" lon="-121.048157226">
+ <ele>317.358643</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909304146" lon="-121.048028480">
+ <ele>319.281250</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909218315" lon="-121.047513496">
+ <ele>320.242432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909282688" lon="-121.047449123">
+ <ele>321.684448</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909497265" lon="-121.047427666">
+ <ele>321.684448</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909733299" lon="-121.047492039">
+ <ele>321.203857</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.909883503" lon="-121.047427666">
+ <ele>321.684448</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910076622" lon="-121.047492039">
+ <ele>321.684448</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910441402" lon="-121.047942650">
+ <ele>320.242432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910548691" lon="-121.048092853">
+ <ele>321.203857</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910784725" lon="-121.048221599">
+ <ele>320.723145</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910870556" lon="-121.048264515">
+ <ele>319.281250</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.910956386" lon="-121.048049938">
+ <ele>319.761841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911192421" lon="-121.047620785">
+ <ele>319.761841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911535744" lon="-121.047556412">
+ <ele>320.242432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911964897" lon="-121.047041427">
+ <ele>318.800537</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911921982" lon="-121.046805393">
+ <ele>319.761841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911879066" lon="-121.046526443">
+ <ele>322.645752</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911879066" lon="-121.046226036">
+ <ele>322.645752</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911836151" lon="-121.045990002">
+ <ele>320.242432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.911900524" lon="-121.045582306">
+ <ele>319.761841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912179474" lon="-121.045217525">
+ <ele>319.761841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912522796" lon="-121.044766914">
+ <ele>319.281250</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912694458" lon="-121.044616710">
+ <ele>318.319824</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912780289" lon="-121.044595253">
+ <ele>319.761841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912801746" lon="-121.044616710">
+ <ele>319.761841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.912844662" lon="-121.044616710">
+ <ele>319.761841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913037781" lon="-121.044659626">
+ <ele>321.684448</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913209442" lon="-121.044638168">
+ <ele>320.723145</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913402561" lon="-121.044638168">
+ <ele>318.319824</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913681511" lon="-121.044638168">
+ <ele>316.877930</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.913810257" lon="-121.044573795">
+ <ele>316.397217</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914217953" lon="-121.044230472">
+ <ele>312.551880</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914282326" lon="-121.044187557">
+ <ele>312.551880</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.914561275" lon="-121.044101726">
+ <ele>309.668091</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915033344" lon="-121.044337761">
+ <ele>305.342163</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915076259" lon="-121.044380676">
+ <ele>305.342163</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915376667" lon="-121.044316303">
+ <ele>303.419556</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915634159" lon="-121.044187557">
+ <ele>301.496948</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915762905" lon="-121.043972980">
+ <ele>298.132324</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.915805820" lon="-121.043715488">
+ <ele>297.651611</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916277889" lon="-121.043415081">
+ <ele>293.806396</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916556839" lon="-121.043543827">
+ <ele>290.441895</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916728500" lon="-121.043608200">
+ <ele>288.038574</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916835789" lon="-121.043608200">
+ <ele>288.038574</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917093281" lon="-121.043457996">
+ <ele>286.115967</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917307857" lon="-121.042985927">
+ <ele>283.231934</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917350773" lon="-121.042921554">
+ <ele>282.751343</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917436603" lon="-121.042792808">
+ <ele>280.828735</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917694095" lon="-121.042685520">
+ <ele>278.425415</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917758468" lon="-121.042685520">
+ <ele>277.944702</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918402199" lon="-121.042814266">
+ <ele>273.138306</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918530945" lon="-121.042835724">
+ <ele>271.696289</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918724064" lon="-121.042900097">
+ <ele>270.254272</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918917183" lon="-121.042835724">
+ <ele>269.773682</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918981556" lon="-121.042449486">
+ <ele>268.331665</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918938640" lon="-121.041784298">
+ <ele>265.447754</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918766979" lon="-121.041526806">
+ <ele>262.563721</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918488029" lon="-121.041183483">
+ <ele>260.641113</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918359283" lon="-121.040732872">
+ <ele>257.757324</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918230537" lon="-121.040561210">
+ <ele>255.834717</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918015961" lon="-121.040346634">
+ <ele>255.834717</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917801384" lon="-121.040132057">
+ <ele>255.354004</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917522434" lon="-121.039938938">
+ <ele>251.027954</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917415146" lon="-121.039767277">
+ <ele>250.066772</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917372230" lon="-121.039574158">
+ <ele>248.624756</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917329315" lon="-121.038780224">
+ <ele>243.818237</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917393688" lon="-121.038479816">
+ <ele>242.376343</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917436603" lon="-121.038007747">
+ <ele>239.973022</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917586807" lon="-121.037685882">
+ <ele>237.089111</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917887214" lon="-121.037535679">
+ <ele>234.205078</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918037418" lon="-121.037535679">
+ <ele>233.724365</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918380741" lon="-121.037621509">
+ <ele>230.359863</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918809894" lon="-121.037879001">
+ <ele>226.995361</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918917183" lon="-121.037964832">
+ <ele>226.033936</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919045929" lon="-121.038050663">
+ <ele>224.592041</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919260505" lon="-121.038222324">
+ <ele>223.150146</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919367794" lon="-121.038308155">
+ <ele>221.708130</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919689659" lon="-121.038565647">
+ <ele>217.862793</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919732574" lon="-121.038608562">
+ <ele>217.862793</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919754032" lon="-121.038608562">
+ <ele>216.901489</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919668201" lon="-121.038479816">
+ <ele>215.459595</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919389252" lon="-121.038136494">
+ <ele>211.614380</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919346336" lon="-121.038093578">
+ <ele>211.614380</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919239048" lon="-121.037986290">
+ <ele>208.730347</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919003013" lon="-121.037707340">
+ <ele>204.885132</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918960098" lon="-121.037664425">
+ <ele>204.885132</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918766979" lon="-121.037428390">
+ <ele>200.559204</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918638233" lon="-121.037213814">
+ <ele>197.194580</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918509487" lon="-121.037020695">
+ <ele>192.868774</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918294910" lon="-121.036784660">
+ <ele>189.023560</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918230537" lon="-121.036741745">
+ <ele>187.581421</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917951587" lon="-121.036570083">
+ <ele>181.813599</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917887214" lon="-121.036527168">
+ <ele>181.813599</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917608265" lon="-121.036419880">
+ <ele>178.929810</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917415146" lon="-121.036376964">
+ <ele>178.449097</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917007450" lon="-121.036548626">
+ <ele>178.449097</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916857246" lon="-121.036398422">
+ <ele>178.929810</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916621212" lon="-121.035840523">
+ <ele>180.371704</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916363720" lon="-121.035647404">
+ <ele>181.333008</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916363720" lon="-121.035346996">
+ <ele>181.813599</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916578296" lon="-121.035218250">
+ <ele>181.333008</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.916943077" lon="-121.035089504">
+ <ele>180.371704</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.917222027" lon="-121.035068046">
+ <ele>179.410400</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918209080" lon="-121.035454284">
+ <ele>178.449097</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918488029" lon="-121.035625946">
+ <ele>177.968384</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.918745521" lon="-121.035969269">
+ <ele>177.968384</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919045929" lon="-121.036248218">
+ <ele>177.968384</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919346336" lon="-121.036655914">
+ <ele>178.449097</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920183185" lon="-121.037406933">
+ <ele>181.333008</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920912746" lon="-121.037750255">
+ <ele>183.255615</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921277527" lon="-121.037836086">
+ <ele>185.178223</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921492103" lon="-121.037921917">
+ <ele>184.216919</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921599392" lon="-121.037964832">
+ <ele>185.658813</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921685222" lon="-121.037964832">
+ <ele>184.216919</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921921257" lon="-121.038007747">
+ <ele>187.581421</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922092918" lon="-121.038072120">
+ <ele>187.100830</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922178749" lon="-121.038115036">
+ <ele>187.100830</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922264580" lon="-121.038157951">
+ <ele>186.620239</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922607902" lon="-121.038222324">
+ <ele>186.620239</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923058513" lon="-121.038243782">
+ <ele>187.100830</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923144344" lon="-121.038243782">
+ <ele>187.100830</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923230175" lon="-121.038265240">
+ <ele>187.100830</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923444752" lon="-121.038372528">
+ <ele>184.216919</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923809532" lon="-121.038479816">
+ <ele>185.178223</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924024109" lon="-121.038651478">
+ <ele>185.658813</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924303058" lon="-121.038844597">
+ <ele>186.620239</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924496177" lon="-121.038930427">
+ <ele>187.100830</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924560551" lon="-121.038994800">
+ <ele>186.620239</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924903873" lon="-121.039359581">
+ <ele>184.697632</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925139908" lon="-121.039681446">
+ <ele>184.216919</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925569061" lon="-121.040325176">
+ <ele>183.255615</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925783638" lon="-121.040625583">
+ <ele>182.775024</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925912384" lon="-121.040647041">
+ <ele>182.294312</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926019672" lon="-121.040689956">
+ <ele>181.813599</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926298622" lon="-121.040668499">
+ <ele>180.852417</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926427368" lon="-121.040625583">
+ <ele>180.371704</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927049640" lon="-121.040260803">
+ <ele>183.736206</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927328590" lon="-121.039917480">
+ <ele>186.139526</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927929405" lon="-121.039445412">
+ <ele>189.023560</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.928380016" lon="-121.039080631">
+ <ele>192.388184</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.928701881" lon="-121.038994800">
+ <ele>195.752686</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.928895000" lon="-121.038973343">
+ <ele>197.675293</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929195408" lon="-121.038780224">
+ <ele>200.078613</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929367069" lon="-121.038351070">
+ <ele>202.481812</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929431442" lon="-121.038179409">
+ <ele>204.404541</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929796222" lon="-121.038136494">
+ <ele>207.769165</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930096630" lon="-121.037943374">
+ <ele>210.652954</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930397037" lon="-121.037836086">
+ <ele>213.536987</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930675987" lon="-121.037836086">
+ <ele>214.978882</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931126598" lon="-121.037428390">
+ <ele>216.420776</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931362633" lon="-121.037170898">
+ <ele>219.785400</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931534294" lon="-121.036913406">
+ <ele>222.669434</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931877617" lon="-121.036441337">
+ <ele>226.033936</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932156566" lon="-121.036055099">
+ <ele>228.917969</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932392601" lon="-121.035690319">
+ <ele>231.801758</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932564262" lon="-121.035304081">
+ <ele>235.166382</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932650093" lon="-121.034939300">
+ <ele>237.569702</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932349685" lon="-121.034510147">
+ <ele>240.453735</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932178024" lon="-121.034166824">
+ <ele>243.337524</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931963447" lon="-121.033694755">
+ <ele>246.702148</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931727413" lon="-121.033265602">
+ <ele>249.586060</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931491379" lon="-121.032986652">
+ <ele>252.470093</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931405548" lon="-121.032664787">
+ <ele>255.354004</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931212429" lon="-121.032257091">
+ <ele>258.718506</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930976394" lon="-121.031892311">
+ <ele>262.563721</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931019310" lon="-121.031634819">
+ <ele>264.967041</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931405548" lon="-121.031270038">
+ <ele>265.928345</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931620125" lon="-121.030840885">
+ <ele>267.370361</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931598667" lon="-121.030218612">
+ <ele>269.773682</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931577209" lon="-121.029725086">
+ <ele>272.657593</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931427006" lon="-121.029338848">
+ <ele>275.541504</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931298260" lon="-121.028888237">
+ <ele>277.944702</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931233887" lon="-121.028695118">
+ <ele>279.867310</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931276802" lon="-121.028630745">
+ <ele>280.348022</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931598667" lon="-121.028373253">
+ <ele>283.231934</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931856159" lon="-121.028201591">
+ <ele>286.596680</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931984905" lon="-121.027858269">
+ <ele>288.999878</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932220939" lon="-121.027793896">
+ <ele>292.845093</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932414058" lon="-121.027643692">
+ <ele>296.209717</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932435516" lon="-121.027235996">
+ <ele>299.093506</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932456974" lon="-121.027064335">
+ <ele>299.093506</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932456974" lon="-121.026892673">
+ <ele>301.016235</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932671551" lon="-121.026592266">
+ <ele>301.496948</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932971958" lon="-121.026463520">
+ <ele>304.380859</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933186535" lon="-121.026098739">
+ <ele>306.784058</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933444027" lon="-121.025691044">
+ <ele>309.668091</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933658603" lon="-121.025347721">
+ <ele>313.032593</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933830265" lon="-121.024832737">
+ <ele>316.397217</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933701519" lon="-121.024210464">
+ <ele>319.281250</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933529857" lon="-121.024124634">
+ <ele>322.165039</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933293823" lon="-121.023824226">
+ <ele>323.607056</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933379654" lon="-121.023373615">
+ <ele>326.010254</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933551315" lon="-121.023008835">
+ <ele>328.894287</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933594230" lon="-121.022579681">
+ <ele>330.336182</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933765892" lon="-121.022322189">
+ <ele>333.700806</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933851723" lon="-121.021893036">
+ <ele>336.584839</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933701519" lon="-121.021549713">
+ <ele>338.507446</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933594230" lon="-121.021120560">
+ <ele>341.391235</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933615688" lon="-121.020584118">
+ <ele>344.755859</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933637146" lon="-121.020519745">
+ <ele>344.275269</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.934109215" lon="-121.020262253">
+ <ele>348.120605</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.934366707" lon="-121.020069134">
+ <ele>351.004395</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.934388164" lon="-121.020069134">
+ <ele>351.485107</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.934817318" lon="-121.019918930">
+ <ele>352.446411</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935139183" lon="-121.019833099">
+ <ele>352.927002</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935546879" lon="-121.019811642">
+ <ele>355.811035</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935825828" lon="-121.019639980">
+ <ele>359.175537</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935868744" lon="-121.019446861">
+ <ele>360.617432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935546879" lon="-121.018974792">
+ <ele>363.982056</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935375217" lon="-121.018695843">
+ <ele>366.866089</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935289387" lon="-121.018266689">
+ <ele>370.230591</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935611252" lon="-121.018052112">
+ <ele>373.114624</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.936040405" lon="-121.017901909">
+ <ele>376.959839</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.936448101" lon="-121.017665874">
+ <ele>379.843628</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.936812881" lon="-121.017494213">
+ <ele>383.208374</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.937134746" lon="-121.017344009">
+ <ele>386.572998</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.937284950" lon="-121.016914856">
+ <ele>388.495605</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.937048916" lon="-121.016507160">
+ <ele>391.860107</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.936769966" lon="-121.016249668">
+ <ele>393.302002</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.936426643" lon="-121.016013634">
+ <ele>396.666748</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.936212066" lon="-121.015906345">
+ <ele>399.550659</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935954574" lon="-121.015863430">
+ <ele>401.473267</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935611252" lon="-121.015884888">
+ <ele>404.357178</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935267929" lon="-121.015906345">
+ <ele>407.721802</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935160641" lon="-121.015520107">
+ <ele>410.125000</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.935139183" lon="-121.015155327">
+ <ele>410.605591</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.934946064" lon="-121.014683258">
+ <ele>413.489746</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.934624199" lon="-121.014318477">
+ <ele>416.854248</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.934237961" lon="-121.013975155">
+ <ele>419.738159</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.934023384" lon="-121.013674747">
+ <ele>423.102783</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933744434" lon="-121.013417255">
+ <ele>425.986572</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933529857" lon="-121.013052475">
+ <ele>429.351318</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933358196" lon="-121.012730610">
+ <ele>432.235229</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933315281" lon="-121.012516033">
+ <ele>433.196533</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933079246" lon="-121.012172710">
+ <ele>435.599731</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932929043" lon="-121.011958134">
+ <ele>436.561157</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932843212" lon="-121.011893761">
+ <ele>437.041748</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932778839" lon="-121.011915218">
+ <ele>438.003052</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932821754" lon="-121.012279999">
+ <ele>440.886963</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932800297" lon="-121.012387287">
+ <ele>442.809570</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932886127" lon="-121.012709152">
+ <ele>446.174316</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933057789" lon="-121.012945186">
+ <ele>449.058105</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933165077" lon="-121.013181221">
+ <ele>452.903320</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933272365" lon="-121.013503086">
+ <ele>456.267944</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933336738" lon="-121.013782036">
+ <ele>457.229248</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933401111" lon="-121.014060985">
+ <ele>460.593872</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933529857" lon="-121.014511597">
+ <ele>463.958496</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933722976" lon="-121.014812004">
+ <ele>463.958496</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933787350" lon="-121.015348446">
+ <ele>460.113281</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933830265" lon="-121.015605938">
+ <ele>456.748535</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933830265" lon="-121.015648853">
+ <ele>456.267944</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933680061" lon="-121.015906345">
+ <ele>454.825928</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.933293823" lon="-121.016185295">
+ <ele>454.345337</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932864670" lon="-121.016292583">
+ <ele>456.267944</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932693008" lon="-121.016271126">
+ <ele>459.151855</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932456974" lon="-121.016249668">
+ <ele>462.516479</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932242397" lon="-121.016271126">
+ <ele>464.439087</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.932049278" lon="-121.016335499">
+ <ele>466.361694</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931705955" lon="-121.016421329">
+ <ele>469.245728</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931341175" lon="-121.016528618">
+ <ele>472.129517</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.931148056" lon="-121.016614448">
+ <ele>475.494141</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930869106" lon="-121.016807567">
+ <ele>478.378174</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930633072" lon="-121.017022144">
+ <ele>480.781494</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930482868" lon="-121.017236721">
+ <ele>482.704102</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930418495" lon="-121.017365467">
+ <ele>483.665283</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930397037" lon="-121.017386925">
+ <ele>483.184692</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930354122" lon="-121.017408382">
+ <ele>483.665283</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930461410" lon="-121.017322552">
+ <ele>484.626709</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930482868" lon="-121.017322552">
+ <ele>484.626709</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930439953" lon="-121.017365467">
+ <ele>485.587891</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930461410" lon="-121.017386925">
+ <ele>485.107300</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930439953" lon="-121.017344009">
+ <ele>486.068604</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930418495" lon="-121.017344009">
+ <ele>486.068604</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930439953" lon="-121.017344009">
+ <ele>487.029907</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930439953" lon="-121.017816078">
+ <ele>484.145996</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930439953" lon="-121.017966282">
+ <ele>482.704102</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930547241" lon="-121.018438351">
+ <ele>480.781494</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930547241" lon="-121.018738758">
+ <ele>478.858887</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930568699" lon="-121.018888962">
+ <ele>477.416870</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930611614" lon="-121.019232284">
+ <ele>474.052124</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930611614" lon="-121.019382488">
+ <ele>472.610229</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930418495" lon="-121.019489776">
+ <ele>471.648926</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930225376" lon="-121.019468319">
+ <ele>467.323120</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930053715" lon="-121.019425403">
+ <ele>463.958496</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.930010799" lon="-121.019403946">
+ <ele>463.477905</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929882053" lon="-121.019232284">
+ <ele>461.074585</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929839138" lon="-121.019039165">
+ <ele>458.190552</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929817680" lon="-121.018974792">
+ <ele>458.190552</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929517273" lon="-121.018867504">
+ <ele>454.825928</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929216865" lon="-121.018846046">
+ <ele>451.942139</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.929066662" lon="-121.018824589">
+ <ele>450.500122</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.928852085" lon="-121.018888962">
+ <ele>447.616211</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.928530220" lon="-121.018888962">
+ <ele>443.290161</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.928251270" lon="-121.019017708">
+ <ele>440.886963</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.928229812" lon="-121.019039165">
+ <ele>439.925659</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.928143982" lon="-121.019039165">
+ <ele>439.444946</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927843574" lon="-121.018781673">
+ <ele>435.599731</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927800659" lon="-121.018695843">
+ <ele>434.638550</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927457336" lon="-121.018266689">
+ <ele>435.119141</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927307133" lon="-121.018159401">
+ <ele>432.235229</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927221302" lon="-121.018095028">
+ <ele>429.831909</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927071098" lon="-121.017944824">
+ <ele>427.428589</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.927028183" lon="-121.017515671">
+ <ele>426.467285</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926877979" lon="-121.017236721">
+ <ele>423.102783</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926856521" lon="-121.017193806">
+ <ele>423.102783</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926835064" lon="-121.017150890">
+ <ele>422.622070</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926770691" lon="-121.017065059">
+ <ele>422.141357</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926577572" lon="-121.017000686">
+ <ele>418.776855</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926448826" lon="-121.016936313">
+ <ele>416.854248</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926405910" lon="-121.016936313">
+ <ele>415.412354</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926277164" lon="-121.016893398">
+ <ele>413.970337</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926212791" lon="-121.016850483">
+ <ele>413.009033</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.926062588" lon="-121.016657364">
+ <ele>411.086304</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925912384" lon="-121.016464245">
+ <ele>408.202393</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925526146" lon="-121.015841972">
+ <ele>404.837769</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925354484" lon="-121.015670311">
+ <ele>404.357178</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925182823" lon="-121.015734684">
+ <ele>401.953979</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925075535" lon="-121.015670311">
+ <ele>400.031372</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925032619" lon="-121.015584480">
+ <ele>399.550659</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925011162" lon="-121.015455734">
+ <ele>400.992554</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.925011162" lon="-121.015434276">
+ <ele>401.473267</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924946789" lon="-121.015219700">
+ <ele>401.473267</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924689297" lon="-121.014940750">
+ <ele>401.473267</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924582008" lon="-121.014661800">
+ <ele>401.473267</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924496177" lon="-121.014297020">
+ <ele>400.992554</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924367431" lon="-121.013889324">
+ <ele>398.589355</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924367431" lon="-121.013610374">
+ <ele>394.263428</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924345974" lon="-121.013481628">
+ <ele>393.782715</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924367431" lon="-121.012837898">
+ <ele>395.224609</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924303058" lon="-121.012601864">
+ <ele>395.224609</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924152855" lon="-121.012709152">
+ <ele>390.898804</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924131397" lon="-121.012730610">
+ <ele>390.418213</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.924024109" lon="-121.012902271">
+ <ele>386.572998</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923981193" lon="-121.012988102">
+ <ele>385.611572</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923916820" lon="-121.013138305">
+ <ele>383.208374</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923873905" lon="-121.013224136">
+ <ele>382.247070</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923788074" lon="-121.013438713">
+ <ele>379.363037</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923680786" lon="-121.013460171">
+ <ele>378.882446</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923380379" lon="-121.013395798">
+ <ele>376.959839</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923122886" lon="-121.013395798">
+ <ele>374.075806</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923079971" lon="-121.013438713">
+ <ele>375.517822</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923058513" lon="-121.013481628">
+ <ele>375.037231</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923015598" lon="-121.013546001">
+ <ele>375.517822</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922908310" lon="-121.013760578">
+ <ele>371.672607</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922886852" lon="-121.013760578">
+ <ele>371.192017</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922865394" lon="-121.013803493">
+ <ele>369.750000</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922865394" lon="-121.013867866">
+ <ele>368.788696</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922886852" lon="-121.014146816">
+ <ele>367.346802</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922886852" lon="-121.014211189">
+ <ele>366.385376</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922843937" lon="-121.014254104">
+ <ele>365.904785</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922822479" lon="-121.014382850">
+ <ele>363.501465</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922843937" lon="-121.014447223">
+ <ele>362.540039</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923015598" lon="-121.014812004">
+ <ele>362.059448</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923165802" lon="-121.015005123">
+ <ele>364.462769</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923251633" lon="-121.015176784">
+ <ele>363.982056</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923337463" lon="-121.015369903">
+ <ele>360.617432</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923358921" lon="-121.015434276">
+ <ele>360.136841</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923401836" lon="-121.015498649">
+ <ele>358.694824</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923316006" lon="-121.015584480">
+ <ele>354.369019</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923294548" lon="-121.015563022">
+ <ele>353.888428</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923273090" lon="-121.015541565">
+ <ele>353.888428</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.923079971" lon="-121.015455734">
+ <ele>350.523804</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922843937" lon="-121.015348446">
+ <ele>347.639771</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922822479" lon="-121.015326988">
+ <ele>347.639771</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922650818" lon="-121.015262615">
+ <ele>344.275269</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922371868" lon="-121.015133869">
+ <ele>340.910645</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922092918" lon="-121.015241157">
+ <ele>337.546021</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922071461" lon="-121.015241157">
+ <ele>337.546021</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922028545" lon="-121.015241157">
+ <ele>336.584839</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921985630" lon="-121.015241157">
+ <ele>335.623413</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921985630" lon="-121.015241157">
+ <ele>336.104126</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921878341" lon="-121.015090954">
+ <ele>335.142822</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922007088" lon="-121.014704716">
+ <ele>333.700806</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.922050003" lon="-121.014361393">
+ <ele>335.142822</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921985630" lon="-121.014254104">
+ <ele>335.142822</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921449188" lon="-121.013653290">
+ <ele>331.778076</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921363357" lon="-121.013481628">
+ <ele>330.816895</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921213154" lon="-121.013073932">
+ <ele>326.490967</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920912746" lon="-121.012644779">
+ <ele>321.203857</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920762543" lon="-121.012473118">
+ <ele>317.358643</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920676712" lon="-121.012344372">
+ <ele>314.474487</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920633797" lon="-121.012301456">
+ <ele>313.513306</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920483593" lon="-121.012473118">
+ <ele>311.590698</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920204643" lon="-121.012923729">
+ <ele>307.745483</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920075897" lon="-121.013309967">
+ <ele>305.342163</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920183185" lon="-121.013739120">
+ <ele>301.496948</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920440677" lon="-121.014060985">
+ <ele>298.612915</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920483593" lon="-121.014125358">
+ <ele>298.132324</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920676712" lon="-121.014533054">
+ <ele>296.209717</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920762543" lon="-121.014640343">
+ <ele>294.767700</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920848373" lon="-121.014726173">
+ <ele>294.287109</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920869831" lon="-121.015069496">
+ <ele>292.364502</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920912746" lon="-121.015219700">
+ <ele>292.364502</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.921062950" lon="-121.015648853">
+ <ele>290.922485</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920977119" lon="-121.015713226">
+ <ele>290.922485</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920633797" lon="-121.015992176">
+ <ele>286.596680</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920612339" lon="-121.016013634">
+ <ele>286.596680</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920440677" lon="-121.016056549">
+ <ele>285.154663</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920183185" lon="-121.016421329">
+ <ele>283.712524</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920140270" lon="-121.016700279">
+ <ele>282.751343</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920140270" lon="-121.016871940">
+ <ele>281.309326</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920118812" lon="-121.017086517">
+ <ele>281.309326</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920204643" lon="-121.017301094">
+ <ele>280.348022</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920311931" lon="-121.017451298">
+ <ele>278.906128</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920376304" lon="-121.017580044">
+ <ele>278.906128</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920419220" lon="-121.017730247">
+ <ele>277.464111</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920311931" lon="-121.018116485">
+ <ele>276.022095</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920269016" lon="-121.018245231">
+ <ele>275.060913</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920226101" lon="-121.018502724">
+ <ele>274.580200</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.920011524" lon="-121.018824589">
+ <ele>271.696289</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919947151" lon="-121.019103538">
+ <ele>270.734985</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919882778" lon="-121.019639980">
+ <ele>267.850952</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+<trkpt lat="38.919925693" lon="-121.019876015">
+ <ele>267.370361</ele>
+ <time>2003-02-05T18:19:20Z</time>
+ <sym>Waypoint</sym>
+</trkpt>
+</trkseg>
+</trk>
+</gpx> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/gpx/gpx.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/gpx/gpx.xsd
new file mode 100644
index 0000000000..63d4640159
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/gpx/gpx.xsd
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- GPX.xsd version 1.0 - For more information on GPX and this schema, visit http://www.topografix.com/gpx.asp -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gpx="http://www.topografix.com/GPX/1/0" targetNamespace="http://www.topografix.com/GPX/1/0" elementFormDefault="qualified">
+
+<!-- Main GPX definition -->
+
+ <xsd:element name="gpx">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string" minOccurs="0"/> <!-- GPX file name -->
+ <xsd:element name="desc" type="xsd:string" minOccurs="0"/> <!-- GPX file description -->
+ <xsd:element name="author" type="xsd:string" minOccurs="0"/> <!-- GPX file author -->
+ <xsd:element name="email" type="gpx:emailType" minOccurs="0"/> <!-- GPX file author email -->
+ <xsd:element name="url" type="xsd:anyURI" minOccurs="0"/> <!-- GPX file URL -->
+ <xsd:element name="urlname" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="time" type="xsd:dateTime" minOccurs="0"/> <!-- GPX file creation time -->
+ <xsd:element name="keywords" type="xsd:string" minOccurs="0"/> <!-- GPX file keywords -->
+ <xsd:element name="bounds" type="gpx:boundsType" minOccurs="0"/> <!-- GPX file bounding rect -->
+ <xsd:element name="wpt" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence> <!-- elements must appear in this order -->
+ <!-- Position info -->
+ <xsd:element name="ele" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="time" type="xsd:dateTime" minOccurs="0"/>
+ <xsd:element name="magvar" type="gpx:degreesType" minOccurs="0"/>
+ <xsd:element name="geoidheight" type="xsd:decimal" minOccurs="0"/>
+
+ <!-- Description info -->
+ <xsd:element name="name" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="cmt" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="desc" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="src" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="url" type="xsd:anyURI" minOccurs="0"/>
+ <xsd:element name="urlname" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="sym" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="type" type="xsd:string" minOccurs="0"/>
+
+ <!-- Accuracy info -->
+ <xsd:element name="fix" type="gpx:fixType" minOccurs="0"/>
+ <xsd:element name="sat" type="xsd:nonNegativeInteger" minOccurs="0"/>
+ <xsd:element name="hdop" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="vdop" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="pdop" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="ageofdgpsdata" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="dgpsid" type="gpx:dgpsStationType" minOccurs="0"/>
+
+ <!-- you can add your own privately defined wpt elements at the end of the wpt -->
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="lat" type="gpx:latitudeType" use="required"/>
+ <xsd:attribute name="lon" type="gpx:longitudeType" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="rte" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="cmt" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="desc" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="src" type="xsd:string" minOccurs="0"/> <!-- the source of this data: "Garmin eTrex", "Map", etc -->
+ <xsd:element name="url" type="xsd:anyURI" minOccurs="0"/>
+ <xsd:element name="urlname" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="number" type="xsd:nonNegativeInteger" minOccurs="0"/> <!-- GPS track number -->
+ <!-- <xsd:element name="type" type="xsd:string" minOccurs="0"/> PROPOSED -->
+ <!-- you can add your own privately defined rte elements at the end of the rte -->
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rtept" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence> <!-- elements must appear in this order -->
+
+ <!-- Position info -->
+ <xsd:element name="ele" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="time" type="xsd:dateTime" minOccurs="0"/>
+ <xsd:element name="magvar" type="gpx:degreesType" minOccurs="0"/>
+ <xsd:element name="geoidheight" type="xsd:decimal" minOccurs="0"/>
+
+ <!-- Description info -->
+ <xsd:element name="name" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="cmt" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="desc" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="src" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="url" type="xsd:anyURI" minOccurs="0"/>
+ <xsd:element name="urlname" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="sym" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="type" type="xsd:string" minOccurs="0"/>
+
+ <!-- Accuracy info -->
+ <xsd:element name="fix" type="gpx:fixType" minOccurs="0"/>
+ <xsd:element name="sat" type="xsd:nonNegativeInteger" minOccurs="0"/>
+ <xsd:element name="hdop" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="vdop" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="pdop" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="ageofdgpsdata" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="dgpsid" type="gpx:dgpsStationType" minOccurs="0"/>
+
+ <!-- you can add your own privately defined rtept elements at the end of the rtept -->
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="lat" type="gpx:latitudeType" use="required"/>
+ <xsd:attribute name="lon" type="gpx:longitudeType" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="trk" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="cmt" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="desc" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="src" type="xsd:string" minOccurs="0"/> <!-- the source of this data: "Garmin eTrex", "Map", etc -->
+ <xsd:element name="url" type="xsd:anyURI" minOccurs="0"/>
+ <xsd:element name="urlname" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="number" type="xsd:nonNegativeInteger" minOccurs="0"/> <!-- GPS track number -->
+ <!-- <xsd:element name="type" type="xsd:string" minOccurs="0"/> PROPOSED -->
+ <!-- you can add your own privately defined trk elements at the end of the trk -->
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="trkseg" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence> <!-- elements must appear in this order -->
+ <xsd:element name="trkpt" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence> <!-- elements must appear in this order -->
+
+ <!-- Position info -->
+ <xsd:element name="ele" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="time" type="xsd:dateTime" minOccurs="0"/>
+ <xsd:element name="course" type="gpx:degreesType" minOccurs="0"/>
+ <xsd:element name="speed" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="magvar" type="gpx:degreesType" minOccurs="0"/>
+ <xsd:element name="geoidheight" type="xsd:decimal" minOccurs="0"/>
+
+ <!-- Description info -->
+ <xsd:element name="name" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="cmt" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="desc" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="src" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="url" type="xsd:anyURI" minOccurs="0"/>
+ <xsd:element name="urlname" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="sym" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="type" type="xsd:string" minOccurs="0"/>
+
+ <!-- Accuracy info -->
+ <xsd:element name="fix" type="gpx:fixType" minOccurs="0"/>
+ <xsd:element name="sat" type="xsd:nonNegativeInteger" minOccurs="0"/>
+ <xsd:element name="hdop" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="vdop" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="pdop" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="ageofdgpsdata" type="xsd:decimal" minOccurs="0"/>
+ <xsd:element name="dgpsid" type="gpx:dgpsStationType" minOccurs="0"/>
+
+ <!-- you can add your own privately defined trkpt elements at the end of the trkpt -->
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="lat" type="gpx:latitudeType" use="required"/>
+ <xsd:attribute name="lon" type="gpx:longitudeType" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <!-- you can add your own privately defined elements at the end of the GPX file -->
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="version" type="xsd:string" use="required" fixed="1.0"/> <!-- version 1.0 -->
+ <xsd:attribute name="creator" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <!-- Other types used by GPX -->
+
+ <xsd:simpleType name="latitudeType">
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="-90.0"/>
+ <xsd:maxInclusive value="90.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="longitudeType">
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="-180.0"/>
+ <xsd:maxInclusive value="180.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="degreesType"> <!-- for bearing, heading, course. Units are degrees, true -->
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="0.0"/>
+ <xsd:maxInclusive value="360.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="fixType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/> <!-- none means GPS had no fix. To signify "the fix info is unknown, leave out the <fix> tag entirely -->
+ <xsd:enumeration value="2d"/>
+ <xsd:enumeration value="3d"/>
+ <xsd:enumeration value="dgps"/>
+ <xsd:enumeration value="pps"/> <!-- military signal used -->
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="dgpsStationType">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="1023"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="boundsType"> <!-- bounding rect for data in file -->
+ <xsd:attribute name="minlat" type="gpx:latitudeType" use="required"/>
+ <xsd:attribute name="minlon" type="gpx:longitudeType" use="required"/>
+ <xsd:attribute name="maxlat" type="gpx:latitudeType" use="required"/>
+ <xsd:attribute name="maxlon" type="gpx:longitudeType" use="required"/>
+ </xsd:complexType>
+
+ <xsd:simpleType name="emailType">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[\p{L}_]+(\.[\p{L}_]+)*@[\p{L}_]+(\.[\p{L}_]+)+"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/instance.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/instance.xml
new file mode 100644
index 0000000000..5bf398dd0d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/instance.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+ <fileHeader fileFormatVersion="32.435 V7.2.0"
+ vendorName="Ericsson AB"
+ dnPrefix="STP43">
+ <fileSender localDn="bs=18"
+ elementType="SBG"/>
+ <measCollec beginTime="2007-09-20T14:05:00+00:00"/>
+ </fileHeader>
+ <measData>
+ <managedElement localDn="bs=18"
+ userLabel="OMMP"
+ swVersion="R6A"/>
+ <measInfo measInfoId="l">
+ <job jobId="1"/>
+ <granPeriod duration="PT300S" endTime="2007-09-20T14:10:00+00:00"/>
+ <repPeriod duration="PT300S"/>
+ <measType p="1">ethernetStatsTxFrames</measType>
+ <measType p="2">ethernetStatsTxOctets</measType>
+ <measType p="3">ethernetStatsRxFrames</measType>
+ <measType p="4">ethernetStatsRxOctets</measType>
+ <measType p="5">ethernetStatsBroadcastTx</measType>
+ <measType p="6">ethernetStatsBroadcastRx</measType>
+ <measType p="7">ethernetStatsTxPauseFrames</measType>
+ <measType p="8">ethernetStatsRxMacFrames</measType>
+ <measType p="9">ethernetStatsMulticastRx</measType>
+ <measType p="10">ethernetStatsRxDiscarded</measType>
+ <measType p="11">ethernetStatsRxErrors</measType>
+ <measType p="12">ethernetStatsTxDiscarded</measType>
+ <measValue measObjLdn="Mp.bsNo=18,MpBlade.subrack=0+slot=7,EthernetInterface.port=1">
+ <r p="1">139197852</r>
+ <r p="2">19584465702</r>
+ <r p="3">144651440</r>
+ <r p="4">20348020750</r>
+ <r p="5">30</r>
+ <r p="6">27509</r>
+ <r p="7">0</r>
+ <r p="8">0</r>
+ <r p="9">114575</r>
+ <r p="10">0</r>
+ <r p="11">8590076673</r>
+ <r p="12">0</r>
+ </measValue>
+ <measValue measObjLdn="Mp.bsNo=18,MpBlade.subrack=0+slot=7,EthernetInterface.port=2">
+ <r p="1">0</r>
+ <r p="2">0</r>
+ <r p="3">0</r>
+ <r p="4">0</r>
+ <r p="5">0</r>
+ <r p="6">0</r>
+ <r p="7">0</r>
+ <r p="8">0</r>
+ <r p="9">0</r>
+ <r p="10">0</r>
+ <r p="11">0</r>
+ <r p="12">0</r>
+ </measValue>
+ <measValue measObjLdn="Mp.bsNo=18,MpBlade.subrack=0+slot=9,EthernetInterface.port=1">
+ <r p="1">2282798</r>
+ <r p="2">146099072</r>
+ <r p="3">2424888</r>
+ <r p="4">155302856</r>
+ <r p="5">3</r>
+ <r p="6">27515</r>
+ <r p="7">0</r>
+ <r p="8">0</r>
+ <r p="9">114575</r>
+ <r p="10">0</r>
+ <r p="11">142081</r>
+ <r p="12">0</r>
+ </measValue>
+ <measValue measObjLdn="Mp.bsNo=18,MpBlade.subrack=0+slot=7,EthernetInterface.port=3">
+ <r p="1">0</r>
+ <r p="2">0</r>
+ <r p="3">0</r>
+ <r p="4">0</r>
+ <r p="5">0</r>
+ <r p="6">0</r>
+ <r p="7">0</r>
+ <r p="8">0</r>
+ <r p="9">0</r>
+ <r p="10">0</r>
+ <r p="11">0</r>
+ <r p="12">0</r>
+ </measValue>
+ <measValue measObjLdn="Mp.bsNo=18,MpBlade.subrack=0+slot=9,EthernetInterface.port=2">
+ <r p="1">0</r>
+ <r p="2">0</r>
+ <r p="3">0</r>
+ <r p="4">0</r>
+ <r p="5">0</r>
+ <r p="6">0</r>
+ <r p="7">0</r>
+ <r p="8">0</r>
+ <r p="9">0</r>
+ <r p="10">0</r>
+ <r p="11">0</r>
+ <r p="12">0</r>
+ </measValue>
+ <measValue measObjLdn="Mp.bsNo=18,MpBlade.subrack=0+slot=9,EthernetInterface.port=3">
+ <r p="1">0</r>
+ <r p="2">0</r>
+ <r p="3">0</r>
+ <r p="4">0</r>
+ <r p="5">0</r>
+ <r p="6">0</r>
+ <r p="7">0</r>
+ <r p="8">0</r>
+ <r p="9">0</r>
+ <r p="10">0</r>
+ <r p="11">0</r>
+ <r p="12">0</r>
+ </measValue>
+ <measValue measObjLdn="Mp.bsNo=18,MpBlade.subrack=0+slot=7,EthernetInterface.port=0">
+ <r p="1">139211625</r>
+ <r p="2">19586502972</r>
+ <r p="3">153860245</r>
+ <r p="4">21661061980</r>
+ <r p="5">30</r>
+ <r p="6">3</r>
+ <r p="7">0</r>
+ <r p="8">0</r>
+ <r p="9">68745</r>
+ <r p="10">0</r>
+ <r p="11">68745</r>
+ <r p="12">0</r>
+ </measValue>
+ <measValue measObjLdn="Mp.bsNo=18,MpBlade.subrack=0+slot=9,EthernetInterface.port=0">
+ <r p="1">2282798</r>
+ <r p="2">146099072</r>
+ <r p="3">2351552</r>
+ <r p="4">150499328</r>
+ <r p="5">3</r>
+ <r p="6">9</r>
+ <r p="7">0</r>
+ <r p="8">0</r>
+ <r p="9">68745</r>
+ <r p="10">0</r>
+ <r p="11">68745</r>
+ <r p="12">0</r>
+ </measValue>
+ </measInfo>
+ </measData>
+ <fileFooter>
+ <measCollec endTime="2007-09-20T14:10:00+00:00"/>
+ </fileFooter>
+</measCollecFile>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/int.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/int.xml
new file mode 100644
index 0000000000..9654bc56ce
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/int.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<purchaseOrder>
+4
+</purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo.xml
new file mode 100644
index 0000000000..3771926dd2
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<ipo:purchaseOrder
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ipo="http://www.example.com/IPO"
+ orderDate="1999-12-01">
+
+ <shipTo exportCode="1" xsi:type="ipo:UKAddress">
+ <name>Helen Zoe</name>
+ <street>47 Eden Street</street>
+ <city>Cambridge</city>
+ <postcode>CB1 1JR</postcode>
+ </shipTo>
+
+ <billTo xsi:type="ipo:USAddress">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+
+ <items>
+ <item partNum="833-AA">
+ <productName>Lapis necklace</productName>
+ <quantity>1</quantity>
+ <USPrice>99.95</USPrice>
+ <ipo:comment>Want this for the holidays!</ipo:comment>
+ <shipDate>1999-12-05</shipDate>
+ </item>
+ </items>
+</ipo:purchaseOrder>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo.xsd
new file mode 100644
index 0000000000..856c712e5a
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo.xsd
@@ -0,0 +1,60 @@
+<schema targetNamespace="http://www.example.com/IPO"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ipo="http://www.example.com/IPO">
+
+ <annotation>
+ <documentation xml:lang="en">
+ International Purchase order schema for Example.com
+ Copyright 2000 Example.com. All rights reserved.
+ </documentation>
+ </annotation>
+
+ <!-- include address constructs -->
+ <include
+ schemaLocation="address.xsd"/>
+
+ <element name="purchaseOrder" type="ipo:PurchaseOrderType"/>
+
+ <element name="comment" type="string"/>
+
+ <complexType name="PurchaseOrderType">
+ <sequence>
+ <element name="shipTo" type="ipo:Address"/>
+ <element name="billTo" type="ipo:Address"/>
+ <element ref="ipo:comment" minOccurs="0"/>
+ <element name="items" type="ipo:Items"/>
+ </sequence>
+ <attribute name="orderDate" type="date"/>
+ </complexType>
+
+ <complexType name="Items">
+ <sequence>
+ <element name="item" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="productName" type="string"/>
+ <element name="quantity">
+ <simpleType>
+ <restriction base="positiveInteger">
+ <maxExclusive value="100"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="USPrice" type="decimal"/>
+ <element ref="ipo:comment" minOccurs="0"/>
+ <element name="shipDate" type="date" minOccurs="0"/>
+ </sequence>
+ <attribute name="partNum" type="ipo:SKU" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+ <simpleType name="SKU">
+ <restriction base="string">
+ <pattern value="\d{3}-[A-Z]{2}"/>
+ </restriction>
+ </simpleType>
+
+</schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_redefine.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_redefine.xml
new file mode 100644
index 0000000000..3f39febc03
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_redefine.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<ipo:purchaseOrder
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ipo="http://www.example.com/IPO"
+ orderDate="1999-12-01">
+
+ <shipTo exportCode="1" xsi:type="ipo:UKAddress">
+ <name>Helen Zoe</name>
+ <street>47 Eden Street</street>
+ <city>Cambridge</city>
+ <country>United Kingdom</country>
+ <postcode>CB1 1JR</postcode>
+ </shipTo>
+
+ <billTo xsi:type="ipo:USAddress">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <country>USA</country>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+
+ <items>
+ <item partNum="833-AA">
+ <productName>Lapis necklace</productName>
+ <quantity>1</quantity>
+ <USPrice>99.95</USPrice>
+ <ipo:comment>Want this for the holidays!</ipo:comment>
+ <shipDate>1999-12-05</shipDate>
+ </item>
+ </items>
+</ipo:purchaseOrder>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_redefine.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_redefine.xsd
new file mode 100644
index 0000000000..ad5e4884fd
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_redefine.xsd
@@ -0,0 +1,73 @@
+<schema targetNamespace="http://www.example.com/IPO"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ipo="http://www.example.com/IPO">
+
+ <annotation>
+ <documentation xml:lang="en">
+ International Purchase order schema for Example.com
+ Copyright 2000 Example.com. All rights reserved.
+ </documentation>
+ </annotation>
+
+<!-- bring in address constructs -->
+ <redefine
+ schemaLocation="address.xsd">
+
+ <!-- redefinition of Address -->
+ <complexType name="Address">
+ <complexContent>
+ <extension base="ipo:Address">
+ <sequence>
+ <element name="country" type="string"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ </redefine>
+
+ <element name="purchaseOrder" type="ipo:PurchaseOrderType"/>
+
+ <element name="comment" type="string"/>
+
+ <complexType name="PurchaseOrderType">
+ <sequence>
+ <element name="shipTo" type="ipo:Address"/>
+ <element name="billTo" type="ipo:Address"/>
+ <element ref="ipo:comment" minOccurs="0"/>
+ <element name="items" type="ipo:Items"/>
+ </sequence>
+ <attribute name="orderDate" type="date"/>
+ </complexType>
+
+ <complexType name="Items">
+ <sequence>
+ <element name="item" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="productName" type="string"/>
+ <element name="quantity">
+ <simpleType>
+ <restriction base="positiveInteger">
+ <maxExclusive value="100"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="USPrice" type="decimal"/>
+ <element ref="ipo:comment" minOccurs="0"/>
+ <element name="shipDate" type="date" minOccurs="0"/>
+ </sequence>
+ <attribute name="partNum" type="ipo:SKU" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+ <simpleType name="SKU">
+ <restriction base="string">
+ <pattern value="\d{3}-[A-Z]{2}"/>
+ </restriction>
+ </simpleType>
+
+</schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_substGroup.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_substGroup.xml
new file mode 100644
index 0000000000..a889153dae
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_substGroup.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<ipo:purchaseOrder
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ipo="http://www.example.com/IPO"
+ orderDate="1999-12-01">
+
+ <shipTo exportCode="1" xsi:type="ipo:UKAddress">
+ <name>Helen Zoe</name>
+ <street>47 Eden Street</street>
+ <city>Cambridge</city>
+ <postcode>CB1 1JR</postcode>
+ </shipTo>
+
+ <billTo xsi:type="ipo:USAddress">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+
+ <items>
+ <item partNum="833-AA">
+ <productName>Lapis necklace</productName>
+ <quantity>1</quantity>
+ <USPrice>99.95</USPrice>
+ <ipo:shipComment>
+ Use gold wrap if possible
+ </ipo:shipComment>
+ <ipo:customerComment>
+ Want this for the holidays!
+ </ipo:customerComment>
+ <shipDate>1999-12-05</shipDate>
+ </item>
+ </items>
+</ipo:purchaseOrder>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_substGroup.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_substGroup.xsd
new file mode 100644
index 0000000000..3899d0f5de
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/ipo_substGroup.xsd
@@ -0,0 +1,65 @@
+<schema targetNamespace="http://www.example.com/IPO"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ipo="http://www.example.com/IPO">
+
+ <annotation>
+ <documentation xml:lang="en">
+ International Purchase order schema for Example.com
+ Copyright 2000 Example.com. All rights reserved.
+ </documentation>
+ </annotation>
+
+ <!-- include address constructs -->
+ <include
+ schemaLocation="address.xsd"/>
+
+ <element name="purchaseOrder" type="ipo:PurchaseOrderType"/>
+
+ <element name="comment" type="string"/>
+
+ <element name="shipComment" type="string"
+ substitutionGroup="ipo:comment"/>
+ <element name="customerComment" type="string"
+ substitutionGroup="ipo:comment"/>
+
+ <complexType name="PurchaseOrderType">
+ <sequence>
+ <element name="shipTo" type="ipo:Address"/>
+ <element name="billTo" type="ipo:Address"/>
+ <element ref="ipo:comment" minOccurs="0"/>
+ <element name="items" type="ipo:Items"/>
+ </sequence>
+ <attribute name="orderDate" type="date"/>
+ </complexType>
+
+ <complexType name="Items">
+ <sequence>
+ <element name="item" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="productName" type="string"/>
+ <element name="quantity">
+ <simpleType>
+ <restriction base="positiveInteger">
+ <maxExclusive value="100"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="USPrice" type="decimal"/>
+ <element ref="ipo:comment" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="shipDate" type="date" minOccurs="0"/>
+ </sequence>
+ <attribute name="partNum" type="ipo:SKU" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+ <simpleType name="SKU">
+ <restriction base="string">
+ <pattern value="\d{3}-[A-Z]{2}"/>
+ </restriction>
+ </simpleType>
+
+</schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/measCollec.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/measCollec.xsd
new file mode 100644
index 0000000000..3e6614effd
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/measCollec.xsd
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 3GPP TS 32.435 Performance Measurement XML file format definition
+ data file XML schema
+ measCollec.xsd
+-->
+
+<schema
+ targetNamespace=
+"http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec"
+ elementFormDefault="qualified"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:mc=
+"http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec"
+>
+
+ <!-- Measurement collection data file root XML element -->
+
+ <element name="measCollecFile">
+ <complexType>
+ <sequence>
+ <element name="fileHeader">
+ <complexType>
+ <sequence>
+ <element name="fileSender">
+ <complexType>
+ <attribute name="localDn" type="string" use="optional"/>
+ <attribute name="elementType" type="string" use="optional"/>
+ </complexType>
+ </element>
+ <element name="measCollec">
+ <complexType>
+ <attribute name="beginTime" type="dateTime" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="fileFormatVersion" type="string" use="required"/>
+ <attribute name="vendorName" type="string" use="optional"/>
+ <attribute name="dnPrefix" type="string" use="optional"/>
+ </complexType>
+ </element>
+ <element name="measData" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="managedElement">
+ <complexType>
+ <attribute name="localDn" type="string" use="optional"/>
+ <attribute name="userLabel" type="string" use="optional"/>
+ <attribute name="swVersion" type="string" use="optional"/>
+ </complexType>
+ </element>
+ <element name="measInfo" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="job" minOccurs="0">
+ <complexType>
+ <attribute name="jobId" type="string" use="required"/>
+ </complexType>
+ </element>
+ <element name="granPeriod">
+ <complexType>
+ <attribute
+ name="duration"
+ type="duration"
+ use="required"
+ />
+ <attribute
+ name="endTime"
+ type="dateTime"
+ use="required"
+ />
+ </complexType>
+ </element>
+ <element name="repPeriod" minOccurs="0">
+ <complexType>
+ <attribute name="duration"
+ type="duration" use="required"/>
+ </complexType>
+ </element>
+ <choice>
+ <element name="measTypes">
+ <simpleType>
+ <list itemType="Name"/>
+ </simpleType>
+ </element>
+ <element name="measType"
+ minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <simpleContent>
+ <extension base="Name">
+ <attribute name="p"
+ type="positiveInteger" use="required"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </choice>
+ <element name="measValue"
+ minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <choice>
+ <element name="measResults">
+ <simpleType>
+ <list itemType="mc:measResultType"/>
+ </simpleType>
+ </element>
+ <element name="r"
+ minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <simpleContent>
+ <extension base="mc:measResultType">
+ <attribute name="p" type="positiveInteger"
+ use="required"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </choice>
+ <element name="suspect" type="boolean" minOccurs="0"/>
+ </sequence>
+ <attribute name="measObjLdn"
+ type="string" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="measInfoId"
+ type="string" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="fileFooter">
+ <complexType>
+ <sequence>
+ <element name="measCollec">
+ <complexType>
+ <attribute name="endTime" type="dateTime" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+
+ <simpleType name="measResultType">
+ <union memberTypes="float">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="NIL"/>
+ </restriction>
+ </simpleType>
+ </union>
+ </simpleType>
+
+</schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/mim.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/mim.xsd
new file mode 100755
index 0000000000..057344cde8
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/mim.xsd
@@ -0,0 +1,511 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <!--
+
+ Copyright (c) Ericsson AB 2006 All rights reserved.
+
+ The information in this document is the property of Ericsson.
+
+ Except as specifically authorized in writing by Ericsson, the
+ receiver of this document shall keep the information contained
+ herein confidential and shall protect the same in whole or in
+ part from disclosure and dissemination to third parties.
+
+ Disclosure and disseminations to the receivers employees shall
+ only be made on a strict need to know basis.
+ -->
+ <!-- Common -->
+ <xs:element name="description" type="xs:string"/>
+ <xs:element name="applicationTag">
+ <xs:complexType>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="anyElement"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="anyAttribute">
+ <xs:anyAttribute processContents="skip"/>
+ </xs:attributeGroup>
+ <xs:group name="anyElement">
+ <xs:sequence>
+ <xs:any processContents="skip"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Mim definition -->
+ <xs:element name="mim">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="namedStruct"/>
+ <xs:element ref="enum"/>
+ <xs:group ref="dataTypeDef"/>
+ <xs:element ref="exception"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="relationship"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- MO class definition -->
+ <xs:element name="class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element ref="singleton"/>
+ <xs:element minOccurs="0" ref="systemCreated"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="namedStruct"/>
+ <xs:element ref="enum"/>
+ <xs:group ref="dataTypeDef"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="attribute"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="systemCreated"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="namedStruct"/>
+ <xs:element ref="enum"/>
+ <xs:group ref="dataTypeDef"/>
+ </xs:choice>
+ <xs:element maxOccurs="unbounded" ref="attribute"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="action"/>
+ <xs:element minOccurs="0" ref="notificationTypes"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z][A-Za-z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="singleton">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="systemCreated">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="notificationTypes" type="xs:string"/>
+ <!-- Relations -->
+ <xs:element name="relationship">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:element ref="containment"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="containment">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="parent"/>
+ <xs:element ref="child"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="parent" type="hasClass"/>
+ <xs:element name="child">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="hasClass">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="cardinality"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="cardinality">
+ <xs:complexType>
+ <xs:choice>
+ <xs:element ref="min"/>
+ <xs:element ref="max"/>
+ <xs:sequence>
+ <xs:element ref="min"/>
+ <xs:element ref="max"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="hasClass">
+ <xs:sequence>
+ <xs:element ref="hasClass"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="hasClass">
+ <xs:complexType>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- Data types -->
+ <xs:group name="type">
+ <xs:choice>
+ <xs:element ref="boolean"/>
+ <xs:element ref="float"/>
+ <xs:element ref="integer"/>
+ <xs:element ref="string"/>
+ <xs:group ref="struct"/>
+ <xs:element ref="enumRef"/>
+ <xs:element ref="structRef"/>
+ <xs:element ref="moRef"/>
+ </xs:choice>
+ </xs:group>
+ <!-- For attributes, parameters and exceptions -->
+ <xs:group name="dataType">
+ <xs:sequence>
+ <xs:element name="dataType">
+ <xs:complexType>
+ <xs:choice>
+ <xs:group ref="type"/>
+ <xs:element ref="sequence"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="dataTypeDef">
+ <xs:sequence>
+ <xs:element name="dataType">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:choice>
+ <xs:group ref="type"/>
+ <xs:element ref="sequence"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="dataTypeRef">
+ <xs:sequence>
+ <xs:element name="dataType">
+ <xs:complexType>
+ <xs:attribute name="name.ref" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- For actions -->
+ <xs:element name="returnType">
+ <xs:complexType>
+ <xs:choice>
+ <xs:element ref="void"/>
+ <xs:group ref="type"/>
+ <xs:element ref="sequence"/>
+ <xs:group ref="dataTypeRef"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <!-- Return data types -->
+ <xs:element name="void">
+ <xs:complexType/>
+ </xs:element>
+ <!-- Primitive data types -->
+ <xs:element name="boolean">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="float">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="range"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="integer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="range"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="string">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="lengthRange"/>
+ <xs:element minOccurs="0" ref="validValues"/>
+ <xs:element minOccurs="0" ref="pattern"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="pattern" type="xs:string"/>
+ <xs:element name="validValues" type="xs:string"/>
+ <xs:element name="lengthRange">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="min"/>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="min"/>
+ <xs:element ref="max"/>
+ </xs:sequence>
+ <xs:element minOccurs="0" ref="max"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="range">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="min"/>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="min"/>
+ <xs:element ref="max"/>
+ </xs:sequence>
+ <xs:element minOccurs="0" ref="max"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="max" type="xs:string"/>
+ <xs:element name="min" type="xs:string"/>
+ <xs:element name="defaultValue" type="xs:string"/>
+ <!-- Enum data type -->
+ <xs:element name="enum">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:element maxOccurs="unbounded" ref="enumMember"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="enumMember">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:element minOccurs="0" ref="value"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="enumRef">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="value" type="xs:string"/>
+ <!-- Struct data type -->
+ <xs:group name="namedStruct">
+ <xs:sequence>
+ <xs:element name="struct">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:element maxOccurs="unbounded" ref="structMember"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="struct">
+ <xs:sequence>
+ <xs:element name="struct">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="structMember"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="structMember">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:choice>
+ <xs:group ref="type"/>
+ <xs:element ref="sequence"/>
+ <xs:group ref="dataTypeRef"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="structRef">
+ <xs:complexType>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- Sequence data type -->
+ <xs:element name="sequence">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:group ref="type"/>
+ <xs:group ref="dataTypeRef"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="minLength"/>
+ <xs:element minOccurs="0" ref="maxLength"/>
+ <xs:element minOccurs="0" ref="nonUnique"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="minLength" type="xs:string"/>
+ <xs:element name="maxLength" type="xs:string"/>
+ <xs:element name="nonUnique">
+ <xs:complexType/>
+ </xs:element>
+ <!-- MoRef data type -->
+ <xs:element name="moRef">
+ <xs:complexType>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(/[A-Z][A-Za-z0-9]*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <!-- Attribute -->
+ <xs:element name="attribute">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag">
+ <xs:annotation>
+ <xs:documentation>Currently not used in IS.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:choice>
+ <xs:group ref="dataType"/>
+ <xs:group ref="dataTypeRef"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="initialValue"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="noNotification"/>
+ <xs:element ref="restricted"/>
+ <xs:element ref="readOnly"/>
+ <xs:choice>
+ <xs:element ref="key"/>
+ <xs:choice>
+ <xs:element ref="local"/>
+ <xs:element ref="mandatory"/>
+ <xs:element ref="nonPersistent"/>
+ <xs:element ref="static"/>
+ <xs:element ref="undefined"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-z][a-zA-Z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="initialValue" type="xs:string"/>
+ <xs:element name="key">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="local">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="mandatory">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="noNotification">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="nonPersistent">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="readOnly">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="restricted">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="static">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="undefined">
+ <xs:complexType/>
+ </xs:element>
+ <!-- Action -->
+ <xs:element name="action">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:element ref="returnType"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="raisesException"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-z][a-zA-Z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="parameter">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:choice>
+ <xs:group ref="dataType"/>
+ <xs:group ref="dataTypeRef"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="exception">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionParameter"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="exceptionParameter">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="applicationTag"/>
+ <xs:choice>
+ <xs:group ref="dataType"/>
+ <xs:group ref="dataTypeRef"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="raisesException">
+ <xs:complexType>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/EricssonSpecificAttributes.5.1.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/EricssonSpecificAttributes.5.1.xsd
new file mode 100644
index 0000000000..3509d13da7
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/EricssonSpecificAttributes.5.1.xsd
@@ -0,0 +1,1531 @@
+<!--
+ Configuration data file vendor-specific XML schema
+ EricssonSpecificAttributes.5.1.xsd
+ Includes Transport.
+ -->
+<schema xmlns:es="EricssonSpecificAttributes.5.1.xsd" xmlns:xn="genericNrm.xsd" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="EricssonSpecificAttributes.5.1.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <!-- EricssonSpecificAttributes version 5.0 vendor-specific data -->
+ <import namespace="genericNrm.xsd" schemaLocation="genericNrm.xsd"/>
+ <include schemaLocation="EricssonSpecificAttributes.5.1Tran.xsd"/>
+ <element name="vsDataAntennaBranch" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="branchName" minOccurs="0"/>
+ <element name="antennaType" minOccurs="0"/>
+ <element name="verticalAntennaTilt" minOccurs="0"/>
+ <element name="mechanicalAntennaTilt" minOccurs="0"/>
+ <element name="antennaSupervisionThreshold" minOccurs="0"/>
+ <element name="fqBandHighEdge" minOccurs="0"/>
+ <element name="fqBandLowEdge" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataAntFeederCable" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="ulAttenuation" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="dlAttenuation" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="objectBConnector" minOccurs="0"/>
+ <element name="connectedToObjectBRef" minOccurs="0"/>
+ <element name="electricalUlDelay" minOccurs="0"/>
+ <element name="electricalDlDelay" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataAreas" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataCchFrameSynch" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="dto" minOccurs="0"/>
+ <element name="doStep" minOccurs="0"/>
+ <element name="toAWS" minOccurs="0"/>
+ <element name="toAWE" minOccurs="0"/>
+ <element name="toAE" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataChannelSwitching" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="dlRlcBufUpswitch" minOccurs="0"/>
+ <element name="ulRlcBufUpswitch" minOccurs="0"/>
+ <element name="downswitchThreshold" minOccurs="0"/>
+ <element name="downswitchTimerThreshold" minOccurs="0"/>
+ <element name="downswitchTimer" minOccurs="0"/>
+ <element name="dlRlcBufUpswitchMrab" minOccurs="0"/>
+ <element name="ulRlcBufUpswitchMrab" minOccurs="0"/>
+ <element name="upswitchTimer" minOccurs="0"/>
+ <element name="coverageTimer" minOccurs="0"/>
+ <element name="inactivityTimer" minOccurs="0"/>
+ <element name="downswitchPwrMargin" minOccurs="0"/>
+ <element name="reportHysteresis" minOccurs="0"/>
+ <element name="upswitchPwrMargin" minOccurs="0"/>
+ <element name="downswitchTimerUp" minOccurs="0"/>
+ <element name="downswitchTimerSp" minOccurs="0"/>
+ <element name="hsdschInactivityTimer" minOccurs="0"/>
+ <element name="bandwidthMarginUl" minOccurs="0"/>
+ <element name="upswitchTimerUl" minOccurs="0"/>
+ <element name="bandwidthMargin" minOccurs="0"/>
+ <element name="dlDownswitchBandwidthMargin" minOccurs="0"/>
+ <element name="dlThroughputAllowUpswitchThreshold" minOccurs="0"/>
+ <element name="dlThroughputDownswitchTimer" minOccurs="0"/>
+ <element name="inactivityTimerPch" minOccurs="0"/>
+ <element name="multiRabSp0Available" minOccurs="0"/>
+ <element name="multiRabUdi8Available" minOccurs="0"/>
+ <element name="ulThroughputAllowUpswitchThreshold" minOccurs="0"/>
+ <element name="ulThroughputDownswitchTimer" minOccurs="0"/>
+ <element name="ulDownswitchBandwidthMargin" minOccurs="0"/>
+ <element name="inactivityTimeMultiPsInteractive" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataDchFrameSynch" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="dto" minOccurs="0"/>
+ <element name="doStep" minOccurs="0"/>
+ <element name="toAWS" minOccurs="0"/>
+ <element name="toAWE" minOccurs="0"/>
+ <element name="toAE" minOccurs="0"/>
+ <element name="uto" minOccurs="0"/>
+ <element name="uoStep" minOccurs="0"/>
+ <element name="toAWEUl" minOccurs="0"/>
+ <element name="toAEUl" minOccurs="0"/>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="toAWSUl" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataAuxPlugInUnit" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataEquipment" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataPlmn" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ <element name="aliasPlmnIdentities" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataExternalGsmCell" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="maxTxPowerUl" minOccurs="0"/>
+ <element name="qRxLevMin" minOccurs="0"/>
+ <element name="individualOffset" minOccurs="0"/>
+ <element name="parentSystem" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ <element name="bandIndicator" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataExternalGsmPlmn" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ <element name="aliasPlmnIdentities" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataExternalTma" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="dlAttenuation" minOccurs="0"/>
+ <element name="ulGain" minOccurs="0"/>
+ <element name="dlTrafficDelayA" minOccurs="0"/>
+ <element name="dlTrafficDelayB" minOccurs="0"/>
+ <element name="internalPower" minOccurs="0"/>
+ <element name="ulTrafficDelayA" minOccurs="0"/>
+ <element name="ulTrafficDelayB" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataExternalUtranCell" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="qQualMin" minOccurs="0"/>
+ <element name="qRxLevMin" minOccurs="0"/>
+ <element name="maxTxPowerUl" minOccurs="0"/>
+ <element name="individualOffset" minOccurs="0"/>
+ <element name="parentSystem" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ <element name="agpsEnabled" minOccurs="0"/>
+ <element name="cellCapability" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="hsdschSupport" minOccurs="0"/>
+ <element name="edchSupport" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataExternalUtranPlmn" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ <element name="reservedBy" minOccurs="0"/>
+ <element name="aliasPlmnIdentities" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataFach" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="maxFach1Power" minOccurs="0"/>
+ <element name="maxFach2Power" minOccurs="0"/>
+ <element name="sccpchOffset" minOccurs="0"/>
+ <element name="pOffset1Fach" minOccurs="0"/>
+ <element name="pOffset3Fach" minOccurs="0"/>
+ <element name="administrativeState" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataGsmRelation" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="qOffset1sn" minOccurs="0"/>
+ <element name="mobilityRelationType" minOccurs="0"/>
+ <element name="selectionPriority" minOccurs="0"/>
+ <element name="externalGsmCellRef" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataHandover" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="maxActiveSet" minOccurs="0"/>
+ <element name="fddGsmHOSupp" minOccurs="0"/>
+ <element name="selHoSup" minOccurs="0"/>
+ <element name="timeReleaseIuPs" minOccurs="0"/>
+ <element name="gsmAmountPropRepeat" minOccurs="0"/>
+ <element name="gsmPropRepeatInterval" minOccurs="0"/>
+ <element name="ifhoPropRepeatInterval" minOccurs="0"/>
+ <element name="ifhoAmountPropRepeat" minOccurs="0"/>
+ <element name="fddIfhoSupp" minOccurs="0"/>
+ <element name="hoTypeDrncBand1" minOccurs="0"/>
+ <element name="hoTypeDrncBand2" minOccurs="0"/>
+ <element name="hoTypeDrncBand3" minOccurs="0"/>
+ <element name="hoTypeDrncBand4" minOccurs="0"/>
+ <element name="hoTypeDrncBand5" minOccurs="0"/>
+ <element name="hoTypeDrncBand6" minOccurs="0"/>
+ <element name="hoTypeDrncBand7" minOccurs="0"/>
+ <element name="hoTypeDrncBand8" minOccurs="0"/>
+ <element name="hoTypeDrncBand9" minOccurs="0"/>
+ <element name="hoTypeDrncBand10" minOccurs="0"/>
+ <element name="hoTypeDrncBand11" minOccurs="0"/>
+ <element name="hoTypeDrncBand12" minOccurs="0"/>
+ <element name="releaseConnOffset" minOccurs="0"/>
+ <element name="hoTypeDrncBand13" minOccurs="0"/>
+ <element name="hoTypeDrncBand14" minOccurs="0"/>
+ <element name="hoTypeDrncBand15" minOccurs="0"/>
+ <element name="hoTypeDrncBand16" minOccurs="0"/>
+ <element name="hoTypeDrncBand17" minOccurs="0"/>
+ <element name="maxGsmMonSubset" minOccurs="0"/>
+ <element name="maxIefMonSubset" minOccurs="0"/>
+ <element name="cnhhoSupp" minOccurs="0"/>
+ <element name="interFreqCnhhoPenaltyEcno" minOccurs="0"/>
+ <element name="interFreqCnhhoPenaltyRscp" minOccurs="0"/>
+ <element name="intraFreqCnhhoPenalty" minOccurs="0"/>
+ <element name="intraFreqCnhhoWeight" minOccurs="0"/>
+ <element name="serviceBasedHoSupport" minOccurs="0"/>
+ <element name="tmStopGsmMeas" minOccurs="0"/>
+ <element name="eulReservedHwBandwidthSchedDataNonServCell" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataIubLink" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="rbsId" minOccurs="0"/>
+ <element name="beMarginDlHw" minOccurs="0"/>
+ <element name="dlHwAdm" minOccurs="0"/>
+ <element name="ulHwAdm" minOccurs="0"/>
+ <element name="beMarginUlHw" minOccurs="0"/>
+ <element name="rncModuleRef" minOccurs="0"/>
+ <element name="preferredSubrackRef" minOccurs="0"/>
+ <element name="edchIubDynDelayLimit" minOccurs="0"/>
+ <element name="userPlaneTransportOption" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="atm" minOccurs="0"/>
+ <element name="ipv4" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataIurLink" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ <element name="rncId" minOccurs="0"/>
+ <element name="aliasPlmnIdentities" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="utranNetworkRef" minOccurs="0"/>
+ <element name="cellCapabilityControl" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="hsdschSupport" minOccurs="0"/>
+ <element name="edchSupport" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="hspaPathlossThreshold" minOccurs="0"/>
+ <element name="userPlaneTransportOption" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="atm" minOccurs="0"/>
+ <element name="ipv4" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataLocationArea" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="lac" minOccurs="0"/>
+ <element name="t3212" minOccurs="0"/>
+ <element name="att" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataMeContext" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="ipAddress" minOccurs="0"/>
+ <element name="neMIMversion" minOccurs="0"/>
+ <element name="rbsIubId" minOccurs="0"/>
+ <element name="bcrLastChange" minOccurs="0"/>
+ <element name="bctLastChange" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataNodeBFunction" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="toaeDch" minOccurs="0"/>
+ <element name="toaeCch" minOccurs="0"/>
+ <element name="fwdGuardPeriod" minOccurs="0"/>
+ <element name="bwdGuardPeriod" minOccurs="0"/>
+ <element name="tpcFilterLength" minOccurs="0"/>
+ <element name="branchDiffAbsTime" minOccurs="0"/>
+ <element name="branchDiffMeasTime" minOccurs="0"/>
+ <element name="countersAlarmThreshold" minOccurs="0"/>
+ <element name="maxNumberOfCounters" minOccurs="0"/>
+ <element name="steeredHsAllocation" minOccurs="0"/>
+ <element name="eulNoReschUsers" minOccurs="0"/>
+ <element name="eulTargetRate" minOccurs="0"/>
+ <element name="eulMaxShoRate" minOccurs="0"/>
+ <element name="supportOf16qam" minOccurs="0"/>
+ <element name="flexibleSchedulerOn" minOccurs="0"/>
+ <element name="eulReservedHwBandwidthSchedDataNonServCell" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataPaging" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="cnDrxCycleLengthCs" minOccurs="0"/>
+ <element name="cnDrxCycleLengthPs" minOccurs="0"/>
+ <element name="noOfPagingRecordTransm" minOccurs="0"/>
+ <element name="utranDrxCycleLength" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataPch" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="pchPower" minOccurs="0"/>
+ <element name="pichPower" minOccurs="0"/>
+ <element name="sccpchOffset" minOccurs="0"/>
+ <element name="administrativeState" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataPowerControl" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="cBackOff" minOccurs="0"/>
+ <element name="ulOuterLoopRegulator" minOccurs="0"/>
+ <element name="ulSirStep" minOccurs="0"/>
+ <element name="sirMin" minOccurs="0"/>
+ <element name="sirMax" minOccurs="0"/>
+ <element name="dlPcMethod" minOccurs="0"/>
+ <element name="cPO" minOccurs="0"/>
+ <element name="pO1" minOccurs="0"/>
+ <element name="pO2" minOccurs="0"/>
+ <element name="pO3" minOccurs="0"/>
+ <element name="ecNoPcpichDefault" minOccurs="0"/>
+ <element name="pcpichPowerDefault" minOccurs="0"/>
+ <element name="fixedPowerDl" minOccurs="0"/>
+ <element name="cNbifho" minOccurs="0"/>
+ <element name="fixedRefPower" minOccurs="0"/>
+ <element name="initShoPowerParam" minOccurs="0"/>
+ <element name="dlInitSirTarget" minOccurs="0"/>
+ <element name="ulInitSirTargetExtraHigh" minOccurs="0"/>
+ <element name="ulInitSirTargetHigh" minOccurs="0"/>
+ <element name="ulInitSirTargetLow" minOccurs="0"/>
+ <element name="ulInitSirTargetSrb" minOccurs="0"/>
+ <element name="transmissionTargetError" minOccurs="0"/>
+ <element name="ulInitSirTargetEdch" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRach" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="scramblingCodeWordNo" minOccurs="0"/>
+ <element name="preambleSignatures" minOccurs="0"/>
+ <element name="subChannelNo" minOccurs="0"/>
+ <element name="aichTransmissionTiming" minOccurs="0"/>
+ <element name="aichPower" minOccurs="0"/>
+ <element name="powerOffsetP0" minOccurs="0"/>
+ <element name="powerOffsetPpm" minOccurs="0"/>
+ <element name="preambleRetransMax" minOccurs="0"/>
+ <element name="maxPreambleCycle" minOccurs="0"/>
+ <element name="constantValueCprach" minOccurs="0"/>
+ <element name="spreadingFactor" minOccurs="0"/>
+ <element name="administrativeState" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRbsLocalCell" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="localCellId" minOccurs="0"/>
+ <element name="cellRange" minOccurs="0"/>
+ <element name="carrierRef" minOccurs="0"/>
+ <element name="dynamicHsPdschCodeAdditionOn" minOccurs="0"/>
+ <element name="hsCodeResourceId" minOccurs="0"/>
+ <element name="maxNumHsPdschCodes" minOccurs="0"/>
+ <element name="eulMaxRotCoverage" minOccurs="0"/>
+ <element name="eulMaxOwnUuLoad" minOccurs="0"/>
+ <element name="maxUserEHichERgchPowerDl" minOccurs="0"/>
+ <element name="eulMaxNoSchEDch" minOccurs="0"/>
+ <element name="eulMinMarginCoverage" minOccurs="0"/>
+ <element name="eulOptimalNoiseFloorLock" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="eulNoiseFloorLock" minOccurs="0"/>
+ <element name="eulOptimalNoiseFloorEstimate" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="eulSlidingWindowTime" minOccurs="0"/>
+ <element name="eulThermalLevelPrior" minOccurs="0"/>
+ <element name="eulNoERgchGroups" minOccurs="0"/>
+ <element name="maxEAgchPowerDl" minOccurs="0"/>
+ <element name="maxNumHsdpaUsers" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRcs" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="dchRcLostT" minOccurs="0"/>
+ <element name="cchWaitCuT" minOccurs="0"/>
+ <element name="hsDschRcLostT" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRetDevice" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="electricalAntennaTilt" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRetDeviceSet" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="retType" minOccurs="0"/>
+ <element name="productNumber" minOccurs="0"/>
+ <element name="revState" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <!--element name="vsDataRetProfile" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element-->
+ <element name="vsDataRetuDeviceGroup" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRoutingArea" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="rac" minOccurs="0"/>
+ <element name="nmo" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRrc" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="t305" minOccurs="0"/>
+ <element name="packetEstMode" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataSector" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="numberOfCarriers" minOccurs="0"/>
+ <element name="numberOfTxBranches" minOccurs="0"/>
+ <element name="outputPower" minOccurs="0"/>
+ <element name="latitude" minOccurs="0"/>
+ <element name="latHemisphere" minOccurs="0"/>
+ <element name="longitude" minOccurs="0"/>
+ <element name="longHemisphere" minOccurs="0"/>
+ <element name="geoDatum" minOccurs="0"/>
+ <element name="beamDirection" minOccurs="0"/>
+ <element name="height" minOccurs="0"/>
+ <element name="sectorAntennaRef" minOccurs="0"/>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="retDeviceRef" minOccurs="0"/>
+ <element name="maxInternalUlGainOn" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataSectorAntenna" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="antennaType" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataCarrier" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="cqiAdjustmentOn" minOccurs="0"/>
+ <element name="cqiErrors" minOccurs="0"/>
+ <element name="cqiErrorsAbsent" minOccurs="0"/>
+ <element name="hsPowerMargin" minOccurs="0"/>
+ <element name="hsScchMaxCodePower" minOccurs="0"/>
+ <element name="queueSelectAlgorithm" minOccurs="0"/>
+ <element name="frequencyPlane" minOccurs="0"/>
+ <element name="hsScchMinCodePower" minOccurs="0"/>
+ <element name="qualityCheckPower" minOccurs="0"/>
+ <element name="supportOf16qam" minOccurs="0"/>
+ <element name="airRateTypeSelector" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataServiceArea" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="sac" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataSid" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="updateCellReattsNo" minOccurs="0"/>
+ <element name="noOfMaxDrxCycles" minOccurs="0"/>
+ <element name="noOfMibValueTagRetrans" minOccurs="0"/>
+ <element name="sib1" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="sib1RepPeriod" minOccurs="0"/>
+ <element name="sib1StartPos" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="sib11" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="sib11RepPeriod" minOccurs="0"/>
+ <element name="sib11StartPos" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="sib12" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="sib12RepPeriod" minOccurs="0"/>
+ <element name="sib12StartPos" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="sib3" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="sib3RepPeriod" minOccurs="0"/>
+ <element name="sib3StartPos" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="sib5" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="sib5RepPeriod" minOccurs="0"/>
+ <element name="sib5StartPos" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="sib7" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="sib7RepPeriod" minOccurs="0"/>
+ <element name="sib7StartPos" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="sib7ExpirationTimeFactor" minOccurs="0"/>
+ <element name="sib2" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="sib2RepPeriod" minOccurs="0"/>
+ <element name="sib2StartPos" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUeMeasControl" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="reportingRange1a" minOccurs="0"/>
+ <element name="reportingRange1b" minOccurs="0"/>
+ <element name="hysteresis1c" minOccurs="0"/>
+ <element name="hysteresis1d" minOccurs="0"/>
+ <element name="hysteresis2d" minOccurs="0"/>
+ <element name="hysteresis2f" minOccurs="0"/>
+ <element name="gsmThresh3a" minOccurs="0"/>
+ <element name="hysteresis3a" minOccurs="0"/>
+ <element name="measQuantity1" minOccurs="0"/>
+ <element name="ueTxPowerThresh6a" minOccurs="0"/>
+ <element name="ueTxPowerThresh6b" minOccurs="0"/>
+ <element name="usedFreqThresh2dEcnoDrnc" minOccurs="0"/>
+ <element name="usedFreqThresh2dRscpDrnc" minOccurs="0"/>
+ <element name="usedFreqRelThresh2fEcno" minOccurs="0"/>
+ <element name="usedFreqRelThresh2fRscp" minOccurs="0"/>
+ <element name="hyst4_2b" minOccurs="0"/>
+ <element name="nonUsedFreqThresh4_2bEcno" minOccurs="0"/>
+ <element name="nonUsedFreqThresh4_2bRscp" minOccurs="0"/>
+ <element name="timeToTrigger1a" minOccurs="0"/>
+ <element name="hysteresis1a" minOccurs="0"/>
+ <element name="timeToTrigger1b" minOccurs="0"/>
+ <element name="hysteresis1b" minOccurs="0"/>
+ <element name="timeToTrigger1c" minOccurs="0"/>
+ <element name="timeToTrigger1d" minOccurs="0"/>
+ <element name="timeToTrigger3a" minOccurs="0"/>
+ <element name="reportingInterval1a" minOccurs="0"/>
+ <element name="reportingInterval1c" minOccurs="0"/>
+ <element name="timeTrigg6a" minOccurs="0"/>
+ <element name="timeTrigg6b" minOccurs="0"/>
+ <element name="timeTrigg4_2b" minOccurs="0"/>
+ <element name="hsHysteresis1d" minOccurs="0"/>
+ <element name="hsQualityEstimate" minOccurs="0"/>
+ <element name="hsTimeToTrigger1d" minOccurs="0"/>
+ <element name="filterCoefficient1" minOccurs="0"/>
+ <element name="filterCoefficient2" minOccurs="0"/>
+ <element name="utranFilterCoefficient3" minOccurs="0"/>
+ <element name="gsmFilterCoefficient3" minOccurs="0"/>
+ <element name="filterCoeff6" minOccurs="0"/>
+ <element name="filterCoeff4_2b" minOccurs="0"/>
+ <element name="w1a" minOccurs="0"/>
+ <element name="w1b" minOccurs="0"/>
+ <element name="usedFreqW2d" minOccurs="0"/>
+ <element name="usedFreqW2f" minOccurs="0"/>
+ <element name="usedFreqW4_2b" minOccurs="0"/>
+ <element name="utranW3a" minOccurs="0"/>
+ <element name="nonUsedFreqW4_2b" minOccurs="0"/>
+ <element name="timeToTrigger2dEcno" minOccurs="0"/>
+ <element name="timeToTrigger2fEcno" minOccurs="0"/>
+ <element name="utranRelThresh3aEcno" minOccurs="0"/>
+ <element name="utranRelThresh3aRscp" minOccurs="0"/>
+ <element name="usedFreqRelThresh4_2bEcno" minOccurs="0"/>
+ <element name="usedFreqRelThresh4_2bRscp" minOccurs="0"/>
+ <element name="timeToTrigger2dRscp" minOccurs="0"/>
+ <element name="timeToTrigger2fRscp" minOccurs="0"/>
+ <element name="utranRelThreshRscp" minOccurs="0"/>
+ <element name="event1dRncThreshold" minOccurs="0"/>
+ <element name="event1dRncOffset" minOccurs="0"/>
+ <element name="timeToTrigger6d" minOccurs="0"/>
+ <element name="txPowerConnQualMonEnabled" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUeRc" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="serviceOffset2dEcno" minOccurs="0"/>
+ <element name="serviceOffset2dRscp" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUeRcTrCh" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="blerQualityTargetDl" minOccurs="0"/>
+ <element name="blerQualityTargetUl" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUtranCell" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="tCell" minOccurs="0"/>
+ <element name="cellReserved" minOccurs="0"/>
+ <element name="treSelection" minOccurs="0"/>
+ <element name="qualMeasQuantity" minOccurs="0"/>
+ <element name="qHyst1" minOccurs="0"/>
+ <element name="qHyst2" minOccurs="0"/>
+ <element name="qQualMin" minOccurs="0"/>
+ <element name="qRxLevMin" minOccurs="0"/>
+ <element name="individualOffset" minOccurs="0"/>
+ <element name="pwrAdm" minOccurs="0"/>
+ <element name="pwrAdmOffset" minOccurs="0"/>
+ <element name="pwrOffset" minOccurs="0"/>
+ <element name="pwrHyst" minOccurs="0"/>
+ <element name="tmCongAction" minOccurs="0"/>
+ <element name="releaseAseDl" minOccurs="0"/>
+ <element name="aseDlAdm" minOccurs="0"/>
+ <element name="dlCodeAdm" minOccurs="0"/>
+ <element name="aseUlAdm" minOccurs="0"/>
+ <element name="sf8Adm" minOccurs="0"/>
+ <element name="sf32Adm" minOccurs="0"/>
+ <element name="aseUlAdmOffset" minOccurs="0"/>
+ <element name="minPwrRl" minOccurs="0"/>
+ <element name="maxRate" minOccurs="0"/>
+ <element name="interRate" minOccurs="0"/>
+ <element name="minimumRate" minOccurs="0"/>
+ <element name="maxPwrMax" minOccurs="0"/>
+ <element name="interPwrMax" minOccurs="0"/>
+ <element name="minPwrMax" minOccurs="0"/>
+ <element name="compModeAdm" minOccurs="0"/>
+ <element name="iFOffset" minOccurs="0"/>
+ <element name="iFHyst" minOccurs="0"/>
+ <element name="iFCong" minOccurs="0"/>
+ <element name="interFreqFddMeasIndicator" minOccurs="0"/>
+ <element name="sRatSearch" minOccurs="0"/>
+ <element name="sIntraSearch" minOccurs="0"/>
+ <element name="sInterSearch" minOccurs="0"/>
+ <element name="fachMeasOccaCycLenCoeff" minOccurs="0"/>
+ <element name="accessClassNBarred" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="utranCellPosition" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="maxTxPowerUl" minOccurs="0"/>
+ <element name="beMarginAseUl" minOccurs="0"/>
+ <element name="beMarginAseDl" minOccurs="0"/>
+ <element name="reservedBy" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="sib1PlmnScopeValueTag" minOccurs="0"/>
+ <element name="sf16Adm" minOccurs="0"/>
+ <element name="beMarginDlPwr" minOccurs="0"/>
+ <element name="beMarginDlCode" minOccurs="0"/>
+ <element name="hoType" minOccurs="0"/>
+ <element name="usedFreqThresh2dEcno" minOccurs="0"/>
+ <element name="usedFreqThresh2dRscp" minOccurs="0"/>
+ <element name="administrativeState" minOccurs="0"/>
+ <element name="loadSharingGsmThreshold" minOccurs="0"/>
+ <element name="loadSharingGsmFraction" minOccurs="0"/>
+ <element name="snDirectedRetryTarget" minOccurs="0"/>
+ <element name="nInSyncInd" minOccurs="0"/>
+ <element name="rlFailureT" minOccurs="0"/>
+ <element name="nOutSyncInd" minOccurs="0"/>
+ <element name="sf4AdmUl" minOccurs="0"/>
+ <element name="hardIfhoCorr" minOccurs="0"/>
+ <element name="hsdpaUsersAdm" minOccurs="0"/>
+ <element name="loadSharingMargin" minOccurs="0"/>
+ <element name="releaseAseDlGhs" minOccurs="0"/>
+ <element name="tmCongActionGhs" minOccurs="0"/>
+ <element name="tmInitialGhs" minOccurs="0"/>
+ <element name="sf4UlPathlossThreshold" minOccurs="0"/>
+ <element name="ulPathlossCheckEnabled" minOccurs="0"/>
+ <element name="sHcsRat" minOccurs="0"/>
+ <element name="sf16gAdm" minOccurs="0"/>
+ <element name="releaseAseDlNg" minOccurs="0"/>
+ <element name="tmCongActionNg" minOccurs="0"/>
+ <element name="tmInitialG" minOccurs="0"/>
+ <element name="sf16AdmUl" minOccurs="0"/>
+ <element name="sf8AdmUl" minOccurs="0"/>
+ <element name="sf8gAdmUl" minOccurs="0"/>
+ <element name="iubLinkRef" minOccurs="0"/>
+ <element name="eulNonServingCellUsersAdm" minOccurs="0"/>
+ <element name="eulServingCellUsersAdm" minOccurs="0"/>
+ <element name="agpsEnabled" minOccurs="0"/>
+ <element name="codeLoadThresholdDlSf128" minOccurs="0"/>
+ <element name="pwrLoadThresholdDlSpeech" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="amr12200" minOccurs="0"/>
+ <element name="amr7950" minOccurs="0"/>
+ <element name="amr5900" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="aseLoadThresholdUlSpeech" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="amr12200" minOccurs="0"/>
+ <element name="amr7950" minOccurs="0"/>
+ <element name="amr5900" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="accessClassesBarredCs" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="accessClassesBarredPs" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="rateSelectionPsInteractive" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="channelType" minOccurs="0"/>
+ <element name="ulPrefRate" minOccurs="0"/>
+ <element name="dlPrefRate" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="hcsUsage" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="idleMode" minOccurs="0"/>
+ <element name="connectedMode" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="hcsSib3Config" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="sSearchHcs" minOccurs="0"/>
+ <element name="hcsPrio" minOccurs="0"/>
+ <element name="qHcs" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUtranRelation" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="qOffset1sn" minOccurs="0"/>
+ <element name="qOffset2sn" minOccurs="0"/>
+ <element name="loadSharingCandidate" minOccurs="0"/>
+ <element name="selectionPriority" minOccurs="0"/>
+ <element name="frequencyRelationType" minOccurs="0"/>
+ <element name="hcsSib11Config" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="hcsPrio" minOccurs="0"/>
+ <element name="qHcs" minOccurs="0"/>
+ <element name="penaltyTime" minOccurs="0"/>
+ <element name="temporaryOffset1" minOccurs="0"/>
+ <element name="temporaryOffset2" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRncFunction" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="mncLength" minOccurs="0"/>
+ <element name="emergencyCallRedirect" minOccurs="0"/>
+ <element name="loadSharingDirRetryEnabled" minOccurs="0"/>
+ <element name="hsCellChangeAllowed" minOccurs="0"/>
+ <element name="hsOnlyBestCell" minOccurs="0"/>
+ <element name="aliasPlmnIdentities" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="counterAlarmCeaseLimit" minOccurs="0"/>
+ <element name="counterAlarmThreshold" minOccurs="0"/>
+ <element name="counterWarningAlarmCeaseLimit" minOccurs="0"/>
+ <element name="ctrFileSize" minOccurs="0"/>
+ <element name="gpehDataLevel" minOccurs="0"/>
+ <element name="gpehFileSize" minOccurs="0"/>
+ <element name="loadSharingRrcEnabled" minOccurs="0"/>
+ <element name="uetrFileSize" minOccurs="0"/>
+ <element name="networkResourceIdentifierLengthCs" minOccurs="0"/>
+ <element name="networkResourceIdentifierLengthPs" minOccurs="0"/>
+ <element name="hsToDchTrigger" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="servHsChangeInterRnc" minOccurs="0"/>
+ <element name="servHsChangeIntraRnc" minOccurs="0"/>
+ <element name="changeOfBestCellIntraRnc" minOccurs="0"/>
+ <element name="poorQualityDetected" minOccurs="0"/>
+ <element name="changeOfBestCellInterRnc" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="harqTransmUlTti10Max" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="ecLocationAttemptUmts" minOccurs="0"/>
+ <element name="ecCnSbhoRequestIgnore" minOccurs="0"/>
+ <element name="ecCnPriorityLevel" minOccurs="0"/>
+ <element name="ecSbhoTimer" minOccurs="0"/>
+ <element name="primaryCnOperatorRef" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUeRcEdchFlow" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="harqTransmUlMax" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataSecurityHandling" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="ciphering" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRabHandling" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="psStreamingInactivityTimer" minOccurs="0"/>
+ <element name="activeQueueMgmt" minOccurs="0"/>
+ <element name="dscpValuePsStreaming" minOccurs="0"/>
+ <element name="psStreaming128" minOccurs="0"/>
+ <element name="state128_128Supported" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataSubrack" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataSlot" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataPlugInUnit" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="administrativeState" minOccurs="0"/>
+ <element name="allowedSeqRestarts" minOccurs="0"/>
+ <element name="piuGroupNumber" minOccurs="0"/>
+ <element name="piuType" minOccurs="0"/>
+ <element name="productType" minOccurs="0"/>
+ <element name="userLabel" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <!--element name="vsDataGigaBitEthernet" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element-->
+ <element name="vsDataUePositioning" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="enabledPositioningFeatures" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataGpsReceiver" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="administrativeState" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataAgpsPositioning" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="altitudeDirection" minOccurs="0"/>
+ <element name="altitude" minOccurs="0"/>
+ <element name="uncertaintyAltitude" minOccurs="0"/>
+ <element name="confidence" minOccurs="0"/>
+ <element name="polygonRadiusFactor" minOccurs="0"/>
+ <element name="utranRnsPosition" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="latitudeSign" minOccurs="0"/>
+ <element name="latitude" minOccurs="0"/>
+ <element name="longitude" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="utranRnsUncertaintyRadius" minOccurs="0"/>
+ <element name="utranRnsConfidence" minOccurs="0"/>
+ <element name="elevationThreshold" minOccurs="0"/>
+ <element name="ueMeasurementReportCriteria" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="reportingAmount" minOccurs="0"/>
+ <element name="reportingInterval" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataIubDataStreams" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="maxHsRate" minOccurs="0"/>
+ <element name="maxEDchRate" minOccurs="0"/>
+ <element name="hsDataFrameDelayThreshold" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataTxDeviceGroup" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="loadHs" minOccurs="0"/>
+ <element name="numHsCodeResources" minOccurs="0"/>
+ <element name="numEulResources" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataHsdsch" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="administrativeState" minOccurs="0"/>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="numHsPdschCodes" minOccurs="0"/>
+ <element name="deltaAck1" minOccurs="0"/>
+ <element name="deltaNack1" minOccurs="0"/>
+ <element name="deltaAck2" minOccurs="0"/>
+ <element name="deltaNack2" minOccurs="0"/>
+ <element name="deltaCqi1" minOccurs="0"/>
+ <element name="deltaCqi2" minOccurs="0"/>
+ <element name="initialCqiRepetitionFactor" minOccurs="0"/>
+ <element name="initialAckNackRepetitionFactor" minOccurs="0"/>
+ <element name="cqiFeedbackCycle" minOccurs="0"/>
+ <element name="hsMeasurementPowerOffset" minOccurs="0"/>
+ <element name="codeThresholdPdu656" minOccurs="0"/>
+ <element name="numHsScchCodes" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataCoverageRelation" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="utranCellRef" minOccurs="0"/>
+ <element name="coverageIndicator" minOccurs="0"/>
+ <element name="hsPathlossThreshold" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUeRcRab" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="fcState" minOccurs="0"/>
+ <element name="trBearerQosClass" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUeRcRrc" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="trBearerQosClass" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUeRabType" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="trBearerQosClass" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUra" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="uraIdentity" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataLicensing" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRncFeature" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="featureState" minOccurs="0"/>
+ <element name="licenseState" minOccurs="0"/>
+ <element name="serviceState" minOccurs="0"/>
+ <element name="keyId" minOccurs="0"/>
+ <element name="isLicenseControlled" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataEul" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="administrativeState" minOccurs="0"/>
+ <element name="numEagchCodes" minOccurs="0"/>
+ <element name="numEhichErgchCodes" minOccurs="0"/>
+ <element name="eulMaxTargetRtwp" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataSystemFunctions" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData"/>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataIubEdch" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="edchDataFrameDelayThreshold" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataWcdmaCarrier" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="defaultHoType" minOccurs="0"/>
+ <element name="freqBand" minOccurs="0"/>
+ <element name="sib5bisEnabled" minOccurs="0"/>
+ <element name="uarfcnDl" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUtranNetwork" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="aliasPlmnIdentities" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="plmnIdentity" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataCnOperator" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="plmnIdentity" minOccurs="0">
+ <complexType>
+ <sequence>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="iphoNetworkRefsUtran" minOccurs="0"/>
+ <element name="iphoNetworkRefsGsm" minOccurs="0"/>
+ <element name="equivalentPlmnIdentities" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="mncLength" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataRbsSynchronization" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="plugInUnitRef1" minOccurs="0"/>
+ <element name="plugInUnitRef2" minOccurs="0"/>
+ <element name="timDeviceRef1" minOccurs="0"/>
+ <element name="timDeviceRef2" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataUeRcPhyChEdch" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="eulHarqRv" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="vsDataPmService" substitutionGroup="xn:vsData">
+ <complexType>
+ <complexContent>
+ <extension base="xn:vsData">
+ <sequence>
+ <element name="minorAlarmCeasingDelta" minOccurs="0"/>
+ <element name="warningAlarmLimitPercent" minOccurs="0"/>
+ <element name="warningAlarmCeasingDelta" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+</schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/EricssonSpecificAttributes.5.1Tran.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/EricssonSpecificAttributes.5.1Tran.xsd
new file mode 100644
index 0000000000..33e00bab48
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/EricssonSpecificAttributes.5.1Tran.xsd
@@ -0,0 +1,2164 @@
+<!--
+ Configuration data file vendor-specific XML schema
+ EricssonSpecificAttributes.5.1Tran.xsd Implementation of BCT I/face.Requires BCR/Bulk CM General installed
+ For use with ONLY with EricssonSpecificAttributes.5.1.xsd
+ NB!! See EricssonSpecificAttributes.5.1.xsd
+ Use Namespace for EricssonSpecificAttributes.5.1.xsd in all files which conform to this schema
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xn="genericNrm.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <!-- EricssonSpecificAttributes version 5.1 vendor-specific data -->
+ <xs:import namespace="genericNrm.xsd" schemaLocation="genericNrm.xsd"/>
+ <xs:element name="vsDataAal0TpVccTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="alarmReport" minOccurs="0"/>
+ <xs:element name="continuityCheck" minOccurs="0"/>
+ <xs:element name="nomPmBlkSize" minOccurs="0"/>
+ <xs:element name="processorId" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="vclTpId" minOccurs="0"/>
+ <xs:element name="counterMode" minOccurs="0"/>
+ <xs:element name="counterActivation" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAal1TpVccTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="nomPmBlockSize" minOccurs="0"/>
+ <xs:element name="ds0BundleId" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="vclTpId" minOccurs="0"/>
+ <xs:element name="counterMode" minOccurs="0"/>
+ <xs:element name="partialFill" minOccurs="0"/>
+ <xs:element name="alarmReport" minOccurs="0"/>
+ <xs:element name="cdvt" minOccurs="0"/>
+ <xs:element name="continuityCheck" minOccurs="0"/>
+ <xs:element name="counterActivation" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAal2Ap" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="aal2QoSCodePointProfileId" minOccurs="0"/>
+ <xs:element name="rpuId" minOccurs="0"/>
+ <xs:element name="secondarySigLinkId" minOccurs="0"/>
+ <xs:element name="sigLinkId" minOccurs="0"/>
+ <xs:element name="timerErq" minOccurs="0"/>
+ <xs:element name="timerRel" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="allocationMode" minOccurs="0"/>
+ <xs:element name="reallocate" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAtmConfService" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="reallocateAllAal2Aps" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAal2PathDistributionUnit" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="rpuId" minOccurs="0"/>
+ <xs:element name="aal2PathVccTpList" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="addPath" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="aal2PathVccTpId" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="removePath" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="aal2PathList" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAal2PathVccTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="aal2PathOwner" minOccurs="0"/>
+ <xs:element name="alarmReport" minOccurs="0"/>
+ <xs:element name="nomPmBlocksize" minOccurs="0"/>
+ <xs:element name="timerCu" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="continuityCheck" minOccurs="0"/>
+ <xs:element name="aal2PathId" minOccurs="0"/>
+ <xs:element name="vclTpId" minOccurs="0"/>
+ <xs:element name="aal2QoSAvailableProfiles" minOccurs="0"/>
+ <xs:element name="aal2QoSProfileId" minOccurs="0"/>
+ <xs:element name="counterMode" minOccurs="0"/>
+ <xs:element name="counterActivation" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAal2RoutingCase" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="numberDirection" minOccurs="0"/>
+ <xs:element name="routeList" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="routePriorityList" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="addAal2ApToRc" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="priority" minOccurs="0"/>
+ <xs:element name="route" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="removeAal2ApFromRc" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="route" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAal2Sp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="a2ea" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAal5TpVccTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="alarmReport" minOccurs="0"/>
+ <xs:element name="continuityCheck" minOccurs="0"/>
+ <xs:element name="fromUserMaxSduSize" minOccurs="0"/>
+ <xs:element name="nomPmBlkSize" minOccurs="0"/>
+ <xs:element name="processorId" minOccurs="0"/>
+ <xs:element name="toUserMaxSduSize" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="vclTpId" minOccurs="0"/>
+ <xs:element name="counterMode" minOccurs="0"/>
+ <xs:element name="counterActivation" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAtmCrossConnection" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="vclTpAId" minOccurs="0"/>
+ <xs:element name="vclTpBId" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAtmTrafficDescriptor" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="egressAtmMcr" minOccurs="0"/>
+ <xs:element name="egressAtmPcr" minOccurs="0"/>
+ <xs:element name="egressAtmQos" minOccurs="0"/>
+ <xs:element name="ingressAtmMcr" minOccurs="0"/>
+ <xs:element name="ingressAtmPcr" minOccurs="0"/>
+ <xs:element name="ingressAtmQos" minOccurs="0"/>
+ <xs:element name="serviceCategory" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="packetDiscard" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAtmPort" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="uses" minOccurs="0"/>
+ <xs:element name="hecCorrectionMode" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataTransportNetwork" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataUniSaalProfile" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="profileData" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="congestionAbatement" minOccurs="0"/>
+ <xs:element name="congestionOnSet" minOccurs="0"/>
+ <xs:element name="initialCredit" minOccurs="0"/>
+ <xs:element name="maxCC" minOccurs="0"/>
+ <xs:element name="maxPD" minOccurs="0"/>
+ <xs:element name="maxStat" minOccurs="0"/>
+ <xs:element name="timerCC" minOccurs="0"/>
+ <xs:element name="timerIdle" minOccurs="0"/>
+ <xs:element name="timerKeepAlive" minOccurs="0"/>
+ <xs:element name="timerNoResponse" minOccurs="0"/>
+ <xs:element name="timerPoll" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataUniSaalTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="aal5TpVccTpId" minOccurs="0"/>
+ <xs:element name="maxSduSize" minOccurs="0"/>
+ <xs:element name="uniSaalProfileId" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataVclTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="atmTrafficDescriptorId" minOccurs="0"/>
+ <xs:element name="externalVci" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataVpcTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="alarmReport" minOccurs="0"/>
+ <xs:element name="continuityCheck" minOccurs="0"/>
+ <xs:element name="nomPmBlkSize" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="counterMode" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataVplTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="atmTrafficDescriptor" minOccurs="0"/>
+ <xs:element name="externalVpi" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIub" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="rbsId" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataNbapCommon" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="l2EstablishReqRetryT" minOccurs="0"/>
+ <xs:element name="activeUniSaalTpRef" minOccurs="0"/>
+ <xs:element name="standbyUniSaalTpRef" minOccurs="0"/>
+ <xs:element name="auditRetransmissionT" minOccurs="0"/>
+ <xs:element name="l2EstablishSupervisionT" minOccurs="0"/>
+ <xs:element name="l3EstablishSupervisionT" minOccurs="0"/>
+ <xs:element name="uniSaalTpRef1" minOccurs="0"/>
+ <xs:element name="uniSaalTpRef2" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataNbapDedicated" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="l2EstablishReqRetryT" minOccurs="0"/>
+ <xs:element name="activeUniSaalTpRef" minOccurs="0"/>
+ <xs:element name="standbyUniSaalTpRef" minOccurs="0"/>
+ <xs:element name="l2EstablishSupervisionT" minOccurs="0"/>
+ <xs:element name="uniSaalTpRef1" minOccurs="0"/>
+ <xs:element name="uniSaalTpRef2" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataNodeSynch" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="noOfSamples" minOccurs="0"/>
+ <xs:element name="supervisionIntervalT" minOccurs="0"/>
+ <xs:element name="phaseDiffThreshold" minOccurs="0"/>
+ <xs:element name="phaseMeasurement" minOccurs="0"/>
+ <xs:element name="accuracy" minOccurs="0"/>
+ <xs:element name="timeStamp" minOccurs="0"/>
+ <xs:element name="sampleIntervalInt" minOccurs="0"/>
+ <xs:element name="fixedWindowSizeInt" minOccurs="0"/>
+ <xs:element name="sampleIntervalSup" minOccurs="0"/>
+ <xs:element name="fixedWindowSizeSup" minOccurs="0"/>
+ <xs:element name="slidingWindowSize" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataNodeSynchTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="nodeSynchRef" minOccurs="0"/>
+ <xs:element name="aal0TpRef1" minOccurs="0"/>
+ <xs:element name="aal0TpRef2" minOccurs="0"/>
+ <xs:element name="aal0TpRef3" minOccurs="0"/>
+ <xs:element name="aal0TpRef4" minOccurs="0"/>
+ <xs:element name="timDeviceRef" minOccurs="0"/>
+ <xs:element name="aal0TpRefs" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAal2QosCodePointProfile" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="qualityOfServiceCodePointA" minOccurs="0"/>
+ <xs:element name="qualityOfServiceCodePointB" minOccurs="0"/>
+ <xs:element name="qualityOfServiceCodePointC" minOccurs="0"/>
+ <xs:element name="qualityOfServiceCodePointD" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataAal2QosProfile" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="profileClassA" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="boundOnProbOfDelay" minOccurs="0"/>
+ <xs:element name="boundOnProbOfLoss" minOccurs="0"/>
+ <xs:element name="boundOnNodeDelay" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="profileClassB" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="boundOnProbOfDelay" minOccurs="0"/>
+ <xs:element name="boundOnProbOfLoss" minOccurs="0"/>
+ <xs:element name="boundOnNodeDelay" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="profileClassC" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="boundOnProbOfDelay" minOccurs="0"/>
+ <xs:element name="boundOnProbOfLoss" minOccurs="0"/>
+ <xs:element name="boundOnNodeDelay" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="profileClassD" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="boundOnProbOfDelay" minOccurs="0"/>
+ <xs:element name="boundOnProbOfLoss" minOccurs="0"/>
+ <xs:element name="boundOnNodeDelay" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bAp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="routeSetId" minOccurs="0"/>
+ <xs:element name="serviceInd" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSlItu" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="autoStartLink" minOccurs="0"/>
+ <xs:element name="linkCongestLevel" minOccurs="0"/>
+ <xs:element name="linkState" minOccurs="0"/>
+ <xs:element name="prioBeforeSio" minOccurs="0"/>
+ <xs:element name="signLinkCode" minOccurs="0"/>
+ <xs:element name="tpId" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="deactivate" minOccurs="0"/>
+ <xs:element name="activate" minOccurs="0"/>
+ <xs:element name="emergencyActivate" minOccurs="0"/>
+ <xs:element name="localInhibit" minOccurs="0"/>
+ <xs:element name="localUninhibit" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSls" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="cLinkAnsi" minOccurs="0"/>
+ <xs:element name="mtp3bSrsId" minOccurs="0"/>
+ <xs:element name="periodicLinkTestFlag" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="deactivateLinkSet" minOccurs="0"/>
+ <xs:element name="activateLinkSet" minOccurs="0"/>
+ <xs:element name="emergencyActivateLinkSet" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSlTtc" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="autoStartLink" minOccurs="0"/>
+ <xs:element name="linkCongestLevel" minOccurs="0"/>
+ <xs:element name="linkState" minOccurs="0"/>
+ <xs:element name="signLinkCode" minOccurs="0"/>
+ <xs:element name="tpId" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="prioBeforeSio" minOccurs="0"/>
+ <xs:element name="deactivate" minOccurs="0"/>
+ <xs:element name="activate" minOccurs="0"/>
+ <xs:element name="emergencyActivate" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSpItu" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="m3uaNoOfAttempsOfDauds" minOccurs="0"/>
+ <xs:element name="sendSltmBefLink" minOccurs="0"/>
+ <xs:element name="signallingPointCode" minOccurs="0"/>
+ <xs:element name="maxSizeChangeBuf" minOccurs="0"/>
+ <xs:element name="maxSizeReroutBuf" minOccurs="0"/>
+ <xs:element name="sioSpare" minOccurs="0"/>
+ <xs:element name="spPriority" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="prioCb" minOccurs="0"/>
+ <xs:element name="prioCo" minOccurs="0"/>
+ <xs:element name="prioEc" minOccurs="0"/>
+ <xs:element name="prioLink" minOccurs="0"/>
+ <xs:element name="prioRst" minOccurs="0"/>
+ <xs:element name="prioSlt" minOccurs="0"/>
+ <xs:element name="prioTfc" minOccurs="0"/>
+ <xs:element name="prioTra" minOccurs="0"/>
+ <xs:element name="prioUpu" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="networkInd" minOccurs="0"/>
+ <xs:element name="transFrHandler" minOccurs="0"/>
+ <xs:element name="nodeBehaviour" minOccurs="0"/>
+ <xs:element name="spTimer" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="timerT1" minOccurs="0"/>
+ <xs:element name="timerT2" minOccurs="0"/>
+ <xs:element name="timerT3" minOccurs="0"/>
+ <xs:element name="timerTBsnt" minOccurs="0"/>
+ <xs:element name="timerT4" minOccurs="0"/>
+ <xs:element name="timerT5" minOccurs="0"/>
+ <xs:element name="timerTRetrieval" minOccurs="0"/>
+ <xs:element name="timerT6" minOccurs="0"/>
+ <xs:element name="timerT8" minOccurs="0"/>
+ <xs:element name="timerT10" minOccurs="0"/>
+ <xs:element name="timerT12" minOccurs="0"/>
+ <xs:element name="timerT13" minOccurs="0"/>
+ <xs:element name="timerT14" minOccurs="0"/>
+ <xs:element name="timerTStart" minOccurs="0"/>
+ <xs:element name="timerT17" minOccurs="0"/>
+ <xs:element name="timerT18" minOccurs="0"/>
+ <xs:element name="timerT19" minOccurs="0"/>
+ <xs:element name="timerSltm" minOccurs="0"/>
+ <xs:element name="timerSlta" minOccurs="0"/>
+ <xs:element name="timerT20" minOccurs="0"/>
+ <xs:element name="timerT21" minOccurs="0"/>
+ <xs:element name="timerT22" minOccurs="0"/>
+ <xs:element name="timerT23" minOccurs="0"/>
+ <xs:element name="timerTc" minOccurs="0"/>
+ <xs:element name="timerM3uaTack" minOccurs="0"/>
+ <xs:element name="timerM3uaPeriodicAudit" minOccurs="0"/>
+ <xs:element name="timerM3uaT1" minOccurs="0"/>
+ <xs:element name="timerM3uaT3" minOccurs="0"/>
+ <xs:element name="timerM3uaT42" minOccurs="0"/>
+ <xs:element name="timerT15" minOccurs="0"/>
+ <xs:element name="timerM3uaT6" minOccurs="0"/>
+ <xs:element name="timerM3uaT41" minOccurs="0"/>
+ <xs:element name="timerM3uaTc" minOccurs="0"/>
+ <xs:element name="timerM3uaT8" minOccurs="0"/>
+ <xs:element name="timerM3uaT40" minOccurs="0"/>
+ <xs:element name="timerT16" minOccurs="0"/>
+ <xs:element name="timerTDlack" minOccurs="0"/>
+ <xs:element name="timerM3uaTassocack" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="noOfAttempsOfAssociationEstablishment" minOccurs="0"/>
+ <xs:element name="resendTfcInterval" minOccurs="0"/>
+ <xs:element name="statusIndInterval" minOccurs="0"/>
+ <xs:element name="testPatternSltm" minOccurs="0"/>
+ <xs:element name="version" minOccurs="0"/>
+ <xs:element name="noOfCongestLevelForNI" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="routeSetCongestTestFlag" minOccurs="0"/>
+ <xs:element name="rpuId" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSpTtc" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="maxSizeChangeBuf" minOccurs="0"/>
+ <xs:element name="maxSizeReroutBuf" minOccurs="0"/>
+ <xs:element name="signallingPointCode" minOccurs="0"/>
+ <xs:element name="spPriority" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="prioCo" minOccurs="0"/>
+ <xs:element name="prioCb" minOccurs="0"/>
+ <xs:element name="prioEc" minOccurs="0"/>
+ <xs:element name="prioRst" minOccurs="0"/>
+ <xs:element name="prioTfa" minOccurs="0"/>
+ <xs:element name="prioRt" minOccurs="0"/>
+ <xs:element name="prioTfc" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="networkInd" minOccurs="0"/>
+ <xs:element name="spTimer" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="timerT1" minOccurs="0"/>
+ <xs:element name="timerT2" minOccurs="0"/>
+ <xs:element name="timerT3" minOccurs="0"/>
+ <xs:element name="timerT4" minOccurs="0"/>
+ <xs:element name="timerT6" minOccurs="0"/>
+ <xs:element name="timerT8" minOccurs="0"/>
+ <xs:element name="timerT10" minOccurs="0"/>
+ <xs:element name="timerT17" minOccurs="0"/>
+ <xs:element name="timerSrt" minOccurs="0"/>
+ <xs:element name="timerTBsnt" minOccurs="0"/>
+ <xs:element name="timerTRetrieval" minOccurs="0"/>
+ <xs:element name="timerTStart" minOccurs="0"/>
+ <xs:element name="timerTc" minOccurs="0"/>
+ <xs:element name="timerT15" minOccurs="0"/>
+ <xs:element name="timerT16" minOccurs="0"/>
+ <xs:element name="timerTDlack" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="statusIndInterval" minOccurs="0"/>
+ <xs:element name="nodeBehaviour" minOccurs="0"/>
+ <xs:element name="noOfCongestLevelForNI" minOccurs="0"/>
+ <xs:element name="testPatternSltm" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="resendTfcInterval" minOccurs="0"/>
+ <xs:element name="routeSetCongestTestFlag" minOccurs="0"/>
+ <xs:element name="rpuId" minOccurs="0"/>
+ <xs:element name="m3uaNoOfAttempsOfDauds" minOccurs="0"/>
+ <xs:element name="noOfAttempsOfAssociationEstablishment" minOccurs="0"/>
+ <xs:element name="spTimerM3ua" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="timerM3uaPeriodicAudit" minOccurs="0"/>
+ <xs:element name="timerM3uaT1" minOccurs="0"/>
+ <xs:element name="timerM3uaT3" minOccurs="0"/>
+ <xs:element name="timerM3uaT40" minOccurs="0"/>
+ <xs:element name="timerM3uaT41" minOccurs="0"/>
+ <xs:element name="timerM3uaT42" minOccurs="0"/>
+ <xs:element name="timerM3uaT6" minOccurs="0"/>
+ <xs:element name="timerM3uaT8" minOccurs="0"/>
+ <xs:element name="timerM3uaTack" minOccurs="0"/>
+ <xs:element name="timerM3uaTassocack" minOccurs="0"/>
+ <xs:element name="timerM3uaTc" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSr" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="linkSetM3uId" minOccurs="0"/>
+ <xs:element name="priority" minOccurs="0"/>
+ <xs:element name="routeType" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="linkSetId" minOccurs="0"/>
+ <xs:element name="blockSignalingRoute" minOccurs="0"/>
+ <xs:element name="deBlockSignalingRoute" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSrs" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="autoReroute" minOccurs="0"/>
+ <xs:element name="destPointCode" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataNniSaalProfile" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="profileData" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="congestionLevel1Abatement" minOccurs="0"/>
+ <xs:element name="maxStat" minOccurs="0"/>
+ <xs:element name="timerPoll" minOccurs="0"/>
+ <xs:element name="timerRepeatSrec" minOccurs="0"/>
+ <xs:element name="mps" minOccurs="0"/>
+ <xs:element name="congestionLevel1OnSet" minOccurs="0"/>
+ <xs:element name="congestionLevel2OnSet" minOccurs="0"/>
+ <xs:element name="nrOfPDUsDuringProving" minOccurs="0"/>
+ <xs:element name="timerT1" minOccurs="0"/>
+ <xs:element name="timerT2" minOccurs="0"/>
+ <xs:element name="timerT3" minOccurs="0"/>
+ <xs:element name="timerCC" minOccurs="0"/>
+ <xs:element name="congestionLevel3OnSet" minOccurs="0"/>
+ <xs:element name="initialCredit" minOccurs="0"/>
+ <xs:element name="timerIdle" minOccurs="0"/>
+ <xs:element name="timerKeepAlive" minOccurs="0"/>
+ <xs:element name="maxCC" minOccurs="0"/>
+ <xs:element name="maxNRP" minOccurs="0"/>
+ <xs:element name="timerNoCredit" minOccurs="0"/>
+ <xs:element name="maxPD" minOccurs="0"/>
+ <xs:element name="timerNoResponse" minOccurs="0"/>
+ <xs:element name="congestionLevel2Abatement" minOccurs="0"/>
+ <xs:element name="congestionLevel3Abatement" minOccurs="0"/>
+ <xs:element name="discardMessagesLevel1" minOccurs="0"/>
+ <xs:element name="discardMessagesLevel2" minOccurs="0"/>
+ <xs:element name="discardMessagesLevel3" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataNniSaalTp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="aal5TpVccTpId" minOccurs="0"/>
+ <xs:element name="maxSduSize" minOccurs="0"/>
+ <xs:element name="nniSaalProfileId" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSccpApLocal" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="maxConn" minOccurs="0"/>
+ <xs:element name="ssN" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="useS1" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSccpApRemote" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="mtp3bApId" minOccurs="0"/>
+ <xs:element name="ssN" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSccpEntitySet" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="routeIds" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="newSubSystemNumber" minOccurs="0"/>
+ <xs:element name="sharingMode" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="newGlobalTitle" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="indicator" minOccurs="0"/>
+ <xs:element name="natureOfAddress" minOccurs="0"/>
+ <xs:element name="numberingPlan" minOccurs="0"/>
+ <xs:element name="translationType" minOccurs="0"/>
+ <xs:element name="addressInformation" minOccurs="0"/>
+ <xs:element name="encodingScheme" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSccpGlobalTitle" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="addressInformation" minOccurs="0"/>
+ <xs:element name="encodingScheme" minOccurs="0"/>
+ <xs:element name="gtIndicator" minOccurs="0"/>
+ <xs:element name="natureOfAddress" minOccurs="0"/>
+ <xs:element name="numberingPlan" minOccurs="0"/>
+ <xs:element name="sccpEntitySetId" minOccurs="0"/>
+ <xs:element name="translationType" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSccpScrc" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSccpSp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="accountDateFileOutput" minOccurs="0"/>
+ <xs:element name="accountPeriodFileOutput" minOccurs="0"/>
+ <xs:element name="accountTimeFileOutput" minOccurs="0"/>
+ <xs:element name="hopCounterSclc" minOccurs="0"/>
+ <xs:element name="hopCounterScoc" minOccurs="0"/>
+ <xs:element name="lowerConnThres" minOccurs="0"/>
+ <xs:element name="maxRelayedConn" minOccurs="0"/>
+ <xs:element name="mtp3bSpId" minOccurs="0"/>
+ <xs:element name="prioGeneral" minOccurs="0"/>
+ <xs:element name="prioIT" minOccurs="0"/>
+ <xs:element name="prioRLSD" minOccurs="0"/>
+ <xs:element name="prioSST" minOccurs="0"/>
+ <xs:element name="smiValue" minOccurs="0"/>
+ <xs:element name="swapUDTPointer" minOccurs="0"/>
+ <xs:element name="tCong" minOccurs="0"/>
+ <xs:element name="tGuard" minOccurs="0"/>
+ <xs:element name="tIar" minOccurs="0"/>
+ <xs:element name="tIas" minOccurs="0"/>
+ <xs:element name="tReass" minOccurs="0"/>
+ <xs:element name="tRel" minOccurs="0"/>
+ <xs:element name="tStatInfo" minOccurs="0"/>
+ <xs:element name="tconnEst" minOccurs="0"/>
+ <xs:element name="tconnResp" minOccurs="0"/>
+ <xs:element name="upperConnThres" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="useSCMG" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="sendSST" minOccurs="0"/>
+ <xs:element name="sendSSA" minOccurs="0"/>
+ <xs:element name="sendSSP" minOccurs="0"/>
+ <xs:element name="useSST" minOccurs="0"/>
+ <xs:element name="allowRemoteBroadcast" minOccurs="0"/>
+ <xs:element name="initiateTimerTcon" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataRnsap" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="preferredAddressing" minOccurs="0"/>
+ <xs:element name="sccpDisabledT" minOccurs="0"/>
+ <xs:element name="userOutOfServiceT" minOccurs="0"/>
+ <xs:element name="localSccpApRef" minOccurs="0"/>
+ <xs:element name="sccpGlobalTitleRef" minOccurs="0"/>
+ <xs:element name="remoteSccpApRef" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSlChina" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="autoStartLink" minOccurs="0"/>
+ <xs:element name="linkCongestLevel" minOccurs="0"/>
+ <xs:element name="linkState" minOccurs="0"/>
+ <xs:element name="prioBeforeSio" minOccurs="0"/>
+ <xs:element name="signLinkCode" minOccurs="0"/>
+ <xs:element name="tpId" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="deactivate" minOccurs="0"/>
+ <xs:element name="activate" minOccurs="0"/>
+ <xs:element name="emergencyActivate" minOccurs="0"/>
+ <xs:element name="localInhibit" minOccurs="0"/>
+ <xs:element name="localUninhibit" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSpChina" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="m3uaNoOfAttempsOfDauds" minOccurs="0"/>
+ <xs:element name="routeSetCongestTestFlag" minOccurs="0"/>
+ <xs:element name="maxSizeChangeBuf" minOccurs="0"/>
+ <xs:element name="rpuId" minOccurs="0"/>
+ <xs:element name="sendSltmBefLink" minOccurs="0"/>
+ <xs:element name="maxSizeReroutBuf" minOccurs="0"/>
+ <xs:element name="networkInd" minOccurs="0"/>
+ <xs:element name="signallingPointCode" minOccurs="0"/>
+ <xs:element name="sioSpare" minOccurs="0"/>
+ <xs:element name="nodeBehaviour" minOccurs="0"/>
+ <xs:element name="noOfAttempsOfAssociationEstablishment" minOccurs="0"/>
+ <xs:element name="spPriority" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="prioCb" minOccurs="0"/>
+ <xs:element name="prioCo" minOccurs="0"/>
+ <xs:element name="prioEc" minOccurs="0"/>
+ <xs:element name="prioLink" minOccurs="0"/>
+ <xs:element name="prioRst" minOccurs="0"/>
+ <xs:element name="prioSlt" minOccurs="0"/>
+ <xs:element name="prioTfc" minOccurs="0"/>
+ <xs:element name="prioTra" minOccurs="0"/>
+ <xs:element name="prioUpu" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="statusIndInterval" minOccurs="0"/>
+ <xs:element name="noOfCongestLevelForNI" minOccurs="0"/>
+ <xs:element name="resendTfcInterval" minOccurs="0"/>
+ <xs:element name="testPatternSltm" minOccurs="0"/>
+ <xs:element name="transFrHandler" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="version" minOccurs="0"/>
+ <xs:element name="spTimer" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="timerM3uaPeriodicAudit" minOccurs="0"/>
+ <xs:element name="timerM3uaT1" minOccurs="0"/>
+ <xs:element name="timerM3uaT3" minOccurs="0"/>
+ <xs:element name="timerM3uaT40" minOccurs="0"/>
+ <xs:element name="timerM3uaT41" minOccurs="0"/>
+ <xs:element name="timerM3uaT42" minOccurs="0"/>
+ <xs:element name="timerM3uaT6" minOccurs="0"/>
+ <xs:element name="timerM3uaT8" minOccurs="0"/>
+ <xs:element name="timerM3uaTack" minOccurs="0"/>
+ <xs:element name="timerM3uaTassocack" minOccurs="0"/>
+ <xs:element name="timerM3uaTc" minOccurs="0"/>
+ <xs:element name="timerSlta" minOccurs="0"/>
+ <xs:element name="timerSltm" minOccurs="0"/>
+ <xs:element name="timerT1" minOccurs="0"/>
+ <xs:element name="timerT10" minOccurs="0"/>
+ <xs:element name="timerT12" minOccurs="0"/>
+ <xs:element name="timerT13" minOccurs="0"/>
+ <xs:element name="timerT14" minOccurs="0"/>
+ <xs:element name="timerT15" minOccurs="0"/>
+ <xs:element name="timerT16" minOccurs="0"/>
+ <xs:element name="timerT17" minOccurs="0"/>
+ <xs:element name="timerT18" minOccurs="0"/>
+ <xs:element name="timerT19" minOccurs="0"/>
+ <xs:element name="timerT2" minOccurs="0"/>
+ <xs:element name="timerT20" minOccurs="0"/>
+ <xs:element name="timerT21" minOccurs="0"/>
+ <xs:element name="timerT22" minOccurs="0"/>
+ <xs:element name="timerT23" minOccurs="0"/>
+ <xs:element name="timerT3" minOccurs="0"/>
+ <xs:element name="timerT4" minOccurs="0"/>
+ <xs:element name="timerT5" minOccurs="0"/>
+ <xs:element name="timerT6" minOccurs="0"/>
+ <xs:element name="timerT8" minOccurs="0"/>
+ <xs:element name="timerTBsnt" minOccurs="0"/>
+ <xs:element name="timerTDlack" minOccurs="0"/>
+ <xs:element name="timerTRetrieval" minOccurs="0"/>
+ <xs:element name="timerTStart" minOccurs="0"/>
+ <xs:element name="timerTc" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataRanap" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="preferredAddressing" minOccurs="0"/>
+ <xs:element name="sccpDisabledT" minOccurs="0"/>
+ <xs:element name="cnDomainInd" minOccurs="0"/>
+ <xs:element name="noOfResetSendings" minOccurs="0"/>
+ <xs:element name="userOutOfServiceT" minOccurs="0"/>
+ <xs:element name="localSccpApRef" minOccurs="0"/>
+ <xs:element name="sccpGlobalTitleRef" minOccurs="0"/>
+ <xs:element name="remoteSccpApRef" minOccurs="0"/>
+ <xs:element name="resetResendT" minOccurs="0"/>
+ <xs:element name="resetAckGuardT" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="cnId" minOccurs="0"/>
+ <xs:element name="cnPlmnIdentity" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="mcc" minOccurs="0"/>
+ <xs:element name="mnc" minOccurs="0"/>
+ <xs:element name="mncLength" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="networkResourceIdentifier" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="relativeCapacity" minOccurs="0"/>
+ <xs:element name="packetDataRouterRef" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="cnOperatorRef" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSlAnsi" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="autoStartLink" minOccurs="0"/>
+ <xs:element name="linkCongestLevel" minOccurs="0"/>
+ <xs:element name="linkState" minOccurs="0"/>
+ <xs:element name="signLinkCode" minOccurs="0"/>
+ <xs:element name="tpId" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="deactivate" minOccurs="0"/>
+ <xs:element name="activate" minOccurs="0"/>
+ <xs:element name="emergencyActivate" minOccurs="0"/>
+ <xs:element name="localInhibit" minOccurs="0"/>
+ <xs:element name="localUninhibit" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMtp3bSpAnsi" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="m3uaNoOfAttempsOfDauds" minOccurs="0"/>
+ <xs:element name="maxSizeChangeBuf" minOccurs="0"/>
+ <xs:element name="maxSizeReroutBuf" minOccurs="0"/>
+ <xs:element name="networkInd" minOccurs="0"/>
+ <xs:element name="noOfAttempsOfAssociationEstablishment" minOccurs="0"/>
+ <xs:element name="noOfCongestLevelForNI" minOccurs="0"/>
+ <xs:element name="nodeBehaviour" minOccurs="0"/>
+ <xs:element name="resendTfcInterval" minOccurs="0"/>
+ <xs:element name="routeSetCongestTestFlag" minOccurs="0"/>
+ <xs:element name="rpuId" minOccurs="0"/>
+ <xs:element name="sendSltmBefLink" minOccurs="0"/>
+ <xs:element name="signallingPointCode" minOccurs="0"/>
+ <xs:element name="statusIndInterval" minOccurs="0"/>
+ <xs:element name="sioSpare" minOccurs="0"/>
+ <xs:element name="testPatternSltm" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="spPriority" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="prioCb" minOccurs="0"/>
+ <xs:element name="prioCo" minOccurs="0"/>
+ <xs:element name="prioEc" minOccurs="0"/>
+ <xs:element name="prioLink" minOccurs="0"/>
+ <xs:element name="prioRst" minOccurs="0"/>
+ <xs:element name="prioSlt" minOccurs="0"/>
+ <xs:element name="prioTfc" minOccurs="0"/>
+ <xs:element name="prioTra" minOccurs="0"/>
+ <xs:element name="prioUpu" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="spTimer" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="timerM3uaPeriodicAudit" minOccurs="0"/>
+ <xs:element name="timerM3uaT1" minOccurs="0"/>
+ <xs:element name="timerM3uaT3" minOccurs="0"/>
+ <xs:element name="timerM3uaT40" minOccurs="0"/>
+ <xs:element name="timerM3uaT41" minOccurs="0"/>
+ <xs:element name="timerM3uaT42" minOccurs="0"/>
+ <xs:element name="timerM3uaT6" minOccurs="0"/>
+ <xs:element name="timerM3uaT8" minOccurs="0"/>
+ <xs:element name="timerM3uaTack" minOccurs="0"/>
+ <xs:element name="timerM3uaTassocack" minOccurs="0"/>
+ <xs:element name="timerM3uaTc" minOccurs="0"/>
+ <xs:element name="timerSlta" minOccurs="0"/>
+ <xs:element name="timerSltm" minOccurs="0"/>
+ <xs:element name="timerT1" minOccurs="0"/>
+ <xs:element name="timerT10" minOccurs="0"/>
+ <xs:element name="timerT12" minOccurs="0"/>
+ <xs:element name="timerT13" minOccurs="0"/>
+ <xs:element name="timerT14" minOccurs="0"/>
+ <xs:element name="timerT15" minOccurs="0"/>
+ <xs:element name="timerT16" minOccurs="0"/>
+ <xs:element name="timerT17" minOccurs="0"/>
+ <xs:element name="timerT2" minOccurs="0"/>
+ <xs:element name="timerT20" minOccurs="0"/>
+ <xs:element name="timerT21" minOccurs="0"/>
+ <xs:element name="timerT22" minOccurs="0"/>
+ <xs:element name="timerT23" minOccurs="0"/>
+ <xs:element name="timerT25" minOccurs="0"/>
+ <xs:element name="timerT26" minOccurs="0"/>
+ <xs:element name="timerT27" minOccurs="0"/>
+ <xs:element name="timerT28" minOccurs="0"/>
+ <xs:element name="timerT29" minOccurs="0"/>
+ <xs:element name="timerT3" minOccurs="0"/>
+ <xs:element name="timerT30" minOccurs="0"/>
+ <xs:element name="timerT31" minOccurs="0"/>
+ <xs:element name="timerT4" minOccurs="0"/>
+ <xs:element name="timerT5" minOccurs="0"/>
+ <xs:element name="timerT6" minOccurs="0"/>
+ <xs:element name="timerT8" minOccurs="0"/>
+ <xs:element name="timerTBsnt" minOccurs="0"/>
+ <xs:element name="timerTDlack" minOccurs="0"/>
+ <xs:element name="timerTRetrieval" minOccurs="0"/>
+ <xs:element name="timerTStart" minOccurs="0"/>
+ <xs:element name="timerTc" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="transFrHandler" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataPacketDataRouter" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="rncIpAddress" minOccurs="0"/>
+ <xs:element name="cnIuLinkIpAddress" minOccurs="0"/>
+ <xs:element name="timeToLive" minOccurs="0"/>
+ <xs:element name="pdrDeviceRef" minOccurs="0"/>
+ <xs:element name="aal5TpRef" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIpAtmLink" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="interfaceName" minOccurs="0"/>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="metric" minOccurs="0"/>
+ <xs:element name="monitor" minOccurs="0"/>
+ <xs:element name="monitorInterval" minOccurs="0"/>
+ <xs:element name="monitorRetries" minOccurs="0"/>
+ <xs:element name="mtuSize" minOccurs="0"/>
+ <xs:element name="subnetMask" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="Aal5TpVccTpIdList" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="aal5TpVccTpSelectionMode" minOccurs="0"/>
+ <xs:element name="aal5TpVccTpId" minOccurs="0"/>
+ <xs:element name="assignIpAddress" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="subnetMask" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIpRoutingTable" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="indexOfDeletableStaticRoutes" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="addStaticRoute" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="subnetMask" minOccurs="0"/>
+ <xs:element name="hopIpAddress" minOccurs="0"/>
+ <xs:element name="routeMetric" minOccurs="0"/>
+ <xs:element name="redistribute" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="deleteStaticRoute" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="routingTableEntry" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="active" minOccurs="0"/>
+ <xs:element name="destinationIpAddr" minOccurs="0"/>
+ <xs:element name="destinationNetworkMask" minOccurs="0"/>
+ <xs:element name="interfaceName" minOccurs="0"/>
+ <xs:element name="nextHopIpAddr" minOccurs="0"/>
+ <xs:element name="redistribute" minOccurs="0"/>
+ <xs:element name="routeMetric" minOccurs="0"/>
+ <xs:element name="routeType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="dnsServer" minOccurs="0"/>
+ <xs:element name="isRecursiveSearch" minOccurs="0"/>
+ <xs:element name="isSubDomainName" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="retransInterval" minOccurs="0"/>
+ <xs:element name="noOfRetrans" minOccurs="0"/>
+ <xs:element name="isDefDomainName" minOccurs="0"/>
+ <xs:element name="defDomainName" minOccurs="0"/>
+ <xs:element name="useHostFile" minOccurs="0"/>
+ <xs:element name="dscp" minOccurs="0"/>
+ <xs:element name="icmpRedirect" minOccurs="0"/>
+ <xs:element name="udpChecksumState" minOccurs="0"/>
+ <xs:element name="connectionAttemptTimer" minOccurs="0"/>
+ <xs:element name="maxRetransmissionAttempts" minOccurs="0"/>
+ <xs:element name="workingMode" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIpSystem" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIpOam" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataOspf" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="ipMo" minOccurs="0"/>
+ <xs:element name="ospfASBdrRtrStatus" minOccurs="0"/>
+ <xs:element name="ospfAreaBdrRtrStatus" minOccurs="0"/>
+ <xs:element name="ospfRouterId" minOccurs="0"/>
+ <xs:element name="recoverTopoDb" minOccurs="0"/>
+ <xs:element name="topoDbStoreInterv" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataOspfArea" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="areaId" minOccurs="0"/>
+ <xs:element name="areaLsaChecksum" minOccurs="0"/>
+ <xs:element name="importExternalLsa" minOccurs="0"/>
+ <xs:element name="sendAreaSummary" minOccurs="0"/>
+ <xs:element name="stubArea" minOccurs="0"/>
+ <xs:element name="stubAreaMetric" minOccurs="0"/>
+ <xs:element name="stubAreaMetricType" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="range0" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="subnetMask" minOccurs="0"/>
+ <xs:element name="advertise" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="range1" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="subnetMask" minOccurs="0"/>
+ <xs:element name="advertise" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="range2" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="subnetMask" minOccurs="0"/>
+ <xs:element name="advertise" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="addAreaRange" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="rangeIndex" minOccurs="0"/>
+ <xs:element name="range" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="subnetMask" minOccurs="0"/>
+ <xs:element name="advertise" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="deleteAreaRange" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="rangeIndex" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataOspfInterface" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="helloInterval" minOccurs="0"/>
+ <xs:element name="interfacePriority" minOccurs="0"/>
+ <xs:element name="interfaceTransitDelay" minOccurs="0"/>
+ <xs:element name="lsaTransmissionInterval" minOccurs="0"/>
+ <xs:element name="ospfAreaRelated" minOccurs="0"/>
+ <xs:element name="relatedLink" minOccurs="0"/>
+ <xs:element name="routerDeadInterval" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataRncModule" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataTnApplication" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataVirtualPath" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="vplTpARef" minOccurs="0"/>
+ <xs:element name="vplTpBRef" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataM3uAssociation" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="mtp3bSrsId" minOccurs="0"/>
+ <xs:element name="sctpId" minOccurs="0"/>
+ <xs:element name="dscp" minOccurs="0"/>
+ <xs:element name="associationState" minOccurs="0"/>
+ <xs:element name="localIpMask" minOccurs="0"/>
+ <xs:element name="autoStartAssociation" minOccurs="0"/>
+ <xs:element name="remotePortNumber" minOccurs="0"/>
+ <xs:element name="remoteIpAddress1" minOccurs="0"/>
+ <xs:element name="remoteIpAddress2" minOccurs="0"/>
+ <xs:element name="localPortNumber" minOccurs="0"/>
+ <xs:element name="role" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSccpAccountingCriteria" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="usageType" minOccurs="0"/>
+ <xs:element name="ssN" minOccurs="0"/>
+ <xs:element name="countType" minOccurs="0"/>
+ <xs:element name="globalTitleId" minOccurs="0"/>
+ <xs:element name="pointerId" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSccpPolicing" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="originatingMtp3bSpc" minOccurs="0"/>
+ <xs:element name="destinationMtp3bSpc" minOccurs="0"/>
+ <xs:element name="originatingSccpSpId" minOccurs="0"/>
+ <xs:element name="originatingSccpSsn" minOccurs="0"/>
+ <xs:element name="destinationSccpSpId" minOccurs="0"/>
+ <xs:element name="destinationSccpSsn" minOccurs="0"/>
+ <xs:element name="policingGlobalTitle" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="indicator" minOccurs="0"/>
+ <xs:element name="natureOfAddress" minOccurs="0"/>
+ <xs:element name="numberingPlan" minOccurs="0"/>
+ <xs:element name="translationType" minOccurs="0"/>
+ <xs:element name="addressInformation" minOccurs="0"/>
+ <xs:element name="encodingScheme" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="discardOrReturnServiceMsg" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSctp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="numberOfAssociations" minOccurs="0"/>
+ <xs:element name="ipAccessHostGpbId" minOccurs="0"/>
+ <xs:element name="minimumRto" minOccurs="0"/>
+ <xs:element name="maximumRto" minOccurs="0"/>
+ <xs:element name="initialRto" minOccurs="0"/>
+ <xs:element name="rtoAlphaIndex" minOccurs="0"/>
+ <xs:element name="rtoBetaIndex" minOccurs="0"/>
+ <xs:element name="validCookieLife" minOccurs="0"/>
+ <xs:element name="allowedIncrementCookieLife" minOccurs="0"/>
+ <xs:element name="keyChangePeriod" minOccurs="0"/>
+ <xs:element name="associationMaxRtx" minOccurs="0"/>
+ <xs:element name="pathMaxRtx" minOccurs="0"/>
+ <xs:element name="maxInitialRtrAtt" minOccurs="0"/>
+ <xs:element name="maxShutDownRtrAtt" minOccurs="0"/>
+ <xs:element name="heartbeatInterval" minOccurs="0"/>
+ <xs:element name="heartbeatStatus" minOccurs="0"/>
+ <xs:element name="maxIncomingStream" minOccurs="0"/>
+ <xs:element name="maxOutgoingStream" minOccurs="0"/>
+ <xs:element name="maxUserDataSize" minOccurs="0"/>
+ <xs:element name="mBuffer" minOccurs="0"/>
+ <xs:element name="nThreshold" minOccurs="0"/>
+ <xs:element name="tSack" minOccurs="0"/>
+ <xs:element name="maxDataSizeIp" minOccurs="0"/>
+ <xs:element name="initialAdRecWin" minOccurs="0"/>
+ <xs:element name="intervalOobPkts" minOccurs="0"/>
+ <xs:element name="intervalLostUser" minOccurs="0"/>
+ <xs:element name="maxBurst" minOccurs="0"/>
+ <xs:element name="nPercentage" minOccurs="0"/>
+ <xs:element name="bundlingActivated" minOccurs="0"/>
+ <xs:element name="bundlingTimer" minOccurs="0"/>
+ <xs:element name="rpuId" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataEthernetLink" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="subnetMask" minOccurs="0"/>
+ <xs:element name="broadcastAddress" minOccurs="0"/>
+ <xs:element name="macAddress" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="mtuSize" minOccurs="0"/>
+ <xs:element name="metric" minOccurs="0"/>
+ <xs:element name="interfaceName" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="assignIpAddress" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="subnetMask" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataImaGroup" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="physicalPortList" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="requiredNumberOfLinks" minOccurs="0"/>
+ <xs:element name="activeLinks" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataImaLink" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="uses" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIpAccessHostGpb" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="generalProcessorUnitId" minOccurs="0"/>
+ <xs:element name="autoConfig" minOccurs="0"/>
+ <xs:element name="autoConfigIdentity" minOccurs="0"/>
+ <xs:element name="autoConfigIdentity2" minOccurs="0"/>
+ <xs:element name="ipAddress1" minOccurs="0"/>
+ <xs:element name="ipAddress2" minOccurs="0"/>
+ <xs:element name="ipDefaultTtl" minOccurs="0"/>
+ <xs:element name="ipReasmTimeout" minOccurs="0"/>
+ <xs:element name="interface1" minOccurs="0"/>
+ <xs:element name="interface2" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIpAccessAutoConfig" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="networkPrefixLength" minOccurs="0"/>
+ <xs:element name="nrOfUnusedAdresses" minOccurs="0"/>
+ <xs:element name="totalNrOfAddresses" minOccurs="0"/>
+ <xs:element name="minIpAddress" minOccurs="0"/>
+ <xs:element name="maxIpAddress" minOccurs="0"/>
+ <xs:element name="subnet" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIpInterface" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="vid" minOccurs="0"/>
+ <xs:element name="vLan" minOccurs="0"/>
+ <xs:element name="rps" minOccurs="0"/>
+ <xs:element name="mtu" minOccurs="0"/>
+ <xs:element name="networkPrefixLength" minOccurs="0"/>
+ <xs:element name="defaultRouter0" minOccurs="0"/>
+ <xs:element name="defaultRouter1" minOccurs="0"/>
+ <xs:element name="defaultRouter2" minOccurs="0"/>
+ <xs:element name="defaultRouterPingInterval" minOccurs="0"/>
+ <xs:element name="maxWaitForPingReply" minOccurs="0"/>
+ <xs:element name="maxNoOfFailedPings" minOccurs="0"/>
+ <xs:element name="noOfPingsBeforeOk" minOccurs="0"/>
+ <xs:element name="switchBackTimer" minOccurs="0"/>
+ <xs:element name="ownIpAddressActive" minOccurs="0"/>
+ <xs:element name="ownIpAddressPassive" minOccurs="0"/>
+ <xs:element name="subnet" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIpAccessHostSpb" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="autoConfig" minOccurs="0"/>
+ <xs:element name="autoConfigIdentity" minOccurs="0"/>
+ <xs:element name="autoConfigIdentity2" minOccurs="0"/>
+ <xs:element name="interface2" minOccurs="0"/>
+ <xs:element name="spmId" minOccurs="0"/>
+ <xs:element name="ipAddress" minOccurs="0"/>
+ <xs:element name="ipAddress2" minOccurs="0"/>
+ <xs:element name="ipDefaultTtl" minOccurs="0"/>
+ <xs:element name="ipInterface" minOccurs="0"/>
+ <xs:element name="ipReasmTimeout" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIpEthPacketDataRouter" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="pdrDeviceRef" minOccurs="0"/>
+ <xs:element name="ipAccessHostSpbRef" minOccurs="0"/>
+ <xs:element name="ipAddressSelection" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSwManagement" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataReliableProgramUniter" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSpDevicePool" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataPdrDevice" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataExchangeTerminal" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="description" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="aal2LayerDescription" minOccurs="0"/>
+ <xs:element name="atmLayerDescription" minOccurs="0"/>
+ <xs:element name="etType" minOccurs="0"/>
+ <xs:element name="physicalLayerDescription" minOccurs="0"/>
+ <xs:element name="tdmSupport" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataCbu" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataGeneralProcessorUnit" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataVc4Ttp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="pathTraceFormat" minOccurs="0"/>
+ <xs:element name="transmittedPathTrace" minOccurs="0"/>
+ <xs:element name="expectedPathTrace" minOccurs="0"/>
+ <xs:element name="timConsequentAction" minOccurs="0"/>
+ <xs:element name="vcDegThreshold" minOccurs="0"/>
+ <xs:element name="vcDegM" minOccurs="0"/>
+ <xs:element name="auAisReporting" minOccurs="0"/>
+ <xs:element name="vcRdiReporting" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataVc12Ttp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="transmittedPathTrace" minOccurs="0"/>
+ <xs:element name="expectedPathTrace" minOccurs="0"/>
+ <xs:element name="timConsequentAction" minOccurs="0"/>
+ <xs:element name="vcDegThreshold" minOccurs="0"/>
+ <xs:element name="vcDegM" minOccurs="0"/>
+ <xs:element name="tuAisReporting" minOccurs="0"/>
+ <xs:element name="vcRdiReporting" minOccurs="0"/>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="shutDownTimeout" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataE1Ttp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="degDegThr" minOccurs="0"/>
+ <xs:element name="degDegM" minOccurs="0"/>
+ <xs:element name="aisReporting" minOccurs="0"/>
+ <xs:element name="rdiReporting" minOccurs="0"/>
+ <xs:element name="crc4Mode" minOccurs="0"/>
+ <xs:element name="idlePattern" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSts1SpeTtp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="aisPReporting" minOccurs="0"/>
+ <xs:element name="rdiPReporting" minOccurs="0"/>
+ <xs:element name="timConsequentAction" minOccurs="0"/>
+ <xs:element name="expectedPathTrace" minOccurs="0"/>
+ <xs:element name="transmittedPathTrace" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataVt15Ttp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="aisVreporting" minOccurs="0"/>
+ <xs:element name="rdiVreporting" minOccurs="0"/>
+ <xs:element name="shutDownTimer" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataSts3CspeTtp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="aisPReporting" minOccurs="0"/>
+ <xs:element name="rdiPReporting" minOccurs="0"/>
+ <xs:element name="timConsequentAction" minOccurs="0"/>
+ <xs:element name="expectedPathTrace" minOccurs="0"/>
+ <xs:element name="transmittedPathTrace" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataT1Ttp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="aisReporting" minOccurs="0"/>
+ <xs:element name="rdiReporting" minOccurs="0"/>
+ <xs:element name="idlePattern" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataIuLink" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="packetDataRouterRef" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataE1PhysPathTerm" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="lineNo" minOccurs="0"/>
+ <xs:element name="loopback" minOccurs="0"/>
+ <xs:element name="crc4Mode" minOccurs="0"/>
+ <xs:element name="idlePattern" minOccurs="0"/>
+ <xs:element name="degDegThr" minOccurs="0"/>
+ <xs:element name="degDegM" minOccurs="0"/>
+ <xs:element name="rdiReporting" minOccurs="0"/>
+ <xs:element name="aisReporting" minOccurs="0"/>
+ <xs:element name="shutDownTimeout" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataJ1PhysPathTerm" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="lineNo" minOccurs="0"/>
+ <xs:element name="loopback" minOccurs="0"/>
+ <xs:element name="idlePattern" minOccurs="0"/>
+ <xs:element name="physicalLineType" minOccurs="0"/>
+ <xs:element name="degThreshold" minOccurs="0"/>
+ <xs:element name="rdiReporting" minOccurs="0"/>
+ <xs:element name="aisReporting" minOccurs="0"/>
+ <xs:element name="shutDownTimeout" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataT1PhysPathTerm" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="lineNo" minOccurs="0"/>
+ <xs:element name="loopback" minOccurs="0"/>
+ <xs:element name="rdiReporting" minOccurs="0"/>
+ <xs:element name="aisReporting" minOccurs="0"/>
+ <xs:element name="shutDownTimeout" minOccurs="0"/>
+ <xs:element name="idlePattern" minOccurs="0"/>
+ <xs:element name="transmissionMode" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataDs0Bundle" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="listOfTimeSlots" minOccurs="0"/>
+ <xs:element name="tdmMode" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataT3PhysPathTerm" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="shutDownTimeout" minOccurs="0"/>
+ <xs:element name="lineNo" minOccurs="0"/>
+ <xs:element name="loopback" minOccurs="0"/>
+ <xs:element name="rdiReporting" minOccurs="0"/>
+ <xs:element name="aisReporting" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataE3PhysPathTerm" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="shutDownTimeout" minOccurs="0"/>
+ <xs:element name="lineNo" minOccurs="0"/>
+ <xs:element name="loopback" minOccurs="0"/>
+ <xs:element name="idlePattern" minOccurs="0"/>
+ <xs:element name="degDegThr" minOccurs="0"/>
+ <xs:element name="degDegM" minOccurs="0"/>
+ <xs:element name="rdiReporting" minOccurs="0"/>
+ <xs:element name="aisReporting" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataOs155SpiTtp" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="lineNo" minOccurs="0"/>
+ <xs:element name="standardMode" minOccurs="0"/>
+ <xs:element name="shutDownTimeout" minOccurs="0"/>
+ <xs:element name="muxMode" minOccurs="0"/>
+ <xs:element name="msDegThreshold" minOccurs="0"/>
+ <xs:element name="msDegM" minOccurs="0"/>
+ <xs:element name="msRdiReporting" minOccurs="0"/>
+ <xs:element name="msAisReporting" minOccurs="0"/>
+ <xs:element name="loopBack" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataEtMfg" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataGigaBitEthernet" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="dscpPbitMap" minOccurs="0"/>
+ <xs:element name="autoNegotiation" minOccurs="0"/>
+ <xs:element name="frameFormat" minOccurs="0"/>
+ <xs:element name="primaryLink" minOccurs="0"/>
+ <xs:element name="protectiveMode" minOccurs="0"/>
+ <xs:element name="msDegM" minOccurs="0"/>
+ <xs:element name="shutDownTimeout" minOccurs="0"/>
+ <xs:element name="statePropagationDelay" minOccurs="0"/>
+ <xs:element name="switchBackTimer" minOccurs="0"/>
+ <xs:element name="setDscpPbit" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="dscp" minOccurs="0"/>
+ <xs:element name="pbit" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataFastEthernet" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="administrativeState" minOccurs="0"/>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="defaultRouter" minOccurs="0"/>
+ <xs:element name="mtu" minOccurs="0"/>
+ <xs:element name="networkPrefixLength" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMediumAccessUnit" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="connectorLabel" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vsDataMspg" substitutionGroup="xn:vsData">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xn:vsData">
+ <xs:sequence>
+ <xs:element name="userLabel" minOccurs="0"/>
+ <xs:element name="degCauseMsp" minOccurs="0"/>
+ <xs:element name="os155SpiStandbyId" minOccurs="0"/>
+ <xs:element name="os155SpiWorkingId" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/ImportExportMap.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/ImportExportMap.xsd
new file mode 100644
index 0000000000..acbafd42e6
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/ImportExportMap.xsd
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.1 U (http://www.xmlspy.com) by Graham Coster (Ericsson Expertise Ireland) -->
+<!--W3C Schema generated by XML Spy v4.1 U (http://www.xmlspy.com)-->
+<xs:schema xmlns="ImportExportMap.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ImportExportMap.xsd" elementFormDefault="qualified">
+ <xs:element name="AttributeMap">
+ <xs:complexType>
+ <xs:attribute name="internalName" type="xs:string" use="required"/>
+ <xs:attribute name="externalName" type="xs:string" use="required"/>
+ <xs:attribute name="structAttributeType" type="xs:string" use="optional"/>
+ <xs:attribute name="mapRequired" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="restricted" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="actionUpdated" type="xs:boolean" use="optional" default="false"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ActionMap">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="ActionAttribute" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="actionName" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ActionAttribute">
+ <xs:complexType>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ChildMoTypes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="MoType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FileMimMap">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="MoMap" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="fileType" type="xs:string" use="required"/>
+ <xs:attribute name="fileVersion" type="xs:string" use="required"/>
+ <xs:attribute name="ranosMOMType" type="xs:string" use="required"/>
+ <xs:attribute name="ranosMOMVersion" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MoMap">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="ValidCommands"/>
+ <xs:element ref="AttributeMap" maxOccurs="unbounded"/>
+ <xs:element ref="ActionMap" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="ChildMoTypes" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="fileRoot" type="xs:boolean" use="required"/>
+ <xs:attribute name="externalType" type="xs:string" use="required"/>
+ <xs:attribute name="internalType" type="xs:string" use="required"/>
+ <xs:attribute name="nameSpace" type="xs:string" use="required"/>
+ <xs:attribute name="rt" type="xs:string" use="required"/>
+ <xs:attribute name="overrideFBKDelete" type="xs:boolean" use="optional" default="false"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MoType">
+ <xs:complexType>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="rt" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ValidCommands">
+ <xs:complexType>
+ <xs:attribute name="create" type="xs:boolean" use="required"/>
+ <xs:attribute name="update" type="xs:boolean" use="required"/>
+ <xs:attribute name="delete" type="xs:boolean" use="required"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/configData.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/configData.xsd
new file mode 100644
index 0000000000..f07e7c8d3d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/configData.xsd
@@ -0,0 +1,41 @@
+<!--
+ 3GPP TS 32.615 v4.5 Bulk CM IRP
+ Configuration data file base XML schema
+ configData.xsd
+ -->
+<schema targetNamespace="configData.xsd" xmlns:bc="configData.xsd" xmlns:xn="genericNrm.xsd" xmlns:es="EricssonSpecificAttributes.5.1.xsd" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <!-- Configuration data file root XML element -->
+ <import namespace="genericNrm.xsd" schemaLocation="genericNrm.xsd"/>
+ <import namespace="EricssonSpecificAttributes.5.1.xsd" schemaLocation="EricssonSpecificAttributes.5.1.xsd"/>
+ <element name="bulkCmConfigDataFile">
+ <complexType>
+ <sequence>
+ <element name="fileHeader">
+ <complexType>
+ <attribute name="fileFormatVersion" type="string" use="required"/>
+ <attribute name="senderName" type="string" use="optional"/>
+ <attribute name="vendorName" type="string" use="optional"/>
+ </complexType>
+ </element>
+ <element name="configData" maxOccurs="unbounded">
+ <complexType>
+ <choice>
+ <element ref="xn:SubNetwork"/>
+ <element ref="xn:MeContext"/>
+ <!--
+ <element ref="xn:ManagedElement"/>
+ Not Possible at this level in Ericsson Model
+ -->
+ </choice>
+ <attribute name="dnPrefix" type="string" use="optional"/>
+ </complexType>
+ </element>
+ <element name="fileFooter">
+ <complexType>
+ <attribute name="dateTime" type="dateTime" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/genericNrm.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/genericNrm.xsd
new file mode 100644
index 0000000000..9c672cda8c
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/genericNrm.xsd
@@ -0,0 +1,230 @@
+<!--
+ 3GPP TS 32.615 v4.5 Bulk CM IRP
+ Configuration data file Generic Network Resources IRP NRM XML schema
+ -->
+<schema targetNamespace="genericNrm.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:un="utranNrm.xsd" xmlns:gn="geranNrm.xsd" xmlns:xn="genericNrm.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+ <import namespace="geranNrm.xsd" schemaLocation="geranNrm.xsd"/>
+ <import namespace="utranNrm.xsd" schemaLocation="utranNrm.xsd"/>
+
+ <!-- Abstract base type for all NRM class associated XML elements -->
+ <complexType name="NrmClassXmlType" abstract="true">
+ <attribute name="id" type="string" use="required"/>
+ <attribute name="modifier" use="optional">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="create"/>
+ <enumeration value="delete"/>
+ <enumeration value="update"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+ </complexType>
+
+ <!-- Generic Network Resources IRP NRM class associated XML elements -->
+ <element name="SubNetwork">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="userDefinedNetworkType" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:SubNetwork"/>
+ <element ref="xn:ManagedElement"/>
+ <element ref="xn:MeContext"/>
+ <element ref="xn:ManagementNode"/>
+ <element ref="xn:IRPAgent"/>
+ <element ref="un:ExternalUtranCell"/>
+ <element ref="gn:ExternalGsmCell"/>
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <element name="ManagedElement">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="managedElementType" minOccurs="0"/>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="vendorName" minOccurs="0"/>
+ <element name="userDefinedState" minOccurs="0"/>
+ <element name="locationName" minOccurs="0"/>
+ <element name="swVersion" minOccurs="0"/>
+ <element name="managedBy" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="un:RncFunction"/>
+ <element ref="un:NodeBFunction"/>
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <element name="MeContext">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:ManagedElement"/>
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <element name="ManagementNode">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="vendorName" minOccurs="0"/>
+ <element name="userDefinedState" minOccurs="0"/>
+ <element name="locationName" minOccurs="0"/>
+ <element name="manages" minOccurs="0"/>
+ <element name="swVersion" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:IRPAgent"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <element name="IRPAgent">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="systemDN" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:NotificationIRP"/>
+ <element ref="xn:AlarmIRP"/>
+ <element ref="xn:BulkCmIRP"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <element name="NotificationIRP">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="irpVersion" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <element name="AlarmIRP">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="irpVersion" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <element name="BulkCmIRP">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="irpVersion" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <element name="VsDataContainer">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="vsDataType" minOccurs="0"/>
+ <element name="vsDataFormatVersion" minOccurs="0"/>
+ <element ref="xn:vsData" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <complexType name="vsData" abstract="true"/>
+ <!-- VsDataContainer NRM class vsData attribute associated empty XML element -->
+ <element name="vsData" type="xn:vsData" abstract="true"/>
+</schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/geranNrm.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/geranNrm.xsd
new file mode 100644
index 0000000000..b226eb2f4b
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/geranNrm.xsd
@@ -0,0 +1,63 @@
+<!--
+ 3GPP TS 32.615 v4.5 Bulk CM IRP
+ Configuration data file UTRAN Network Resources IRP NRM XML schema
+ To be used with WEGA Bucket 2.1 onwards
+-->
+<schema targetNamespace="geranNrm.xsd" xmlns:gn="geranNrm.xsd" xmlns:un="utranNrm.xsd" xmlns:xn="genericNrm.xsd" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <!-- GERAN Network Resources IRP NRM class associated XML elements -->
+ <import namespace="genericNrm.xsd" schemaLocation="genericNrm.xsd"/>
+ <import namespace="utranNrm.xsd" schemaLocation="utranNrm.xsd"/>
+ <element name="GsmRelation">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all><!--
+ <element name="relationType" minOccurs="0"/>
+ -->
+ <element name="adjacentCell" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="ExternalGsmCell">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="cellIdentity" minOccurs="0"/>
+ <element name="bcchFrequency" minOccurs="0"/>
+ <element name="ncc" minOccurs="0"/>
+ <element name="bcc" minOccurs="0"/>
+ <element name="lac" minOccurs="0"/>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <!--
+ <element name="rac" minOccurs="0"/>
+ <element name="racc" minOccurs="0"/>
+ -->
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+</schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/rnc.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/rnc.xml
new file mode 100644
index 0000000000..b6ca8b4fb1
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/rnc.xml
@@ -0,0 +1,23763 @@
+<?xml version="1.0" encoding="utf-8"?>
+<bulkCmConfigDataFile xmlns="configData.xsd" xmlns:xn="genericNrm.xsd" xmlns:gn="geranNrm.xsd" xmlns:un="utranNrm.xsd" xmlns:es="EricssonSpecificAttributes.5.1.xsd">
+ <fileHeader fileFormatVersion="32.615 V4.5" senderName="DC=a1.companyNN.com,SubNetwork=1,IRPAgent=1" vendorName="Company NN"/>
+ <configData dnPrefix="DC=a0.companyNN.com">
+<xn:SubNetwork id="WEOSSRC1_ROOT_MO_R">
+<xn:SubNetwork id="RNC33">
+<xn:MeContext id="SRNC001">
+
+
+<xn:ManagedElement id="1">
+<xn:attributes>
+
+<xn:userLabel>/proj/netsimproj/public/ftp/simulations/WRAN/R5/Standard/E/V2</xn:userLabel>
+</xn:attributes>
+
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSwManagement</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSwManagement />
+</xn:attributes>
+<xn:VsDataContainer id="scc_adm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="scc_server" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal2ap13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="sw_inst" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="spas_res" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="inet" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ospf" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal05_ncc" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal_cc" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="phy_e1_mp" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="phy_stm1_mp" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="atmmp" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal2mp" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal2_adm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal2ncc" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal0d_adm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal0s_adm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal5d_adm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="aal5s_adm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="usaal_adm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="nsaal_adm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="equip_mp" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="nss_mp" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ip_util" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="spp_mp" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="http" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="jvm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ans_aal2rh_1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ans_aal2disncc_12_1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ans_aal2cpsrc_12_1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ans_aal2ap_12_1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuCenDh" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuCenRh" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuDh" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuFro" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuCenOm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuUe" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuModOm" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuRanap" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuRnsap" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuCenRnh" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RncRpuCell" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataReliableProgramUniter</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataReliableProgramUniter>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataReliableProgramUniter>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataTransportNetwork</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataTransportNetwork>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataTransportNetwork>
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Sp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataAal2Sp>
+
+<es:a2ea> </es:a2ea>
+<es:userLabel> </es:userLabel>
+</es:vsDataAal2Sp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Sp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2Sp>
+
+<es:a2ea> </es:a2ea>
+<es:userLabel> </es:userLabel>
+</es:vsDataAal2Sp>
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Ap</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataAal2Ap>
+
+<es:aal2QoSCodePointProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2QosCodePointProfile=1</es:aal2QoSCodePointProfileId>
+<es:rpuId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataSwManagement=1,vsDataReliableProgramUniter=ans_aal2ap_12_1</es:rpuId>
+<es:secondarySigLinkId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b4qb</es:secondarySigLinkId>
+<es:sigLinkId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b4qa</es:sigLinkId>
+<es:timerErq>5000</es:timerErq>
+<es:timerRel>2000</es:timerRel>
+<es:userLabel> </es:userLabel>
+<es:allocationMode>0</es:allocationMode>
+</es:vsDataAal2Ap></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Ap</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2Ap>
+
+<es:aal2QoSCodePointProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2QosCodePointProfile=1</es:aal2QoSCodePointProfileId>
+<es:rpuId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataSwManagement=1,vsDataReliableProgramUniter=ans_aal2ap_12_1</es:rpuId>
+<es:secondarySigLinkId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b4qb</es:secondarySigLinkId>
+<es:sigLinkId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b4qa</es:sigLinkId>
+<es:timerErq>5000</es:timerErq>
+<es:timerRel>2000</es:timerRel>
+<es:userLabel> </es:userLabel>
+<es:allocationMode>0</es:allocationMode>
+</es:vsDataAal2Ap>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2PathDistributionUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2PathDistributionUnit>
+
+<es:userLabel> </es:userLabel>
+<es:rpuId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataSwManagement=1,vsDataReliableProgramUniter=ans_aal2cpsrc_12_1</es:rpuId>
+
+<es:aal2PathVccTpList>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2PathVccTp=b1a1</es:aal2PathVccTpList>
+</es:vsDataAal2PathDistributionUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Ap</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataAal2Ap>
+
+<es:aal2QoSCodePointProfileId>0</es:aal2QoSCodePointProfileId>
+<es:rpuId>0</es:rpuId>
+<es:secondarySigLinkId>0</es:secondarySigLinkId>
+<es:sigLinkId>0</es:sigLinkId>
+<es:timerErq>5000</es:timerErq>
+<es:timerRel>2000</es:timerRel>
+<es:userLabel> </es:userLabel>
+<es:allocationMode>0</es:allocationMode>
+</es:vsDataAal2Ap></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Ap</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2Ap>
+
+<es:aal2QoSCodePointProfileId>0</es:aal2QoSCodePointProfileId>
+<es:rpuId>0</es:rpuId>
+<es:secondarySigLinkId>0</es:secondarySigLinkId>
+<es:sigLinkId>0</es:sigLinkId>
+<es:timerErq>5000</es:timerErq>
+<es:timerRel>2000</es:timerRel>
+<es:userLabel> </es:userLabel>
+<es:allocationMode>0</es:allocationMode>
+</es:vsDataAal2Ap>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2PathDistributionUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2PathDistributionUnit>
+
+<es:userLabel> </es:userLabel>
+<es:rpuId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataSwManagement=1,vsDataReliableProgramUniter=ans_aal2cpsrc_12_1</es:rpuId>
+
+<es:aal2PathVccTpList>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2PathVccTp=b2a1</es:aal2PathVccTpList>
+</es:vsDataAal2PathDistributionUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Ap</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataAal2Ap>
+
+<es:aal2QoSCodePointProfileId>0</es:aal2QoSCodePointProfileId>
+<es:rpuId>0</es:rpuId>
+<es:secondarySigLinkId>0</es:secondarySigLinkId>
+<es:sigLinkId>0</es:sigLinkId>
+<es:timerErq>5000</es:timerErq>
+<es:timerRel>2000</es:timerRel>
+<es:userLabel> </es:userLabel>
+<es:allocationMode>0</es:allocationMode>
+</es:vsDataAal2Ap></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Ap</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2Ap>
+
+<es:aal2QoSCodePointProfileId>0</es:aal2QoSCodePointProfileId>
+<es:rpuId>0</es:rpuId>
+<es:secondarySigLinkId>0</es:secondarySigLinkId>
+<es:sigLinkId>0</es:sigLinkId>
+<es:timerErq>5000</es:timerErq>
+<es:timerRel>2000</es:timerRel>
+<es:userLabel> </es:userLabel>
+<es:allocationMode>0</es:allocationMode>
+</es:vsDataAal2Ap>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2PathDistributionUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2PathDistributionUnit>
+
+<es:userLabel> </es:userLabel>
+<es:rpuId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataSwManagement=1,vsDataReliableProgramUniter=ans_aal2cpsrc_12_1</es:rpuId>
+
+<es:aal2PathVccTpList>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2PathVccTp=b3a1</es:aal2PathVccTpList>
+</es:vsDataAal2PathDistributionUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Ap</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataAal2Ap>
+
+<es:aal2QoSCodePointProfileId>0</es:aal2QoSCodePointProfileId>
+<es:rpuId>0</es:rpuId>
+<es:secondarySigLinkId>0</es:secondarySigLinkId>
+<es:sigLinkId>0</es:sigLinkId>
+<es:timerErq>5000</es:timerErq>
+<es:timerRel>2000</es:timerRel>
+<es:userLabel> </es:userLabel>
+<es:allocationMode>0</es:allocationMode>
+</es:vsDataAal2Ap></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2Ap</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2Ap>
+
+<es:aal2QoSCodePointProfileId>0</es:aal2QoSCodePointProfileId>
+<es:rpuId>0</es:rpuId>
+<es:secondarySigLinkId>0</es:secondarySigLinkId>
+<es:sigLinkId>0</es:sigLinkId>
+<es:timerErq>5000</es:timerErq>
+<es:timerRel>2000</es:timerRel>
+<es:userLabel> </es:userLabel>
+<es:allocationMode>0</es:allocationMode>
+</es:vsDataAal2Ap>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2PathDistributionUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2PathDistributionUnit>
+
+<es:userLabel> </es:userLabel>
+<es:rpuId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataSwManagement=1,vsDataReliableProgramUniter=ans_aal2cpsrc_12_1</es:rpuId>
+
+<es:aal2PathVccTpList>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2PathVccTp=b4a1</es:aal2PathVccTpList>
+</es:vsDataAal2PathDistributionUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="MS-24-1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=1,vsDataPlugInUnit=1,vsDataExchangeTerminal=ET-M4,vsDataOs155SpiTtp=1,vsDataSts3CspeTtp=1</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-24-1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=1,vsDataPlugInUnit=1,vsDataExchangeTerminal=ET-M4,vsDataOs155SpiTtp=1,vsDataSts3CspeTtp=1</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes><xn:VsDataContainer id="Vp1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVplTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataVplTp>
+
+<es:atmTrafficDescriptor>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptor>
+<es:externalVpi>1</es:externalVpi>
+<es:userLabel> </es:userLabel>
+</es:vsDataVplTp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="Vp1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVplTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVplTp>
+
+<es:atmTrafficDescriptor>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptor>
+<es:externalVpi>1</es:externalVpi>
+<es:userLabel> </es:userLabel>
+</es:vsDataVplTp>
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVpcTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataVpcTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:userLabel> </es:userLabel>
+<es:counterMode>0</es:counterMode>
+</es:vsDataVpcTp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVpcTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVpcTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:userLabel> </es:userLabel>
+<es:counterMode>0</es:counterMode>
+</es:vsDataVpcTp>
+</xn:attributes>
+<xn:VsDataContainer id="vc34" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>34</es:externalVci>
+<es:userLabel>used by Aal0 b1sa (NodeSynchTp1)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc35" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>35</es:externalVci>
+<es:userLabel>used by Aal0 b1sb (NodeSynchTp2)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc36" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>36</es:externalVci>
+<es:userLabel>used by Aal5 b1ca (Nbap Common)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc37" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>37</es:externalVci>
+<es:userLabel>used by Aal5 b1da (Nbap Dedicated)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc38" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>38</es:externalVci>
+<es:userLabel>used by Aal5 b1qa (Aal2 signalling)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc39" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>39</es:externalVci>
+<es:userLabel>used by Aal2 b1a1 (Aal2Path)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc43" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C2P4000</es:atmTrafficDescriptorId>
+<es:externalVci>43</es:externalVci>
+<es:userLabel>used by Aal5 b1cb (Nbap Common)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc44" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>44</es:externalVci>
+<es:userLabel>used by Aal5 b1db (Nbap Dedicated)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc45" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>45</es:externalVci>
+<es:userLabel>used by Aal5 b1qb (Aal2 signalling)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc32-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>45</es:externalVci>
+<es:userLabel>used by Aal5 b1-x1 (IpAtmLink)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc33-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>33</es:externalVci>
+<es:userLabel>used by Aal5 b1-x2 (IpAtmLink)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc34-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>340</es:externalVci>
+<es:userLabel>used by Aal0 b1sa-x (NodeSynchTp1)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc35-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>350</es:externalVci>
+<es:userLabel>used by Aal0 b1sb-x (NodeSyncT2p)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="Vp2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVplTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataVplTp>
+
+<es:atmTrafficDescriptor>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptor>
+<es:externalVpi>2</es:externalVpi>
+<es:userLabel> </es:userLabel>
+</es:vsDataVplTp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="Vp2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVplTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVplTp>
+
+<es:atmTrafficDescriptor>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptor>
+<es:externalVpi>2</es:externalVpi>
+<es:userLabel> </es:userLabel>
+</es:vsDataVplTp>
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVpcTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataVpcTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:userLabel> </es:userLabel>
+<es:counterMode>0</es:counterMode>
+</es:vsDataVpcTp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVpcTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVpcTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:userLabel> </es:userLabel>
+<es:counterMode>0</es:counterMode>
+</es:vsDataVpcTp>
+</xn:attributes>
+<xn:VsDataContainer id="vc34" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>34</es:externalVci>
+<es:userLabel>used by Aal0 b2sa (NodeSynchTp1)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc35" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>35</es:externalVci>
+<es:userLabel>used by Aal0 b2sb (NodeSynchTp2)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc36" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>36</es:externalVci>
+<es:userLabel>used by Aal5 b2ca (Nbap Common)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc37" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>37</es:externalVci>
+<es:userLabel>used by Aal5 b2da (Nbap Dedicated)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc38" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>38</es:externalVci>
+<es:userLabel>used by Aal5 b2qa (Aal2 signalling)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc39" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>39</es:externalVci>
+<es:userLabel>used by Aal2 b2a1 (Aal2Path)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc43" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C2P4000</es:atmTrafficDescriptorId>
+<es:externalVci>43</es:externalVci>
+<es:userLabel>used by Aal5 b2cb (Nbap Common)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc44" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>44</es:externalVci>
+<es:userLabel>used by Aal5 b2db (Nbap Dedicated)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc45" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>45</es:externalVci>
+<es:userLabel>used by Aal5 b2qb (Aal2 signalling)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc32-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>45</es:externalVci>
+<es:userLabel>used by Aal5 b2-x1 (IpAtmLink)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc33-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>33</es:externalVci>
+<es:userLabel>used by Aal5 b2-x2 (IpAtmLink)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc34-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>340</es:externalVci>
+<es:userLabel>used by Aal0 b2sa-x (NodeSynchTp1)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc35-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>350</es:externalVci>
+<es:userLabel>used by Aal0 b2sb-x (NodeSyncT2p)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="Vp3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVplTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataVplTp>
+
+<es:atmTrafficDescriptor>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptor>
+<es:externalVpi>3</es:externalVpi>
+<es:userLabel> </es:userLabel>
+</es:vsDataVplTp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="Vp3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVplTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVplTp>
+
+<es:atmTrafficDescriptor>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptor>
+<es:externalVpi>3</es:externalVpi>
+<es:userLabel> </es:userLabel>
+</es:vsDataVplTp>
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVpcTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataVpcTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:userLabel> </es:userLabel>
+<es:counterMode>0</es:counterMode>
+</es:vsDataVpcTp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVpcTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVpcTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:userLabel> </es:userLabel>
+<es:counterMode>0</es:counterMode>
+</es:vsDataVpcTp>
+</xn:attributes>
+<xn:VsDataContainer id="vc34" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>34</es:externalVci>
+<es:userLabel>used by Aal0 b3sa (NodeSynchTp1)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc35" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>35</es:externalVci>
+<es:userLabel>used by Aal0 b3sb (NodeSynchTp2)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc36" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>36</es:externalVci>
+<es:userLabel>used by Aal5 b3ca (Nbap Common)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc37" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>37</es:externalVci>
+<es:userLabel>used by Aal5 b3da (Nbap Dedicated)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc38" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>38</es:externalVci>
+<es:userLabel>used by Aal5 b3qa (Aal2 signalling)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc39" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>39</es:externalVci>
+<es:userLabel>used by Aal2 b3a1 (Aal2Path)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc43" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C2P4000</es:atmTrafficDescriptorId>
+<es:externalVci>43</es:externalVci>
+<es:userLabel>used by Aal5 b3cb (Nbap Common)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc44" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>44</es:externalVci>
+<es:userLabel>used by Aal5 b3db (Nbap Dedicated)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc45" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>45</es:externalVci>
+<es:userLabel>used by Aal5 b3qb (Aal2 signalling)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc32-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>45</es:externalVci>
+<es:userLabel>used by Aal5 b3-x1 (IpAtmLink)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc33-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>33</es:externalVci>
+<es:userLabel>used by Aal5 b3-x2 (IpAtmLink)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc34-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>340</es:externalVci>
+<es:userLabel>used by Aal0 b3sa-x (NodeSynchTp1)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc35-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>350</es:externalVci>
+<es:userLabel>used by Aal0 b3sb-x (NodeSyncT2p)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="Vp4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVplTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataVplTp>
+
+<es:atmTrafficDescriptor>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptor>
+<es:externalVpi>4</es:externalVpi>
+<es:userLabel> </es:userLabel>
+</es:vsDataVplTp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="Vp4" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVplTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVplTp>
+
+<es:atmTrafficDescriptor>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptor>
+<es:externalVpi>4</es:externalVpi>
+<es:userLabel> </es:userLabel>
+</es:vsDataVplTp>
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVpcTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataVpcTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:userLabel> </es:userLabel>
+<es:counterMode>0</es:counterMode>
+</es:vsDataVpcTp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVpcTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVpcTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:userLabel> </es:userLabel>
+<es:counterMode>0</es:counterMode>
+</es:vsDataVpcTp>
+</xn:attributes>
+<xn:VsDataContainer id="vc34" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>34</es:externalVci>
+<es:userLabel>used by Aal0 b4sa (NodeSynchTp1)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc35" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>35</es:externalVci>
+<es:userLabel>used by Aal0 b4sb (NodeSynchTp2)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc36" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>36</es:externalVci>
+<es:userLabel>used by Aal5 b4ca (Nbap Common)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc37" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>37</es:externalVci>
+<es:userLabel>used by Aal5 b4da (Nbap Dedicated)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc38" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>38</es:externalVci>
+<es:userLabel>used by Aal5 b4qa (Aal2 signalling)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc39" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>39</es:externalVci>
+<es:userLabel>used by Aal2 b4a1 (Aal2Path)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc43" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C2P4000</es:atmTrafficDescriptorId>
+<es:externalVci>43</es:externalVci>
+<es:userLabel>used by Aal5 b4cb (Nbap Common)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc44" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>44</es:externalVci>
+<es:userLabel>used by Aal5 b4db (Nbap Dedicated)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc45" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>45</es:externalVci>
+<es:userLabel>used by Aal5 b4qb (Aal2 signalling)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc32-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>45</es:externalVci>
+<es:userLabel>used by Aal5 b4-x1 (IpAtmLink)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc33-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=U3P1000M80</es:atmTrafficDescriptorId>
+<es:externalVci>33</es:externalVci>
+<es:userLabel>used by Aal5 b4-x2 (IpAtmLink)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc34-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>340</es:externalVci>
+<es:userLabel>used by Aal0 b4sa-x (NodeSynchTp1)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="vc35-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataVclTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVclTp>
+
+<es:atmTrafficDescriptorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmTrafficDescriptor=C1P4528</es:atmTrafficDescriptorId>
+<es:externalVci>350</es:externalVci>
+<es:userLabel>used by Aal0 b4sb-x (NodeSyncT2p)</es:userLabel>
+</es:vsDataVclTp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-24-2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-24-3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-24-4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-24-5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-24-6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-24-7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-24-8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-25-1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-25-2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-25-3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-25-4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-25-5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-25-6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-25-7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-25-8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-26-1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-26-2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-26-3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-26-4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-26-5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-26-6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-26-7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-26-8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-27-1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-27-2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-27-3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-27-4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-27-5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-27-6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-27-7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS-27-8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmPort</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmPort>
+
+<es:userLabel> </es:userLabel>
+<es:uses>0</es:uses>
+<es:hecCorrectionMode>true</es:hecCorrectionMode>
+</es:vsDataAtmPort>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataMspg</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataMspg>
+
+<es:userLabel> </es:userLabel>
+<es:degCauseMsp>false</es:degCauseMsp>
+<es:os155SpiStandbyId>0</es:os155SpiStandbyId>
+<es:os155SpiWorkingId>0</es:os155SpiWorkingId>
+</es:vsDataMspg>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="C1P4528" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmTrafficDescriptor</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmTrafficDescriptor>
+
+<es:egressAtmMcr>0</es:egressAtmMcr>
+<es:egressAtmPcr>0</es:egressAtmPcr>
+<es:egressAtmQos>1</es:egressAtmQos>
+<es:ingressAtmMcr>0</es:ingressAtmMcr>
+<es:ingressAtmPcr>0</es:ingressAtmPcr>
+<es:ingressAtmQos>1</es:ingressAtmQos>
+<es:serviceCategory>1</es:serviceCategory>
+<es:userLabel> </es:userLabel>
+<es:packetDiscard>false</es:packetDiscard>
+</es:vsDataAtmTrafficDescriptor>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="C1P5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmTrafficDescriptor</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmTrafficDescriptor>
+
+<es:egressAtmMcr>0</es:egressAtmMcr>
+<es:egressAtmPcr>0</es:egressAtmPcr>
+<es:egressAtmQos>1</es:egressAtmQos>
+<es:ingressAtmMcr>0</es:ingressAtmMcr>
+<es:ingressAtmPcr>0</es:ingressAtmPcr>
+<es:ingressAtmQos>1</es:ingressAtmQos>
+<es:serviceCategory>1</es:serviceCategory>
+<es:userLabel> </es:userLabel>
+<es:packetDiscard>false</es:packetDiscard>
+</es:vsDataAtmTrafficDescriptor>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="C2P4000" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmTrafficDescriptor</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmTrafficDescriptor>
+
+<es:egressAtmMcr>0</es:egressAtmMcr>
+<es:egressAtmPcr>0</es:egressAtmPcr>
+<es:egressAtmQos>1</es:egressAtmQos>
+<es:ingressAtmMcr>0</es:ingressAtmMcr>
+<es:ingressAtmPcr>0</es:ingressAtmPcr>
+<es:ingressAtmQos>1</es:ingressAtmQos>
+<es:serviceCategory>1</es:serviceCategory>
+<es:userLabel> </es:userLabel>
+<es:packetDiscard>false</es:packetDiscard>
+</es:vsDataAtmTrafficDescriptor>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="U3P1000M80" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAtmTrafficDescriptor</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAtmTrafficDescriptor>
+
+<es:egressAtmMcr>0</es:egressAtmMcr>
+<es:egressAtmPcr>0</es:egressAtmPcr>
+<es:egressAtmQos>1</es:egressAtmQos>
+<es:ingressAtmMcr>0</es:ingressAtmMcr>
+<es:ingressAtmPcr>0</es:ingressAtmPcr>
+<es:ingressAtmQos>1</es:ingressAtmQos>
+<es:serviceCategory>1</es:serviceCategory>
+<es:userLabel> </es:userLabel>
+<es:packetDiscard>false</es:packetDiscard>
+</es:vsDataAtmTrafficDescriptor>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1da" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc37</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1ca" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc36</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1db" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc44</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1cb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc43</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1-x1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc32-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1-x2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc33-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2da" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc37</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2ca" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc36</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2db" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc44</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2cb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc43</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2-x1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc32-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2-x2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc33-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3da" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc37</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3ca" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc36</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3db" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc44</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3cb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc43</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3-x1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc32-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3-x2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc33-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4da" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc37</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4ca" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc36</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4db" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc44</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4cb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc43</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4-x1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc32-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4-x2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal5TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal5TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:fromUserMaxSduSize>1</es:fromUserMaxSduSize>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=24,vsDataPlugInUnit=1</es:processorId>
+<es:toUserMaxSduSize>1</es:toUserMaxSduSize>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc33-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal5TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalProfile</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalProfile>
+
+<es:userLabel> </es:userLabel>
+<es:profileData>
+<es:congestionAbatement>60</es:congestionAbatement>
+<es:congestionOnSet>70</es:congestionOnSet>
+<es:initialCredit>250</es:initialCredit>
+<es:maxCC>4</es:maxCC>
+<es:maxPD>25</es:maxPD>
+<es:maxStat>67</es:maxStat>
+<es:timerCC>1000</es:timerCC>
+<es:timerIdle>15000</es:timerIdle>
+<es:timerKeepAlive>2000</es:timerKeepAlive>
+<es:timerNoResponse>7000</es:timerNoResponse>
+<es:timerPoll>750</es:timerPoll></es:profileData>
+</es:vsDataUniSaalProfile>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalProfile</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalProfile>
+
+<es:userLabel> </es:userLabel>
+<es:profileData>
+<es:congestionAbatement>60</es:congestionAbatement>
+<es:congestionOnSet>70</es:congestionOnSet>
+<es:initialCredit>250</es:initialCredit>
+<es:maxCC>4</es:maxCC>
+<es:maxPD>25</es:maxPD>
+<es:maxStat>67</es:maxStat>
+<es:timerCC>1000</es:timerCC>
+<es:timerIdle>15000</es:timerIdle>
+<es:timerKeepAlive>2000</es:timerKeepAlive>
+<es:timerNoResponse>7000</es:timerNoResponse>
+<es:timerPoll>750</es:timerPoll></es:profileData>
+</es:vsDataUniSaalProfile>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalProfile</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalProfile>
+
+<es:userLabel> </es:userLabel>
+<es:profileData>
+<es:congestionAbatement>60</es:congestionAbatement>
+<es:congestionOnSet>70</es:congestionOnSet>
+<es:initialCredit>250</es:initialCredit>
+<es:maxCC>4</es:maxCC>
+<es:maxPD>25</es:maxPD>
+<es:maxStat>67</es:maxStat>
+<es:timerCC>1000</es:timerCC>
+<es:timerIdle>15000</es:timerIdle>
+<es:timerKeepAlive>2000</es:timerKeepAlive>
+<es:timerNoResponse>7000</es:timerNoResponse>
+<es:timerPoll>750</es:timerPoll></es:profileData>
+</es:vsDataUniSaalProfile>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1da" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b1da</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1ca" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b1ca</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1db" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b1db</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1cb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b1cb</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1qa" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>0</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>0</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1qb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>0</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>0</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2da" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b2da</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2ca" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b2ca</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2db" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b2db</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2cb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b2cb</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2qa" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>0</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>0</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2qb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>0</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>0</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3da" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b3da</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3ca" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b3ca</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3db" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b3db</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3cb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b3cb</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3qa" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>0</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>0</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3qb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>0</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>0</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4da" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b4da</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4ca" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b4ca</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4db" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b4db</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4cb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b4cb</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalProfile=1</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4qa" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>0</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>0</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4qb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUniSaalTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUniSaalTp>
+
+<es:aal5TpVccTpId>0</es:aal5TpVccTpId>
+<es:maxSduSize>128</es:maxSduSize>
+<es:uniSaalProfileId>0</es:uniSaalProfileId>
+<es:userLabel> </es:userLabel>
+</es:vsDataUniSaalTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1sa" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc34</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1sb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc35</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1sa-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc34-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1sb-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc35-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2sa" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc34</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2sb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc35</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2sa-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc34-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2sb-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc35-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3sa" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc34</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3sb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc35</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3sa-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc34-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3sb-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc35-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4sa" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc34</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4sb" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc35</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4sa-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc34-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4sb-x" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal0TpVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal0TpVccTp>
+
+<es:alarmReport>2</es:alarmReport>
+<es:continuityCheck>false</es:continuityCheck>
+<es:nomPmBlkSize>1024</es:nomPmBlkSize>
+<es:processorId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataEquipment=1,vsDataSubrack=MS,vsDataSlot=4,vsDataPlugInUnit=1</es:processorId>
+<es:userLabel> </es:userLabel>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc35-x</es:vclTpId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal0TpVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b1a1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2PathVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2PathVccTp>
+
+<es:aal2PathOwner>true</es:aal2PathOwner>
+<es:alarmReport>2</es:alarmReport>
+<es:nomPmBlocksize>1024</es:nomPmBlocksize>
+<es:timerCu>10</es:timerCu>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>1</es:administrativeState>
+<es:continuityCheck>false</es:continuityCheck>
+<es:aal2PathId>1</es:aal2PathId>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp1,vsDataVpcTp=1,vsDataVclTp=vc39</es:vclTpId>
+<es:aal2QoSAvailableProfiles>15</es:aal2QoSAvailableProfiles>
+<es:aal2QoSProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2QosProfile=1</es:aal2QoSProfileId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal2PathVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b2a1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2PathVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2PathVccTp>
+
+<es:aal2PathOwner>true</es:aal2PathOwner>
+<es:alarmReport>2</es:alarmReport>
+<es:nomPmBlocksize>1024</es:nomPmBlocksize>
+<es:timerCu>10</es:timerCu>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>1</es:administrativeState>
+<es:continuityCheck>false</es:continuityCheck>
+<es:aal2PathId>1</es:aal2PathId>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp2,vsDataVpcTp=1,vsDataVclTp=vc39</es:vclTpId>
+<es:aal2QoSAvailableProfiles>15</es:aal2QoSAvailableProfiles>
+<es:aal2QoSProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2QosProfile=1</es:aal2QoSProfileId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal2PathVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b3a1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2PathVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2PathVccTp>
+
+<es:aal2PathOwner>true</es:aal2PathOwner>
+<es:alarmReport>2</es:alarmReport>
+<es:nomPmBlocksize>1024</es:nomPmBlocksize>
+<es:timerCu>10</es:timerCu>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>1</es:administrativeState>
+<es:continuityCheck>false</es:continuityCheck>
+<es:aal2PathId>1</es:aal2PathId>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp3,vsDataVpcTp=1,vsDataVclTp=vc39</es:vclTpId>
+<es:aal2QoSAvailableProfiles>15</es:aal2QoSAvailableProfiles>
+<es:aal2QoSProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2QosProfile=1</es:aal2QoSProfileId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal2PathVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="b4a1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2PathVccTp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2PathVccTp>
+
+<es:aal2PathOwner>true</es:aal2PathOwner>
+<es:alarmReport>2</es:alarmReport>
+<es:nomPmBlocksize>1024</es:nomPmBlocksize>
+<es:timerCu>10</es:timerCu>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>1</es:administrativeState>
+<es:continuityCheck>false</es:continuityCheck>
+<es:aal2PathId>1</es:aal2PathId>
+<es:vclTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAtmPort=MS-24-1,vsDataVplTp=Vp4,vsDataVpcTp=1,vsDataVclTp=vc39</es:vclTpId>
+<es:aal2QoSAvailableProfiles>15</es:aal2QoSAvailableProfiles>
+<es:aal2QoSProfileId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal2QosProfile=1</es:aal2QoSProfileId>
+<es:counterMode>6</es:counterMode>
+<es:counterActivation>false</es:counterActivation>
+</es:vsDataAal2PathVccTp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2QosProfile</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2QosProfile>
+
+<es:profileClassA>
+<es:boundOnProbOfDelay>500000</es:boundOnProbOfDelay>
+<es:boundOnProbOfLoss>500000</es:boundOnProbOfLoss>
+<es:boundOnNodeDelay>5000</es:boundOnNodeDelay></es:profileClassA>
+<es:profileClassB>
+<es:boundOnProbOfDelay>500000</es:boundOnProbOfDelay>
+<es:boundOnProbOfLoss>500000</es:boundOnProbOfLoss>
+<es:boundOnNodeDelay>15000</es:boundOnNodeDelay></es:profileClassB>
+<es:profileClassC>
+<es:boundOnProbOfDelay>1000000000</es:boundOnProbOfDelay>
+<es:boundOnProbOfLoss>1000000000</es:boundOnProbOfLoss>
+<es:boundOnNodeDelay>25000</es:boundOnNodeDelay></es:profileClassC>
+<es:profileClassD>
+<es:boundOnProbOfDelay>1000000000</es:boundOnProbOfDelay>
+<es:boundOnProbOfLoss>1000000000</es:boundOnProbOfLoss>
+<es:boundOnNodeDelay>50000</es:boundOnNodeDelay></es:profileClassD>
+<es:userLabel> </es:userLabel>
+</es:vsDataAal2QosProfile>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2QosCodePointProfile</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2QosCodePointProfile>
+
+<es:userLabel> </es:userLabel>
+<es:qualityOfServiceCodePointA>0</es:qualityOfServiceCodePointA>
+<es:qualityOfServiceCodePointB>0</es:qualityOfServiceCodePointB>
+<es:qualityOfServiceCodePointC>0</es:qualityOfServiceCodePointC>
+<es:qualityOfServiceCodePointD>0</es:qualityOfServiceCodePointD>
+</es:vsDataAal2QosCodePointProfile>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataAal2RoutingCase</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataAal2RoutingCase>
+
+<es:userLabel> </es:userLabel>
+<es:numberDirection> </es:numberDirection>
+<es:routeList></es:routeList>
+<es:routePriorityList></es:routePriorityList>
+</es:vsDataAal2RoutingCase>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIpSystem</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpSystem>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataIpSystem>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataEquipment</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataEquipment />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSpDevicePool</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSpDevicePool />
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSpDevicePool</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSpDevicePool />
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSpDevicePool</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSpDevicePool />
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="MS" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSubrack</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSubrack />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes><xn:VsDataContainer id="ET-M4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataExchangeTerminal</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataExchangeTerminal>
+
+
+<es:userLabel> </es:userLabel>
+</es:vsDataExchangeTerminal></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ET-M4" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataExchangeTerminal</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataExchangeTerminal>
+
+
+<es:userLabel> </es:userLabel>
+</es:vsDataExchangeTerminal>
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataOs155SpiTtp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataOs155SpiTtp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:lineNo>1</es:lineNo>
+<es:standardMode>0</es:standardMode>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+<es:muxMode>0</es:muxMode>
+<es:msDegThreshold>30</es:msDegThreshold>
+<es:msDegM>7</es:msDegM>
+<es:msRdiReporting>false</es:msRdiReporting>
+<es:msAisReporting>false</es:msAisReporting>
+<es:loopBack>0</es:loopBack>
+</es:vsDataOs155SpiTtp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataOs155SpiTtp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataOs155SpiTtp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:lineNo>1</es:lineNo>
+<es:standardMode>0</es:standardMode>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+<es:muxMode>0</es:muxMode>
+<es:msDegThreshold>30</es:msDegThreshold>
+<es:msDegM>7</es:msDegM>
+<es:msRdiReporting>false</es:msRdiReporting>
+<es:msAisReporting>false</es:msAisReporting>
+<es:loopBack>0</es:loopBack>
+</es:vsDataOs155SpiTtp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc4Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc4Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:pathTraceFormat>16</es:pathTraceFormat>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:auAisReporting>false</es:auAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+</es:vsDataVc4Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="31" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="32" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="33" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="34" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="35" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="36" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="37" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="38" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="39" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="40" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="41" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="42" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="43" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="44" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="45" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="46" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="47" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="48" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="49" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="50" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="51" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="52" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="53" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="54" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="55" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="56" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="57" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="58" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="59" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="60" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="61" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="62" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="63" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVc12Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVc12Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:vcDegThreshold>30</es:vcDegThreshold>
+<es:vcDegM>7</es:vcDegM>
+<es:tuAisReporting>false</es:tuAisReporting>
+<es:vcRdiReporting>false</es:vcRdiReporting>
+<es:administrativeState>0</es:administrativeState>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataVc12Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataE1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSts3CspeTtp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataSts3CspeTtp>
+
+<es:userLabel> </es:userLabel>
+<es:aisPReporting>false</es:aisPReporting>
+<es:rdiPReporting>false</es:rdiPReporting>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+</es:vsDataSts3CspeTtp>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSts1SpeTtp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataSts1SpeTtp>
+
+<es:userLabel> </es:userLabel>
+<es:aisPReporting>false</es:aisPReporting>
+<es:rdiPReporting>false</es:rdiPReporting>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+</es:vsDataSts1SpeTtp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSts1SpeTtp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataSts1SpeTtp>
+
+<es:userLabel> </es:userLabel>
+<es:aisPReporting>false</es:aisPReporting>
+<es:rdiPReporting>false</es:rdiPReporting>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+</es:vsDataSts1SpeTtp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSts1SpeTtp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataSts1SpeTtp>
+
+<es:userLabel> </es:userLabel>
+<es:aisPReporting>false</es:aisPReporting>
+<es:rdiPReporting>false</es:rdiPReporting>
+<es:timConsequentAction>false</es:timConsequentAction>
+<es:expectedPathTrace> </es:expectedPathTrace>
+<es:transmittedPathTrace> </es:transmittedPathTrace>
+</es:vsDataSts1SpeTtp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataVt15Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataVt15Ttp>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:aisVreporting>false</es:aisVreporting>
+<es:rdiVreporting>false</es:rdiVreporting>
+<es:shutDownTimer>1800</es:shutDownTimer>
+</es:vsDataVt15Ttp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataT1Ttp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1Ttp>
+
+<es:userLabel> </es:userLabel>
+<es:aisReporting>false</es:aisReporting>
+<es:rdiReporting>false</es:rdiReporting>
+<es:idlePattern>0</es:idlePattern>
+</es:vsDataT1Ttp>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataE3PhysPathTerm</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE3PhysPathTerm>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+<es:lineNo>1</es:lineNo>
+<es:loopback>0</es:loopback>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:rdiReporting>false</es:rdiReporting>
+<es:aisReporting>false</es:aisReporting>
+</es:vsDataE3PhysPathTerm>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataT3PhysPathTerm</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT3PhysPathTerm>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+<es:lineNo>1</es:lineNo>
+<es:loopback>0</es:loopback>
+<es:rdiReporting>false</es:rdiReporting>
+<es:aisReporting>false</es:aisReporting>
+</es:vsDataT3PhysPathTerm>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataE1PhysPathTerm</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataE1PhysPathTerm>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:lineNo>1</es:lineNo>
+<es:loopback>0</es:loopback>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:rdiReporting>false</es:rdiReporting>
+<es:aisReporting>false</es:aisReporting>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataE1PhysPathTerm></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ta1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataE1PhysPathTerm</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataE1PhysPathTerm>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:lineNo>1</es:lineNo>
+<es:loopback>0</es:loopback>
+<es:crc4Mode>1</es:crc4Mode>
+<es:idlePattern>0</es:idlePattern>
+<es:degDegThr>30</es:degDegThr>
+<es:degDegM>7</es:degDegM>
+<es:rdiReporting>false</es:rdiReporting>
+<es:aisReporting>false</es:aisReporting>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataE1PhysPathTerm>
+</xn:attributes>
+<xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataDs0Bundle</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataDs0Bundle>
+
+<es:userLabel> </es:userLabel>
+<es:listOfTimeSlots></es:listOfTimeSlots>
+<es:tdmMode>true</es:tdmMode>
+</es:vsDataDs0Bundle>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataJ1PhysPathTerm</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataJ1PhysPathTerm>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:lineNo>1</es:lineNo>
+<es:loopback>0</es:loopback>
+<es:idlePattern>0</es:idlePattern>
+<es:physicalLineType>0</es:physicalLineType>
+<es:degThreshold>6</es:degThreshold>
+<es:rdiReporting>false</es:rdiReporting>
+<es:aisReporting>false</es:aisReporting>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+</es:vsDataJ1PhysPathTerm>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataT1PhysPathTerm</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataT1PhysPathTerm>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:lineNo>1</es:lineNo>
+<es:loopback>0</es:loopback>
+<es:rdiReporting>false</es:rdiReporting>
+<es:aisReporting>false</es:aisReporting>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+<es:idlePattern>0</es:idlePattern>
+<es:transmissionMode>0</es:transmissionMode>
+</es:vsDataT1PhysPathTerm>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEtMfg</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataEtMfg>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataEtMfg></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ta1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataEtMfg</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEtMfg>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataEtMfg>
+</xn:attributes>
+<xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGigaBitEthernet</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGigaBitEthernet>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:dscpPbitMap></es:dscpPbitMap>
+<es:autoNegotiation>true</es:autoNegotiation>
+<es:frameFormat>0</es:frameFormat>
+<es:primaryLink>0</es:primaryLink>
+<es:protectiveMode>true</es:protectiveMode>
+<es:shutDownTimeout>1800</es:shutDownTimeout>
+<es:statePropagationDelay>25</es:statePropagationDelay>
+<es:switchBackTimer>30</es:switchBackTimer>
+</es:vsDataGigaBitEthernet>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGeneralProcessorUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataGeneralProcessorUnit>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataGeneralProcessorUnit></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ta1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataGeneralProcessorUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGeneralProcessorUnit>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataGeneralProcessorUnit>
+</xn:attributes>
+<xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFastEthernet</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFastEthernet>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel> </es:userLabel>
+<es:defaultRouter> </es:defaultRouter>
+<es:mtu>1500</es:mtu>
+<es:networkPrefixLength>0</es:networkPrefixLength>
+</es:vsDataFastEthernet>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="ta1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataMediumAccessUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataMediumAccessUnit>
+
+<es:userLabel> </es:userLabel>
+<es:connectorLabel>Eth</es:connectorLabel>
+</es:vsDataMediumAccessUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSlot</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSlot />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPlugInUnit</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPlugInUnit>
+
+<es:administrativeState>0</es:administrativeState>
+<es:allowedSeqRestarts>3</es:allowedSeqRestarts>
+<es:piuGroupNumber>0</es:piuGroupNumber>
+<es:piuType>0</es:piuType>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataPlugInUnit>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSystemFunctions</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataSystemFunctions />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataPmService</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPmService>
+
+<es:minorAlarmCeasingDelta>5</es:minorAlarmCeasingDelta>
+<es:warningAlarmLimitPercent>80</es:warningAlarmLimitPercent>
+<es:warningAlarmCeasingDelta>5</es:warningAlarmCeasingDelta>
+</es:vsDataPmService>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataLicensing</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataLicensing />
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataRncFeature</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRncFeature>
+
+<es:featureState>0</es:featureState>
+
+
+
+
+</es:vsDataRncFeature>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIpOam</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpOam>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataIpOam>
+</xn:attributes><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataIp>
+
+<es:dnsServer>127.0.0.1</es:dnsServer>
+<es:isRecursiveSearch>true</es:isRecursiveSearch>
+<es:isSubDomainName>true</es:isSubDomainName>
+<es:userLabel> </es:userLabel>
+<es:retransInterval>4</es:retransInterval>
+<es:noOfRetrans>5</es:noOfRetrans>
+<es:isDefDomainName>false</es:isDefDomainName>
+<es:defDomainName> </es:defDomainName>
+<es:useHostFile>true</es:useHostFile>
+<es:dscp>0</es:dscp>
+<es:icmpRedirect>true</es:icmpRedirect>
+<es:udpChecksumState>1</es:udpChecksumState>
+<es:connectionAttemptTimer>75</es:connectionAttemptTimer>
+<es:maxRetransmissionAttempts>10</es:maxRetransmissionAttempts>
+<es:workingMode>0</es:workingMode>
+</es:vsDataIp></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIp</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIp>
+
+<es:dnsServer>127.0.0.1</es:dnsServer>
+<es:isRecursiveSearch>true</es:isRecursiveSearch>
+<es:isSubDomainName>true</es:isSubDomainName>
+<es:userLabel> </es:userLabel>
+<es:retransInterval>4</es:retransInterval>
+<es:noOfRetrans>5</es:noOfRetrans>
+<es:isDefDomainName>false</es:isDefDomainName>
+<es:defDomainName> </es:defDomainName>
+<es:useHostFile>true</es:useHostFile>
+<es:dscp>0</es:dscp>
+<es:icmpRedirect>true</es:icmpRedirect>
+<es:udpChecksumState>1</es:udpChecksumState>
+<es:connectionAttemptTimer>75</es:connectionAttemptTimer>
+<es:maxRetransmissionAttempts>10</es:maxRetransmissionAttempts>
+<es:workingMode>0</es:workingMode>
+</es:vsDataIp>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIpRoutingTable</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpRoutingTable>
+
+
+<es:userLabel> </es:userLabel>
+</es:vsDataIpRoutingTable>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEthernetLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEthernetLink>
+
+<es:ipAddress> </es:ipAddress>
+<es:subnetMask> </es:subnetMask>
+<es:broadcastAddress> </es:broadcastAddress>
+
+
+<es:metric>1</es:metric>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataEthernetLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIpAtmLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpAtmLink>
+
+
+<es:ipAddress> </es:ipAddress>
+<es:metric>1</es:metric>
+<es:monitor>true</es:monitor>
+<es:monitorInterval>10</es:monitorInterval>
+<es:monitorRetries>10</es:monitorRetries>
+<es:mtuSize>1500</es:mtuSize>
+<es:subnetMask> </es:subnetMask>
+<es:userLabel> </es:userLabel>
+<es:aal5TpVccTpId>0</es:aal5TpVccTpId>
+</es:vsDataIpAtmLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1-1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIpAtmLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpAtmLink>
+
+
+<es:ipAddress> </es:ipAddress>
+<es:metric>1</es:metric>
+<es:monitor>true</es:monitor>
+<es:monitorInterval>10</es:monitorInterval>
+<es:monitorRetries>10</es:monitorRetries>
+<es:mtuSize>1500</es:mtuSize>
+<es:subnetMask> </es:subnetMask>
+<es:userLabel> </es:userLabel>
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b1-x1</es:aal5TpVccTpId>
+</es:vsDataIpAtmLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1-2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIpAtmLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpAtmLink>
+
+
+<es:ipAddress> </es:ipAddress>
+<es:metric>1</es:metric>
+<es:monitor>true</es:monitor>
+<es:monitorInterval>10</es:monitorInterval>
+<es:monitorRetries>10</es:monitorRetries>
+<es:mtuSize>1500</es:mtuSize>
+<es:subnetMask> </es:subnetMask>
+<es:userLabel> </es:userLabel>
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b1-x2</es:aal5TpVccTpId>
+</es:vsDataIpAtmLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2-1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIpAtmLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpAtmLink>
+
+
+<es:ipAddress> </es:ipAddress>
+<es:metric>1</es:metric>
+<es:monitor>true</es:monitor>
+<es:monitorInterval>10</es:monitorInterval>
+<es:monitorRetries>10</es:monitorRetries>
+<es:mtuSize>1500</es:mtuSize>
+<es:subnetMask> </es:subnetMask>
+<es:userLabel> </es:userLabel>
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b2-x1</es:aal5TpVccTpId>
+</es:vsDataIpAtmLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2-2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIpAtmLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpAtmLink>
+
+
+<es:ipAddress> </es:ipAddress>
+<es:metric>1</es:metric>
+<es:monitor>true</es:monitor>
+<es:monitorInterval>10</es:monitorInterval>
+<es:monitorRetries>10</es:monitorRetries>
+<es:mtuSize>1500</es:mtuSize>
+<es:subnetMask> </es:subnetMask>
+<es:userLabel> </es:userLabel>
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b2-x2</es:aal5TpVccTpId>
+</es:vsDataIpAtmLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3-1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIpAtmLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpAtmLink>
+
+
+<es:ipAddress> </es:ipAddress>
+<es:metric>1</es:metric>
+<es:monitor>true</es:monitor>
+<es:monitorInterval>10</es:monitorInterval>
+<es:monitorRetries>10</es:monitorRetries>
+<es:mtuSize>1500</es:mtuSize>
+<es:subnetMask> </es:subnetMask>
+<es:userLabel> </es:userLabel>
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b3-x1</es:aal5TpVccTpId>
+</es:vsDataIpAtmLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3-2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIpAtmLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpAtmLink>
+
+
+<es:ipAddress> </es:ipAddress>
+<es:metric>1</es:metric>
+<es:monitor>true</es:monitor>
+<es:monitorInterval>10</es:monitorInterval>
+<es:monitorRetries>10</es:monitorRetries>
+<es:mtuSize>1500</es:mtuSize>
+<es:subnetMask> </es:subnetMask>
+<es:userLabel> </es:userLabel>
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b3-x2</es:aal5TpVccTpId>
+</es:vsDataIpAtmLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4-1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIpAtmLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpAtmLink>
+
+
+<es:ipAddress> </es:ipAddress>
+<es:metric>1</es:metric>
+<es:monitor>true</es:monitor>
+<es:monitorInterval>10</es:monitorInterval>
+<es:monitorRetries>10</es:monitorRetries>
+<es:mtuSize>1500</es:mtuSize>
+<es:subnetMask> </es:subnetMask>
+<es:userLabel> </es:userLabel>
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b4-x1</es:aal5TpVccTpId>
+</es:vsDataIpAtmLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4-2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIpAtmLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIpAtmLink>
+
+
+<es:ipAddress> </es:ipAddress>
+<es:metric>1</es:metric>
+<es:monitor>true</es:monitor>
+<es:monitorInterval>10</es:monitorInterval>
+<es:monitorRetries>10</es:monitorRetries>
+<es:mtuSize>1500</es:mtuSize>
+<es:subnetMask> </es:subnetMask>
+<es:userLabel> </es:userLabel>
+<es:aal5TpVccTpId>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataAal5TpVccTp=b4-x2</es:aal5TpVccTpId>
+</es:vsDataIpAtmLink>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataOspf</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataOspf>
+
+<es:ipMo>0</es:ipMo>
+<es:ospfASBdrRtrStatus>false</es:ospfASBdrRtrStatus>
+
+<es:ospfRouterId> </es:ospfRouterId>
+<es:recoverTopoDb>true</es:recoverTopoDb>
+<es:topoDbStoreInterv>60</es:topoDbStoreInterv>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataOspf></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataOspf</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataOspf>
+
+<es:ipMo>0</es:ipMo>
+<es:ospfASBdrRtrStatus>false</es:ospfASBdrRtrStatus>
+
+<es:ospfRouterId> </es:ospfRouterId>
+<es:recoverTopoDb>true</es:recoverTopoDb>
+<es:topoDbStoreInterv>60</es:topoDbStoreInterv>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataOspf>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataOspfInterface</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataOspfInterface>
+
+<es:helloInterval>10</es:helloInterval>
+<es:interfacePriority>1</es:interfacePriority>
+<es:interfaceTransitDelay>1</es:interfaceTransitDelay>
+<es:lsaTransmissionInterval>5</es:lsaTransmissionInterval>
+<es:ospfAreaRelated>0</es:ospfAreaRelated>
+<es:relatedLink>0</es:relatedLink>
+<es:routerDeadInterval>40</es:routerDeadInterval>
+<es:userLabel> </es:userLabel>
+</es:vsDataOspfInterface>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataOspfArea</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataOspfArea>
+
+<es:areaId> </es:areaId>
+
+<es:importExternalLsa>true</es:importExternalLsa>
+<es:sendAreaSummary>false</es:sendAreaSummary>
+<es:stubArea>false</es:stubArea>
+<es:stubAreaMetric>1</es:stubAreaMetric>
+<es:stubAreaMetricType>0</es:stubAreaMetricType>
+<es:userLabel> </es:userLabel>
+<es:range0>
+<es:ipAddress></es:ipAddress>
+<es:subnetMask></es:subnetMask>
+<es:advertise>true</es:advertise></es:range0>
+
+
+</es:vsDataOspfArea>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<un:RncFunction id="1" modifier="update">
+<un:attributes>
+
+<un:userLabel>/proj/netsimproj/public/ftp/simulations/WRAN/R5/Standard/E/V2</un:userLabel>
+<un:mcc>353</un:mcc>
+<un:mnc>77</un:mnc>
+<un:rncId>1</un:rncId>
+</un:attributes>
+
+<un:IubLink id="1" modifier="create">
+<un:attributes>
+
+</un:attributes>
+</un:IubLink>
+
+<un:IubLink id="1" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIubLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIubLink>
+
+<es:rbsId>1</es:rbsId>
+<es:dlHwAdm>100</es:dlHwAdm>
+<es:ulHwAdm>100</es:ulHwAdm>
+
+<es:preferredSubrackRef>0</es:preferredSubrackRef>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIubLink>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataNodeSynch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNodeSynch>
+
+<es:userLabel> </es:userLabel>
+<es:phaseDiffThreshold>100</es:phaseDiffThreshold>
+
+
+<es:sampleIntervalSup>10</es:sampleIntervalSup>
+<es:fixedWindowSizeSup>10</es:fixedWindowSizeSup>
+<es:slidingWindowSize>100</es:slidingWindowSize>
+</es:vsDataNodeSynch>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataNbapCommon</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNbapCommon>
+
+<es:userLabel> </es:userLabel>
+<es:l2EstablishReqRetryT>5</es:l2EstablishReqRetryT>
+<es:activeUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b1ca</es:activeUniSaalTpRef>
+<es:standbyUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b1cb</es:standbyUniSaalTpRef>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataNbapCommon>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataNbapDedicated</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNbapDedicated>
+
+<es:l2EstablishReqRetryT>5</es:l2EstablishReqRetryT>
+<es:activeUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b1da</es:activeUniSaalTpRef>
+<es:standbyUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b1db</es:standbyUniSaalTpRef>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataNbapDedicated>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIubEdch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIubEdch>
+
+<es:edchDataFrameDelayThreshold>60</es:edchDataFrameDelayThreshold>
+</es:vsDataIubEdch>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:IubLink>
+<un:IubLink id="2" modifier="create">
+<un:attributes>
+
+</un:attributes>
+</un:IubLink>
+
+<un:IubLink id="2" modifier="update">
+
+<xn:VsDataContainer id="2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIubLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIubLink>
+
+<es:rbsId>2</es:rbsId>
+<es:dlHwAdm>100</es:dlHwAdm>
+<es:ulHwAdm>100</es:ulHwAdm>
+
+<es:preferredSubrackRef>0</es:preferredSubrackRef>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIubLink>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataNodeSynch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNodeSynch>
+
+<es:userLabel> </es:userLabel>
+<es:phaseDiffThreshold>100</es:phaseDiffThreshold>
+
+
+<es:sampleIntervalSup>10</es:sampleIntervalSup>
+<es:fixedWindowSizeSup>10</es:fixedWindowSizeSup>
+<es:slidingWindowSize>100</es:slidingWindowSize>
+</es:vsDataNodeSynch>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataNbapCommon</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNbapCommon>
+
+<es:userLabel> </es:userLabel>
+<es:l2EstablishReqRetryT>5</es:l2EstablishReqRetryT>
+<es:activeUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b2ca</es:activeUniSaalTpRef>
+<es:standbyUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b2cb</es:standbyUniSaalTpRef>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataNbapCommon>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataNbapDedicated</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNbapDedicated>
+
+<es:l2EstablishReqRetryT>5</es:l2EstablishReqRetryT>
+<es:activeUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b2da</es:activeUniSaalTpRef>
+<es:standbyUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b2db</es:standbyUniSaalTpRef>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataNbapDedicated>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIubEdch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIubEdch>
+
+<es:edchDataFrameDelayThreshold>60</es:edchDataFrameDelayThreshold>
+</es:vsDataIubEdch>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:IubLink>
+<un:IubLink id="3" modifier="create">
+<un:attributes>
+
+</un:attributes>
+</un:IubLink>
+
+<un:IubLink id="3" modifier="update">
+
+<xn:VsDataContainer id="3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIubLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIubLink>
+
+<es:rbsId>3</es:rbsId>
+<es:dlHwAdm>100</es:dlHwAdm>
+<es:ulHwAdm>100</es:ulHwAdm>
+
+<es:preferredSubrackRef>0</es:preferredSubrackRef>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIubLink>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataNodeSynch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNodeSynch>
+
+<es:userLabel> </es:userLabel>
+<es:phaseDiffThreshold>100</es:phaseDiffThreshold>
+
+
+<es:sampleIntervalSup>10</es:sampleIntervalSup>
+<es:fixedWindowSizeSup>10</es:fixedWindowSizeSup>
+<es:slidingWindowSize>100</es:slidingWindowSize>
+</es:vsDataNodeSynch>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataNbapCommon</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNbapCommon>
+
+<es:userLabel> </es:userLabel>
+<es:l2EstablishReqRetryT>5</es:l2EstablishReqRetryT>
+<es:activeUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b3ca</es:activeUniSaalTpRef>
+<es:standbyUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b3cb</es:standbyUniSaalTpRef>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataNbapCommon>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataNbapDedicated</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNbapDedicated>
+
+<es:l2EstablishReqRetryT>5</es:l2EstablishReqRetryT>
+<es:activeUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b3da</es:activeUniSaalTpRef>
+<es:standbyUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b3db</es:standbyUniSaalTpRef>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataNbapDedicated>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIubEdch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIubEdch>
+
+<es:edchDataFrameDelayThreshold>60</es:edchDataFrameDelayThreshold>
+</es:vsDataIubEdch>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:IubLink>
+<un:IubLink id="4" modifier="create">
+<un:attributes>
+
+</un:attributes>
+</un:IubLink>
+
+<un:IubLink id="4" modifier="update">
+
+<xn:VsDataContainer id="4" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIubLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIubLink>
+
+<es:rbsId>4</es:rbsId>
+<es:dlHwAdm>100</es:dlHwAdm>
+<es:ulHwAdm>100</es:ulHwAdm>
+
+<es:preferredSubrackRef>0</es:preferredSubrackRef>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIubLink>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataNodeSynch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNodeSynch>
+
+<es:userLabel> </es:userLabel>
+<es:phaseDiffThreshold>100</es:phaseDiffThreshold>
+
+
+<es:sampleIntervalSup>10</es:sampleIntervalSup>
+<es:fixedWindowSizeSup>10</es:fixedWindowSizeSup>
+<es:slidingWindowSize>100</es:slidingWindowSize>
+</es:vsDataNodeSynch>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataNbapCommon</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNbapCommon>
+
+<es:userLabel> </es:userLabel>
+<es:l2EstablishReqRetryT>5</es:l2EstablishReqRetryT>
+<es:activeUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b4ca</es:activeUniSaalTpRef>
+<es:standbyUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b4cb</es:standbyUniSaalTpRef>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataNbapCommon>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataNbapDedicated</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataNbapDedicated>
+
+<es:l2EstablishReqRetryT>5</es:l2EstablishReqRetryT>
+<es:activeUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b4da</es:activeUniSaalTpRef>
+<es:standbyUniSaalTpRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,vsDataTransportNetwork=1,vsDataUniSaalTp=b4db</es:standbyUniSaalTpRef>
+<es:userLabel> </es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+</es:vsDataNbapDedicated>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIubEdch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIubEdch>
+
+<es:edchDataFrameDelayThreshold>60</es:edchDataFrameDelayThreshold>
+</es:vsDataIubEdch>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:IubLink>
+<un:UtranCell id="RNC01-1-1" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-1-1</un:userLabel>
+<un:cId>1</un:cId>
+<un:localCellId>1</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>5</un:uarfcnDl>
+<un:primaryScramblingCode>1</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=1</un:utranCellIubLink>
+<un:lac>3417</un:lac>
+<un:rac>3418</un:rac>
+<un:sac>3419</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-1-1" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-1-1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>1</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=1</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-1-1</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-1-1</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-1-1</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-1-1</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-1-1</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-1-1</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-1-2</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-1-2" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-1-2</un:userLabel>
+<un:cId>2</un:cId>
+<un:localCellId>2</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>5</un:uarfcnDl>
+<un:primaryScramblingCode>2</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=1</un:utranCellIubLink>
+<un:lac>3417</un:lac>
+<un:rac>3418</un:rac>
+<un:sac>3420</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-1-2" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-1-2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>2</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=1</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-1-2</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-1-2</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-1-2</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-1-2</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-1-2</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-1-2</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-1-3</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-1-3" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-1-3</un:userLabel>
+<un:cId>3</un:cId>
+<un:localCellId>3</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>5</un:uarfcnDl>
+<un:primaryScramblingCode>3</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=1</un:utranCellIubLink>
+<un:lac>3417</un:lac>
+<un:rac>3418</un:rac>
+<un:sac>3421</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-1-3" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-1-3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>3</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=1</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-1-3</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-1-3</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-1-3</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-1-3</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-1-3</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-1-3</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-1-1</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-2-1" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-2-1</un:userLabel>
+<un:cId>4</un:cId>
+<un:localCellId>1</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>6</un:uarfcnDl>
+<un:primaryScramblingCode>4</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=2</un:utranCellIubLink>
+<un:lac>3422</un:lac>
+<un:rac>3423</un:rac>
+<un:sac>3424</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-2-1" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-2-1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>1</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=2</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-2-1</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-2-1</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-2-1</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-2-1</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-2-1</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-2-1</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-2-2</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-2-2" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-2-2</un:userLabel>
+<un:cId>5</un:cId>
+<un:localCellId>2</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>6</un:uarfcnDl>
+<un:primaryScramblingCode>5</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=2</un:utranCellIubLink>
+<un:lac>3422</un:lac>
+<un:rac>3423</un:rac>
+<un:sac>3425</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-2-2" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-2-2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>2</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=2</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-2-2</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-2-2</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-2-2</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-2-2</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-2-2</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-2-2</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-2-3</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-2-3" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-2-3</un:userLabel>
+<un:cId>6</un:cId>
+<un:localCellId>3</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>6</un:uarfcnDl>
+<un:primaryScramblingCode>6</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=2</un:utranCellIubLink>
+<un:lac>3422</un:lac>
+<un:rac>3423</un:rac>
+<un:sac>3426</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-2-3" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-2-3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>3</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=2</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-2-3</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-2-3</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-2-3</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-2-3</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-2-3</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-2-3</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-2-1</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-3-1" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-3-1</un:userLabel>
+<un:cId>7</un:cId>
+<un:localCellId>1</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>7</un:uarfcnDl>
+<un:primaryScramblingCode>7</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=3</un:utranCellIubLink>
+<un:lac>3427</un:lac>
+<un:rac>3428</un:rac>
+<un:sac>3429</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-3-1" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-3-1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>1</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=3</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-3-1</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-3-1</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-3-1</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-3-1</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-3-1</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-3-1</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-3-2</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-3-2" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-3-2</un:userLabel>
+<un:cId>8</un:cId>
+<un:localCellId>2</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>7</un:uarfcnDl>
+<un:primaryScramblingCode>8</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=3</un:utranCellIubLink>
+<un:lac>3427</un:lac>
+<un:rac>3428</un:rac>
+<un:sac>3430</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-3-2" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-3-2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>2</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=3</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-3-2</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-3-2</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-3-2</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-3-2</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-3-2</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-3-2</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-3-3</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-3-3" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-3-3</un:userLabel>
+<un:cId>9</un:cId>
+<un:localCellId>3</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>7</un:uarfcnDl>
+<un:primaryScramblingCode>9</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=3</un:utranCellIubLink>
+<un:lac>3427</un:lac>
+<un:rac>3428</un:rac>
+<un:sac>3431</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-3-3" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-3-3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>3</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=3</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-3-3</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-3-3</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-3-3</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-3-3</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-3-3</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-3-3</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-3-1</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-4-1" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-4-1</un:userLabel>
+<un:cId>10</un:cId>
+<un:localCellId>1</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>8</un:uarfcnDl>
+<un:primaryScramblingCode>10</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=4</un:utranCellIubLink>
+<un:lac>3432</un:lac>
+<un:rac>3433</un:rac>
+<un:sac>3434</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-4-1" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-4-1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>1</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=4</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-4-1</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-4-1</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-4-1</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-4-1</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-4-1</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-4-1</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-4-2</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-4-2" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-4-2</un:userLabel>
+<un:cId>11</un:cId>
+<un:localCellId>2</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>8</un:uarfcnDl>
+<un:primaryScramblingCode>11</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=4</un:utranCellIubLink>
+<un:lac>3432</un:lac>
+<un:rac>3433</un:rac>
+<un:sac>3435</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-4-2" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=1</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=2</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-4-2" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>2</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=4</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-4-2</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-4-2</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-4-2</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-4-2</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-4-2</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-4-2</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-4-3</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<un:UtranCell id="RNC01-4-3" modifier="create">
+<un:attributes>
+
+<un:userLabel>RNC01-4-3</un:userLabel>
+<un:cId>12</un:cId>
+<un:localCellId>3</un:localCellId>
+<un:uarfcnUl>12</un:uarfcnUl>
+<un:uarfcnDl>8</un:uarfcnDl>
+<un:primaryScramblingCode>12</un:primaryScramblingCode>
+<un:primaryCpichPower>300</un:primaryCpichPower>
+<un:maximumTransmissionPower>400</un:maximumTransmissionPower>
+<un:primarySchPower>-18</un:primarySchPower>
+<un:secondarySchPower>-35</un:secondarySchPower>
+<un:bchPower>-31</un:bchPower>
+<un:utranCellIubLink>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=4</un:utranCellIubLink>
+<un:lac>3432</un:lac>
+<un:rac>3433</un:rac>
+<un:sac>3436</un:sac>
+</un:attributes>
+</un:UtranCell>
+
+<un:UtranCell id="RNC01-4-3" modifier="update">
+
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>1</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>2</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>3</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>4</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>5</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>6</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>7</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>8</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>9</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>10</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="11" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>11</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="12" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>12</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="13" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>13</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="14" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>14</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="15" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>15</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="16" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>16</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="17" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>17</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="18" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>18</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="19" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>19</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="20" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>20</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="21" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>21</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="22" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>22</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="23" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>23</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="24" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>24</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="25" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>25</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="26" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>26</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="27" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>27</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="28" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>28</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="29" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>29</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="30" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranRelation>
+
+<es:qOffset1sn>0</es:qOffset1sn>
+<es:qOffset2sn>0</es:qOffset2sn>
+<es:loadSharingCandidate>0</es:loadSharingCandidate>
+<es:selectionPriority>30</es:selectionPriority>
+
+<es:hcsSib11Config>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs>
+<es:penaltyTime>0</es:penaltyTime>
+<es:temporaryOffset1>0</es:temporaryOffset1>
+<es:temporaryOffset2>0</es:temporaryOffset2></es:hcsSib11Config>
+</es:vsDataUtranRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>31</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=3</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>32</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=4</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>33</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=5</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>34</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=6</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>35</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=7</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>36</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=8</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>37</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=9</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>38</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50101</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>39</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50102</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataGsmRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataGsmRelation>
+
+<es:qOffset1sn>7</es:qOffset1sn>
+<es:mobilityRelationType>0</es:mobilityRelationType>
+<es:selectionPriority>40</es:selectionPriority>
+<es:externalGsmCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,ExternalGsmNetwork=84,ExternalGsmCell=50103</es:externalGsmCellRef>
+</es:vsDataGsmRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="RNC01-4-3" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranCell</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranCell>
+
+<es:tCell>3</es:tCell>
+<es:cellReserved>1</es:cellReserved>
+<es:treSelection>2</es:treSelection>
+<es:qualMeasQuantity>2</es:qualMeasQuantity>
+<es:qHyst1>4</es:qHyst1>
+<es:qHyst2>4</es:qHyst2>
+<es:qQualMin>-24</es:qQualMin>
+<es:qRxLevMin>-115</es:qRxLevMin>
+<es:individualOffset>0</es:individualOffset>
+<es:pwrAdm>75</es:pwrAdm>
+<es:pwrOffset>5</es:pwrOffset>
+<es:pwrHyst>300</es:pwrHyst>
+<es:tmCongAction>2000</es:tmCongAction>
+<es:releaseAseDl>1</es:releaseAseDl>
+<es:aseDlAdm>240</es:aseDlAdm>
+<es:dlCodeAdm>80</es:dlCodeAdm>
+<es:aseUlAdm>160</es:aseUlAdm>
+<es:sf8Adm>8</es:sf8Adm>
+<es:sf32Adm>32</es:sf32Adm>
+<es:minPwrRl>-150</es:minPwrRl>
+<es:maxRate>40690</es:maxRate>
+<es:interRate>7760</es:interRate>
+<es:minimumRate>1590</es:minimumRate>
+<es:maxPwrMax>48</es:maxPwrMax>
+<es:interPwrMax>38</es:interPwrMax>
+<es:minPwrMax>0</es:minPwrMax>
+<es:compModeAdm>15</es:compModeAdm>
+<es:iFHyst>6000</es:iFHyst>
+<es:iFCong>621</es:iFCong>
+<es:interFreqFddMeasIndicator>0</es:interFreqFddMeasIndicator>
+<es:sRatSearch>4</es:sRatSearch>
+<es:sIntraSearch>0</es:sIntraSearch>
+<es:sInterSearch>0</es:sInterSearch>
+<es:fachMeasOccaCycLenCoeff>0</es:fachMeasOccaCycLenCoeff>
+
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:accessClassNBarred>0</es:accessClassNBarred>
+<es:accessClassNBarred>1</es:accessClassNBarred>
+<es:utranCellPosition></es:utranCellPosition>
+<es:maxTxPowerUl>24</es:maxTxPowerUl>
+
+<es:sib1PlmnScopeValueTag>0</es:sib1PlmnScopeValueTag>
+<es:sf16Adm>16</es:sf16Adm>
+<es:hoType>1</es:hoType>
+<es:usedFreqThresh2dEcno>-12</es:usedFreqThresh2dEcno>
+<es:usedFreqThresh2dRscp>-97</es:usedFreqThresh2dRscp>
+<es:administrativeState>0</es:administrativeState>
+<es:loadSharingGsmThreshold>75</es:loadSharingGsmThreshold>
+<es:loadSharingGsmFraction>100</es:loadSharingGsmFraction>
+<es:nInSyncInd>3</es:nInSyncInd>
+<es:rlFailureT>10</es:rlFailureT>
+<es:nOutSyncInd>10</es:nOutSyncInd>
+<es:sf4AdmUl>0</es:sf4AdmUl>
+<es:hardIfhoCorr>3</es:hardIfhoCorr>
+<es:hsdpaUsersAdm>10</es:hsdpaUsersAdm>
+<es:loadSharingMargin>0</es:loadSharingMargin>
+<es:sHcsRat>-105</es:sHcsRat>
+<es:sf16gAdm>16</es:sf16gAdm>
+<es:releaseAseDlNg>3</es:releaseAseDlNg>
+<es:tmCongActionNg>800</es:tmCongActionNg>
+<es:tmInitialG>3000</es:tmInitialG>
+<es:sf16AdmUl>16</es:sf16AdmUl>
+<es:sf8AdmUl>8</es:sf8AdmUl>
+<es:sf8gAdmUl>0</es:sf8gAdmUl>
+<es:iubLinkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,IubLink=4</es:iubLinkRef>
+<es:eulNonServingCellUsersAdm>100</es:eulNonServingCellUsersAdm>
+<es:eulServingCellUsersAdm>32</es:eulServingCellUsersAdm>
+<es:agpsEnabled>1</es:agpsEnabled>
+<es:codeLoadThresholdDlSf128>100</es:codeLoadThresholdDlSf128>
+<es:pwrLoadThresholdDlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:pwrLoadThresholdDlSpeech>
+<es:aseLoadThresholdUlSpeech>
+<es:amr12200>100</es:amr12200>
+<es:amr7950>100</es:amr7950>
+<es:amr5900>100</es:amr5900></es:aseLoadThresholdUlSpeech>
+
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>0</es:accessClassesBarredCs>
+<es:accessClassesBarredCs>1</es:accessClassesBarredCs>
+
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>0</es:accessClassesBarredPs>
+<es:accessClassesBarredPs>1</es:accessClassesBarredPs>
+<es:rateSelectionPsInteractive>
+<es:channelType>0</es:channelType>
+<es:ulPrefRate>64</es:ulPrefRate>
+<es:dlPrefRate>64</es:dlPrefRate></es:rateSelectionPsInteractive>
+<es:hcsUsage>
+<es:idleMode>0</es:idleMode>
+<es:connectedMode>0</es:connectedMode></es:hcsUsage>
+<es:hcsSib3Config>
+<es:sSearchHcs>-105</es:sSearchHcs>
+<es:hcsPrio>0</es:hcsPrio>
+<es:qHcs>0</es:qHcs></es:hcsSib3Config>
+</es:vsDataUtranCell>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataFach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataFach>
+
+<es:userLabel>Fach-4-3</es:userLabel>
+<es:maxFach1Power>18</es:maxFach1Power>
+<es:maxFach2Power>15</es:maxFach2Power>
+<es:sccpchOffset>0</es:sccpchOffset>
+<es:pOffset1Fach>0</es:pOffset1Fach>
+<es:pOffset3Fach>0</es:pOffset3Fach>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataFach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRach</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRach>
+
+<es:userLabel>Rach-4-3</es:userLabel>
+<es:scramblingCodeWordNo>0</es:scramblingCodeWordNo>
+<es:preambleSignatures>65535</es:preambleSignatures>
+<es:subChannelNo>4095</es:subChannelNo>
+<es:aichTransmissionTiming>4</es:aichTransmissionTiming>
+<es:aichPower>-6</es:aichPower>
+<es:powerOffsetP0>3</es:powerOffsetP0>
+<es:powerOffsetPpm>-4</es:powerOffsetPpm>
+<es:preambleRetransMax>5</es:preambleRetransMax>
+<es:maxPreambleCycle>4</es:maxPreambleCycle>
+<es:constantValueCprach>-27</es:constantValueCprach>
+<es:spreadingFactor>64</es:spreadingFactor>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataRach>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataPch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPch>
+
+<es:userLabel>Pch-4-3</es:userLabel>
+<es:pchPower>-4</es:pchPower>
+<es:pichPower>-7</es:pichPower>
+<es:sccpchOffset>20</es:sccpchOffset>
+<es:administrativeState>1</es:administrativeState>
+</es:vsDataPch>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-4-3</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHsdsch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHsdsch>
+
+<es:administrativeState>0</es:administrativeState>
+<es:userLabel>Hsdsch-4-3</es:userLabel>
+<es:numHsPdschCodes>5</es:numHsPdschCodes>
+<es:deltaAck1>4</es:deltaAck1>
+<es:deltaNack1>4</es:deltaNack1>
+<es:deltaAck2>8</es:deltaAck2>
+<es:deltaNack2>8</es:deltaNack2>
+<es:deltaCqi1>4</es:deltaCqi1>
+<es:deltaCqi2>8</es:deltaCqi2>
+<es:initialCqiRepetitionFactor>1</es:initialCqiRepetitionFactor>
+<es:initialAckNackRepetitionFactor>1</es:initialAckNackRepetitionFactor>
+<es:cqiFeedbackCycle>8</es:cqiFeedbackCycle>
+<es:hsMeasurementPowerOffset>0</es:hsMeasurementPowerOffset>
+<es:codeThresholdPdu656>6</es:codeThresholdPdu656>
+<es:numHsScchCodes>1</es:numHsScchCodes>
+</es:vsDataHsdsch>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataEul</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataEul>
+
+<es:userLabel>Eul-4-3</es:userLabel>
+<es:administrativeState>0</es:administrativeState>
+<es:numEagchCodes>1</es:numEagchCodes>
+<es:numEhichErgchCodes>1</es:numEhichErgchCodes>
+<es:eulMaxTargetRtwp>-499</es:eulMaxTargetRtwp>
+</es:vsDataEul>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCoverageRelation>
+
+<es:utranCellRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,UtranCell=RNC01-4-1</es:utranCellRef>
+<es:coverageIndicator>1</es:coverageIndicator>
+<es:hsPathlossThreshold>170</es:hsPathlossThreshold>
+</es:vsDataCoverageRelation>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer></un:UtranCell>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataRncFunction</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRncFunction>
+
+<es:mncLength>2</es:mncLength>
+<es:emergencyCallRedirect>0</es:emergencyCallRedirect>
+<es:loadSharingDirRetryEnabled>0</es:loadSharingDirRetryEnabled>
+<es:hsCellChangeAllowed>0</es:hsCellChangeAllowed>
+<es:hsOnlyBestCell>1</es:hsOnlyBestCell>
+
+<es:aliasPlmnIdentities>
+<es:mcc>353</es:mcc>
+<es:mnc>77</es:mnc>
+<es:mncLength>2</es:mncLength></es:aliasPlmnIdentities>
+<es:counterAlarmCeaseLimit>95</es:counterAlarmCeaseLimit>
+<es:counterAlarmThreshold>80</es:counterAlarmThreshold>
+<es:counterWarningAlarmCeaseLimit>5</es:counterWarningAlarmCeaseLimit>
+<es:ctrFileSize>5000</es:ctrFileSize>
+<es:gpehDataLevel>0</es:gpehDataLevel>
+<es:gpehFileSize>15000</es:gpehFileSize>
+<es:loadSharingRrcEnabled>0</es:loadSharingRrcEnabled>
+<es:uetrFileSize>275</es:uetrFileSize>
+<es:networkResourceIdentifierLengthCs>0</es:networkResourceIdentifierLengthCs>
+<es:networkResourceIdentifierLengthPs>0</es:networkResourceIdentifierLengthPs>
+<es:hsToDchTrigger>
+<es:servHsChangeInterRnc>0</es:servHsChangeInterRnc>
+<es:servHsChangeIntraRnc>0</es:servHsChangeIntraRnc>
+<es:changeOfBestCellIntraRnc>0</es:changeOfBestCellIntraRnc>
+<es:poorQualityDetected>0</es:poorQualityDetected>
+<es:changeOfBestCellInterRnc>0</es:changeOfBestCellInterRnc></es:hsToDchTrigger>
+<es:ecLocationAttemptUmts>0</es:ecLocationAttemptUmts>
+<es:ecCnSbhoRequestIgnore>0</es:ecCnSbhoRequestIgnore>
+<es:ecCnPriorityLevel>7</es:ecCnPriorityLevel>
+<es:ecSbhoTimer>6</es:ecSbhoTimer>
+<es:primaryCnOperatorRef>0</es:primaryCnOperatorRef>
+</es:vsDataRncFunction>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUePositioning</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUePositioning>
+
+<es:enabledPositioningFeatures>0</es:enabledPositioningFeatures>
+</es:vsDataUePositioning>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUeMeasControl</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUeMeasControl>
+
+<es:userLabel> </es:userLabel>
+<es:reportingRange1a>6</es:reportingRange1a>
+<es:reportingRange1b>10</es:reportingRange1b>
+<es:hysteresis1c>2</es:hysteresis1c>
+<es:hysteresis1d>15</es:hysteresis1d>
+<es:hysteresis2d>0</es:hysteresis2d>
+<es:hysteresis2f>0</es:hysteresis2f>
+<es:gsmThresh3a>-102</es:gsmThresh3a>
+<es:hysteresis3a>0</es:hysteresis3a>
+<es:measQuantity1>2</es:measQuantity1>
+<es:ueTxPowerThresh6a>21</es:ueTxPowerThresh6a>
+<es:ueTxPowerThresh6b>18</es:ueTxPowerThresh6b>
+<es:usedFreqThresh2dEcnoDrnc>-12</es:usedFreqThresh2dEcnoDrnc>
+<es:usedFreqThresh2dRscpDrnc>-97</es:usedFreqThresh2dRscpDrnc>
+<es:usedFreqRelThresh2fEcno>1</es:usedFreqRelThresh2fEcno>
+<es:usedFreqRelThresh2fRscp>3</es:usedFreqRelThresh2fRscp>
+<es:hyst4_2b>10</es:hyst4_2b>
+<es:nonUsedFreqThresh4_2bEcno>-11</es:nonUsedFreqThresh4_2bEcno>
+<es:nonUsedFreqThresh4_2bRscp>-94</es:nonUsedFreqThresh4_2bRscp>
+<es:timeToTrigger1a>11</es:timeToTrigger1a>
+<es:hysteresis1a>0</es:hysteresis1a>
+<es:timeToTrigger1b>12</es:timeToTrigger1b>
+<es:hysteresis1b>0</es:hysteresis1b>
+<es:timeToTrigger1c>11</es:timeToTrigger1c>
+<es:timeToTrigger1d>14</es:timeToTrigger1d>
+<es:timeToTrigger3a>6</es:timeToTrigger3a>
+<es:reportingInterval1a>3</es:reportingInterval1a>
+<es:reportingInterval1c>3</es:reportingInterval1c>
+<es:timeTrigg6a>320</es:timeTrigg6a>
+<es:timeTrigg6b>1280</es:timeTrigg6b>
+<es:timeTrigg4_2b>100</es:timeTrigg4_2b>
+<es:hsHysteresis1d>10</es:hsHysteresis1d>
+<es:hsQualityEstimate>1</es:hsQualityEstimate>
+<es:hsTimeToTrigger1d>640</es:hsTimeToTrigger1d>
+<es:filterCoefficient1>2</es:filterCoefficient1>
+<es:filterCoefficient2>2</es:filterCoefficient2>
+<es:utranFilterCoefficient3>2</es:utranFilterCoefficient3>
+<es:gsmFilterCoefficient3>1</es:gsmFilterCoefficient3>
+<es:filterCoeff6>19</es:filterCoeff6>
+<es:filterCoeff4_2b>2</es:filterCoeff4_2b>
+<es:w1a>0</es:w1a>
+<es:w1b>0</es:w1b>
+<es:usedFreqW2d>0</es:usedFreqW2d>
+<es:usedFreqW2f>0</es:usedFreqW2f>
+<es:usedFreqW4_2b>0</es:usedFreqW4_2b>
+<es:utranW3a>0</es:utranW3a>
+<es:nonUsedFreqW4_2b>0</es:nonUsedFreqW4_2b>
+<es:timeToTrigger2dEcno>320</es:timeToTrigger2dEcno>
+<es:timeToTrigger2fEcno>1280</es:timeToTrigger2fEcno>
+<es:utranRelThresh3aEcno>-1</es:utranRelThresh3aEcno>
+<es:utranRelThresh3aRscp>-3</es:utranRelThresh3aRscp>
+<es:usedFreqRelThresh4_2bEcno>-1</es:usedFreqRelThresh4_2bEcno>
+<es:usedFreqRelThresh4_2bRscp>-3</es:usedFreqRelThresh4_2bRscp>
+<es:timeToTrigger2dRscp>320</es:timeToTrigger2dRscp>
+<es:timeToTrigger2fRscp>1280</es:timeToTrigger2fRscp>
+<es:utranRelThreshRscp>5</es:utranRelThreshRscp>
+<es:event1dRncThreshold>4</es:event1dRncThreshold>
+<es:event1dRncOffset>0</es:event1dRncOffset>
+<es:timeToTrigger6d>320</es:timeToTrigger6d>
+<es:txPowerConnQualMonEnabled>1</es:txPowerConnQualMonEnabled>
+</es:vsDataUeMeasControl>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSid</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataSid>
+
+<es:updateCellReattsNo>5</es:updateCellReattsNo>
+<es:noOfMaxDrxCycles>1</es:noOfMaxDrxCycles>
+<es:noOfMibValueTagRetrans>0</es:noOfMibValueTagRetrans>
+<es:sib1>
+<es:sib1RepPeriod>32</es:sib1RepPeriod>
+<es:sib1StartPos>4</es:sib1StartPos></es:sib1>
+<es:sib11>
+<es:sib11RepPeriod>128</es:sib11RepPeriod>
+<es:sib11StartPos>20</es:sib11StartPos></es:sib11>
+<es:sib12>
+<es:sib12RepPeriod>32</es:sib12RepPeriod>
+<es:sib12StartPos>14</es:sib12StartPos></es:sib12>
+<es:sib3>
+<es:sib3RepPeriod>16</es:sib3RepPeriod>
+<es:sib3StartPos>2</es:sib3StartPos></es:sib3>
+<es:sib5>
+<es:sib5RepPeriod>32</es:sib5RepPeriod>
+<es:sib5StartPos>6</es:sib5StartPos></es:sib5>
+<es:sib7>
+<es:sib7RepPeriod>16</es:sib7RepPeriod>
+<es:sib7StartPos>2</es:sib7StartPos></es:sib7>
+<es:sib7ExpirationTimeFactor>1</es:sib7ExpirationTimeFactor>
+<es:sib2>
+<es:sib2RepPeriod>128</es:sib2RepPeriod>
+<es:sib2StartPos>118</es:sib2StartPos></es:sib2>
+</es:vsDataSid>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataSecurityHandling</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataSecurityHandling>
+
+<es:ciphering>1</es:ciphering>
+</es:vsDataSecurityHandling>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataRrc</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRrc>
+
+<es:t305>3</es:t305>
+</es:vsDataRrc>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataRcs</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRcs>
+
+<es:dchRcLostT>50</es:dchRcLostT>
+<es:cchWaitCuT>9</es:cchWaitCuT>
+<es:hsDschRcLostT>100</es:hsDschRcLostT>
+</es:vsDataRcs>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataRabHandling</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRabHandling>
+
+<es:psStreamingInactivityTimer>30</es:psStreamingInactivityTimer>
+<es:activeQueueMgmt>0</es:activeQueueMgmt>
+<es:dscpValuePsStreaming>18</es:dscpValuePsStreaming>
+<es:state128_128Supported>0</es:state128_128Supported>
+</es:vsDataRabHandling>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataPowerControl</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPowerControl>
+
+<es:cBackOff>0</es:cBackOff>
+<es:ulOuterLoopRegulator>1</es:ulOuterLoopRegulator>
+<es:ulSirStep>10</es:ulSirStep>
+<es:sirMin>-82</es:sirMin>
+<es:sirMax>100</es:sirMax>
+<es:dlPcMethod>3</es:dlPcMethod>
+<es:cPO>0</es:cPO>
+<es:pO1>0</es:pO1>
+<es:pO2>12</es:pO2>
+<es:pO3>12</es:pO3>
+<es:ecNoPcpichDefault>-16</es:ecNoPcpichDefault>
+<es:pcpichPowerDefault>33</es:pcpichPowerDefault>
+<es:fixedPowerDl>65</es:fixedPowerDl>
+<es:cNbifho>10</es:cNbifho>
+<es:fixedRefPower>65</es:fixedRefPower>
+<es:initShoPowerParam>-2</es:initShoPowerParam>
+<es:dlInitSirTarget>41</es:dlInitSirTarget>
+<es:ulInitSirTargetExtraHigh>92</es:ulInitSirTargetExtraHigh>
+<es:ulInitSirTargetHigh>82</es:ulInitSirTargetHigh>
+<es:ulInitSirTargetLow>49</es:ulInitSirTargetLow>
+<es:ulInitSirTargetSrb>57</es:ulInitSirTargetSrb>
+<es:transmissionTargetError>10</es:transmissionTargetError>
+<es:ulInitSirTargetEdch>70</es:ulInitSirTargetEdch>
+</es:vsDataPowerControl>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataPaging</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataPaging>
+
+<es:cnDrxCycleLengthCs>6</es:cnDrxCycleLengthCs>
+<es:cnDrxCycleLengthPs>7</es:cnDrxCycleLengthPs>
+<es:noOfPagingRecordTransm>2</es:noOfPagingRecordTransm>
+<es:utranDrxCycleLength>5</es:utranDrxCycleLength>
+</es:vsDataPaging>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataHandover</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataHandover>
+
+<es:maxActiveSet>3</es:maxActiveSet>
+<es:fddGsmHOSupp>0</es:fddGsmHOSupp>
+<es:selHoSup>0</es:selHoSup>
+<es:timeReleaseIuPs>10</es:timeReleaseIuPs>
+<es:gsmAmountPropRepeat>4</es:gsmAmountPropRepeat>
+<es:gsmPropRepeatInterval>5</es:gsmPropRepeatInterval>
+<es:ifhoPropRepeatInterval>5</es:ifhoPropRepeatInterval>
+<es:ifhoAmountPropRepeat>4</es:ifhoAmountPropRepeat>
+<es:fddIfhoSupp>0</es:fddIfhoSupp>
+<es:releaseConnOffset>120</es:releaseConnOffset>
+<es:maxGsmMonSubset>32</es:maxGsmMonSubset>
+<es:maxIefMonSubset>32</es:maxIefMonSubset>
+<es:cnhhoSupp>0</es:cnhhoSupp>
+<es:interFreqCnhhoPenaltyEcno>30</es:interFreqCnhhoPenaltyEcno>
+<es:interFreqCnhhoPenaltyRscp>30</es:interFreqCnhhoPenaltyRscp>
+<es:intraFreqCnhhoPenalty>30</es:intraFreqCnhhoPenalty>
+<es:intraFreqCnhhoWeight>0</es:intraFreqCnhhoWeight>
+<es:tmStopGsmMeas>20</es:tmStopGsmMeas>
+<es:eulReservedHwBandwidthSchedDataNonServCell>128</es:eulReservedHwBandwidthSchedDataNonServCell>
+</es:vsDataHandover>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataChannelSwitching</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataChannelSwitching>
+
+<es:dlRlcBufUpswitch>500</es:dlRlcBufUpswitch>
+<es:ulRlcBufUpswitch>256</es:ulRlcBufUpswitch>
+<es:downswitchThreshold>0</es:downswitchThreshold>
+<es:downswitchTimerThreshold>0</es:downswitchTimerThreshold>
+<es:downswitchTimer>10</es:downswitchTimer>
+<es:dlRlcBufUpswitchMrab>0</es:dlRlcBufUpswitchMrab>
+<es:ulRlcBufUpswitchMrab>8</es:ulRlcBufUpswitchMrab>
+<es:upswitchTimer>5</es:upswitchTimer>
+<es:coverageTimer>10</es:coverageTimer>
+<es:inactivityTimer>120</es:inactivityTimer>
+<es:downswitchPwrMargin>2</es:downswitchPwrMargin>
+<es:reportHysteresis>6</es:reportHysteresis>
+<es:upswitchPwrMargin>6</es:upswitchPwrMargin>
+<es:downswitchTimerUp>60</es:downswitchTimerUp>
+<es:downswitchTimerSp>2</es:downswitchTimerSp>
+<es:hsdschInactivityTimer>2</es:hsdschInactivityTimer>
+<es:bandwidthMarginUl>0</es:bandwidthMarginUl>
+<es:upswitchTimerUl>5</es:upswitchTimerUl>
+<es:bandwidthMargin>90</es:bandwidthMargin>
+<es:dlDownswitchBandwidthMargin>0</es:dlDownswitchBandwidthMargin>
+<es:dlThroughputAllowUpswitchThreshold>0</es:dlThroughputAllowUpswitchThreshold>
+<es:dlThroughputDownswitchTimer>20</es:dlThroughputDownswitchTimer>
+<es:inactivityTimerPch>30</es:inactivityTimerPch>
+<es:ulThroughputAllowUpswitchThreshold>0</es:ulThroughputAllowUpswitchThreshold>
+<es:ulThroughputDownswitchTimer>20</es:ulThroughputDownswitchTimer>
+<es:ulDownswitchBandwidthMargin>0</es:ulDownswitchBandwidthMargin>
+<es:inactivityTimeMultiPsInteractive>50</es:inactivityTimeMultiPsInteractive>
+</es:vsDataChannelSwitching>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataCchFrameSynch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCchFrameSynch>
+
+<es:dto>10</es:dto>
+<es:doStep>1</es:doStep>
+<es:toAWS>30</es:toAWS>
+<es:toAWE>2</es:toAWE>
+<es:toAE>195</es:toAE>
+</es:vsDataCchFrameSynch>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataDchFrameSynch</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataDchFrameSynch>
+
+<es:dto>10</es:dto>
+<es:doStep>1</es:doStep>
+<es:toAWS>30</es:toAWS>
+<es:toAWE>2</es:toAWE>
+<es:toAE>195</es:toAE>
+<es:uto>10</es:uto>
+<es:uoStep>1</es:uoStep>
+<es:toAWEUl>2</es:toAWEUl>
+<es:toAEUl>95</es:toAEUl>
+<es:userLabel> </es:userLabel>
+<es:toAWSUl>40</es:toAWSUl>
+</es:vsDataDchFrameSynch>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataRncModule</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataRncModule>
+
+<es:userLabel> </es:userLabel>
+</es:vsDataRncModule>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUtranNetwork</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUtranNetwork>
+
+<es:userLabel> </es:userLabel>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:plmnIdentity>
+<es:mcc>353</es:mcc>
+<es:mnc>77</es:mnc>
+<es:mncLength>2</es:mncLength></es:plmnIdentity>
+</es:vsDataUtranNetwork>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>77</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>2</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>77</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>3</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>77</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>4</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="96" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>96</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>96</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="96" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>96</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>96</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="97" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>97</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>97</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="97" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>97</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>97</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="98" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>98</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>98</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="98" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>98</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>98</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="99" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>99</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>99</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="99" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataIurLink</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataIurLink>
+
+<es:userLabel> </es:userLabel>
+<es:mcc>353</es:mcc>
+<es:mnc>99</es:mnc>
+<es:mncLength>2</es:mncLength>
+<es:rncId>99</es:rncId>
+<es:aliasPlmnIdentities></es:aliasPlmnIdentities>
+<es:utranNetworkRef>SubNetwork=WEOSSRC1_ROOT_MO_R,SubNetwork=RNC33,MeContext=SRNC001,ManagedElement=1,RncFunction=1,vsDataUtranNetwork=1</es:utranNetworkRef>
+<es:cellCapabilityControl>
+<es:hsdschSupport>0</es:hsdschSupport>
+<es:edchSupport>0</es:edchSupport></es:cellCapabilityControl>
+<es:hspaPathlossThreshold>170</es:hspaPathlossThreshold>
+<es:userPlaneTransportOption>
+<es:atm>0</es:atm>
+<es:ipv4>0</es:ipv4></es:userPlaneTransportOption>
+</es:vsDataIurLink>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura1</es:userLabel>
+<es:uraIdentity>1</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura2</es:userLabel>
+<es:uraIdentity>2</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura3</es:userLabel>
+<es:uraIdentity>3</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura4</es:userLabel>
+<es:uraIdentity>4</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="5" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura5</es:userLabel>
+<es:uraIdentity>5</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="6" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura6</es:userLabel>
+<es:uraIdentity>6</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="7" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura7</es:userLabel>
+<es:uraIdentity>7</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="8" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura8</es:userLabel>
+<es:uraIdentity>8</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="9" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura9</es:userLabel>
+<es:uraIdentity>9</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="10" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUra</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUra>
+
+<es:userLabel>Ura10</es:userLabel>
+<es:uraIdentity>10</es:uraIdentity>
+</es:vsDataUra>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCnOperator</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCnOperator>
+
+<es:userLabel> </es:userLabel>
+<es:plmnIdentity>
+<es:mcc>1</es:mcc>
+<es:mnc>1</es:mnc>
+<es:mncLength>2</es:mncLength></es:plmnIdentity>
+<es:iphoNetworkRefsUtran></es:iphoNetworkRefsUtran>
+<es:iphoNetworkRefsGsm></es:iphoNetworkRefsGsm>
+<es:equivalentPlmnIdentities></es:equivalentPlmnIdentities>
+</es:vsDataCnOperator>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataWcdmaCarrier</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataWcdmaCarrier>
+
+<es:userLabel> </es:userLabel>
+<es:defaultHoType>1</es:defaultHoType>
+<es:freqBand>0</es:freqBand>
+<es:sib5bisEnabled>0</es:sib5bisEnabled>
+<es:uarfcnDl>0</es:uarfcnDl>
+</es:vsDataWcdmaCarrier>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCnOperator</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCnOperator>
+
+<es:userLabel> </es:userLabel>
+<es:plmnIdentity>
+<es:mcc>1</es:mcc>
+<es:mnc>1</es:mnc>
+<es:mncLength>2</es:mncLength></es:plmnIdentity>
+<es:iphoNetworkRefsUtran></es:iphoNetworkRefsUtran>
+<es:iphoNetworkRefsGsm></es:iphoNetworkRefsGsm>
+<es:equivalentPlmnIdentities></es:equivalentPlmnIdentities>
+</es:vsDataCnOperator>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="2" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataWcdmaCarrier</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataWcdmaCarrier>
+
+<es:userLabel> </es:userLabel>
+<es:defaultHoType>1</es:defaultHoType>
+<es:freqBand>0</es:freqBand>
+<es:sib5bisEnabled>0</es:sib5bisEnabled>
+<es:uarfcnDl>0</es:uarfcnDl>
+</es:vsDataWcdmaCarrier>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCnOperator</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCnOperator>
+
+<es:userLabel> </es:userLabel>
+<es:plmnIdentity>
+<es:mcc>1</es:mcc>
+<es:mnc>1</es:mnc>
+<es:mncLength>2</es:mncLength></es:plmnIdentity>
+<es:iphoNetworkRefsUtran></es:iphoNetworkRefsUtran>
+<es:iphoNetworkRefsGsm></es:iphoNetworkRefsGsm>
+<es:equivalentPlmnIdentities></es:equivalentPlmnIdentities>
+</es:vsDataCnOperator>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="3" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataWcdmaCarrier</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataWcdmaCarrier>
+
+<es:userLabel> </es:userLabel>
+<es:defaultHoType>1</es:defaultHoType>
+<es:freqBand>0</es:freqBand>
+<es:sib5bisEnabled>0</es:sib5bisEnabled>
+<es:uarfcnDl>0</es:uarfcnDl>
+</es:vsDataWcdmaCarrier>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataCnOperator</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataCnOperator>
+
+<es:userLabel> </es:userLabel>
+<es:plmnIdentity>
+<es:mcc>1</es:mcc>
+<es:mnc>1</es:mnc>
+<es:mncLength>2</es:mncLength></es:plmnIdentity>
+<es:iphoNetworkRefsUtran></es:iphoNetworkRefsUtran>
+<es:iphoNetworkRefsGsm></es:iphoNetworkRefsGsm>
+<es:equivalentPlmnIdentities></es:equivalentPlmnIdentities>
+</es:vsDataCnOperator>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="4" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataWcdmaCarrier</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataWcdmaCarrier>
+
+<es:userLabel> </es:userLabel>
+<es:defaultHoType>1</es:defaultHoType>
+<es:freqBand>0</es:freqBand>
+<es:sib5bisEnabled>0</es:sib5bisEnabled>
+<es:uarfcnDl>0</es:uarfcnDl>
+</es:vsDataWcdmaCarrier>
+</xn:attributes>
+</xn:VsDataContainer><xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUeRc</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+<es:vsDataUeRc>
+
+<es:userLabel> </es:userLabel>
+<es:serviceOffset2dEcno>0</es:serviceOffset2dEcno>
+<es:serviceOffset2dRscp>0</es:serviceOffset2dRscp>
+</es:vsDataUeRc></xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="update">
+<xn:attributes>
+<xn:vsDataType>vsDataUeRc</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUeRc>
+
+<es:userLabel> </es:userLabel>
+<es:serviceOffset2dEcno>0</es:serviceOffset2dEcno>
+<es:serviceOffset2dRscp>0</es:serviceOffset2dRscp>
+</es:vsDataUeRc>
+</xn:attributes>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUeRcTrCh</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUeRcTrCh>
+
+<es:blerQualityTargetDl>-63</es:blerQualityTargetDl>
+<es:blerQualityTargetUl>-63</es:blerQualityTargetUl>
+</es:vsDataUeRcTrCh>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUeRcRab</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUeRcRab>
+
+<es:fcState>0</es:fcState>
+<es:trBearerQosClass>0</es:trBearerQosClass>
+</es:vsDataUeRcRab>
+</xn:attributes>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUeRcRrc</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUeRcRrc>
+
+<es:trBearerQosClass>0</es:trBearerQosClass>
+</es:vsDataUeRcRrc>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+<xn:VsDataContainer id="1" modifier="create">
+<xn:attributes>
+<xn:vsDataType>vsDataUeRabType</xn:vsDataType>
+<xn:vsDataFormatVersion>EricssonSpecificAttributes.5.1</xn:vsDataFormatVersion>
+
+<es:vsDataUeRabType>
+
+<es:trBearerQosClass>0</es:trBearerQosClass>
+</es:vsDataUeRabType>
+</xn:attributes>
+</xn:VsDataContainer>
+</xn:VsDataContainer>
+</un:RncFunction>
+</xn:ManagedElement></xn:MeContext>
+</xn:SubNetwork>
+</xn:SubNetwork>
+</configData>
+ <fileFooter dateTime="2001-05-07T12:00:00+02:00"></fileFooter>
+</bulkCmConfigDataFile> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/utranNrm.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/utranNrm.xsd
new file mode 100644
index 0000000000..1d411b31dd
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/netsim/utranNrm.xsd
@@ -0,0 +1,174 @@
+<!--
+ 3GPP TS 32.615 v4.5 Bulk CM IRP
+ Configuration data file UTRAN Network Resources IRP NRM XML schema
+ To be used with WEGA Bucket 2.1 onwards
+-->
+<schema xmlns:gn="geranNrm.xsd" xmlns:un="utranNrm.xsd" xmlns:xn="genericNrm.xsd" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="utranNrm.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <!-- UTRAN Network Resources IRP NRM class associated XML elements -->
+ <import namespace="genericNrm.xsd" schemaLocation="genericNrm.xsd"/>
+ <import namespace="geranNrm.xsd" schemaLocation="geranNrm.xsd"/>
+ <element name="RncFunction">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="rncId" minOccurs="0"/>
+ <!--
+ <element name="mncLength" minOccurs="0"/>
+ -->
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="un:UtranCell"/>
+ <element ref="un:IubLink"/>
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="NodeBFunction">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="nodeBFunctionIubLink" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="UtranCell">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="cId" minOccurs="0"/>
+ <element name="localCellId" minOccurs="0"/>
+ <element name="uarfcnUl" minOccurs="0"/>
+ <element name="uarfcnDl" minOccurs="0"/>
+ <element name="primaryScramblingCode" minOccurs="0"/>
+ <element name="primaryCpichPower" minOccurs="0"/>
+ <element name="maximumTransmissionPower" minOccurs="0"/>
+ <element name="primarySchPower" minOccurs="0"/>
+ <element name="secondarySchPower" minOccurs="0"/>
+ <element name="bchPower" minOccurs="0"/>
+ <element name="lac" minOccurs="0"/>
+ <element name="rac" minOccurs="0"/>
+ <element name="sac" minOccurs="0"/>
+ <element name="utranCellIubLink" minOccurs="0"/>
+ <element name="uraList" minOccurs="0"/>
+ <!-- 3.1
+ <element name="ura" minOccurs="0"/>
+ -->
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="un:UtranRelation"/>
+ <element ref="gn:GsmRelation"/>
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="IubLink">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="iubLinkUtranCell" minOccurs="0"/>
+ <element name="iubLinkNodeBFunction" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="UtranRelation">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="adjacentCell" minOccurs="0"/>
+ <!--
+ <element name="relationType" minOccurs="0"/>
+ -->
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+ <element name="ExternalUtranCell">
+ <complexType>
+ <complexContent>
+ <extension base="xn:NrmClassXmlType">
+ <sequence>
+ <element name="attributes" minOccurs="0">
+ <complexType>
+ <all>
+ <element name="userLabel" minOccurs="0"/>
+ <element name="cId" minOccurs="0"/>
+ <element name="mcc" minOccurs="0"/>
+ <element name="mnc" minOccurs="0"/>
+ <element name="rncId" minOccurs="0"/>
+ <element name="uarfcnUl" minOccurs="0"/>
+ <element name="uarfcnDl" minOccurs="0"/>
+ <element name="primaryScramblingCode" minOccurs="0"/>
+ <element name="primaryCpichPower" minOccurs="0"/>
+ <element name="lac" minOccurs="0"/>
+ <element name="rac" minOccurs="0"/>
+ </all>
+ </complexType>
+ </element>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="xn:VsDataContainer"/>
+ </choice>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+</schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/po.xml
new file mode 100644
index 0000000000..28a44c410d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<purchaseOrder orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <comment>Hurry, my lawn is going wild!</comment>
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/po.xsd
new file mode 100644
index 0000000000..995dd00152
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po.xsd
@@ -0,0 +1,67 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
+
+ <xsd:element name="comment" type="xsd:string"/>
+
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:element name="shipTo" type="USAddress"/>
+ <xsd:element name="billTo" type="USAddress"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="items" type="Items"/>
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="USAddress">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="street" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:decimal"/>
+ </xsd:sequence>
+ <xsd:attribute name="country" type="xsd:NMTOKEN"
+ fixed="US"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="Items">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.tab b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.tab
new file mode 100644
index 0000000000..fa3fcdaa09
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.tab
@@ -0,0 +1,424 @@
+[{{element,{name,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{name,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{productName,[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_element,{productName,[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{schema,"po1.xsd"},
+ {schema,unqualified,
+ unqualified,
+ 'http://www.example.com/PO1',
+ [],
+ [],
+ [{element,{{purchaseOrder,[],'http://www.example.com/PO1'},{1,1}}},
+ {element,{{comment,[],'http://www.example.com/PO1'},{1,1}}}]}},
+ {{simpleType,{'_xmerl_no_name_',[quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_simple_type,{'_xmerl_no_name_',
+ [quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [quantity,anonymous,item,'Items'],
+ {positiveInteger,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{maxExclusive,"100"}],
+ atomic,
+ [{restriction,{{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{maxExclusive,"100"}]}}]}},
+ {{element,{street,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{street,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{shipTo,['PurchaseOrderType'],'http://www.example.com/PO1'}},
+ {schema_element,{shipTo,['PurchaseOrderType'],'http://www.example.com/PO1'},
+ [{simple_or_complex_Type,
+ {'USAddress',[],'http://www.example.com/PO1'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'PurchaseOrderType',[],'http://www.example.com/PO1'}},
+ {schema_complex_type,{'PurchaseOrderType',[],'http://www.example.com/PO1'},
+ undefined,
+ false,
+ ['PurchaseOrderType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{orderDate,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/PO1'}}],
+ [{sequence,{[{element,
+ {{shipTo,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{billTo,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{comment,
+ [],
+ 'http://www.example.com/PO1'},
+ {0,1}}},
+ {element,
+ {{items,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/PO1'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{simpleType,{'SKU',[],'http://www.example.com/PO1'}},
+ {schema_simple_type,{'SKU',[],'http://www.example.com/PO1'},
+ [],
+ {string,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{pattern,"\\d{3}-[A-Z]{2}"}],
+ atomic,
+ [{restriction,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{pattern,"\\d{3}-[A-Z]{2}"}]}}]}},
+ {{element,{city,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{city,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{quantity,[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_element,{quantity,[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{'_xmerl_no_name_',
+ [quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{orderDate,['PurchaseOrderType'],'http://www.example.com/PO1'}},
+ {schema_attribute,{orderDate,['PurchaseOrderType'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ ['PurchaseOrderType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{element,{state,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{state,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{comment,[],'http://www.example.com/PO1'}},
+ {schema_element,{comment,[],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'USAddress',[],'http://www.example.com/PO1'}},
+ {schema_complex_type,{'USAddress',[],'http://www.example.com/PO1'},
+ undefined,
+ false,
+ ['USAddress'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{country,
+ ['USAddress'],
+ 'http://www.example.com/PO1'}}],
+ [{sequence,{[{element,
+ {{name,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{street,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{city,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{state,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{zip,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{purchaseOrder,[],'http://www.example.com/PO1'}},
+ {schema_element,{purchaseOrder,[],'http://www.example.com/PO1'},
+ [{simple_or_complex_Type,
+ {'PurchaseOrderType',[],'http://www.example.com/PO1'}}],
+ false,
+ undefined,
+ [],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{billTo,['PurchaseOrderType'],'http://www.example.com/PO1'}},
+ {schema_element,{billTo,['PurchaseOrderType'],'http://www.example.com/PO1'},
+ [{simple_or_complex_Type,
+ {'USAddress',[],'http://www.example.com/PO1'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{items,['PurchaseOrderType'],'http://www.example.com/PO1'}},
+ {schema_element,{items,['PurchaseOrderType'],'http://www.example.com/PO1'},
+ [{simple_or_complex_Type,
+ {'Items',[],'http://www.example.com/PO1'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'Items',[],'http://www.example.com/PO1'}},
+ {schema_complex_type,{'Items',[],'http://www.example.com/PO1'},
+ undefined,
+ false,
+ ['Items'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{item,
+ ['Items'],
+ 'http://www.example.com/PO1'},
+ {0,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{item,['Items'],'http://www.example.com/PO1'}},
+ {schema_element,{item,['Items'],'http://www.example.com/PO1'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Items'],
+ undefined,
+ {0,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{partNum,[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_attribute,{partNum,[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{'SKU',[],'http://www.example.com/PO1'}}],
+ false,
+ [anonymous,item,'Items'],
+ required,
+ undefined,
+ undefined,
+ undefined}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,item,'Items'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{partNum,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'}}],
+ [{sequence,{[{element,
+ {{productName,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{quantity,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{'USPrice',
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{comment,
+ [],
+ 'http://www.example.com/PO1'},
+ {0,1}}},
+ {element,
+ {{shipDate,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ {0,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{attribute,{country,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_attribute,{country,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{'NMTOKEN',
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ ['USAddress'],
+ optional,
+ undefined,
+ "US",
+ undefined}},
+ {{element,{'USPrice',[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_element,{'USPrice',[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{decimal,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{shipDate,[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_element,{shipDate,[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {0,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{zip,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{zip,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{decimal,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}}]
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.tab2 b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.tab2
new file mode 100644
index 0000000000..fa3fcdaa09
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.tab2
@@ -0,0 +1,424 @@
+[{{element,{name,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{name,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{productName,[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_element,{productName,[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{schema,"po1.xsd"},
+ {schema,unqualified,
+ unqualified,
+ 'http://www.example.com/PO1',
+ [],
+ [],
+ [{element,{{purchaseOrder,[],'http://www.example.com/PO1'},{1,1}}},
+ {element,{{comment,[],'http://www.example.com/PO1'},{1,1}}}]}},
+ {{simpleType,{'_xmerl_no_name_',[quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_simple_type,{'_xmerl_no_name_',
+ [quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [quantity,anonymous,item,'Items'],
+ {positiveInteger,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{maxExclusive,"100"}],
+ atomic,
+ [{restriction,{{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{maxExclusive,"100"}]}}]}},
+ {{element,{street,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{street,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{shipTo,['PurchaseOrderType'],'http://www.example.com/PO1'}},
+ {schema_element,{shipTo,['PurchaseOrderType'],'http://www.example.com/PO1'},
+ [{simple_or_complex_Type,
+ {'USAddress',[],'http://www.example.com/PO1'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'PurchaseOrderType',[],'http://www.example.com/PO1'}},
+ {schema_complex_type,{'PurchaseOrderType',[],'http://www.example.com/PO1'},
+ undefined,
+ false,
+ ['PurchaseOrderType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{orderDate,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/PO1'}}],
+ [{sequence,{[{element,
+ {{shipTo,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{billTo,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{comment,
+ [],
+ 'http://www.example.com/PO1'},
+ {0,1}}},
+ {element,
+ {{items,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/PO1'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{simpleType,{'SKU',[],'http://www.example.com/PO1'}},
+ {schema_simple_type,{'SKU',[],'http://www.example.com/PO1'},
+ [],
+ {string,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{pattern,"\\d{3}-[A-Z]{2}"}],
+ atomic,
+ [{restriction,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{pattern,"\\d{3}-[A-Z]{2}"}]}}]}},
+ {{element,{city,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{city,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{quantity,[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_element,{quantity,[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{'_xmerl_no_name_',
+ [quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{orderDate,['PurchaseOrderType'],'http://www.example.com/PO1'}},
+ {schema_attribute,{orderDate,['PurchaseOrderType'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ ['PurchaseOrderType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{element,{state,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{state,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{comment,[],'http://www.example.com/PO1'}},
+ {schema_element,{comment,[],'http://www.example.com/PO1'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'USAddress',[],'http://www.example.com/PO1'}},
+ {schema_complex_type,{'USAddress',[],'http://www.example.com/PO1'},
+ undefined,
+ false,
+ ['USAddress'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{country,
+ ['USAddress'],
+ 'http://www.example.com/PO1'}}],
+ [{sequence,{[{element,
+ {{name,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{street,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{city,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{state,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{zip,
+ ['USAddress'],
+ 'http://www.example.com/PO1'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{purchaseOrder,[],'http://www.example.com/PO1'}},
+ {schema_element,{purchaseOrder,[],'http://www.example.com/PO1'},
+ [{simple_or_complex_Type,
+ {'PurchaseOrderType',[],'http://www.example.com/PO1'}}],
+ false,
+ undefined,
+ [],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{billTo,['PurchaseOrderType'],'http://www.example.com/PO1'}},
+ {schema_element,{billTo,['PurchaseOrderType'],'http://www.example.com/PO1'},
+ [{simple_or_complex_Type,
+ {'USAddress',[],'http://www.example.com/PO1'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{items,['PurchaseOrderType'],'http://www.example.com/PO1'}},
+ {schema_element,{items,['PurchaseOrderType'],'http://www.example.com/PO1'},
+ [{simple_or_complex_Type,
+ {'Items',[],'http://www.example.com/PO1'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'Items',[],'http://www.example.com/PO1'}},
+ {schema_complex_type,{'Items',[],'http://www.example.com/PO1'},
+ undefined,
+ false,
+ ['Items'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{item,
+ ['Items'],
+ 'http://www.example.com/PO1'},
+ {0,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{item,['Items'],'http://www.example.com/PO1'}},
+ {schema_element,{item,['Items'],'http://www.example.com/PO1'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Items'],
+ undefined,
+ {0,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{partNum,[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_attribute,{partNum,[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{'SKU',[],'http://www.example.com/PO1'}}],
+ false,
+ [anonymous,item,'Items'],
+ required,
+ undefined,
+ undefined,
+ undefined}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,item,'Items'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{partNum,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'}}],
+ [{sequence,{[{element,
+ {{productName,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{quantity,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{'USPrice',
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ {1,1}}},
+ {element,
+ {{comment,
+ [],
+ 'http://www.example.com/PO1'},
+ {0,1}}},
+ {element,
+ {{shipDate,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ {0,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{attribute,{country,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_attribute,{country,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{'NMTOKEN',
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ ['USAddress'],
+ optional,
+ undefined,
+ "US",
+ undefined}},
+ {{element,{'USPrice',[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_element,{'USPrice',[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{decimal,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{shipDate,[anonymous,item,'Items'],'http://www.example.com/PO1'}},
+ {schema_element,{shipDate,[anonymous,item,'Items'],
+ 'http://www.example.com/PO1'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {0,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{zip,['USAddress'],'http://www.example.com/PO1'}},
+ {schema_element,{zip,['USAddress'],'http://www.example.com/PO1'},
+ [{simpleType,{decimal,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}}]
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.xml
new file mode 100644
index 0000000000..c77701b5a2
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder xmlns:apo="http://www.example.com/PO1"
+ orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <!-- etc. -->
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <!-- etc. -->
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <!-- etc. -->
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.xsd
new file mode 100644
index 0000000000..bc4dae27b5
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1.xsd
@@ -0,0 +1,64 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:po="http://www.example.com/PO1"
+ targetNamespace="http://www.example.com/PO1"
+ elementFormDefault="unqualified"
+ attributeFormDefault="unqualified">
+
+ <element name="purchaseOrder" type="po:PurchaseOrderType"/>
+
+ <element name="comment" type="string"/>
+
+ <complexType name="PurchaseOrderType">
+ <sequence>
+ <element name="shipTo" type="po:USAddress"/>
+ <element name="billTo" type="po:USAddress"/>
+ <element ref="po:comment" minOccurs="0"/>
+ <element name="items" type="po:Items"/>
+ </sequence>
+ <attribute name="orderDate" type="date"/>
+ </complexType>
+
+ <complexType name="USAddress">
+ <sequence>
+ <element name="name" type="string"/>
+ <element name="street" type="string"/>
+ <element name="city" type="string"/>
+ <element name="state" type="string"/>
+ <element name="zip" type="decimal"/>
+ </sequence>
+ <attribute name="country" type="NMTOKEN"
+ fixed="US"/>
+ </complexType>
+
+ <complexType name="Items">
+ <sequence>
+ <element name="item" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="productName" type="string"/>
+ <element name="quantity">
+ <simpleType>
+ <restriction base="positiveInteger">
+ <maxExclusive value="100"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="USPrice" type="decimal"/>
+ <element ref="po:comment" minOccurs="0"/>
+ <element name="shipDate" type="date" minOccurs="0"/>
+ </sequence>
+ <attribute name="partNum" type="po:SKU" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+ <!-- Stock Keeping Unit, a code for identifying products -->
+ <simpleType name="SKU">
+ <restriction base="string">
+ <pattern value="\d{3}-[A-Z]{2}"/>
+ </restriction>
+ </simpleType>
+
+</schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all.xsd
new file mode 100644
index 0000000000..7383c7f8f6
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all.xsd
@@ -0,0 +1,65 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:po="http://www.example.com/PO1"
+ targetNamespace="http://www.example.com/PO1"
+ elementFormDefault="unqualified"
+ attributeFormDefault="unqualified">
+
+ <element name="purchaseOrder" type="po:PurchaseOrderType"/>
+
+ <element name="comment" type="string"/>
+
+
+ <complexType name="PurchaseOrderType">
+ <all>
+ <element name="shipTo" type="po:USAddress"/>
+ <element name="billTo" type="po:USAddress"/>
+ <element ref="po:comment" minOccurs="0"/>
+ <element name="items" type="po:Items"/>
+ </all>
+ <attribute name="orderDate" type="date"/>
+ </complexType>
+
+ <complexType name="USAddress">
+ <sequence>
+ <element name="name" type="string"/>
+ <element name="street" type="string"/>
+ <element name="city" type="string"/>
+ <element name="state" type="string"/>
+ <element name="zip" type="decimal"/>
+ </sequence>
+ <attribute name="country" type="NMTOKEN"
+ fixed="US"/>
+ </complexType>
+
+ <complexType name="Items">
+ <sequence>
+ <element name="item" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="productName" type="string"/>
+ <element name="quantity">
+ <simpleType>
+ <restriction base="positiveInteger">
+ <maxExclusive value="100"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="USPrice" type="decimal"/>
+ <element ref="po:comment" minOccurs="0"/>
+ <element name="shipDate" type="date" minOccurs="0"/>
+ </sequence>
+ <attribute name="partNum" type="po:SKU" use="required"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+ <!-- Stock Keeping Unit, a code for identifying products -->
+ <simpleType name="SKU">
+ <restriction base="string">
+ <pattern value="\d{3}-[A-Z]{2}"/>
+ </restriction>
+ </simpleType>
+
+</schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all1.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all1.xml
new file mode 100644
index 0000000000..a5ae223d65
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all1.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder xmlns:apo="http://www.example.com/PO1"
+ orderDate="1999-10-20">
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <!-- etc. -->
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <!-- etc. -->
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <!-- etc. -->
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all2.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all2.xml
new file mode 100644
index 0000000000..2c40c8c686
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all2.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder xmlns:apo="http://www.example.com/PO1"
+ orderDate="1999-10-20">
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <!-- etc. -->
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <!-- etc. -->
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <!-- etc. -->
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all_err1.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all_err1.xml
new file mode 100644
index 0000000000..98d82e4642
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all_err1.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder xmlns:apo="http://www.example.com/PO1"
+ orderDate="1999-10-20">
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <!-- etc. -->
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <!-- etc. -->
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <!-- etc. -->
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all_err2.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all_err2.xml
new file mode 100644
index 0000000000..e4cc3f362e
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_all_err2.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder xmlns:apo="http://www.example.com/PO1"
+ orderDate="1999-10-20">
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <!-- etc. -->
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <!-- etc. -->
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_global.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_global.xsd
new file mode 100644
index 0000000000..04a4baa0d2
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po1_global.xsd
@@ -0,0 +1,86 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:po="http://www.example.com/PO1"
+ targetNamespace="http://www.example.com/PO1">
+
+<!-- validates po2.xml -->
+
+ <element name="purchaseOrder" type="po:PurchaseOrderType"/>
+
+ <element name="shipTo" type="po:USAddress"/>
+ <element name="billTo" type="po:USAddress"/>
+ <element name="comment" type="string"/>
+
+ <element name="name" type="string"/>
+ <element name="street" type="string"/>
+
+ <element name="items" type="po:Items"/>
+
+ <attribute name="orderDate" type="date"/>
+
+ <element name="city" type="string"/>
+ <element name="state" type="string"/>
+ <element name="zip" type="decimal"/>
+
+ <attribute name="country" type="NMTOKEN" fixed="US"/>
+
+ <element name="item" type="po:Item"/>
+
+ <element name="productName" type="string"/>
+ <element name="quantity" type="ps:Quantity"/>
+ <element name="USPrice" type="decimal"/>
+ <element name="shipDate" type="date"/>
+
+ <attribute name="partNum" type="po:SKU" use="required"/>
+
+ <complexType name="PurchaseOrderType">
+ <sequence>
+ <element ref="po:shipTo"/>
+ <element ref="po:billTo"/>
+ <element ref="po:comment" minOccurs="0"/>
+ <element ref="po:items"/>
+ </sequence>
+ <attribute ref="po:orderDate"/>
+ </complexType>
+
+ <complexType name="USAddress">
+ <sequence>
+ <element ref="po:name"/>
+ <element ref="po:street"/>
+ <element ref="po:city"/>
+ <element ref="po:state"/>
+ <element ref="po:zip"/>
+ </sequence>
+ <attribute ref="po:country"/>
+ </complexType>
+
+ <complexType name="Items">
+ <sequence>
+ <element ref="po:item" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="Item">
+ <sequence>
+ <element ref="po:productName"/>
+ <element ref="po:quantity"/>
+ <element ref="po:USPrice"/>
+ <element ref="po:comment" minOccurs="0"/>
+ <element ref="po:shipDate" minOccurs="0"/>
+ </sequence>
+ <attribute ref="po:partNum"/>
+ </complexType>
+
+ <simpleType name="Quantity">
+ <restriction base="positiveInteger">
+ <maxExclusive value="100"/>
+ </restriction>
+ </simpleType>
+
+ <!-- Stock Keeping Unit, a code for identifying products -->
+ <simpleType name="SKU">
+ <restriction base="string">
+ <pattern value="\d{3}-[A-Z]{2}"/>
+ </restriction>
+ </simpleType>
+
+</schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po2.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/po2.xml
new file mode 100644
index 0000000000..c1077b7572
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po2.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<purchaseOrder xmlns="http://www.example.com/PO1"
+ orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <!-- etc. -->
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <!-- etc. -->
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <comment>Hurry, my lawn is going wild!</comment>
+ <!-- etc. -->
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po_attrGroup.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/po_attrGroup.xml
new file mode 100644
index 0000000000..5e49a4a889
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po_attrGroup.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<purchaseOrder orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <comment>Hurry, my lawn is going wild!</comment>
+ <items>
+ <item partNum="872-AA" weightKg="25.5" shipBy="any">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA" weightKg="0.5" shipBy="air">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/po_attrGroup.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/po_attrGroup.xsd
new file mode 100644
index 0000000000..734f65e0e0
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/po_attrGroup.xsd
@@ -0,0 +1,81 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
+
+ <xsd:element name="comment" type="xsd:string"/>
+
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:element name="shipTo" type="USAddress"/>
+ <xsd:element name="billTo" type="USAddress"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="items" type="Items"/>
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="USAddress">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="street" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:decimal"/>
+ </xsd:sequence>
+ <xsd:attribute name="country" type="xsd:NMTOKEN"
+ fixed="US"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="Items">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="ItemDelivery"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="ItemDelivery">
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ <xsd:attribute name="weightKg" type="xsd:decimal"/>
+ <xsd:attribute name="shipBy">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="air"/>
+ <xsd:enumeration value="land"/>
+ <xsd:enumeration value="any"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+
+</xsd:schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/report.tab b/lib/xmerl/test/xmerl_xsd_SUITE_data/report.tab
new file mode 100644
index 0000000000..f5c10e2683
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/report.tab
@@ -0,0 +1,850 @@
+[{{complexType,{'RegionsType',[],'http://www.example.com/Report'}},
+ {schema_complex_type,{'RegionsType',[],'http://www.example.com/Report'},
+ undefined,
+ false,
+ ['RegionsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{zip,
+ ['RegionsType'],
+ 'http://www.example.com/Report'},
+ {1,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{complexType,{'PurchaseOrderType',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'PurchaseOrderType',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['PurchaseOrderType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{orderDate,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/IPO'}}],
+ [{sequence,{[{element,
+ {{shipTo,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{billTo,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{comment,
+ [],
+ 'http://www.example.com/IPO'},
+ {0,1}}},
+ {element,
+ {{items,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/IPO'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{parts,[anonymous,purchaseReport],'http://www.example.com/Report'}},
+ {schema_element,{parts,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ [{simple_or_complex_Type,
+ {'PartsType',[],'http://www.example.com/Report'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,purchaseReport],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{item,['Items'],'http://www.example.com/IPO'}},
+ {schema_element,{item,['Items'],'http://www.example.com/IPO'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Items'],
+ undefined,
+ {0,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{part,[anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {schema_element,{part,[anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,
+ part,
+ anonymous,
+ zip,
+ 'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,zip,'RegionsType'],
+ undefined,
+ {1,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{orderDate,['PurchaseOrderType'],'http://www.example.com/IPO'}},
+ {schema_attribute,{orderDate,['PurchaseOrderType'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ ['PurchaseOrderType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{attribute,{number,[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{number,[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ [{simpleType,{'SKU',[],'http://www.example.com/IPO'}}],
+ false,
+ [anonymous,part,anonymous,zip,'RegionsType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{simpleType,{'USState',[],'http://www.example.com/IPO'}},
+ {schema_simple_type,{'USState',[],'http://www.example.com/IPO'},
+ [],
+ {string,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{enumeration,["AK","AL","AR","PA"]}],
+ atomic,
+ [{restriction,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{enumeration,"AK"},
+ {enumeration,"AL"},
+ {enumeration,"AR"},
+ {enumeration,"PA"}]}}]}},
+ {{complexType,{'PartsType',[],'http://www.example.com/Report'}},
+ {schema_complex_type,{'PartsType',[],'http://www.example.com/Report'},
+ undefined,
+ false,
+ ['PartsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{part,
+ ['PartsType'],
+ 'http://www.example.com/Report'},
+ {1,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{attribute,{partNum,[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_attribute,{partNum,[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{'SKU',[],'http://www.example.com/IPO'}}],
+ false,
+ [anonymous,item,'Items'],
+ required,
+ undefined,
+ undefined,
+ undefined}},
+ {{element,{shipTo,['PurchaseOrderType'],'http://www.example.com/IPO'}},
+ {schema_element,{shipTo,['PurchaseOrderType'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'Address',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,purchaseReport],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,purchaseReport],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,purchaseReport],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{period,
+ [anonymous,purchaseReport],
+ 'http://www.example.com/Report'}},
+ {attribute,{periodEnding,
+ [anonymous,purchaseReport],
+ 'http://www.example.com/Report'}}],
+ [{sequence,{[{element,
+ {{regions,
+ [anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ {1,1}}},
+ {element,
+ {{parts,
+ [anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{simpleType,{'SKU',[],'http://www.example.com/IPO'}},
+ {schema_simple_type,{'SKU',[],'http://www.example.com/IPO'},
+ [],
+ {string,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{pattern,"\\d{3}-[A-Z]{2}"}],
+ atomic,
+ [{restriction,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{pattern,"\\d{3}-[A-Z]{2}"}]}}]}},
+ {{attribute,{number,[anonymous,part,'PartsType'],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{number,[anonymous,part,'PartsType'],
+ 'http://www.example.com/Report'},
+ [{simpleType,{'SKU',[],'http://www.example.com/IPO'}}],
+ false,
+ [anonymous,part,'PartsType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{attribute,{period,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{period,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ [{simpleType,{duration,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ [anonymous,purchaseReport],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{simpleType,{'_xmerl_no_name_',[quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_simple_type,{'_xmerl_no_name_',
+ [quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [quantity,anonymous,item,'Items'],
+ {positiveInteger,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{maxExclusive,"100"}],
+ atomic,
+ [{restriction,{{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{maxExclusive,"100"}]}}]}},
+ {{element,{productName,[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_element,{productName,[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{comment,[],'http://www.example.com/IPO'}},
+ {schema_element,{comment,[],'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{periodEnding,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{periodEnding,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ [anonymous,purchaseReport],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{complexType,{'Address',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'Address',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['Address'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{name,
+ ['Address'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{street,
+ ['Address'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{city,
+ ['Address'],
+ 'http://www.example.com/IPO'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{purchaseOrder,[],'http://www.example.com/IPO'}},
+ {schema_element,{purchaseOrder,[],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'PurchaseOrderType',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,part,'PartsType'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,part,'PartsType'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,part,'PartsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{number,
+ [anonymous,part,'PartsType'],
+ 'http://www.example.com/Report'}}],
+ [{extension,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ []}}],
+ undefined}},
+ {{element,{zip,['RegionsType'],'http://www.example.com/Report'}},
+ {schema_element,{zip,['RegionsType'],'http://www.example.com/Report'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['RegionsType'],
+ undefined,
+ {1,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{state,['USAddress'],'http://www.example.com/IPO'}},
+ {schema_element,{state,['USAddress'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'USState',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{items,['PurchaseOrderType'],'http://www.example.com/IPO'}},
+ {schema_element,{items,['PurchaseOrderType'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'Items',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{simpleType,{'UKPostcode',[],'http://www.example.com/IPO'}},
+ {schema_simple_type,{'UKPostcode',[],'http://www.example.com/IPO'},
+ [],
+ {'Postcode',[],'http://www.example.com/IPO'},
+ false,
+ [],
+ [{pattern,"[A-Z]{2}\\d\\s\\d[A-Z]{2}"}],
+ atomic,
+ [{restriction,{{'Postcode',
+ [],
+ 'http://www.example.com/IPO'},
+ [{pattern,"[A-Z]{2}\\d\\s\\d[A-Z]{2}"}]}}]}},
+ {{complexType,{'Items',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'Items',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['Items'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{item,
+ ['Items'],
+ 'http://www.example.com/IPO'},
+ {0,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{quantity,[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_element,{quantity,[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{'_xmerl_no_name_',
+ [quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{code,[anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{code,[anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ [{simpleType,{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ [anonymous,zip,'RegionsType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{element,{purchaseReport,[],'http://www.example.com/Report'}},
+ {schema_element,{purchaseReport,[],'http://www.example.com/Report'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,purchaseReport],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [{unique,{unique,{dummy1,
+ [purchaseReport],
+ 'http://www.example.com/Report'},
+ {selector,"r:regions/r:zip"},
+ [{field,"@code"}]}}],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{street,['Address'],'http://www.example.com/IPO'}},
+ {schema_element,{street,['Address'],'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Address'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{zip,['USAddress'],'http://www.example.com/IPO'}},
+ {schema_element,{zip,['USAddress'],'http://www.example.com/IPO'},
+ [{simpleType,{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{regions,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'}},
+ {schema_element,{regions,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ [{simple_or_complex_Type,
+ {'RegionsType',[],'http://www.example.com/Report'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,purchaseReport],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{part,['PartsType'],'http://www.example.com/Report'}},
+ {schema_element,{part,['PartsType'],'http://www.example.com/Report'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,part,'PartsType'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['PartsType'],
+ undefined,
+ {1,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{city,['Address'],'http://www.example.com/IPO'}},
+ {schema_element,{city,['Address'],'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Address'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'USAddress',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'USAddress',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['USAddress'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{extension,{{'Address',
+ [],
+ 'http://www.example.com/IPO'},
+ [{sequence,
+ {[{element,
+ {{state,
+ ['USAddress'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{zip,
+ ['USAddress'],
+ 'http://www.example.com/IPO'},
+ {1,1}}}],
+ {1,1}}}]}}],
+ undefined}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,part,anonymous,zip,'RegionsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{number,
+ [anonymous,
+ part,
+ anonymous,
+ zip,
+ 'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {attribute,{quantity,
+ [anonymous,
+ part,
+ anonymous,
+ zip,
+ 'RegionsType'],
+ 'http://www.example.com/Report'}}],
+ [{restriction,{{anyType,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ []}}],
+ undefined}},
+ {{element,{billTo,['PurchaseOrderType'],'http://www.example.com/IPO'}},
+ {schema_element,{billTo,['PurchaseOrderType'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'Address',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{postcode,['UKAddress'],'http://www.example.com/IPO'}},
+ {schema_element,{postcode,['UKAddress'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'UKPostcode',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['UKAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{schema,"report.xsd"},
+ {schema,qualified,
+ unqualified,
+ 'http://www.example.com/Report',
+ [],
+ [],
+ [{element,{{purchaseReport,[],'http://www.example.com/Report'},
+ {1,1}}}]}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,item,'Items'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{partNum,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'}}],
+ [{sequence,{[{element,
+ {{productName,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{quantity,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{'USPrice',
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{comment,
+ [],
+ 'http://www.example.com/IPO'},
+ {0,1}}},
+ {element,
+ {{shipDate,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ {0,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{simpleType,{'Postcode',[],'http://www.example.com/IPO'}},
+ {schema_simple_type,{'Postcode',[],'http://www.example.com/IPO'},
+ [],
+ {string,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{length,"7"}],
+ atomic,
+ [{restriction,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{length,"7"}]}}]}},
+ {{element,{'USPrice',[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_element,{'USPrice',[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{decimal,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{schema,"ipo.xsd"},
+ {schema,unqualified,
+ unqualified,
+ 'http://www.example.com/IPO',
+ [],
+ [],
+ [{element,{{purchaseOrder,[],'http://www.example.com/IPO'},{1,1}}},
+ {element,{{comment,[],'http://www.example.com/IPO'},{1,1}}}]}},
+ {{attribute,{quantity,[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{quantity,[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ [{simpleType,{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ [anonymous,part,anonymous,zip,'RegionsType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{element,{shipDate,[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_element,{shipDate,[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {0,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{exportCode,['UKAddress'],'http://www.example.com/IPO'}},
+ {schema_attribute,{exportCode,['UKAddress'],'http://www.example.com/IPO'},
+ [{simpleType,{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ ['UKAddress'],
+ optional,
+ undefined,
+ "1",
+ undefined}},
+ {{element,{name,['Address'],'http://www.example.com/IPO'}},
+ {schema_element,{name,['Address'],'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Address'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,zip,'RegionsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{code,
+ [anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}}],
+ [{sequence,{[{element,
+ {{part,
+ [anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ {1,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{complexType,{'UKAddress',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'UKAddress',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['UKAddress'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{exportCode,
+ ['UKAddress'],
+ 'http://www.example.com/IPO'}}],
+ [{extension,{{'Address',
+ [],
+ 'http://www.example.com/IPO'},
+ [{sequence,
+ {[{element,
+ {{postcode,
+ ['UKAddress'],
+ 'http://www.example.com/IPO'},
+ {1,1}}}],
+ {1,1}}}]}}],
+ undefined}}]
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/report.tab2 b/lib/xmerl/test/xmerl_xsd_SUITE_data/report.tab2
new file mode 100644
index 0000000000..f5c10e2683
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/report.tab2
@@ -0,0 +1,850 @@
+[{{complexType,{'RegionsType',[],'http://www.example.com/Report'}},
+ {schema_complex_type,{'RegionsType',[],'http://www.example.com/Report'},
+ undefined,
+ false,
+ ['RegionsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{zip,
+ ['RegionsType'],
+ 'http://www.example.com/Report'},
+ {1,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{complexType,{'PurchaseOrderType',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'PurchaseOrderType',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['PurchaseOrderType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{orderDate,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/IPO'}}],
+ [{sequence,{[{element,
+ {{shipTo,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{billTo,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{comment,
+ [],
+ 'http://www.example.com/IPO'},
+ {0,1}}},
+ {element,
+ {{items,
+ ['PurchaseOrderType'],
+ 'http://www.example.com/IPO'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{parts,[anonymous,purchaseReport],'http://www.example.com/Report'}},
+ {schema_element,{parts,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ [{simple_or_complex_Type,
+ {'PartsType',[],'http://www.example.com/Report'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,purchaseReport],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{item,['Items'],'http://www.example.com/IPO'}},
+ {schema_element,{item,['Items'],'http://www.example.com/IPO'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Items'],
+ undefined,
+ {0,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{part,[anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {schema_element,{part,[anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,
+ part,
+ anonymous,
+ zip,
+ 'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,zip,'RegionsType'],
+ undefined,
+ {1,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{orderDate,['PurchaseOrderType'],'http://www.example.com/IPO'}},
+ {schema_attribute,{orderDate,['PurchaseOrderType'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ ['PurchaseOrderType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{attribute,{number,[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{number,[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ [{simpleType,{'SKU',[],'http://www.example.com/IPO'}}],
+ false,
+ [anonymous,part,anonymous,zip,'RegionsType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{simpleType,{'USState',[],'http://www.example.com/IPO'}},
+ {schema_simple_type,{'USState',[],'http://www.example.com/IPO'},
+ [],
+ {string,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{enumeration,["AK","AL","AR","PA"]}],
+ atomic,
+ [{restriction,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{enumeration,"AK"},
+ {enumeration,"AL"},
+ {enumeration,"AR"},
+ {enumeration,"PA"}]}}]}},
+ {{complexType,{'PartsType',[],'http://www.example.com/Report'}},
+ {schema_complex_type,{'PartsType',[],'http://www.example.com/Report'},
+ undefined,
+ false,
+ ['PartsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{part,
+ ['PartsType'],
+ 'http://www.example.com/Report'},
+ {1,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{attribute,{partNum,[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_attribute,{partNum,[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{'SKU',[],'http://www.example.com/IPO'}}],
+ false,
+ [anonymous,item,'Items'],
+ required,
+ undefined,
+ undefined,
+ undefined}},
+ {{element,{shipTo,['PurchaseOrderType'],'http://www.example.com/IPO'}},
+ {schema_element,{shipTo,['PurchaseOrderType'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'Address',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,purchaseReport],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,purchaseReport],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,purchaseReport],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{period,
+ [anonymous,purchaseReport],
+ 'http://www.example.com/Report'}},
+ {attribute,{periodEnding,
+ [anonymous,purchaseReport],
+ 'http://www.example.com/Report'}}],
+ [{sequence,{[{element,
+ {{regions,
+ [anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ {1,1}}},
+ {element,
+ {{parts,
+ [anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{simpleType,{'SKU',[],'http://www.example.com/IPO'}},
+ {schema_simple_type,{'SKU',[],'http://www.example.com/IPO'},
+ [],
+ {string,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{pattern,"\\d{3}-[A-Z]{2}"}],
+ atomic,
+ [{restriction,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{pattern,"\\d{3}-[A-Z]{2}"}]}}]}},
+ {{attribute,{number,[anonymous,part,'PartsType'],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{number,[anonymous,part,'PartsType'],
+ 'http://www.example.com/Report'},
+ [{simpleType,{'SKU',[],'http://www.example.com/IPO'}}],
+ false,
+ [anonymous,part,'PartsType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{attribute,{period,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{period,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ [{simpleType,{duration,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ [anonymous,purchaseReport],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{simpleType,{'_xmerl_no_name_',[quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_simple_type,{'_xmerl_no_name_',
+ [quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [quantity,anonymous,item,'Items'],
+ {positiveInteger,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{maxExclusive,"100"}],
+ atomic,
+ [{restriction,{{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{maxExclusive,"100"}]}}]}},
+ {{element,{productName,[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_element,{productName,[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{comment,[],'http://www.example.com/IPO'}},
+ {schema_element,{comment,[],'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{periodEnding,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{periodEnding,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ [anonymous,purchaseReport],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{complexType,{'Address',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'Address',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['Address'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{name,
+ ['Address'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{street,
+ ['Address'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{city,
+ ['Address'],
+ 'http://www.example.com/IPO'},
+ {1,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{purchaseOrder,[],'http://www.example.com/IPO'}},
+ {schema_element,{purchaseOrder,[],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'PurchaseOrderType',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,part,'PartsType'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,part,'PartsType'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,part,'PartsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{number,
+ [anonymous,part,'PartsType'],
+ 'http://www.example.com/Report'}}],
+ [{extension,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ []}}],
+ undefined}},
+ {{element,{zip,['RegionsType'],'http://www.example.com/Report'}},
+ {schema_element,{zip,['RegionsType'],'http://www.example.com/Report'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['RegionsType'],
+ undefined,
+ {1,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{state,['USAddress'],'http://www.example.com/IPO'}},
+ {schema_element,{state,['USAddress'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'USState',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{items,['PurchaseOrderType'],'http://www.example.com/IPO'}},
+ {schema_element,{items,['PurchaseOrderType'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'Items',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{simpleType,{'UKPostcode',[],'http://www.example.com/IPO'}},
+ {schema_simple_type,{'UKPostcode',[],'http://www.example.com/IPO'},
+ [],
+ {'Postcode',[],'http://www.example.com/IPO'},
+ false,
+ [],
+ [{pattern,"[A-Z]{2}\\d\\s\\d[A-Z]{2}"}],
+ atomic,
+ [{restriction,{{'Postcode',
+ [],
+ 'http://www.example.com/IPO'},
+ [{pattern,"[A-Z]{2}\\d\\s\\d[A-Z]{2}"}]}}]}},
+ {{complexType,{'Items',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'Items',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['Items'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{sequence,{[{element,
+ {{item,
+ ['Items'],
+ 'http://www.example.com/IPO'},
+ {0,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{element,{quantity,[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_element,{quantity,[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{'_xmerl_no_name_',
+ [quantity,anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{code,[anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{code,[anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ [{simpleType,{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ [anonymous,zip,'RegionsType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{element,{purchaseReport,[],'http://www.example.com/Report'}},
+ {schema_element,{purchaseReport,[],'http://www.example.com/Report'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,purchaseReport],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [{unique,{unique,{dummy1,
+ [purchaseReport],
+ 'http://www.example.com/Report'},
+ {selector,"r:regions/r:zip"},
+ [{field,"@code"}]}}],
+ [],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{street,['Address'],'http://www.example.com/IPO'}},
+ {schema_element,{street,['Address'],'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Address'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{zip,['USAddress'],'http://www.example.com/IPO'}},
+ {schema_element,{zip,['USAddress'],'http://www.example.com/IPO'},
+ [{simpleType,{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['USAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{regions,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'}},
+ {schema_element,{regions,[anonymous,purchaseReport],
+ 'http://www.example.com/Report'},
+ [{simple_or_complex_Type,
+ {'RegionsType',[],'http://www.example.com/Report'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,purchaseReport],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{part,['PartsType'],'http://www.example.com/Report'}},
+ {schema_element,{part,['PartsType'],'http://www.example.com/Report'},
+ [{complexType,{'_xmerl_no_name_',
+ [anonymous,part,'PartsType'],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['PartsType'],
+ undefined,
+ {1,unbounded},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{city,['Address'],'http://www.example.com/IPO'}},
+ {schema_element,{city,['Address'],'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Address'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'USAddress',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'USAddress',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['USAddress'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [],
+ [{extension,{{'Address',
+ [],
+ 'http://www.example.com/IPO'},
+ [{sequence,
+ {[{element,
+ {{state,
+ ['USAddress'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{zip,
+ ['USAddress'],
+ 'http://www.example.com/IPO'},
+ {1,1}}}],
+ {1,1}}}]}}],
+ undefined}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,part,anonymous,zip,'RegionsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{number,
+ [anonymous,
+ part,
+ anonymous,
+ zip,
+ 'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {attribute,{quantity,
+ [anonymous,
+ part,
+ anonymous,
+ zip,
+ 'RegionsType'],
+ 'http://www.example.com/Report'}}],
+ [{restriction,{{anyType,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ []}}],
+ undefined}},
+ {{element,{billTo,['PurchaseOrderType'],'http://www.example.com/IPO'}},
+ {schema_element,{billTo,['PurchaseOrderType'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'Address',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['PurchaseOrderType'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{element,{postcode,['UKAddress'],'http://www.example.com/IPO'}},
+ {schema_element,{postcode,['UKAddress'],'http://www.example.com/IPO'},
+ [{simple_or_complex_Type,
+ {'UKPostcode',[],'http://www.example.com/IPO'}}],
+ false,
+ undefined,
+ [],
+ ['UKAddress'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{schema,"report.xsd"},
+ {schema,qualified,
+ unqualified,
+ 'http://www.example.com/Report',
+ [],
+ [],
+ [{element,{{purchaseReport,[],'http://www.example.com/Report'},
+ {1,1}}}]}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,item,'Items'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,item,'Items'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{partNum,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'}}],
+ [{sequence,{[{element,
+ {{productName,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{quantity,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{'USPrice',
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ {1,1}}},
+ {element,
+ {{comment,
+ [],
+ 'http://www.example.com/IPO'},
+ {0,1}}},
+ {element,
+ {{shipDate,
+ [anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ {0,1}}}],
+ {1,1}}}],
+ undefined}},
+ {{simpleType,{'Postcode',[],'http://www.example.com/IPO'}},
+ {schema_simple_type,{'Postcode',[],'http://www.example.com/IPO'},
+ [],
+ {string,[],'http://www.w3.org/2001/XMLSchema'},
+ false,
+ [],
+ [{length,"7"}],
+ atomic,
+ [{restriction,{{string,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'},
+ [{length,"7"}]}}]}},
+ {{element,{'USPrice',[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_element,{'USPrice',[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{decimal,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{schema,"ipo.xsd"},
+ {schema,unqualified,
+ unqualified,
+ 'http://www.example.com/IPO',
+ [],
+ [],
+ [{element,{{purchaseOrder,[],'http://www.example.com/IPO'},{1,1}}},
+ {element,{{comment,[],'http://www.example.com/IPO'},{1,1}}}]}},
+ {{attribute,{quantity,[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}},
+ {schema_attribute,{quantity,[anonymous,part,anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ [{simpleType,{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ [anonymous,part,anonymous,zip,'RegionsType'],
+ optional,
+ undefined,
+ undefined,
+ undefined}},
+ {{element,{shipDate,[anonymous,item,'Items'],'http://www.example.com/IPO'}},
+ {schema_element,{shipDate,[anonymous,item,'Items'],
+ 'http://www.example.com/IPO'},
+ [{simpleType,{date,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ [anonymous,item,'Items'],
+ undefined,
+ {0,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{attribute,{exportCode,['UKAddress'],'http://www.example.com/IPO'}},
+ {schema_attribute,{exportCode,['UKAddress'],'http://www.example.com/IPO'},
+ [{simpleType,{positiveInteger,
+ [],
+ 'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ ['UKAddress'],
+ optional,
+ undefined,
+ "1",
+ undefined}},
+ {{element,{name,['Address'],'http://www.example.com/IPO'}},
+ {schema_element,{name,['Address'],'http://www.example.com/IPO'},
+ [{simpleType,{string,[],'http://www.w3.org/2001/XMLSchema'}}],
+ false,
+ undefined,
+ [],
+ ['Address'],
+ undefined,
+ {1,1},
+ undefined,
+ undefined,
+ false,
+ [],
+ []}},
+ {{complexType,{'_xmerl_no_name_',[anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'}},
+ {schema_complex_type,{'_xmerl_no_name_',
+ [anonymous,zip,'RegionsType'],
+ 'http://www.w3.org/2001/XMLSchema'},
+ undefined,
+ false,
+ [anonymous,zip,'RegionsType'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{code,
+ [anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'}}],
+ [{sequence,{[{element,
+ {{part,
+ [anonymous,zip,'RegionsType'],
+ 'http://www.example.com/Report'},
+ {1,unbounded}}}],
+ {1,1}}}],
+ undefined}},
+ {{complexType,{'UKAddress',[],'http://www.example.com/IPO'}},
+ {schema_complex_type,{'UKAddress',[],'http://www.example.com/IPO'},
+ undefined,
+ false,
+ ['UKAddress'],
+ undefined,
+ [],
+ [],
+ false,
+ 'element-only',
+ [{attribute,{exportCode,
+ ['UKAddress'],
+ 'http://www.example.com/IPO'}}],
+ [{extension,{{'Address',
+ [],
+ 'http://www.example.com/IPO'},
+ [{sequence,
+ {[{element,
+ {{postcode,
+ ['UKAddress'],
+ 'http://www.example.com/IPO'},
+ {1,1}}}],
+ {1,1}}}]}}],
+ undefined}}]
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/report.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/report.xsd
new file mode 100644
index 0000000000..8db7b8219f
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/report.xsd
@@ -0,0 +1,82 @@
+<schema targetNamespace="http://www.example.com/Report"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:r="http://www.example.com/Report"
+ xmlns:xipo="http://www.example.com/IPO"
+ elementFormDefault="qualified">
+
+ <!-- for SKU -->
+ <import namespace="http://www.example.com/IPO"/>
+
+ <annotation>
+ <documentation xml:lang="en">
+ Report schema for Example.com
+ Copyright 2000 Example.com. All rights reserved.
+ </documentation>
+ </annotation>
+
+ <element name="purchaseReport">
+ <complexType>
+ <sequence>
+ <element name="regions" type="r:RegionsType"/>
+
+ <element name="parts" type="r:PartsType"/>
+ </sequence>
+ <attribute name="period" type="duration"/>
+ <attribute name="periodEnding" type="date"/>
+ </complexType>
+
+ <unique name="dummy1">
+ <selector xpath="r:regions/r:zip"/>
+ <field xpath="@code"/>
+ </unique>
+
+ <key name="pNumKey">
+ <selector xpath="r:parts/r:part"/>
+ <field xpath="@number"/>
+ </key>
+
+ <keyref name="dummy2" refer="r:pNumKey">
+ <selector xpath="r:regions/r:zip/r:part"/>
+ <field xpath="@number"/>
+ </keyref>
+
+ </element>
+
+ <complexType name="RegionsType">
+ <sequence>
+ <element name="zip" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="part" maxOccurs="unbounded">
+ <complexType>
+ <complexContent>
+ <restriction base="anyType">
+ <attribute name="number" type="xipo:SKU"/>
+ <attribute name="quantity" type="positiveInteger"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="code" type="positiveInteger"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+ <complexType name="PartsType">
+ <sequence>
+ <element name="part" maxOccurs="unbounded">
+ <complexType>
+ <simpleContent>
+ <extension base="string">
+ <attribute name="number" type="xipo:SKU"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+</schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/report2.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/report2.xsd
new file mode 100644
index 0000000000..a114cad4f2
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/report2.xsd
@@ -0,0 +1,82 @@
+<schema targetNamespace="http://www.example.com/Report"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:r="http://www.example.com/Report"
+ xmlns:xipo="http://www.example.com/IPO"
+ elementFormDefault="qualified">
+
+ <!-- for SKU -->
+ <import namespace="http://www.example.com/IPO" schemaLocation="ipo.xsd"/>
+
+ <annotation>
+ <documentation xml:lang="en">
+ Report schema for Example.com
+ Copyright 2000 Example.com. All rights reserved.
+ </documentation>
+ </annotation>
+
+ <element name="purchaseReport">
+ <complexType>
+ <sequence>
+ <element name="regions" type="r:RegionsType"/>
+
+ <element name="parts" type="r:PartsType"/>
+ </sequence>
+ <attribute name="period" type="duration"/>
+ <attribute name="periodEnding" type="date"/>
+ </complexType>
+
+ <unique name="dummy1">
+ <selector xpath="r:regions/r:zip"/>
+ <field xpath="@code"/>
+ </unique>
+
+ <key name="pNumKey">
+ <selector xpath="r:parts/r:part"/>
+ <field xpath="@number"/>
+ </key>
+
+ <keyref name="dummy2" refer="r:pNumKey">
+ <selector xpath="r:regions/r:zip/r:part"/>
+ <field xpath="@number"/>
+ </keyref>
+
+ </element>
+
+ <complexType name="RegionsType">
+ <sequence>
+ <element name="zip" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="part" maxOccurs="unbounded">
+ <complexType>
+ <complexContent>
+ <restriction base="anyType">
+ <attribute name="number" type="xipo:SKU"/>
+ <attribute name="quantity" type="positiveInteger"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="code" type="positiveInteger"/>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+ <complexType name="PartsType">
+ <sequence>
+ <element name="part" maxOccurs="unbounded">
+ <complexType>
+ <simpleContent>
+ <extension base="string">
+ <attribute name="number" type="xipo:SKU"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+</schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/simple_int.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/simple_int.xsd
new file mode 100644
index 0000000000..12f98421dc
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/simple_int.xsd
@@ -0,0 +1,13 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="purchaseOrder" type="xsd:int"/>
+
+ <xsd:element name="comment" type="xsd:string"/>
+</xsd:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/IntegratedSite.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/IntegratedSite.xsd
new file mode 100644
index 0000000000..e211b313c2
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/IntegratedSite.xsd
@@ -0,0 +1,5238 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ericsson.com/is/isco/IntegratedSite" xmlns="http://www.ericsson.com/is/isco/IntegratedSite" xmlns:nc="http://www.ericsson.com/is/isco/nc" xmlns:IsTypes="http://www.ericsson.com/is/isco/IsTypes" xmlns:MainSwitch="http://www.ericsson.com/is/isco/MainSwitch_1" xmlns:MyBsModel="http://www.ericsson.com/is/isco/MyBsModel_1">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <mim file="bs_mim.xml" version=""/>
+ <mim file="cpd_mim.xml" version=""/>
+ <mim file="hwm_mim.xml" version=""/>
+ <mim file="swm_mim.xml" version=""/>
+ <mim file="top_mim.xml" version=""/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:import schemaLocation="nc.xsd" namespace="http://www.ericsson.com/is/isco/nc"/>
+ <xsd:import schemaLocation="IsTypes.xsd" namespace="http://www.ericsson.com/is/isco/IsTypes"/>
+ <xsd:import schemaLocation="MainSwitch_1.xsd" namespace="http://www.ericsson.com/is/isco/MainSwitch_1"/>
+ <xsd:import schemaLocation="MyBsModel_1.xsd" namespace="http://www.ericsson.com/is/isco/MyBsModel_1"/>
+ <xsd:complexType name="JobData">
+ <xsd:annotation>
+ <xsd:documentation>
+ Data to specify a jobs progress, status etc during its execution.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="jobDateOrdered">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType0">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="jobStatus" type="JobStatus"/>
+ <xsd:element name="jobResult" type="JobResult"/>
+ <xsd:element name="jobInfo">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="jobProgress" type="Unsigned32"/>
+ <xsd:element name="jobLaststep" type="Unsigned32"/>
+ <xsd:element name="jobProgressReport">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="BladeUgSpecification">
+ <xsd:annotation>
+ <xsd:documentation>
+ Specification of a blade when an upgrade job is ordered for a
+ specific blade. This data always belongs to and is included in
+ an upgrade job for a blade system.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="ixBladeSubrack" type="Unsigned32"/>
+ <xsd:element name="ixBladeSlot" type="Unsigned32"/>
+ <xsd:element name="bladeSwgProdnr">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="bladeSwgVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="FTPData">
+ <xsd:annotation>
+ <xsd:documentation>
+ Data to specify FTP server info, such as host, user,
+ password and path, to locate correct files or destination
+ for files.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="host">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="user">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="password">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="path">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="HwmKnockOutType">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType3">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="HwmOperationalStateType">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="SwgStatus">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicates status of software groups. A software group is
+ complete if all included load module containers have been
+ downloaded and unpacked correctly. A software group is inconsistent
+ if the checksums of the load module containers do not match the
+ information in the system information CXP, or if the XML
+ data could not be registered.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType5">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="HwmBusTypeType">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType6">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="Unsigned32">
+ <xsd:annotation>
+ <xsd:documentation>
+ Datatype for an integer according to SNMPv2 definition of
+ unsigned32.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType7">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="JobResult">
+ <xsd:annotation>
+ <xsd:documentation>
+ Possible results of an action for a job.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType8">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="HwmAdministrativeStateType">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType9">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="ContainerType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Type of a load module container.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType10">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="MatchStrategy">
+ <xsd:annotation>
+ <xsd:documentation>
+ Interpretation of given filename and path.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType11">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="DownloadStrategy">
+ <xsd:annotation>
+ <xsd:documentation>
+ Interpretation according to existing files.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType12">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="JobStatus">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicator of job status.
+ A job should be started immediately, but could be postponed
+ if the total load on the system would become too high.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType13">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="HwmAvailabilityStatusType">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType14">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="HwmSlotStateType">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType15">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:element name="model">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Is" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ The top class - the forefather of all classes.
+
+ Key attributes: []
+
+ Possible children:
+ Hardware
+ Software
+ NetworkConfiguration
+ BladeSystems
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Hardware" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ Functional area Hardware Management
+
+ Key attributes: []
+
+ Possible children:
+ BladeType
+ Subrack
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="BladeType" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes a Blade.
+
+ Key attributes: [key]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="key">
+ <xsd:annotation>
+ <xsd:documentation>
+ The blade type number like CNA12801
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ The name of the Blade Type.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="width">
+ <xsd:annotation>
+ <xsd:documentation>
+ The width of the blade in number of slots.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="oneGLinks">
+ <xsd:annotation>
+ <xsd:documentation>
+ The 1G links used by the blade type , like 0,1, counted from
+ the leftmost backplane position.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="linkAggregates">
+ <xsd:annotation>
+ <xsd:documentation>
+ The 1G links used for link aggregation by the blade type , like 0-1,
+ counted from the leftmost backplane position.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="hasHwData">
+ <xsd:annotation>
+ <xsd:documentation>
+ True if possible to read product info via the maintenance bus.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isMxb">
+ <xsd:annotation>
+ <xsd:documentation>
+ True if this is a Main Switch blade type.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="availOneGSlots">
+ <xsd:annotation>
+ <xsd:documentation>
+ Only valid for main switch blades. A list of slots that have 1G link.
+ Could be a single slot or a range or a combination thereof.
+ E.g. 1-24, or 1,3-13,15-24.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="aggregateRanges">
+ <xsd:annotation>
+ <xsd:documentation>
+ Only valid for main switch blades. Specifies which slots can be used
+ for link aggregation. Ranges are specified in the form 1-12,13-24.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Subrack" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes the subrack.
+
+ Key attributes: [id]
+
+ Possible children:
+ Slot
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:annotation>
+ <xsd:documentation>
+ Identifies a certain subrack.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType16">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="type">
+ <xsd:annotation>
+ <xsd:documentation>
+ The type of subrack.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="userLabel">
+ <xsd:annotation>
+ <xsd:documentation>
+ A user friendly Subrack name.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="position">
+ <xsd:annotation>
+ <xsd:documentation>
+ The subrack position in the cabinet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="cabinetPosition">
+ <xsd:annotation>
+ <xsd:documentation>
+ The cabinet position in the site.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="location">
+ <xsd:annotation>
+ <xsd:documentation>
+ The site location, e.g. the visiting address.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="availableOneGSlots">
+ <xsd:annotation>
+ <xsd:documentation>
+ Available slots for 1G switch links. Information taken from the type
+ of main switch blade that is created in the subrack.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="availableTenGSlots">
+ <xsd:annotation>
+ <xsd:documentation>
+ Available slots for 10G switch links. Information taken from the type
+ of main switch blade that is created in the subrack.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="aggregateSlots">
+ <xsd:annotation>
+ <xsd:documentation>
+ Links ranges for (1G) link aggregation. Information taken from the
+ type of main switch blade that is created in the subrack.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Slot" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This table corresponds to slots, there is one row in the table
+ for each slot. The slots are grouped per subrack. A slot is
+ identified by subrack Id and slot number). The subrack Id for a slot
+ identifies in the subrackTable the subrack that the slot belongs
+ to.
+
+ Key attributes: [number]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="number">
+ <xsd:annotation>
+ <xsd:documentation>
+ The value of this object identifies the
+ slot position within the subrack.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType17">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="state" type="HwmSlotStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ See HwmSlotStateType description.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bladeSystem">
+ <xsd:annotation>
+ <xsd:documentation>
+ The value of this object identifies the Blade System that uses this
+ slot. An instances of this object will only have meaning in a
+ conceptual row if the value of hemSlotState instance is either
+ usedOccupied or usedEmpty in the same conceptual row,
+ i.e. there is an Blade System created using this slot. (If
+ no Blade System is using the slot, the value will be -1.)
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Software" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ Top class of structure for SWM MOM.
+
+ Key attributes: []
+
+ Possible children:
+ Inventory
+ Jobs
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Inventory" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ Subclass to top class Software. Parent of
+ Inventory classes:
+ SoftwareDeliveryPackage,
+ SoftwareGroup,
+ LocalBackup,
+ Alarm.
+ Inventory actions:
+ DownloadFile
+ ImportBackup
+ Only system created data for info and overview,
+ sometimes as a result of an action called by the
+ operator.
+
+ Key attributes: []
+
+ Possible children:
+ Alarm
+ LocalBackup
+ SoftwareDeliveryPackage
+ SoftwareGroup
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Alarm" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ MO of all alarms logged in the system that has not been
+ taken care of in a satisfactory way.
+
+ Key attributes: [alarmId]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="alarmId" type="Unsigned32"/>
+ <xsd:element minOccurs="0" name="faultyBladeSystem">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="faultCause">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="faultInfo">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="LocalBackup" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ All available backups locally stored.
+
+ Key attributes: [localBackupId]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="localBackupId" type="Unsigned32"/>
+ <xsd:element minOccurs="0" name="name">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bladeSystem">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="date">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType0">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="size" type="Unsigned32"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="SoftwareDeliveryPackage" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ MO for info about LoadModuleContainers, ie CXPs.
+
+ Key attributes: [ixProdNr,ixVersion]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="ixProdNr">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ixVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="name">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="type" type="ContainerType"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="SoftwareGroup" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class reference to multiple MOs of class
+ SoftwareDeliveryPackage, ie the relationship between
+ CXPs and CXS.
+
+ Key attributes: [ixProdnr,ixVersion]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="ixProdnr">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ixVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="name">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="systemProdNr">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="systemVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="systemName">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="integratedSystemProdNr">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="integratedSystemVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="integratedSystemName">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="relatedCXPs">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType18">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="status" type="SwgStatus"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Jobs" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ Subclass to top class Software. Parent of
+ Jobs classes:
+ DownloadFile,
+ Upgrade,
+ Backup.
+ System created data through ordered job actions.
+
+ Key attributes: []
+
+ Possible children:
+ Backup
+ DownloadFile
+ Upgrade
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Backup" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ Subclass to class Jobs. Parent of
+ Jobs classes:
+ Create,
+ Restore
+ Import,
+ Export.System created data through ordered backup job actions.
+
+ Key attributes: []
+
+ Possible children:
+ Create
+ Export
+ Import
+ Restore
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Create" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This MO handles creation of backups of the system.
+
+ Key attributes: [backupJobId]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="backupJobId">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="jobData" type="JobData"/>
+ <xsd:element minOccurs="0" name="backupId" type="Unsigned32"/>
+ <xsd:element minOccurs="0" name="targetBladeSystem">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="backupName">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Export" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This MO handles export of locally stored backup files to
+ the FTP server.
+
+ Key attributes: [exportJobId]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="exportJobId">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="jobData" type="JobData"/>
+ <xsd:element minOccurs="0" name="ftpData" type="FTPData"/>
+ <xsd:element minOccurs="0" name="backupId" type="Unsigned32"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Import" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This MO handles import of backup files from the FTP server.
+ The backup file is stored locally, but not loaded into the system.
+
+ Key attributes: [importJobId]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="importJobId">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="jobData" type="JobData"/>
+ <xsd:element minOccurs="0" name="ftpData" type="FTPData"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Restore" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This MO handles restore of backups of the system.
+
+ Key attributes: [restoreJobId]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="restoreJobId">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="jobData" type="JobData"/>
+ <xsd:element minOccurs="0" name="backupId" type="Unsigned32"/>
+ <xsd:element minOccurs="0" name="targetBladeSystem">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="backupName">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="DownloadFile" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This MO contains information about requested, ongoing,
+ and completed software file download jobs. To start a
+ download job the operator calls an action Inventory class,
+ and a new instance of this MO is created.
+ For load regulating reasons a requested job may not start
+ immediately.
+
+ Key attributes: [downloadFileJobId]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="downloadFileJobId">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="jobData" type="JobData"/>
+ <xsd:element minOccurs="0" name="ftpData" type="FTPData"/>
+ <xsd:element minOccurs="0" name="matchStrategy" type="MatchStrategy"/>
+ <xsd:element minOccurs="0" name="downloadStrategy" type="DownloadStrategy"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Upgrade" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This MO handles upgrade jobs towards the system. The operator
+ may specify a specific blade to run the upgrade on, instead of
+ running an upgrade on the entire blade system.
+
+ Key attributes: [upgradeJobId]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="upgradeJobId">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="jobData" type="JobData"/>
+ <xsd:element minOccurs="0" name="bladeSystem">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="selectedSwgProdNr">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="selectedSwgVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="selectedCxrProdNr">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="selectedCxrVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="MaxTime" type="Unsigned32">
+ <xsd:annotation>
+ <xsd:documentation>
+ The maximum time allowed for the SW Upgrade
+ job to finish. After this time, the job will be interrupted.
+ The value 0 means that MaxTime will be given the
+ timer value registered with the Blade System Software Group
+ Version. If no such value has been registered,
+ MaxTime will be given a system default timer value.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bladeUgSpecification" type="BladeUgSpecification"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="NetworkConfiguration" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ The MO branch where the common Network resources are configured.
+
+ Key attributes: []
+
+ Possible children:
+ IsIpTrafficClass
+ IsLanTrafficClass
+ IsLogicalNetwork
+ IsVariables
+ IsVlan
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="IsIpTrafficClass" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [name]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name if the IS IP Traffic Class.
+ Unique within the entire Integrated Site.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the IS IP Traffic Class.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="dscp">
+ <xsd:annotation>
+ <xsd:documentation>
+ DiffServ Code Point setting for this IS IP Traffic Class.
+ If there are two IS Ip Traffic Classes with the same DSCP, they
+ both must refer to an IS Lan Traffic Class with identical P-bit setting.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isLanTrafficClass">
+ <xsd:annotation>
+ <xsd:documentation>
+ Reference to a Managed Object of type ISLanTrafficClass.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType19">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="IsLanTrafficClass" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ An IS Lan Traffic Class may be shared between several Blade Systems.
+
+ Key attributes: [name]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the IS Lan Traffic Class.
+ Unique within the entire Integrated Site.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the IS Lan Traffic Class.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="pbits">
+ <xsd:annotation>
+ <xsd:documentation>
+ P-bit setting for this IS Lan Traffic Class.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType20">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="IsLogicalNetwork" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ An IS Logical Network contains one or more IS Subnets.
+ It may be shared between several Blade Systems.
+
+ Key attributes: [name]
+
+ Possible children:
+ IsSubnet
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the IS Logical Network.
+ Unique within the entire Integrated Site.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the IS logical network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="IsSubnet" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ An IS Subnet contains one or more IS Subnet Segments.
+ It may be shared between several Blade Systems.
+
+ Key attributes: [name]
+
+ Possible children:
+ IsSubnetSegment
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the IS Subnet. Unique within the IS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the IS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="address" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP network address of the IS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="mask">
+ <xsd:annotation>
+ <xsd:documentation>
+ Prefix length of the IP network address.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType21">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="broadcastAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ Broadcast address of the IS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isVlanId">
+ <xsd:annotation>
+ <xsd:documentation>
+ Identity of an IS VLAN.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="IsSubnetSegment" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ An IS Subnet Segment may be shared between several Blade Systems.
+
+ Key attributes: [name]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the IS Subnet Segment. Unique within the IS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the IS Subnet Segment.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="address" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP network address of the IS Subnet Segment.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="mask">
+ <xsd:annotation>
+ <xsd:documentation>
+ Prefix length of the IP network address.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType21">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="routerAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ Router address for the IS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="dhcpEnabled">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that controls wheter DHCP should be enabled or not for this
+ IS Subnet Segment.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="IsVariables" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: []
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element minOccurs="0" name="updateMode">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType22">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="dataModelVersion">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="major">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="minor">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="rlspMarkerGenerateInterval">
+ <xsd:annotation>
+ <xsd:documentation>
+ The RLSP marker generate interval in microseconds.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType7">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="timezoneDstRule">
+ <xsd:annotation>
+ <xsd:documentation>
+ Daylight savings rule in posix standard format.
+ Better description to be supplied later........and a regular expression
+ which describes the valid string format.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="dnsDomain">
+ <xsd:annotation>
+ <xsd:documentation>
+ The dns domain used by IS in the DNS-server.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType23">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="notifyAfter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Number of seconds from that a new network configuration has been
+ published until the Blade Systems will apply the changes.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="defaultDhcpLeaseTime">
+ <xsd:annotation>
+ <xsd:documentation>
+ The default DHCP Lease time in seconds.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="lifeTimeDhcpLeaseTime">
+ <xsd:annotation>
+ <xsd:documentation>
+ The lifetime of a DHCP lease in seconds.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="IsVlan" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ An IS Vlan may be shared between several Blade Systems.
+
+ Key attributes: [identity]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="identity">
+ <xsd:annotation>
+ <xsd:documentation>
+ Identity of the IS Vlan. Unique within the entire Integrated Site.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType24">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the IS Vlan.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BladeSystems" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ The BladeSystems mountpoint - parent of all blade systems.
+
+ Key attributes: []
+
+ Possible children:
+ BladeSystemTemplate
+ Mxb
+ MyBsModel
+ Sis
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Mxb" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes a Blade System. It will be cloned for each
+ new blade system type registered in the system. The new clone
+ will serve as a mountpoint for the blade system specific model.
+
+ Key attributes: [name]
+
+ Possible children:
+ Blade
+ BsIpTrafficClass
+ BsLanTrafficClass
+ BsLogicalNetwork
+ BsVlan
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ A user friendly Blade System name, must be set at creation and can be
+ changed when BS is locked.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="no">
+ <xsd:annotation>
+ <xsd:documentation>
+ An identifier for the BS. A new integer has to be used every time a new
+ BS is created. ??? Kvar ???
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="softwareGroupId">
+ <xsd:annotation>
+ <xsd:documentation>
+ The identity of the Software Group (SWG) that the BS implements.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="softwareGroupRevision">
+ <xsd:annotation>
+ <xsd:documentation>
+ The revision of the Software Group (SWG) that the BS implements.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="admState" type="HwmAdministrativeStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The administrative state of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="opState" type="HwmOperationalStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The operational state of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="availStatus" type="HwmAvailabilityStatusType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The availability status of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="locked">
+ <xsd:annotation>
+ <xsd:documentation>
+ eller s�tta admState ????????????
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsomAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address of the Blade System OaM Master.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Blade" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes a Blade.
+ A Blade is identified by the subrack and slot number.
+
+ Key attributes: [subrackId,slotNo]
+
+ Possible children:
+ LinkSap
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackId">
+ <xsd:annotation>
+ <xsd:documentation>
+ A reference to the associated subrack (i.e. the value of 'subrackId'
+ for the associated subrack)
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType16">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="slotNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ The slot number for this Blade within the subrack.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType17">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="slotLabel">
+ <xsd:annotation>
+ <xsd:documentation>
+ The slot label of the blade. Will only be set at creation of table row.
+ This should be used in alarms related to the slot to inform the
+ operator of what position in the subrack the blade is located in.
+ E.g. for GEM subracks it will be a string like X02 for slot 0
+ up to X80 for slot 25.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ An identifier for the BS to which the blade belongs.
+ A value of 0 means that the blade is inserted in the subrack but it
+ has not been configured to any BS yet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="type">
+ <xsd:annotation>
+ <xsd:documentation>
+ The type of the Blade defined by a string BladTypeIdAndRev.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgLowestId">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgLowestRev">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgActualId">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgActualRev">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsom">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="knockOutType" type="HwmKnockOutType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Set to protected if blade sholud no be knocked out before the
+ switch blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="userLabel">
+ <xsd:annotation>
+ <xsd:documentation>
+ A user friendly Blade name, always possible to set.
+ Default value indicates HwmBladeType and used slot.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="admState" type="HwmAdministrativeStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The administrative state of the Blade. The Blade is
+ unblocked by setting this object to unlocked and blocked
+ by setting it to locked. If the object already has the
+ desired value or the hwmBladeOpState has a transient OpState value
+ the set operation will be rejected. The set operation may be
+ rejected due to other reasons as well.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="opState" type="HwmOperationalStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The operational state of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="availState" type="HwmAvailabilityStatusType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The availability status of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="busType" type="HwmBusTypeType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The type of maintenance bus on the found Blade
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="prodNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Product Number of the found Blade
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="prodRev">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Product Revision of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="serialNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Serial Number of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="prodName">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Product Name of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="vendor">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Vendor name of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="mfgDate">
+ <xsd:annotation>
+ <xsd:documentation>
+ The manufacturing date of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="macAddressAggregate" type="IsTypes:MacAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ The aggregated MAC address of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="macAddressLeft" type="IsTypes:MacAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ The left link MAC address of the found Blade. Only used by some blades
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="macAddressRight" type="IsTypes:MacAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ The right link MAC address of the found Blade. Only used by some blades
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="changeDate">
+ <xsd:annotation>
+ <xsd:documentation>
+ The date when the blade was last changed.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="lock">
+ <xsd:annotation>
+ <xsd:documentation>
+ Borde kanske varfa en �ndring av admstate.????
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ The name of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isbsAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address on the ISBS subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isobAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address on the ISOB subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="islctAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address on the ISLCT subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="LinkSap" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ A Blade may have one or more resilient interfaces to the backplane. Such
+ interface is called Link Service Access Point and are automatically
+ created and deleted along with the hosting blade.
+
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:annotation>
+ <xsd:documentation>
+ The id of a LinkSap is a number from 0 to X within the slot.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the Link Service Access Point.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsIpTrafficClass" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isIpTrafficClassRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType25">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsLanTrafficClass" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isLanTrafficClassRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType19">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsLogicalNetwork" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [name]
+
+ Possible children:
+ BsSubnet
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS logical network. Unique within the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="private">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that shows whether the BS Logical Network is private for this
+ Blade System or if it may be shared among several Blade Systems.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isLogicalNetworkRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ Reference to the corresponding IS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType26">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsSubnet" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS Subnets can either be created manually by the operator or they
+ can be automatically created from pre-registered network requirements
+ bundled with the Blade System software.
+ Regardless of how they are created,
+ each one needs to be mapped to both a BS VLan and an
+ IS Subnet before blades can be unlocked via the Hardware service.
+ Each BS Subnet contains one or more BS Subnet Segments.
+
+ Key attributes: [name]
+
+ Possible children:
+ BsSubnetSegment
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS Subnet. Unique within the BS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsVlanRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType27">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isSubnetRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType28">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsSubnetSegment" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS Subnet Segments can either be created manually by you or they can
+ be automatically created from pre-registered network requirements
+ bundled with the Blade System software. Regardless of how they are created,
+ each one needs to be mapped to an IS Subnet Segment before the blades
+ can be unlocked via the Hardware service.
+ The mapping is done with the 'isSubnetSegmentRef' attribute.
+
+ Key attributes: [name]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS Subnet Segment. Unique within the BS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Subnet Segment.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="numOfIpaddresses">
+ <xsd:annotation>
+ <xsd:documentation>
+ Number of required IP addresses in the IS Subnet Segment.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="dhcpEnabled">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that controls whether the corresponding IS Subnet Segment is
+ required to have DHCP enabled or not.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="routerRequired">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that controls whether the corresponding IS Subnet Segment is
+ required to have a router configured or not.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isSubnetSegmentRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ The mapping to a corresponding IS Subnet Segment. The mapping here must
+ be done before the blades of the blade system can be unlocked.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType29">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsVlan" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS VLANs can either be created manually by the
+ operator or they can be automatically created from pre-registered
+ network requirements bundled with the Blade System software.
+ Regardless of how they are created, each one needs to be mapped to
+ an IS VLAN before the blades can be unlocked.
+
+ Key attributes: [name]
+
+ Possible children:
+ BsVlanSap
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS Vlan. Unique within the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Vlan.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isVlanRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ The mapping to a corresponding IS Vlan. This mapping must be done before
+ the blades of the Blade System can be unlocked.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType30">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsVlanSap" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS VLAN Service Access Points can either be created manually by the
+ operator or they can be automatically created from pre-registered
+ network requirements bundled with the Blade System software.
+ Regardless of how they are created, each one needs to be mapped to
+ an Link SAP before the blades can be unlocked.
+
+ Key attributes: [name]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS VLAN SAP. Uniqie within the BS VLAN.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS VLAN SAP.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="static">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag which controls whether this BS VLAN SAP makes static or dynamic
+ use of the corresponding IS VLAN.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="protected">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag which controls whether this BS VLAN SAP should be
+ isolation protected or not.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="linkSapRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ A mapping to the corresponding Link Service Access Point.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType31">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="MyBsModel" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes a Blade System. It will be cloned for each
+ new blade system type registered in the system. The new clone
+ will serve as a mountpoint for the blade system specific model.
+
+ Key attributes: [name]
+
+ Possible children:
+ Blade
+ BsIpTrafficClass
+ BsLanTrafficClass
+ BsLogicalNetwork
+ BsVlan
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ A user friendly Blade System name, must be set at creation and can be
+ changed when BS is locked.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="no">
+ <xsd:annotation>
+ <xsd:documentation>
+ An identifier for the BS. A new integer has to be used every time a new
+ BS is created. ??? Kvar ???
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="softwareGroupId">
+ <xsd:annotation>
+ <xsd:documentation>
+ The identity of the Software Group (SWG) that the BS implements.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="softwareGroupRevision">
+ <xsd:annotation>
+ <xsd:documentation>
+ The revision of the Software Group (SWG) that the BS implements.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="admState" type="HwmAdministrativeStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The administrative state of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="opState" type="HwmOperationalStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The operational state of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="availStatus" type="HwmAvailabilityStatusType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The availability status of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="locked">
+ <xsd:annotation>
+ <xsd:documentation>
+ eller s�tta admState ????????????
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsomAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address of the Blade System OaM Master.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Blade" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes a Blade.
+ A Blade is identified by the subrack and slot number.
+
+ Key attributes: [subrackId,slotNo]
+
+ Possible children:
+ LinkSap
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackId">
+ <xsd:annotation>
+ <xsd:documentation>
+ A reference to the associated subrack (i.e. the value of 'subrackId'
+ for the associated subrack)
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType16">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="slotNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ The slot number for this Blade within the subrack.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType17">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="slotLabel">
+ <xsd:annotation>
+ <xsd:documentation>
+ The slot label of the blade. Will only be set at creation of table row.
+ This should be used in alarms related to the slot to inform the
+ operator of what position in the subrack the blade is located in.
+ E.g. for GEM subracks it will be a string like X02 for slot 0
+ up to X80 for slot 25.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ An identifier for the BS to which the blade belongs.
+ A value of 0 means that the blade is inserted in the subrack but it
+ has not been configured to any BS yet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="type">
+ <xsd:annotation>
+ <xsd:documentation>
+ The type of the Blade defined by a string BladTypeIdAndRev.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgLowestId">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgLowestRev">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgActualId">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgActualRev">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsom">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="knockOutType" type="HwmKnockOutType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Set to protected if blade sholud no be knocked out before the
+ switch blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="userLabel">
+ <xsd:annotation>
+ <xsd:documentation>
+ A user friendly Blade name, always possible to set.
+ Default value indicates HwmBladeType and used slot.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="admState" type="HwmAdministrativeStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The administrative state of the Blade. The Blade is
+ unblocked by setting this object to unlocked and blocked
+ by setting it to locked. If the object already has the
+ desired value or the hwmBladeOpState has a transient OpState value
+ the set operation will be rejected. The set operation may be
+ rejected due to other reasons as well.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="opState" type="HwmOperationalStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The operational state of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="availState" type="HwmAvailabilityStatusType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The availability status of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="busType" type="HwmBusTypeType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The type of maintenance bus on the found Blade
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="prodNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Product Number of the found Blade
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="prodRev">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Product Revision of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="serialNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Serial Number of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="prodName">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Product Name of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="vendor">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Vendor name of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="mfgDate">
+ <xsd:annotation>
+ <xsd:documentation>
+ The manufacturing date of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="macAddressAggregate" type="IsTypes:MacAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ The aggregated MAC address of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="macAddressLeft" type="IsTypes:MacAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ The left link MAC address of the found Blade. Only used by some blades
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="macAddressRight" type="IsTypes:MacAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ The right link MAC address of the found Blade. Only used by some blades
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="changeDate">
+ <xsd:annotation>
+ <xsd:documentation>
+ The date when the blade was last changed.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="lock">
+ <xsd:annotation>
+ <xsd:documentation>
+ Borde kanske varfa en �ndring av admstate.????
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ The name of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isbsAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address on the ISBS subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isobAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address on the ISOB subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="islctAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address on the ISLCT subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="LinkSap" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ A Blade may have one or more resilient interfaces to the backplane. Such
+ interface is called Link Service Access Point and are automatically
+ created and deleted along with the hosting blade.
+
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:annotation>
+ <xsd:documentation>
+ The id of a LinkSap is a number from 0 to X within the slot.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the Link Service Access Point.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsIpTrafficClass" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isIpTrafficClassRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType25">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsLanTrafficClass" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isLanTrafficClassRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType19">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsLogicalNetwork" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [name]
+
+ Possible children:
+ BsSubnet
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS logical network. Unique within the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="private">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that shows whether the BS Logical Network is private for this
+ Blade System or if it may be shared among several Blade Systems.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isLogicalNetworkRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ Reference to the corresponding IS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType26">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsSubnet" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS Subnets can either be created manually by the operator or they
+ can be automatically created from pre-registered network requirements
+ bundled with the Blade System software.
+ Regardless of how they are created,
+ each one needs to be mapped to both a BS VLan and an
+ IS Subnet before blades can be unlocked via the Hardware service.
+ Each BS Subnet contains one or more BS Subnet Segments.
+
+ Key attributes: [name]
+
+ Possible children:
+ BsSubnetSegment
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS Subnet. Unique within the BS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsVlanRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType27">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isSubnetRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType28">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsSubnetSegment" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS Subnet Segments can either be created manually by you or they can
+ be automatically created from pre-registered network requirements
+ bundled with the Blade System software. Regardless of how they are created,
+ each one needs to be mapped to an IS Subnet Segment before the blades
+ can be unlocked via the Hardware service.
+ The mapping is done with the 'isSubnetSegmentRef' attribute.
+
+ Key attributes: [name]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS Subnet Segment. Unique within the BS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Subnet Segment.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="numOfIpaddresses">
+ <xsd:annotation>
+ <xsd:documentation>
+ Number of required IP addresses in the IS Subnet Segment.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="dhcpEnabled">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that controls whether the corresponding IS Subnet Segment is
+ required to have DHCP enabled or not.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="routerRequired">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that controls whether the corresponding IS Subnet Segment is
+ required to have a router configured or not.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isSubnetSegmentRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ The mapping to a corresponding IS Subnet Segment. The mapping here must
+ be done before the blades of the blade system can be unlocked.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType29">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsVlan" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS VLANs can either be created manually by the
+ operator or they can be automatically created from pre-registered
+ network requirements bundled with the Blade System software.
+ Regardless of how they are created, each one needs to be mapped to
+ an IS VLAN before the blades can be unlocked.
+
+ Key attributes: [name]
+
+ Possible children:
+ BsVlanSap
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS Vlan. Unique within the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Vlan.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isVlanRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ The mapping to a corresponding IS Vlan. This mapping must be done before
+ the blades of the Blade System can be unlocked.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType30">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsVlanSap" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS VLAN Service Access Points can either be created manually by the
+ operator or they can be automatically created from pre-registered
+ network requirements bundled with the Blade System software.
+ Regardless of how they are created, each one needs to be mapped to
+ an Link SAP before the blades can be unlocked.
+
+ Key attributes: [name]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS VLAN SAP. Uniqie within the BS VLAN.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS VLAN SAP.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="static">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag which controls whether this BS VLAN SAP makes static or dynamic
+ use of the corresponding IS VLAN.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="protected">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag which controls whether this BS VLAN SAP should be
+ isolation protected or not.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="linkSapRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ A mapping to the corresponding Link Service Access Point.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType31">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element ref="MyBsModel:model" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Sis" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes a Blade System. It will be cloned for each
+ new blade system type registered in the system. The new clone
+ will serve as a mountpoint for the blade system specific model.
+
+ Key attributes: [name]
+
+ Possible children:
+ Blade
+ BsIpTrafficClass
+ BsLanTrafficClass
+ BsLogicalNetwork
+ BsVlan
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ A user friendly Blade System name, must be set at creation and can be
+ changed when BS is locked.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="no">
+ <xsd:annotation>
+ <xsd:documentation>
+ An identifier for the BS. A new integer has to be used every time a new
+ BS is created. ??? Kvar ???
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="softwareGroupId">
+ <xsd:annotation>
+ <xsd:documentation>
+ The identity of the Software Group (SWG) that the BS implements.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="softwareGroupRevision">
+ <xsd:annotation>
+ <xsd:documentation>
+ The revision of the Software Group (SWG) that the BS implements.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="admState" type="HwmAdministrativeStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The administrative state of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="opState" type="HwmOperationalStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The operational state of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="availStatus" type="HwmAvailabilityStatusType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The availability status of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="locked">
+ <xsd:annotation>
+ <xsd:documentation>
+ eller s�tta admState ????????????
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsomAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address of the Blade System OaM Master.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Blade" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes a Blade.
+ A Blade is identified by the subrack and slot number.
+
+ Key attributes: [subrackId,slotNo]
+
+ Possible children:
+ LinkSap
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackId">
+ <xsd:annotation>
+ <xsd:documentation>
+ A reference to the associated subrack (i.e. the value of 'subrackId'
+ for the associated subrack)
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType16">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="slotNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ The slot number for this Blade within the subrack.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType17">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="slotLabel">
+ <xsd:annotation>
+ <xsd:documentation>
+ The slot label of the blade. Will only be set at creation of table row.
+ This should be used in alarms related to the slot to inform the
+ operator of what position in the subrack the blade is located in.
+ E.g. for GEM subracks it will be a string like X02 for slot 0
+ up to X80 for slot 25.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ An identifier for the BS to which the blade belongs.
+ A value of 0 means that the blade is inserted in the subrack but it
+ has not been configured to any BS yet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="type">
+ <xsd:annotation>
+ <xsd:documentation>
+ The type of the Blade defined by a string BladTypeIdAndRev.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgLowestId">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgLowestRev">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgActualId">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="swgActualRev">
+ <xsd:annotation>
+ <xsd:documentation>
+ The SW group of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsom">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="knockOutType" type="HwmKnockOutType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Set to protected if blade sholud no be knocked out before the
+ switch blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="userLabel">
+ <xsd:annotation>
+ <xsd:documentation>
+ A user friendly Blade name, always possible to set.
+ Default value indicates HwmBladeType and used slot.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="admState" type="HwmAdministrativeStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The administrative state of the Blade. The Blade is
+ unblocked by setting this object to unlocked and blocked
+ by setting it to locked. If the object already has the
+ desired value or the hwmBladeOpState has a transient OpState value
+ the set operation will be rejected. The set operation may be
+ rejected due to other reasons as well.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="opState" type="HwmOperationalStateType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The operational state of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="availState" type="HwmAvailabilityStatusType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The availability status of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="busType" type="HwmBusTypeType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The type of maintenance bus on the found Blade
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="prodNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Product Number of the found Blade
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="prodRev">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Product Revision of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="serialNo">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Serial Number of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="prodName">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Product Name of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="vendor">
+ <xsd:annotation>
+ <xsd:documentation>
+ The Vendor name of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="mfgDate">
+ <xsd:annotation>
+ <xsd:documentation>
+ The manufacturing date of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="macAddressAggregate" type="IsTypes:MacAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ The aggregated MAC address of the found Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="macAddressLeft" type="IsTypes:MacAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ The left link MAC address of the found Blade. Only used by some blades
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="macAddressRight" type="IsTypes:MacAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ The right link MAC address of the found Blade. Only used by some blades
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="changeDate">
+ <xsd:annotation>
+ <xsd:documentation>
+ The date when the blade was last changed.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="lock">
+ <xsd:annotation>
+ <xsd:documentation>
+ Borde kanske varfa en �ndring av admstate.????
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ The name of the Blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the blade.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isbsAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address on the ISBS subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isobAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address on the ISOB subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="islctAddress" type="IsTypes:IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ IP address on the ISLCT subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="LinkSap" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ A Blade may have one or more resilient interfaces to the backplane. Such
+ interface is called Link Service Access Point and are automatically
+ created and deleted along with the hosting blade.
+
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:annotation>
+ <xsd:documentation>
+ The id of a LinkSap is a number from 0 to X within the slot.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the Link Service Access Point.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsIpTrafficClass" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isIpTrafficClassRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType25">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsLanTrafficClass" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isLanTrafficClassRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType19">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsLogicalNetwork" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ Key attributes: [name]
+
+ Possible children:
+ BsSubnet
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS logical network. Unique within the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="private">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that shows whether the BS Logical Network is private for this
+ Blade System or if it may be shared among several Blade Systems.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isLogicalNetworkRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ Reference to the corresponding IS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType26">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsSubnet" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS Subnets can either be created manually by the operator or they
+ can be automatically created from pre-registered network requirements
+ bundled with the Blade System software.
+ Regardless of how they are created,
+ each one needs to be mapped to both a BS VLan and an
+ IS Subnet before blades can be unlocked via the Hardware service.
+ Each BS Subnet contains one or more BS Subnet Segments.
+
+ Key attributes: [name]
+
+ Possible children:
+ BsSubnetSegment
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS Subnet. Unique within the BS Logical Network.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bsVlanRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType27">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isSubnetRef">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType28">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsSubnetSegment" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS Subnet Segments can either be created manually by you or they can
+ be automatically created from pre-registered network requirements
+ bundled with the Blade System software. Regardless of how they are created,
+ each one needs to be mapped to an IS Subnet Segment before the blades
+ can be unlocked via the Hardware service.
+ The mapping is done with the 'isSubnetSegmentRef' attribute.
+
+ Key attributes: [name]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS Subnet Segment. Unique within the BS Subnet.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Subnet Segment.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="numOfIpaddresses">
+ <xsd:annotation>
+ <xsd:documentation>
+ Number of required IP addresses in the IS Subnet Segment.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="dhcpEnabled">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that controls whether the corresponding IS Subnet Segment is
+ required to have DHCP enabled or not.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="routerRequired">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag that controls whether the corresponding IS Subnet Segment is
+ required to have a router configured or not.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isSubnetSegmentRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ The mapping to a corresponding IS Subnet Segment. The mapping here must
+ be done before the blades of the blade system can be unlocked.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType29">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsVlan" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS VLANs can either be created manually by the
+ operator or they can be automatically created from pre-registered
+ network requirements bundled with the Blade System software.
+ Regardless of how they are created, each one needs to be mapped to
+ an IS VLAN before the blades can be unlocked.
+
+ Key attributes: [name]
+
+ Possible children:
+ BsVlanSap
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS Vlan. Unique within the Blade System.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS Vlan.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="isVlanRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ The mapping to a corresponding IS Vlan. This mapping must be done before
+ the blades of the Blade System can be unlocked.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType30">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="BsVlanSap" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ BS VLAN Service Access Points can either be created manually by the
+ operator or they can be automatically created from pre-registered
+ network requirements bundled with the Blade System software.
+ Regardless of how they are created, each one needs to be mapped to
+ an Link SAP before the blades can be unlocked.
+
+ Key attributes: [name]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name">
+ <xsd:annotation>
+ <xsd:documentation>
+ Name of the BS VLAN SAP. Uniqie within the BS VLAN.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Short description of the BS VLAN SAP.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="static">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag which controls whether this BS VLAN SAP makes static or dynamic
+ use of the corresponding IS VLAN.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="protected">
+ <xsd:annotation>
+ <xsd:documentation>
+ Flag which controls whether this BS VLAN SAP should be
+ isolation protected or not.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="linkSapRef">
+ <xsd:annotation>
+ <xsd:documentation>
+ A mapping to the corresponding Link Service Access Point.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType31">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element ref="MainSwitch:model" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:simpleType name="ccsHelperType31">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*LinkSap\[id='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType30">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*IsVlan\[identity='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType29">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*IsSubnetSegment\[name='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType28">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*IsSubnet\[name='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType27">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*BsVlan\[name='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType26">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*IsLogicalNetwork\[name='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType25">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*IsIpTrafficClass\[name='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType24">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="4096"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType23">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="[a-zA-Z]+(.[a-zA-Z])*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType22">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="unsafe"/>
+ <xsd:enumeration value="readOnly"/>
+ <xsd:enumeration value="safe"/>
+ <xsd:enumeration value="preliminary"/>
+ <xsd:enumeration value="prepare"/>
+ <xsd:enumeration value="publish"/>
+ <xsd:enumeration value="accept"/>
+ <xsd:enumeration value="reject"/>
+ <xsd:enumeration value="purge"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType21">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="32"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType20">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="7"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType19">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*IsLanTrafficClass\[name='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType18">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*SoftwareDeliveryPackage\[ixProdNr='[^\]]+'\]\[ixVersion='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType17">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="25"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType16">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType15">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="unsuedEmpty"/>
+ <xsd:enumeration value="usedEmpty"/>
+ <xsd:enumeration value="unusedOccupied"/>
+ <xsd:enumeration value="usedOccupied"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType14">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="available"/>
+ <xsd:enumeration value="failed"/>
+ <xsd:enumeration value="offLine"/>
+ <xsd:enumeration value="dependency"/>
+ <xsd:enumeration value="degraded"/>
+ <xsd:enumeration value="upgrading"/>
+ <xsd:enumeration value="startingUp"/>
+ <xsd:enumeration value="goingOffLine"/>
+ <xsd:enumeration value="notInstalled"/>
+ <xsd:enumeration value="powerOff"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType13">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="notStarted"/>
+ <xsd:enumeration value="ongoing"/>
+ <xsd:enumeration value="complete"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType12">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="onlyIfMissing"/>
+ <xsd:enumeration value="always"/>
+ <xsd:enumeration value="unknown"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType11">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="exact"/>
+ <xsd:enumeration value="prefix"/>
+ <xsd:enumeration value="unknown"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType10">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="bladeSystemInformation"/>
+ <xsd:enumeration value="bladeInformation"/>
+ <xsd:enumeration value="application"/>
+ <xsd:enumeration value="rootFileSystem"/>
+ <xsd:enumeration value="kernel"/>
+ <xsd:enumeration value="correction"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType9">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="locked"/>
+ <xsd:enumeration value="shuttingdown"/>
+ <xsd:enumeration value="unlocked"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType8">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="ok"/>
+ <xsd:enumeration value="inputError"/>
+ <xsd:enumeration value="executionError"/>
+ <xsd:enumeration value="unknown"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType7">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="4294967295"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType6">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="ipmi"/>
+ <xsd:enumeration value="mbus"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType5">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="complete"/>
+ <xsd:enumeration value="incomplete"/>
+ <xsd:enumeration value="inconsistent"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType4">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="disabled"/>
+ <xsd:enumeration value="enabled"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType3">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="normal"/>
+ <xsd:enumeration value="protected"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType2">
+ <xsd:restriction base="xsd:boolean">
+ <xsd:pattern value="(true|false)"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType1">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType0">
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:whiteSpace value="collapse"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/IsTypes.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/IsTypes.xsd
new file mode 100644
index 0000000000..a9607e4253
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/IsTypes.xsd
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ericsson.com/is/isco/IsTypes" xmlns="http://www.ericsson.com/is/isco/IsTypes" xmlns:nc="http://www.ericsson.com/is/isco/nc">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <mim file="types_mim.xml" version=""/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:import schemaLocation="nc.xsd" namespace="http://www.ericsson.com/is/isco/nc"/>
+ <xsd:complexType name="IpAddress">
+ <xsd:annotation>
+ <xsd:documentation>
+ An IPv4 address
+ in the form v1.v2.v3.v4 where v1 ... v4 is a
+ decimal number in the range 0 to 255.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType0">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="MacAddress">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:simpleType name="ccsHelperType1">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="[A-F0-9][A-F0-9]?:[A-F0-9][A-F0-9]?:[A-F0-9][A-F0-9]?:[A-F0-9][A-F0-9]?:[A-F0-9][A-F0-9]?:[A-F0-9][A-F0-9]?"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType0">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/MainSwitch_1.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/MainSwitch_1.xsd
new file mode 100644
index 0000000000..9c91d6efd6
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/MainSwitch_1.xsd
@@ -0,0 +1,1496 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ericsson.com/is/isco/MainSwitch_1" xmlns="http://www.ericsson.com/is/isco/MainSwitch_1" xmlns:nc="http://www.ericsson.com/is/isco/nc">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <mim file="mx_mim.xml" version=""/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:import schemaLocation="nc.xsd" namespace="http://www.ericsson.com/is/isco/nc"/>
+ <xsd:complexType name="SubrackNum">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType0">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="LinkAggregationData">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of Link Aggregation Data
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="aggrPortActorPort">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="aggrPortOperState">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="LinkAggregationOperStateData" minOccurs="8" maxOccurs="8"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ifIndex">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="mode">
+ <xsd:annotation>
+ <xsd:documentation>
+ Port Channel Mode
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="configuredPorts">
+ <xsd:annotation>
+ <xsd:documentation>
+ Number of configured ports for this interface.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="activePorts">
+ <xsd:annotation>
+ <xsd:documentation>
+ Number of active ports for this interface.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="macSelectionPolicy">
+ <xsd:annotation>
+ <xsd:documentation>
+ MAC Selection Policy
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="linkSelectionPolicy">
+ <xsd:annotation>
+ <xsd:documentation>
+ Link Selection Policy
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType3">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="aggregatorMac">
+ <xsd:annotation>
+ <xsd:documentation>
+ MAC address of Aggregator
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="actorId">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="actorPrio">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="actorAdminKey">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="actorOperKey">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="partnerId">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="partnerPrio">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="partnerOperKey">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="PercentUsage">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType5">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="BladeSlotLink">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType6">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="CosQueueConfigurationData">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of COS configuration data
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="queue">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType7">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="buffer" type="PercentUsage">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicates allocated buffer in percent
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="scheduling">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicates if Sceduling is Weighted Round Robin (WRR) or Strict Priority
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType8">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="weight">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicates if Weight in case of WRR is High, Medium or Low
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType9">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="VlanData">
+ <xsd:annotation>
+ <xsd:documentation>
+ This struct describes Vlan data
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="vlanId">
+ <xsd:annotation>
+ <xsd:documentation>
+ Vlan Id
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType10">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="vlanType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Type of Vlan
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType11">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="isolationStatus">
+ <xsd:annotation>
+ <xsd:documentation>
+ Isolation status
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType12">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="StatisticCounter">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="PbitQueue">
+ <xsd:sequence>
+ <xsd:element name="pbitKey">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType7">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="queueValue">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType7">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="LinkAggregationOperStateData">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of Link Aggregation Oper State Data
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="lacpActivity">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicates LACP activity
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType13">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="lacpTimeout">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicates if LACP timeout is long or short
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType14">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="aggregation">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicates if Individual or Aggregatable
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType15">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="syncronization">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicates if Syncronized or not
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType16">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="collecting">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType17">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="distributing">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType17">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="defaulted">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType17">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="expired">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType17">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="MxbSlot">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType18">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="TresholdPercent">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType19">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="PbitToQueueMapping">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of Pbit to queue mapping
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="bladeSlotLink" type="BladeSlotLink"/>
+ <xsd:element name="interface">
+ <xsd:annotation>
+ <xsd:documentation>
+ Interface number
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="pbitQueue">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="PbitQueue" minOccurs="8" maxOccurs="8"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="VlanIds">
+ <xsd:sequence>
+ <xsd:element name="vlanId">
+ <xsd:annotation>
+ <xsd:documentation>
+ Vlan Id
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType10">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:element name="model">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Vlan" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ Administrative and Operative Vlans
+
+ Key attributes: []
+
+ Possible children:
+ VlanAdmin
+ VlanOper
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="VlanAdmin" minOccurs="0" maxOccurs="31">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class shows the Administrative configured Vlans
+
+ Key attributes: [subrackNum]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackNum" type="SubrackNum"/>
+ <xsd:element minOccurs="0" name="numberOfDefinedVlans">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="vlanIds">
+ <xsd:annotation>
+ <xsd:documentation>
+ Information about defined Vlan Ids
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="VlanIds" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="VlanOper" minOccurs="0" maxOccurs="31">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class shows the Operative Vlans
+
+ Key attributes: [subrackNum]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackNum" type="SubrackNum"/>
+ <xsd:element minOccurs="0" name="numberOfActiveVlans">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="vlanIds">
+ <xsd:annotation>
+ <xsd:documentation>
+ Information about operative Vlan Ids
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="VlanIds" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Cos" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes the Class of Service function.
+
+ Key attributes: []
+
+ Possible children:
+ Pbit
+ Queue
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element minOccurs="0" name="administrativeQueueConfiguration">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of administrative Queue Configuration Data
+ to be applied for each subrack (or whole system?)
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="CosQueueConfigurationData" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="administrativePbitToQueueMapping">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of administrative Pbit to Queue mapping.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="PbitToQueueMapping" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="operationalQueueConfiguration">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description operational Queue Configuration Data
+ to be applied for actual subrack and Mxb.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="CosQueueConfigurationData" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="operationalPbitToQueueMapping">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of operational Pbit to Queue mapping.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="PbitToQueueMapping" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Pbit" minOccurs="0" maxOccurs="8">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class is used to set the Pbit to queue table.
+
+ Key attributes: [bladeSlotLink]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="bladeSlotLink" type="BladeSlotLink"/>
+ <xsd:element minOccurs="0" name="pbitQueue">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="PbitQueue" minOccurs="8" maxOccurs="8"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Queue" minOccurs="0" maxOccurs="8">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class is used to set the Queue Data table.
+
+ Key attributes: [queueKey]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="queueKey">
+ <xsd:annotation>
+ <xsd:documentation>
+ Queue value 0 to 7.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType7">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="queueData">
+ <xsd:annotation>
+ <xsd:documentation>
+ Queue Configuration Data to be applied for the whole system.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="CosQueueConfigurationData" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="State" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes data to be read for a Mxb.
+
+ Key attributes: []
+
+ Possible children:
+ StateBlade
+ StateLink
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="StateBlade" minOccurs="0" maxOccurs="64">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes data related to a specific Mxb.
+
+ Key attributes: [subrackNum,mxbSlot]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackNum" type="SubrackNum"/>
+ <xsd:element name="mxbSlot" type="MxbSlot"/>
+ <xsd:element minOccurs="0" name="description">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of type of Mxb.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="ipAddress">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="upTime">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="remoteMxbHost">
+ <xsd:annotation>
+ <xsd:documentation>
+ Indicates if the other Mxb in the subrack is present or absent.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="executingSoftwareVersion">
+ <xsd:annotation>
+ <xsd:documentation>
+ Software version executing.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="flashLoadedSoftwareVersion">
+ <xsd:annotation>
+ <xsd:documentation>
+ Software version in flash memory.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="fallbackSoftwareVersion">
+ <xsd:annotation>
+ <xsd:documentation>
+ Fallback software version.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="ipmiFirmwareVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bootLoaderVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="hwVersion">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="StateLink" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes actual state data for a specific link
+ related to the Mxb.
+
+ Key attributes: []
+
+ Possible children:
+ StateLa
+ StateVlan
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="StateLa" minOccurs="0" maxOccurs="1536">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes the state of the Blade Slot Links with
+ regards to Link Aggregation info.
+
+ Key attributes: [subrackNum,bladeSlotLink,mxbSlot]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackNum" type="SubrackNum"/>
+ <xsd:element name="bladeSlotLink" type="BladeSlotLink"/>
+ <xsd:element name="mxbSlot" type="MxbSlot"/>
+ <xsd:element minOccurs="0" name="linkAggregationData">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of Link Aggregation info for
+ actual subrack, Mxb and Blade Slot Link.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="LinkAggregationData" minOccurs="16" maxOccurs="16"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="StateVlan" minOccurs="0" maxOccurs="768">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes the state of the Blade Slot Links with
+ regards to Vlan info.
+
+ Key attributes: [subrackNum,bladeSlotLink]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackNum" type="SubrackNum"/>
+ <xsd:element name="bladeSlotLink" type="BladeSlotLink"/>
+ <xsd:element minOccurs="0" name="vlanData">
+ <xsd:annotation>
+ <xsd:documentation>
+ Description of Vlans for actual subrack and Blade Slot Link
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="VlanData" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Pm" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes the Performance Monitoring function.
+
+ Key attributes: []
+
+ Possible children:
+ PmBladeMeasure
+ PmLink
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element minOccurs="0" name="cpuUpperTreshold" type="TresholdPercent">
+ <xsd:annotation>
+ <xsd:documentation>
+ Configuration of CPU upper treshold, i.e. when the CPU load
+ is rising and crosses this treshold then the PMON function
+ in ISS will raise a CPU alarm.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="cpuLowerTreshold" type="TresholdPercent">
+ <xsd:annotation>
+ <xsd:documentation>
+ CPU lower treshold, i.e. when the CPU load
+ is falling and crosses this treshold then the
+ PM function in ISS will cease the CPU alarm.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="cpuUsageSamplingPeriod">
+ <xsd:annotation>
+ <xsd:documentation>
+ The sampling period during which CPU usage is measured.
+ This period is given in seconds.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="memoryUpperTreshold">
+ <xsd:annotation>
+ <xsd:documentation>
+ Memory upper treshold, i.e. when the Memory usage
+ is rising and crosses this treshold then the PM
+ function in ISS will raise a Memory alarm.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="memoryLowerTreshold" type="TresholdPercent">
+ <xsd:annotation>
+ <xsd:documentation>
+ Memory lower treshold, i.e. when the Memory usage
+ is falling and crosses this treshold then the PM
+ function in ISS will cease the Memory alarm.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bandwidthUpperTreshold" type="TresholdPercent">
+ <xsd:annotation>
+ <xsd:documentation>
+ Bandwidth upper treshold, i.e. when the Bandwidth
+ usage is rising and crosses this treshold then the PM
+ function in ISS will raise a Bandwidth alarm.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bandwidthLowerTreshold" type="TresholdPercent">
+ <xsd:annotation>
+ <xsd:documentation>
+ Bandwidth lower treshold, i.e. when the Bandwidth usage
+ is falling and crosses this treshold then the PM function
+ in ISS will cease the Bandwidth alarm.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bandwidthUsageSamplingPeriod">
+ <xsd:annotation>
+ <xsd:documentation>
+ The sampling period during which Bandwidth usage is measured.
+ This period is given in minutes.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="PmBladeMeasure" minOccurs="0" maxOccurs="64">
+ <xsd:annotation>
+ <xsd:documentation>
+ Enabling monitoring of CPU and memory usage and reading
+ the corresponding values of utilisation in percent.
+
+ Key attributes: [subrackNum,mxbSlot]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackNum" type="SubrackNum"/>
+ <xsd:element name="mxbSlot" type="MxbSlot"/>
+ <xsd:element name="typeOfMeasurement">
+ <xsd:annotation>
+ <xsd:documentation>
+ Type of measurement to be performed, i.e. CPU or Memory.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType20">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="status">
+ <xsd:annotation>
+ <xsd:documentation>
+ Start or stop performance measurement of a specific type
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType21">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="usage" type="PercentUsage">
+ <xsd:annotation>
+ <xsd:documentation>
+ This is the value of the usage in percent when
+ performing the measurement.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="memoryUsageBytes">
+ <xsd:annotation>
+ <xsd:documentation>
+ This is the value of Memory usage in bytes when
+ performing a Memory usage measurement.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="PmLink" minOccurs="0" maxOccurs="1">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Management Link related data.
+
+ Key attributes: []
+
+ Possible children:
+ PmBwMeasure
+ PmStatistics
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="PmBwMeasure" minOccurs="0" maxOccurs="1536">
+ <xsd:annotation>
+ <xsd:documentation>
+ Enabling monitoring Bandwidth usage and reading the
+ corresponding values of utilisation in percent.
+
+ Key attributes: [subrackNum,bladeSlotLink,mxbSlot]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackNum" type="SubrackNum"/>
+ <xsd:element name="bladeSlotLink" type="BladeSlotLink"/>
+ <xsd:element name="mxbSlot" type="MxbSlot"/>
+ <xsd:element name="status">
+ <xsd:annotation>
+ <xsd:documentation>
+ Start or stop measuring of bandwidth utilisation.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType21">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="bandwidthUsage" type="PercentUsage">
+ <xsd:annotation>
+ <xsd:documentation>
+ This is the value of the average Bandwidth usage in percent
+ during the configured sampling period.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="PmStatistics" minOccurs="0" maxOccurs="1536">
+ <xsd:annotation>
+ <xsd:documentation>
+ This class describes the Performance
+ Monitoring Statistics; i.e. counters
+ for each backplane port on the Mxb,
+ the actual speed used on the port and
+ if the port operates in full or half duplex mode.
+
+ Key attributes: [subrackNum,bladeSlotLink,mxbSlot]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="subrackNum" type="SubrackNum"/>
+ <xsd:element name="bladeSlotLink" type="BladeSlotLink"/>
+ <xsd:element name="mxbSlot" type="MxbSlot"/>
+ <xsd:element minOccurs="0" name="inOctets" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ received octets.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="inUnicastPackets" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ received Unicast Packets
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="inMulticastPackets" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ received Multicast Packets
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="inBroadcastPackets" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ received Broadcast Packets
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="inOctetsDiscarded" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter
+ for number of received discarded octets.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="inOctetsFaulty" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter
+ for number of received faulty octets.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="inUnknownProtocol" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter
+ for number of received Unknown Protocol packets.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="outOctets" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ octets in send buffer.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="outUnicastPackets" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ Unicast Packets in send buffer.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="outMulticastPackets" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ Multicast Packets in send buffer.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="outBroadcastPackets" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ Broadcast Packets in send buffer.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="framesOpcodePause" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ Frames with Op code Pause
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="framesExceedingMaxFramesize" type="StatisticCounter">
+ <xsd:annotation>
+ <xsd:documentation>
+ Performance Monitoring counter for
+ Frames exceeding maximum frame size.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:simpleType name="ccsHelperType21">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="on"/>
+ <xsd:enumeration value="off"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType20">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="cpu"/>
+ <xsd:enumeration value="memory"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType19">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="50"/>
+ <xsd:maxInclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType18">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType17">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="yes"/>
+ <xsd:enumeration value="no"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType16">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="inSync"/>
+ <xsd:enumeration value="outOfSync"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType15">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="individual"/>
+ <xsd:enumeration value="aggregatable"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType14">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="long"/>
+ <xsd:enumeration value="short"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType13">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="passive"/>
+ <xsd:enumeration value="active"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType12">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="protected"/>
+ <xsd:enumeration value="isolatable"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType11">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="static"/>
+ <xsd:enumeration value="dynamic"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType10">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxInclusive value="4094"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType9">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="notUsed"/>
+ <xsd:enumeration value="high"/>
+ <xsd:enumeration value="medium"/>
+ <xsd:enumeration value="low"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType8">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="notUsed"/>
+ <xsd:enumeration value="wrr"/>
+ <xsd:enumeration value="strictpriority"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType7">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="7"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType6">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxInclusive value="24"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType5">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType4">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType3">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="srcMAC"/>
+ <xsd:enumeration value="dstMAC"/>
+ <xsd:enumeration value="srcAndDstMAC"/>
+ <xsd:enumeration value="srcIP"/>
+ <xsd:enumeration value="dstIP"/>
+ <xsd:enumeration value="srcAndDstIP"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType2">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="dynamic"/>
+ <xsd:enumeration value="force"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType1">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="lacp"/>
+ <xsd:enumeration value="manual"/>
+ <xsd:enumeration value="disable"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType0">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/MyBsModel_1.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/MyBsModel_1.xsd
new file mode 100644
index 0000000000..5ec3434a65
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/MyBsModel_1.xsd
@@ -0,0 +1,502 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ericsson.com/is/isco/MyBsModel_1" xmlns="http://www.ericsson.com/is/isco/MyBsModel_1" xmlns:nc="http://www.ericsson.com/is/isco/nc" xmlns:IsTypes="http://www.ericsson.com/is/isco/IsTypes">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <mim file="myTest_mim.xml" version="/main/R2A/10"/>
+ <mim file="other_mim.xml" version=""/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:import schemaLocation="nc.xsd" namespace="http://www.ericsson.com/is/isco/nc"/>
+ <xsd:import schemaLocation="IsTypes.xsd" namespace="http://www.ericsson.com/is/isco/IsTypes"/>
+ <xsd:complexType name="uselessStruct">
+ <xsd:sequence>
+ <xsd:element name="field1">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType4">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="field2" type="myInteger"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="myNamedStruct">
+ <xsd:annotation>
+ <xsd:documentation>
+ Struct description
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="counter">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType5">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="state" type="stateType"/>
+ <xsd:element name="dummyStructRef" type="uselessStruct"/>
+ <xsd:element name="dummySequence">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" type="uselessStruct" minOccurs="3" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="inlineStruct">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="a" type="InternalImport"/>
+ <xsd:element name="b">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType6">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="c">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType7">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="myInteger">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType8">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="namedMoRefType">
+ <xsd:annotation>
+ <xsd:documentation>
+ A named type which is an MO Reference pointing to
+ * MyClass
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType9">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="stateType">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType10">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="blippName">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType11">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="yesNoEnum">
+ <xsd:annotation>
+ <xsd:documentation>
+ Enum which can be yes or no
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType12">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="uselessEnum">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType13">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="InternalImport">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:integer">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="MyClass_SeqType3">
+ <xsd:sequence>
+ <xsd:element name="item" type="MyClass_InternalType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="MyClass_myDateAndTimeType">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType0">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="MyClass_SeqType2">
+ <xsd:sequence>
+ <xsd:element name="item" type="uselessStruct" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:complexType name="MyClass_InternalType">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType1">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="MyClass_classInternalEnum">
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType2">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="MyClass_SeqType1">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="3" maxOccurs="3">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType3">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ <xsd:element name="model">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Blipp" minOccurs="0" maxOccurs="2">
+ <xsd:annotation>
+ <xsd:documentation>
+ This is a class which can be assigned as an attribute of ChildClass.
+ Key attribute is 'id'.
+
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id" type="blippName"/>
+ <xsd:element minOccurs="0" name="truefalse" type="uselessEnum"/>
+ <xsd:element minOccurs="0" name="ipAddress" type="IsTypes:IpAddress"/>
+ <xsd:element minOccurs="0" name="macAddress" type="IsTypes:MacAddress"/>
+ <xsd:element minOccurs="0" name="moAttributeDeep">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType14">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="MyClass" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+ My Test Class
+ The class hierarky looks like this:
+
+ +==========+
+ |MountPoint|
+ +==========+
+ / \
+ / \
+ +=======+ +=======+
+ | Blipp | |MyClass|
+ +=======+ +=======+
+ |
+ |
+ +==========+
+ |ChildClass|
+ +==========+
+
+ Key attributes: [id1,id2]
+
+ Possible children:
+ ChildClass:
+ Definition of children under MyClass
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id1">
+ <xsd:annotation>
+ <xsd:documentation>
+ Test class identifyer - part1
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType15">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="id2">
+ <xsd:annotation>
+ <xsd:documentation>
+ Test class identifyer - part2
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType16">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="date">
+ <xsd:annotation>
+ <xsd:documentation>
+ Date
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType17">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="date2" type="MyClass_myDateAndTimeType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Date2 - named type
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="list">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="3" maxOccurs="3">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType3">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="list2" type="MyClass_SeqType2"/>
+ <xsd:element minOccurs="0" name="list3" type="MyClass_SeqType3"/>
+ <xsd:element minOccurs="0" name="yesNo" type="yesNoEnum"/>
+ <xsd:element minOccurs="0" name="commonStruct" type="myNamedStruct">
+ <xsd:annotation>
+ <xsd:documentation>
+ Attribute description.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="dummyInternal" type="MyClass_InternalType"/>
+ <xsd:element minOccurs="0" name="trueOrFalse">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType7">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ChildClass" minOccurs="0" maxOccurs="2">
+ <xsd:annotation>
+ <xsd:documentation>
+ Child of MyClass
+
+ Key attributes: [id]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="id">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType18">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="moAttribute">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="ccsHelperType19">
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" name="moAttributeNamed" type="namedMoRefType"/>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="nc:operation"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:simpleType name="ccsHelperType19">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*Blipp\[id='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType18">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:minLength value="1"/>
+ <xsd:maxLength value="20"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType17">
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:minInclusive value="2006-03-08T00:00:00.567Z"/>
+ <xsd:maxInclusive value="2006-03-08T23:59:59Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType16">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType15">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="Obj"/>
+ <xsd:enumeration value="MO"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType14">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*ChildClass\[id='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType13">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="true"/>
+ <xsd:enumeration value="false"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType12">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="yes"/>
+ <xsd:enumeration value="no"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType11">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="name1"/>
+ <xsd:enumeration value="name2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType10">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="locked"/>
+ <xsd:enumeration value="active"/>
+ <xsd:enumeration value="idle"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType9">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:pattern value="((/IntegratedSite:model/)|((\.\./)+)|((\./)(\.\./)*)|())((([A-Z][a-zA-Z0-9]+:model)|([A-Z][a-zA-Z0-9]+(\[[a-z][a-zA-Z0-9]*='[^\]]+'\])*))/)*MyClass\[id1='[^\]]+'\]\[id2='[^\]]+'\]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType8">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxInclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType7">
+ <xsd:restriction base="xsd:boolean">
+ <xsd:pattern value="(true|false)"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType6">
+ <xsd:restriction base="xsd:float">
+ <xsd:minInclusive value="0.00"/>
+ <xsd:maxInclusive value="1.00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType5">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType4">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:maxLength value="20"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType3">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType2">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="a"/>
+ <xsd:enumeration value="b"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType1">
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="hei"/>
+ <xsd:enumeration value="hopp"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ccsHelperType0">
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:minInclusive value="2006-03-15T00:00:00.567Z"/>
+ <xsd:maxInclusive value="2006-03-15T23:59:59Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/bs_mim.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/bs_mim.xml
new file mode 100644
index 0000000000..8846c05878
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/bs_mim.xml
@@ -0,0 +1,1187 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<!--
+
+Copyright (C) Ericsson AB 2006-2007 All rights reserved.
+
+The information in this document is the property of Ericsson.
+
+Except as specifically authorized in writing by Ericsson, the
+receiver of this document shall keep the information contained
+herein confidential and shall protext the same in whole or in part
+from disclosure and dissemination to third parties.
+
+Disclosure and disseminations to the receivers employees shall
+only be made on a strict need to know basis.
+
+-->
+
+
+<mim xmlns="http://www.ericsson.com/is/isco/mim/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ericsson.com/is/isco/mim/2.0 /vobs/isac/sis/OAM_CRA1190047_1/CCS_CNA113082/doc/15519/mim.xsd ">
+
+ <!--
+ DataType Definitions
+ -->
+ <dataType name="HwmAdministrativeState">
+ <description>
+ The administrative state of blades/blade systems.
+ Reflects what the administrator has done.
+ </description>
+ <string>
+ <validValues>
+ <value name="locked"/>
+ <value name="shuttingdown"/>
+ <value name="unlocked"/>
+ </validValues>
+ </string>
+ </dataType>
+
+ <dataType name="HwmOperationalState">
+ <description>
+ The operational state of blades/blade systems.
+ Reflects if the entity is on/off.
+ </description>
+ <string>
+ <validValues>
+ <value name="disabled"/>
+ <value name="enabled"/>
+ </validValues>
+ </string>
+ </dataType>
+
+ <dataType name="HwmAvailabilityStatus">
+ <description>
+ The availability state of blades/blade systems.
+ Reflects if the entity is useable or not.
+ </description>
+ <string>
+ <validValues>
+ <value name="available"/>
+ <value name="failed"/>
+ <value name="offLine"/>
+ <value name="dependency"/>
+ <value name="degraded"/>
+ <value name="upgrading"/>
+ <value name="startingUp"/>
+ <value name="goingOffLine"/>
+ <value name="notInstalled"/>
+ <value name="powerOff"/>
+ </validValues>
+ </string>
+ </dataType>
+
+ <dataType name="HwmKnockOutPreference">
+ <description>
+ </description>
+ <string>
+ <validValues>
+ <value name="normal"/>
+ <value name="protected"/>
+ </validValues>
+ </string>
+ </dataType>
+
+ <dataType name="HwmBusType">
+ <description>
+ The bus type used by a blade.
+ </description>
+ <string>
+ <validValues>
+ <value name="ipmi"/>
+ <value name="mbus"/>
+ </validValues>
+ </string>
+ </dataType>
+
+ <!--
+ Class Definitions
+ -->
+
+ <class name="BladeSystems">
+ <description>
+ Parent of all blade systems.
+ </description>
+ <singleton/>
+ <systemCreated/>
+ </class>
+
+ <class name="BladeSystem">
+ <description>
+ This class describes a Blade System.
+ It serves as a mountpoint for the blade system specific model.
+ </description>
+
+ <!-- Attributes from HWM -->
+
+ <attribute name="name">
+ <description>
+ A user friendly Blade System name, must be set at creation and can be
+ changed when BS is locked.
+ </description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+
+ <attribute name="no">
+ <description>
+ An identifier for the BS. A new integer has to be used every time a new
+ BS is created.
+ </description>
+ <dataType><integer/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="type">
+ <description>
+ </description>
+ <dataType><string/></dataType>
+ <mandatory/>
+ <restricted/>
+ </attribute>
+
+ <attribute name="softwareGroupId">
+ <description>
+ The identity of the Software Group (SWG) that the BS implements.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ <mandatory/>
+ </attribute>
+
+ <attribute name="softwareGroupRevision">
+ <description>
+ The revision of the Software Group (SWG) that the BS implements.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ <mandatory/>
+ </attribute>
+
+ <attribute name="softwareCorrectionPackageId">
+ <description>
+ The identity of the correction package (CXR) applied to the SWG.
+ </description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="softwareCorrectionPackageRevision">
+ <description>
+ The revision of the correction package (CXR) applied to the SWG
+ </description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="admState">
+ <description>The administrative state of the Blade System.</description>
+ <dataType name.ref="HwmAdministrativeState"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="opState">
+ <description>The operational state of the Blade System.</description>
+ <dataType name.ref="HwmOperationalState"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="availStatus">
+ <description>The availability status of the Blade System.</description>
+ <dataType name.ref="HwmAvailabilityStatus"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="bsdName">
+ <description>
+ The identity of the Blade System domain the Blade system belongs to.
+ </description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <!-- Attributes from CPD -->
+
+ <attribute name="bsomAddress">
+ <description>
+ IP address of the Blade System OaM Master.
+ </description>
+ <dataType name.ref="IsTypes:IpAddress"/>
+ <readOnly/>
+ </attribute>
+
+ <action name="lock">
+ <description>
+ Locks the blade system. If the system already is locked the
+ action does nothing.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+
+ <action name="unlock">
+ <description>
+ Unlocks the blade system. If the system already is unlocked the
+ action does nothing. This operation orders the blade system to be unlocked.
+ However the blade system may not be unlocked even if this order works.
+ See the operational state to figure out if the unlock succeded.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+
+ <action name="shutdown">
+ <description>
+ Shuts down the blade system. If the system already is locked the
+ action does nothing.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+
+ <action name="createBackup">
+ <description>
+ Action to create a backup file from the current
+ Blade System. It is stored locally on disk.
+ An instance of the MO class
+ Software/Jobs/Backup/Create is created as a log of this
+ action.
+ </description>
+ <returnType>
+ <dataType><string/></dataType><!-- return ok | {fault,Reason} ? -->
+ </returnType>
+ <parameter name="backupJobName">
+ <description>
+ A user specified backup creation job name
+ </description>
+ <dataType><string/></dataType>
+ <isOptional/>
+ </parameter>
+ </action>
+
+ <action name="restoreBackup">
+ <description>
+ Action to restore a backup into the current
+ Blade System. It is fetched from the local disk.
+ An instance of the MO class
+ Software/Jobs/Backup/Restore is created as a log of this
+ action.
+ </description>
+ <returnType>
+ <dataType><string/></dataType><!-- return ok | {fault,Reason} ? -->
+ </returnType>
+ <parameter name="backupId">
+ <description>
+ The IS site local backup identity
+ </description>
+ <dataType name.ref="IsTypes:Unsigned32">
+ </dataType>
+ </parameter>
+ <parameter name="restoreJobName">
+ <description>
+ A user specified backup restore job name
+ </description>
+ <dataType><string/></dataType>
+ <isOptional/>
+ </parameter>
+ </action>
+
+ <action name="upgrade">
+ <description>
+ Action to upgrade the current Blade System. Files
+ are fetched from the local disk storage.
+ An instance of the MO class
+ Software/Jobs/Upgrade is created as a log of this
+ action.
+ </description>
+ <returnType>
+ <dataType><string/></dataType><!-- return ok | {fault,Reason} ? -->
+ </returnType>
+ <parameter name="upgradeJobName">
+ <description>
+ A user specified ugrade job name
+ </description>
+ <dataType><string/></dataType>
+ <isOptional/>
+ </parameter>
+ <parameter name="swgProdNr">
+ <description>
+ The Ericsson product number of blade system software group
+ </description>
+ <dataType><string/></dataType>
+ <isOptional/>
+ </parameter>
+ <parameter name="swgRevision">
+ <description>
+ The Ericsson revision of blade system software group
+ </description>
+ <dataType><string/></dataType>
+ <isOptional/>
+ </parameter>
+ <parameter name="cxrProdNr">
+ <description>
+ The Ericsson product number of software correction package
+ </description>
+ <dataType><string/></dataType>
+ <isOptional/>
+ </parameter>
+ <parameter name="cxrProdRevision">
+ <description>
+ The Ericsson revision of software correction package
+ </description>
+ <dataType><string/></dataType>
+ <isOptional/>
+ </parameter>
+ <parameter name="bladeSwgProdNr">
+ <description>
+ The Ericsson product number of blade software group
+ </description>
+ <dataType><string/></dataType>
+ <isOptional/>
+ </parameter>
+ <parameter name="bladeSwgProdRevison">
+ <description>
+ The Ericsson revision of blade software group
+ </description>
+ <dataType><string/></dataType>
+ <isOptional/>
+ </parameter>
+ <parameter name="maxTime">
+ <description>
+ The maximum time allowed to finish the entire
+ software change procedure (minutes).
+ Default value depends on blade system software.
+ </description>
+ <dataType name.ref="IsTypes:Unsigned32">
+ </dataType>
+ <isOptional/>
+ </parameter>
+ </action>
+ </class>
+
+
+ <class name="Blade">
+ <description>
+ This class describes a Blade.
+ A Blade is identified by the subrack and slot number.
+ </description>
+
+ <!-- Attributes from HWM -->
+
+ <attribute name="subrackId">
+ <description>
+ A reference to the associated subrack (i.e. the value of 'subrackId'
+ for the associated subrack)
+ </description>
+ <dataType>
+ <integer><range><min>0</min><max>31</max></range></integer>
+ </dataType>
+ <key/>
+ </attribute>
+
+ <attribute name="slotNo">
+ <description>The slot number for this Blade within the subrack.</description>
+ <dataType>
+ <integer><range><min>0</min><max>25</max></range></integer>
+ </dataType>
+ <key/>
+ </attribute>
+
+ <attribute name="slotLabel">
+ <description>
+ The slot label of the blade. Will only be set at creation.
+ This should be used in alarms related to the slot to inform the
+ operator of what position in the subrack the blade is located in.
+ E.g. for GEM subracks it will be a string like X02 for slot 0
+ up to X80 for slot 25.
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="bsNo">
+ <description>
+ An identifier for the BS to which the blade belongs.
+ A value of 0 means that the blade is inserted in the subrack but it
+ has not been configured to any BS yet.
+ </description>
+ <dataType><integer/></dataType>
+ </attribute>
+
+ <attribute name="type">
+ <description>
+ The type of the Blade defined by a string BladeTypeId.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ <mandatory/>
+ </attribute>
+
+ <attribute name="swgLowestId">
+ <description>The expectedregistered SW group id of the Blade.</description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="swgLowestRev">
+ <description>The registered SW group revision state of the Blade.</description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="swgActualId">
+ <description>The installed SW group id of the Blade.</description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="swgActualRev">
+ <description>The installed SW group revision state of the Blade.</description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="bsom">
+ <description>
+ Indicates if this blade is a BSOM candidate.
+ </description>
+ <dataType><boolean/></dataType>
+ </attribute>
+
+ <attribute name="knockOutPreference">
+ <description>
+ Set to protected if blade sholud no be knocked out before the
+ switch blade.
+ </description>
+ <dataType name.ref="HwmKnockOutPreference"/>
+ </attribute>
+
+ <attribute name="userLabel">
+ <description>
+ A user friendly Blade name, always possible to set.
+ Default value indicates HwmBladeType and used slot.
+ </description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="admState">
+ <description>
+ The administrative state of the Blade.
+ </description>
+ <dataType name.ref="HwmAdministrativeState"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="opState">
+ <description>The operational state of the Blade.</description>
+ <dataType name.ref="HwmOperationalState"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="availStatus">
+ <description>The availability status of the Blade.</description>
+ <dataType name.ref="HwmAvailabilityStatus"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="busType">
+ <description>The type of maintenance bus on the found Blade</description>
+ <dataType name.ref="HwmBusType"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="prodNo">
+ <description>The Product Number of the found Blade</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="prodRev">
+ <description>The Product Revision of the found Blade.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="serialNo">
+ <description>The Serial Number of the found Blade.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="prodName">
+ <description>The Product Name of the found Blade.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="vendor">
+ <description>The Vendor name of the found Blade.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="mfgDate">
+ <description>The manufacturing date of the found Blade.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="macAddressAggregate">
+ <description>The aggregated MAC address of the found Blade.</description>
+ <dataType name.ref="IsTypes:MacAddress"/>
+ </attribute>
+
+ <attribute name="macAddressLeft">
+ <description>
+ The left link MAC address of the found Blade. Only used by some blades
+ </description>
+ <dataType name.ref="IsTypes:MacAddress"/>
+ </attribute>
+
+ <attribute name="macAddressRight">
+ <description>
+ The right link MAC address of the found Blade. Only used by some blades
+ </description>
+ <dataType name.ref="IsTypes:MacAddress"/>
+ </attribute>
+
+ <attribute name="changeDate">
+ <description>The date when the blade was last changed.</description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <!-- Attributes from CPD -->
+
+ <attribute name="isbsAddress">
+ <description>
+ IP address on the ISBS subnet.
+ </description>
+ <dataType name.ref="IsTypes:IpAddress"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="isobAddress">
+ <description>
+ IP address on the ISOB subnet.
+ </description>
+ <dataType name.ref="IsTypes:IpAddress"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="islctAddress">
+ <description>
+ IP address on the ISLCT subnet.
+ </description>
+ <dataType name.ref="IsTypes:IpAddress"/>
+ <readOnly/>
+ </attribute>
+
+ <action name="lock">
+ <description>
+ Locks the blade. If the blade already is locked the
+ action does nothing. This operation orders the blade to be locked.
+ It may however take long time before it happens.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+
+ <action name="unlock">
+ <description>
+ Unlocks the blade. If the blade already is unlocked the
+ action does nothing. This operation orders the blade to be unlocked.
+ However the blade may not be unlocked even if this order works.
+ See the operational state to figure out if the unlock succeded.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+
+ <action name="shutdown">
+ <description>
+ Shuts down the blade. If the blade already is locked the
+ action does nothing.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ <action name="upgrade">
+ <description>
+ Action to upgrade the current blade. Files
+ are fetched from the local disk storage.
+ An instance of the MO class
+ Software/Jobs/Upgrade is created as a log of this
+ action.
+ </description>
+ <returnType>
+ <dataType><string/></dataType><!-- return ok | {fault,Reason} ? -->
+ </returnType>
+ <parameter name="swgProdNr">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="swgRevision">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="maxTime">
+ <dataType name.ref="IsTypes:Unsigned32">
+ </dataType>
+ <isOptional/>
+ </parameter>
+ </action>
+ </class>
+
+ <class name="LinkSap">
+ <description>
+ A Blade may have one or more resilient interfaces
+ to the backplane. Such an interface is called a
+ Link Service Access Point (LSAP), which is the
+ point where you access layer 2. LSAPs are
+ automatically created and deleted along with the
+ hosting blade.
+ </description>
+ <systemCreated/>
+ <attribute name="id">
+ <description>
+ The id of a LinkSap is a number from 0 to X within the slot.
+ </description>
+ <dataType><integer/></dataType>
+ <key/><readOnly/>
+ </attribute>
+ </class>
+
+ <class name="BsNetworkConfiguration">
+ <description>
+ The MO branch where the Blade System specific
+ Network resources are mapped to blade system
+ network requirements to common Integrated Site
+ resources. This activity must be performed before
+ a new blade or blade system successfully can be
+ unlocked via the Hardware service. Some blade
+ system designers have partly pre-registered their
+ network requirements, while others demand that
+ you read the corresponding information from
+ separate Operation Procedure Instructions and
+ manually register the blade system network
+ requirements. The pre-registered network
+ requirements automates parts of the blade
+ system-specific configuration activity.
+
+ In an Integrated Site, the blade systems obtain
+ their actual network configuration dynamically in
+ runtime. When you change the network
+ configuration it will affect blade systems. In
+ order to minimize the disturbance of active blade
+ systems, the changes are normally applied in a
+ separate storage which not is visible to the
+ blade systems. In order to make use of the new
+ unpublished configuration, it must explicitly be
+ published by altering the updateMode. If the new
+ settings introduces severe problems the
+ configuration can be reverted to the old settings
+ by altering the updateMode.
+
+ The common Network configuration including
+ updateMode and its publish mechanism is specified
+ in a separate MIM called CPD MIM.
+ </description>
+ <singleton/>
+ <systemCreated/>
+ </class>
+
+ <class name="BsVlan">
+ <description>
+ A BS VLAN is mapped to one IS VLAN. A BS VLAN is
+ the requirement a Blade System have of an IS
+ VLAN. Different instances of a Blade System type
+ may call their BS VLANs the same thing but in the
+ end the IS Site Designer can choose to map them
+ to the same or different IS VLAN.
+
+ BS VLANs can either be created manually by the
+ operator or they can be automatically created
+ from pre-registered network requirements bundled
+ with the Blade System software. Regardless of
+ how they are created, each one needs to be
+ mapped to an IS VLAN before the blades can be
+ unlocked. The mapping is done with the
+ 'isVlanRef' attribute.
+
+ Different instances of a Blade System type may call
+ their BS VLANs the same thing but in the end the IS
+ Site Designer can choose to map them to the same or
+ different IS VLAN.
+ </description>
+ <attribute name="name">
+ <description>
+ Name of the BS VLAN. It is unique within the Blade System.
+ </description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="description">
+ <description>
+ Short description of the BS VLAN.
+ </description>
+ <dataType><string/></dataType>
+ </attribute>
+ <attribute name="private">
+ <description>
+ Setting the private attribute to true, means
+ that the corresponding IS VLAN not can be
+ used by other Blade Systems. The IS VLAN is
+ private for this particular Blade System.
+ </description>
+ <dataType><boolean/></dataType>
+ </attribute>
+ <attribute name="isVlanRef">
+ <description>
+ The mapping to a corresponding IS VLAN. This
+ mapping must be done before the blades of the
+ Blade System can be unlocked.
+ </description>
+ <dataType><moRef name="IsVlan"/></dataType>
+ </attribute>
+ </class>
+
+ <class name="BsLogicalNetwork">
+ <description>
+ A BS Logical Network (BSLN) is associated to
+ one IS Logical Network. A BS Logical Network
+ is the requirement a Blade Systems have of an
+ IS Logical Network.
+
+ BS Logical Networks can either be created
+ manually by the operator or they can be
+ automatically created from pre-registered
+ network requirements bundled with the Blade
+ System software. Regardless of how they are
+ created, each one needs to be mapped to an IS
+ Logical Network before the blades can be
+ unlocked. The mapping is done with the
+ 'isLogicalNetworkRef' attribute.
+
+ Different instances of a Blade System type may call
+ their BS Logical Networks the same thing but in
+ the end the IS Site Designer can choose to map
+ them to the same or different IS Logical
+ Network.
+ </description>
+ <attribute name="name">
+ <description>
+ Name of the BS logical network. It is unique within the Blade System.
+ </description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="description">
+ <description>
+ Short description of the BS Logical Network.
+ </description>
+ <dataType><string/></dataType>
+ </attribute>
+ <attribute name="private">
+ <description>
+ Flag that shows whether the BS Logical Network
+ is private for this Blade System or if it may
+ be shared among several Blade Systems.
+ </description>
+ <dataType><boolean/></dataType>
+ </attribute>
+ <attribute name="isLogicalNetworkRef">
+ <description>
+ Reference to the corresponding IS Logical Network.
+ </description>
+ <dataType><moRef name="IsLogicalNetwork"/></dataType>
+ </attribute>
+ </class>
+
+ <class name="BsSubnet">
+ <description>
+ A BS Subnet (BSSN) is associated to one IS
+ Subnet. A BS Subnet Network is the requirement a
+ Blade Systems have of an IS Subnet.
+
+ BS Subnets can either be created manually by the
+ operator or they can be automatically created
+ from pre-registered network requirements bundled
+ with the Blade System software. Regardless of
+ how they are created, each one needs to be
+ mapped to both a BS VLan and an IS Subnet before
+ blades can be unlocked via the Hardware service.
+ Each BS Subnet contains one or more BS Subnet
+ Segments. The mappings are done with the
+ 'bsVlanRef' and 'isSubnetRef' attributes.
+
+ Different instances of a Blade System type may
+ call their BS Subnets the same thing but in the
+ end the IS Site Designer can choose to map them
+ to the same or different IS Subnet.
+ </description>
+ <attribute name="name">
+ <description>
+ Name of the BS Subnet. It is unique within the BS Logical Network.
+ </description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="description">
+ <description>
+ Short description of the BS Subnet.
+ </description>
+ <dataType><string><defaultValue>default</defaultValue></string></dataType>
+ </attribute>
+ <attribute name="bsVlanRef">
+ <description>
+ The mapping to a corresponding BS Vlan. This
+ mapping must be done before the blades of the
+ Blade System can be unlocked.
+ </description>
+ <dataType><moRef name="BsVlan"/></dataType>
+ </attribute>
+ <attribute name="isSubnetRef">
+ <description>
+ The mapping to a corresponding IS Subnet. This
+ mapping must be done before the blades of the
+ Blade System can be unlocked.
+ </description>
+ <dataType><moRef name="IsSubnet"/></dataType>
+ </attribute>
+ </class>
+
+ <class name="BsSubnetSegment">
+ <description>
+ A BS Subnet Segment (BSSNS) is associated to one
+ IS Subnet Segment. A BS Subnet Segment is the
+ requirement a Blade Systems have of an IS Subnet
+ Segment.
+
+ BS Subnet Segments can either be created manually
+ by you or they can be automatically created from
+ pre-registered network requirements bundled with
+ the Blade System software. Regardless of how they
+ are created, each one needs to be mapped to an IS
+ Subnet Segment before the blades can be unlocked
+ via the Hardware service. The mapping is done
+ with the 'isSubnetSegmentRef' attribute.
+
+ Different instances of a Blade System type may
+ call their BS Subnet Segments the same thing but
+ in the end the IS Site Designer can choose to
+ map them to the same or different IS Subnet
+ Segment.
+ </description>
+ <attribute name="name">
+ <description>
+ Name of the BS Subnet Segment. It is unique within the BS Subnet.
+ </description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="description">
+ <description>
+ Short description of the BS Subnet Segment.
+ </description>
+ <dataType><string/></dataType>
+ </attribute>
+ <attribute name="numOfIpaddresses">
+ <description>
+ Number of required IP addresses in the IS Subnet Segment.
+ </description>
+ <dataType><integer/></dataType>
+ </attribute>
+ <attribute name="dhcpEnabled">
+ <description>
+ Flag that controls whether the corresponding IS
+ Subnet Segment is required to have DHCP enabled
+ or not.
+ </description>
+ <dataType><boolean/></dataType>
+ </attribute>
+ <attribute name="routerRequired">
+ <description>
+ Flag that controls whether the corresponding IS
+ Subnet Segment is required to have a router
+ configured or not.
+ </description>
+ <dataType><boolean/></dataType>
+ </attribute>
+ <attribute name="isSubnetSegmentRef">
+ <description>
+ The mapping to a corresponding IS Subnet
+ Segment. The mapping here must be done before
+ the blades of the blade system can be unlocked.
+ </description>
+ <dataType>
+ <moRef name="IsSubnetSegment"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="BsVlanSap">
+ <description>
+ There is a BS VLAN Service Access Point (BSVSAP)
+ for each Link Service Access Point that an IS
+ VLAN straddles. It is per BS VLAN Service Access
+ Point that certain VLAN properties, such as if it
+ is mandatory to enable isolation protection.
+
+ BS VLAN Service Access Points can either be
+ created manually by the operator or they can be
+ automatically created from pre-registered network
+ requirements bundled with the Blade System
+ software. Regardless of how they are created,
+ each one needs to be mapped to an Link SAP before
+ the blades can be unlocked. The mapping is done
+ with the 'linkSapRef' attribute.
+ </description>
+ <attribute name="name">
+ <description>
+ Name of the BS VLAN SAP. It is unique within the BS VLAN.
+ </description>
+ <dataType>
+ <string/>
+ </dataType>
+ <key/>
+ </attribute>
+ <attribute name="description">
+ <description>
+ Short description of the BS VLAN SAP.
+ </description>
+ <dataType>
+ <string/>
+ </dataType>
+ </attribute>
+ <attribute name="static">
+ <description>
+ Flag which controls whether this BS VLAN SAP
+ makes static or dynamic use of the
+ corresponding IS VLAN.
+ </description>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </attribute>
+ <attribute name="protected">
+ <description>
+ Flag which controls whether this BS VLAN SAP should be
+ isolation protected or not.
+ </description>
+ <dataType>
+ <boolean/>
+ </dataType>
+ </attribute>
+ <attribute name="linkSapRef">
+ <description>
+ A mapping to the corresponding Link Service Access Point.
+ </description>
+ <dataType>
+ <moRef name="LinkSap"/>
+ </dataType>
+ </attribute>
+ </class>
+
+ <class name="BsIpTrafficClass">
+ <description>
+ A BS IP Traffic Class (BSIPTC) is the
+ requirement a Blade System have of an IS IP
+ Traffic Class.
+
+ BS IP Traffic Classes can either be created
+ manually by you or they can be automatically
+ created from pre-registered network requirements
+ bundled with the Blade System software. Regardless
+ of how they are created, each one needs to be
+ mapped to an IS IP Traffic Class before the blades
+ can be unlocked via the Hardware service. The
+ mapping is done with the 'isIpTrafficClassRef'
+ attribute.
+
+ Different instances of a Blade System type may
+ call their BS IP Traffic Classes the same thing but
+ in the end the IS Site Designer may choose to
+ map them to the same or different IS IP Traffic
+ Classes.
+ </description>
+ <attribute name="name">
+ <description>
+ The name of the BS IP Traffic Class. It is
+ unique within the Blade System.
+ </description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="description">
+ <description>
+ A short description of The BS IP Traffic Class.
+ </description>
+ <dataType><string/></dataType>
+ </attribute>
+ <attribute name="isIpTrafficClassRef">
+ <description>
+ The mapping to a corresponding IS IP Traffic
+ Class. This mapping must be done before the
+ blades of the Blade System can be unlocked.
+ </description>
+ <dataType><moRef name="IsIpTrafficClass"/></dataType>
+ </attribute>
+ </class>
+
+ <class name="BsLanTrafficClass">
+ <description>
+ A BS LAN Traffic Class (BSLANTC) is the
+ requirement a Blade System have of an IS LAN
+ Traffic Class. Different instances of a Blade
+ System type may call their BS Traffic Classes
+ the same thing but in the end the IS Site
+ Designer may choose to map them to the same or
+ different IS LAN Traffic Classes.
+
+ BS LAN Traffic Classes can either be created
+ manually by you or they can be automatically
+ created from pre-registered network requirements
+ bundled with the Blade System software. Regardless
+ of how they are created, each one needs to be
+ mapped to an IS LAN Traffic Class before the blades
+ can be unlocked via the Hardware service. The
+ mapping is done with the 'isLanTrafficClassRef'
+ attribute.
+
+ Different instances of a Blade System type may
+ call their BS LAN Traffic Classes the same
+ thing but in the end the IS Site Designer may
+ choose to map them to the same or different IS
+ LAN Traffic Classes.
+ </description>
+ <attribute name="name">
+ <description>
+ Name of the BS IP Traffic Class. It is unique within the Blade System.
+ </description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="description">
+ <description>
+ Short description of the BS IP Traffic Class.
+ </description>
+ <dataType><string/></dataType>
+ </attribute>
+ <attribute name="isLanTrafficClassRef">
+ <description>
+ The mapping to a corresponding IS LAN Traffic
+ Class. This mapping must be done before the
+ blades of the Blade System can be unlocked.
+ </description>
+ <dataType><moRef name="IsLanTrafficClass"/></dataType>
+ </attribute>
+ </class>
+
+
+ <!--
+ Relatonship Definitions
+ -->
+
+ <relationship name="BladeSystemsTop">
+ <containment>
+ <parent>
+ <hasClass name="top_mim:Is"/>
+ </parent>
+ <child>
+ <hasClass name="BladeSystems"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="BsMount">
+ <containment>
+ <parent>
+ <hasClass name="BladeSystems"/>
+ </parent>
+ <child>
+ <hasClass name="BladeSystem"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Blades">
+ <containment>
+ <parent>
+ <hasClass name="BladeSystem"/>
+ </parent>
+ <child>
+ <hasClass name="Blade"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="LinkSaps">
+ <containment>
+ <parent><hasClass name="Blade"/></parent>
+ <child><hasClass name="LinkSap"/></child>
+ </containment>
+ </relationship>
+
+ <relationship name="NcMount">
+ <containment>
+ <parent><hasClass name="BladeSystem"/></parent>
+ <child><hasClass name="BsNetworkConfiguration"/></child>
+ </containment>
+ </relationship>
+
+ <relationship name="BsVlans">
+ <containment>
+ <parent><hasClass name="BsNetworkConfiguration"/></parent>
+ <child>
+ <hasClass name="BsVlan"/>
+ <cardinality><min>1</min></cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="BsVlanSaps">
+ <containment>
+ <parent><hasClass name="BsVlan"/></parent>
+ <child>
+ <hasClass name="BsVlanSap"/>
+ <cardinality><min>1</min></cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="BsLogicalNetworks">
+ <containment>
+ <parent><hasClass name="BsNetworkConfiguration"/></parent>
+ <child><hasClass name="BsLogicalNetwork"/></child>
+ </containment>
+ </relationship>
+
+ <relationship name="BsSubnets">
+ <containment>
+ <parent><hasClass name="BsLogicalNetwork"/></parent>
+ <child>
+ <hasClass name="BsSubnet"/>
+ <cardinality><min>1</min></cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="BsSubnetSegments">
+ <containment>
+ <parent><hasClass name="BsSubnet"/></parent>
+ <child><hasClass name="BsSubnetSegment"/></child>
+ </containment>
+ </relationship>
+
+ <relationship name="BsIpTrafficClasses">
+ <containment>
+ <parent><hasClass name="BsNetworkConfiguration"/></parent>
+ <child><hasClass name="BsIpTrafficClass"/></child>
+ </containment>
+ </relationship>
+
+ <relationship name="BsLanTrafficClasses">
+ <containment>
+ <parent><hasClass name="BsNetworkConfiguration"/></parent>
+ <child><hasClass name="BsLanTrafficClass"/></child>
+ </containment>
+ </relationship>
+
+
+
+</mim>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/dummy_action_mim.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/dummy_action_mim.xml
new file mode 100644
index 0000000000..d691fe0b3f
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/dummy_action_mim.xml
@@ -0,0 +1,186 @@
+<mim xmlns="http://www.ericsson.com/is/isco/mim/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ericsson.com/is/isco/mim/2.0 /vobs/isac/sis/OAM_CRA1190047_1/CCS_CNA113082/doc/15519/mim.xsd ">
+ <exception name="dummyException">
+ <description>
+ Exception description
+ </description>
+ <exceptionParameter name="dummyExcPar1">
+ <description>
+ Exception parameter description
+ </description>
+ <dataType><integer/></dataType>
+ </exceptionParameter>
+ <exceptionParameter name="dummyExcPar2">
+ <description>
+ Exception parameter description
+ </description>
+ <dataType>
+ <integer/>
+ </dataType>
+ </exceptionParameter>
+ </exception>
+
+
+ <class name="DummyActions">
+ <singleton/>
+ <attribute name="dummy">
+ <dataType><integer/></dataType>
+ </attribute>
+ <action name="actNoParams">
+ <description>
+ Action with no parameters
+ </description>
+ <returnType>
+ <description>
+ Maybe strange to describe void, but here is a description anyway.
+ </description>
+ <void/>
+ </returnType>
+ </action>
+ <action name="actOneParam">
+ <description>
+ Action with one parameter
+ </description>
+ <returnType>
+ <dataType>
+ <string>
+ <validValues>
+ <value name="ok"/>
+ <value name="error"/>
+ </validValues>
+ </string>
+ </dataType>
+ </returnType>
+ <parameter name="a">
+ <dataType>
+ <integer>
+ <range>
+ <min>0</min>
+ <max>3</max>
+ </range>
+ </integer>
+ </dataType>
+ </parameter>
+ </action>
+ <action name="actManyParams">
+ <description>
+ Action with many parameters, even some optional
+ </description>
+ <returnType>
+ <dataType>
+ <integer>
+ <range>
+ <min>0</min>
+ <max>100</max>
+ </range>
+ </integer>
+ </dataType>
+ </returnType>
+ <parameter name="a">
+ <dataType>
+ <integer>
+ <range>
+ <min>0</min>
+ <max>3</max>
+ </range>
+ </integer>
+ </dataType>
+ </parameter>
+ <parameter name="b">
+ <dataType>
+ <integer>
+ <range>
+ <min>0</min>
+ <max>3</max>
+ </range>
+ </integer>
+ </dataType>
+ </parameter>
+ <parameter name="c">
+ <dataType>
+ <integer>
+ <range>
+ <min>0</min>
+ <max>3</max>
+ </range>
+ </integer>
+ </dataType>
+ <initialValue>0</initialValue>
+ <isOptional/>
+ </parameter>
+ <parameter name="d">
+ <description>parameterdescription</description>
+ <dataType>
+ <integer/>
+ </dataType>
+ <isOptional/>
+ </parameter>
+ </action>
+ <action name="actComplexParams">
+ <description>
+ Action with parameters with complex datatypes
+ </description>
+ <returnType>
+ <description>
+ Here is a description of the return value for this action.
+ </description>
+ <dataType>
+ <string>
+ <validValues>
+ <value name="siri"/>
+ <value name="sara"/>
+ </validValues>
+ </string>
+ </dataType>
+ </returnType>
+ <parameter name="dummyParameter">
+ <dataType><integer/></dataType>
+ </parameter>
+ <parameter name="structParameter">
+ <dataType>
+ <struct>
+ <structMember name="a">
+ <dataType><integer/></dataType>
+ </structMember>
+ <structMember name="b">
+ <dataType><integer/></dataType>
+ </structMember>
+ </struct>
+ </dataType>
+ </parameter>
+ <raisesException name="dummyException"/>
+ </action>
+ <action name="actComplexReturn">
+ <returnType>
+ <dataType>
+ <struct>
+ <structMember name="a">
+ <dataType><integer/></dataType>
+ </structMember>
+ <structMember name="b">
+ <dataType><integer/></dataType>
+ </structMember>
+ </struct>
+ </dataType>
+ </returnType>
+ </action>
+ <action name="actException">
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="dummyException"/>
+ </action>
+ </class>
+
+
+ <relationship name="Top">
+ <containment>
+ <parent>
+ <hasClass name="top_mim:Is"/>
+ </parent>
+ <child>
+ <hasClass name="DummyActions"/>
+ </child>
+ </containment>
+ </relationship>
+
+</mim> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/hwm_mim.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/hwm_mim.xml
new file mode 100644
index 0000000000..a7a18b0070
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/hwm_mim.xml
@@ -0,0 +1,631 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<!--
+
+Copyright (C) Ericsson AB 2006-2007 All rights reserved.
+
+The information in this document is the property of Ericsson.
+
+Except as specifically authorized in writing by Ericsson, the
+receiver of this document shall keep the information contained
+herein confidential and shall protext the same in whole or in part
+from disclosure and dissemination to third parties.
+
+Disclosure and disseminations to the receivers employees shall
+only be made on a strict need to know basis.
+
+-->
+
+
+<mim xmlns="http://www.ericsson.com/is/isco/mim/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ericsson.com/is/isco/mim/2.0 /vobs/isac/sis/OAM_CRA1190047_1/CCS_CNA113082/doc/15519/mim.xsd ">
+
+ <!--
+ DataType Definitions
+ -->
+
+ <dataType name="HwmSlotState">
+ <description>
+ Information of how the slot is used.
+ </description>
+ <string>
+ <validValues>
+ <value name="unusedEmpty"/>
+ <value name="usedEmpty"/>
+ <value name="unusedOccupied"/>
+ <value name="usedOccupied"/>
+ </validValues>
+ </string>
+ </dataType>
+
+
+ <!--
+ Class Definitions
+ -->
+
+ <exception name="dummyException">
+ <exceptionParameter name="dummyExcPar1">
+ <dataType><integer/></dataType>
+ </exceptionParameter>
+ <exceptionParameter name="dummyExcPar2">
+ <dataType><integer/></dataType>
+ </exceptionParameter>
+ </exception>
+
+
+ <class name="Hardware">
+ <description>
+ The purpose of the Hardware Management function is to make it possible to maintain
+ the Hardware Inventory (HWI) for the Integrated Site and to present its content via ISM
+ or to a management system. And also to maintain the subracks usage.
+ </description>
+ <singleton/>
+ <systemCreated/>
+
+ <attribute name="activeSis">
+ <description>
+ The subrack,slot of the active om SIS. The format is "subrack.slot".
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <action name="actComplexParams">
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="structParameter">
+ <dataType>
+ <struct>
+ <structMember name="a">
+ <dataType><integer/></dataType>
+ </structMember>
+ <structMember name="b">
+ <dataType><integer/></dataType>
+ </structMember>
+ </struct>
+ </dataType>
+ </parameter>
+ </action>
+
+ <action name="actComplexReturn">
+ <returnType>
+ <dataType>
+ <struct>
+ <structMember name="a">
+ <dataType><integer/></dataType>
+ </structMember>
+ <structMember name="b">
+ <dataType><integer/></dataType>
+ </structMember>
+ </struct>
+ </dataType>
+ </returnType>
+ </action>
+
+ <action name="actException">
+ <returnType>
+ <void/>
+ </returnType>
+ <raisesException name="dummyException"/>
+ </action>
+
+ <action name="createInfraStructure">
+ <description>
+ Creates the base IS infrastructure.
+ This is noramlly done at factory.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+
+ <action name="exportInventory">
+ <description>
+ Exports the Hardware Inventory via FTP.
+ This is an asyncrounous operation. The file exported
+ will have the following name format:
+ &lt;node&gt;.&lt;timestamp&gt;.HWI.xml.tar.gz
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="host">
+ <description>
+ The host to which the data should be sent to
+ </description>
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="user">
+ <description>
+ The username on the host to be used during the FTP transfer.
+ </description>
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="password">
+ <description>
+ The pasword of the user
+ </description>
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="path">
+ <description>
+ The path were to put the file
+ </description>
+ <dataType><string/></dataType>
+ </parameter>
+ </action>
+
+ </class>
+
+ <class name="BladeType">
+ <description>
+ This class describes a Blade type.
+ </description>
+ <systemCreated/>
+
+ <attribute name="type">
+ <description>The blade type number like CNA12801</description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+
+ <attribute name="swgId">
+ <description>The blade software group index link CSX10138</description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+
+ <attribute name="swgRev">
+ <description>The blade software group revision</description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+
+ <attribute name="name">
+ <description>The name of the Blade Type.</description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="width">
+ <description>The width of the blade in number of slots.</description>
+ <dataType>
+ <integer/>
+ </dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="oneGLinks">
+ <description>
+ The 1G links used by the blade type , like 0,1, counted from
+ the leftmost backplane position.
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="linkAggregates">
+ <description>
+ The 1G links used for link aggregation by the blade type , like 0-1,
+ counted from the leftmost backplane position.
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="hasHwData">
+ <description>
+ True if possible to read product info via the maintenance bus.
+ </description>
+ <dataType><boolean/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="isMxb">
+ <description>True if this is a Main Switch blade type.</description>
+ <dataType><boolean/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="availOneGSlots">
+ <description>
+ Only valid for main switch blades. A list of slots that have 1G link.
+ Could be a single slot or a range or a combination thereof.
+ E.g. 1-24, or 1,3-13,15-24.
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="aggregateRanges">
+ <description>
+ Only valid for main switch blades. Specifies which slots can be used
+ for link aggregation. Ranges are specified in the form 1-12,13-24.
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ </class>
+
+
+ <class name="BladeSystemDomain">
+ <description>
+ This class describes a Blade system domain.
+ </description>
+ <systemCreated/>
+
+ <attribute name="name">
+ <description>The blade system domain name.</description>
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+
+ <attribute name="description">
+ <description>The description of the blade system domain.</description>
+ <dataType><string/></dataType>
+<!-- <key/> -->
+ </attribute>
+
+ </class>
+
+
+ <class name="Subrack">
+ <description>
+ This class describes the subrack.
+ </description>
+ <extension>
+ <callpoint id="Is_Hardware_Subrack" type="external"/>
+<!-- <validate id="Is_Hardware_Subrack" type="external" callOnce="true"/>-->
+ </extension>
+
+ <attribute name="id">
+ <description>Identifies a certain subrack.</description>
+ <dataType>
+ <integer><range><min>0</min><max>31</max></range></integer>
+ </dataType>
+ <key/>
+ </attribute>
+
+ <attribute name="type">
+ <description>The type of subrack.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="userLabel">
+ <description>A user friendly Subrack name.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="position">
+ <description>The subrack position in the cabinet.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="cabinetPosition">
+ <description>The cabinet position in the site.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="location">
+ <description>The site location, e.g. the visiting address.</description>
+ <dataType><string/></dataType>
+ </attribute>
+
+ <attribute name="availableOneGSlots">
+ <description>
+ Available slots for 1G switch links. Information taken from the type
+ of main switch blade that is created in the subrack.
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="availableTenGSlots">
+ <description>
+ Available slots for 10G switch links. Information taken from the type
+ of main switch blade that is created in the subrack.
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="aggregateSlots">
+ <description>
+ Links ranges for (1G) link aggregation. Information taken from the
+ type of main switch blade that is created in the subrack.
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="physicalAddrPlug0">
+ <description>
+ The value of the physical plug 0.
+ </description>
+ <dataType><integer/></dataType>
+ <mandatory/>
+ </attribute>
+
+ <attribute name="physicalAddrPlug1">
+ <description>
+ The value of the physical plug 1.
+ </description>
+ <dataType><integer/></dataType>
+ <mandatory/>
+ </attribute>
+
+ <attribute name="physicalAddrPlug3">
+ <description>
+ The value of the physical plug 3.
+ </description>
+ <dataType><integer/></dataType>
+ <mandatory/>
+ </attribute>
+
+ <attribute name="leftMxbBsSwgId">
+ <description>
+ The BS SWG Id of the left MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="leftMxbBsSwgRev">
+ <description>
+ The BS SWG Revision of the left MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="leftMxbBsCxrId">
+ <description>
+ The BS CXR Id (if any) of the left MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="leftMxbBsCxrRev">
+ <description>
+ The BS CXR Revision (if any) of the left MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="leftMxbBlSwgId">
+ <description>
+ The BL SWG Id of the left MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="leftMxbBlSwgRev">
+ <description>
+ The BL SWG Revision of the left MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="leftMxbBlCxrId">
+ <description>
+ The BL CXR Id (if any) of the left MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="leftMxbBlCxrRev">
+ <description>
+ The BL CXR Revision (if any) of the left MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="rightMxbBsSwgId">
+ <description>
+ The BS SWG Id of the right MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="rightMxbBsSwgRev">
+ <description>
+ The BS SWG Revision of the right MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="rightMxbBsCxrId">
+ <description>
+ The BS CXR Id (if any) of the right MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="rightMxbBsCxrRev">
+ <description>
+ The BS CXR Revision (if any) of the right MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="rightMxbBlSwgId">
+ <description>
+ The BL SWG Id of the right MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="rightMxbBlSwgRev">
+ <description>
+ The BL SWG Revision of the right MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="rightMxbBlCxrId">
+ <description>
+ The BL CXR Id (if any) of the right MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+
+ <attribute name="rightMxbBlCxrRev">
+ <description>
+ The BL CXR Revision (if any) of the right MXB in the subrack.
+ If not given the system will use the same as the
+ MXB in subrack 0. This might not be corect however.
+ </description>
+ <dataType><string/></dataType>
+ <restricted/>
+ </attribute>
+ </class>
+
+ <class name="Slot">
+ <description>
+ This class corresponds to slots, there is one instance
+ for each slot. The slots are grouped per subrack. A slot is
+ identified by subrack Id and slot number). The subrack Id for a slot
+ identifies in the subrackTable the subrack that the slot belongs
+ to.
+ </description>
+ <systemCreated/>
+
+ <attribute name="number">
+ <description>
+ The value of this object identifies the
+ slot position within the subrack.
+ </description>
+ <dataType>
+ <integer><range><min>0</min><max>25</max></range></integer>
+ </dataType>
+ <key/>
+ </attribute>
+
+ <attribute name="state">
+ <description>
+ See HwmSlotState description.
+ </description>
+ <dataType name.ref="HwmSlotState"/>
+ <readOnly/>
+ </attribute>
+
+ <attribute name="bladeSystem">
+ <description>
+ The value of this object identifies the Blade System that uses this
+ slot. An instances of this object will only have meaning in a
+ conceptual row if the value of hwmSlotState instance is either
+ usedOccupied or usedEmpty in the same conceptual row,
+ i.e. there is an Blade System created using this slot. (If
+ no Blade System is using the slot, the value will be "-".)
+ </description>
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+
+ </class>
+
+
+ <!--
+ Relatonship Definitions
+ -->
+
+ <relationship name="HwmTop">
+ <containment>
+ <parent>
+ <hasClass name="top_mim:Is"/>
+ </parent>
+ <child>
+ <hasClass name="Hardware"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="BladeTypes">
+ <containment>
+ <parent>
+ <hasClass name="Hardware"/>
+ </parent>
+ <child>
+ <hasClass name="BladeType"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="BladeSystemDomains">
+ <containment>
+ <parent>
+ <hasClass name="Hardware"/>
+ </parent>
+ <child>
+ <hasClass name="BladeSystemDomain"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Subracks">
+ <containment>
+ <parent>
+ <hasClass name="Hardware"/>
+ </parent>
+ <child>
+ <hasClass name="Subrack"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Slots">
+ <containment>
+ <parent>
+ <hasClass name="Subrack"/>
+ </parent>
+ <child>
+ <hasClass name="Slot"/>
+ </child>
+ </containment>
+ </relationship>
+</mim>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/instance.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/instance.xml
new file mode 100644
index 0000000000..e39152cada
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/instance.xml
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<!-- Copyright (C) Ericsson AB 2006 All rights reserved. -->
+
+<!-- Integrated Site Managed Object Model. -->
+
+<!--
+ This is a template for the IntegratedSite model version 1,
+ which consists of the following mim files:
+ /vobs/isac/sis/OAM_CRA1190047_1/CPD_CNA11381/doc/19062/cpd_mim.xml
+ /vobs/isac/sis/OAM_CRA1190047_1/HWM_CNA11309/doc/19062/hwm_mim.xml
+ /vobs/isac/sis/OAM_CRA1190047_1/SCA_CNA113119/doc/19062/bs_mim.xml
+ /vobs/isac/sis/OAM_CRA1190047_1/SWM_CNA11315/doc/19062/swm_mim.xml
+ /vobs/isac/sis/OAM_CRA1190047_1/doc/19062/top_mim.xml
+
+-->
+<IntegratedSite:model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:nc="http://www.ericsson.com/is/isco/nc" xmlns:IntegratedSite="http://www.ericsson.com/is/isco/IntegratedSite" xmlns:IsTypes="http://www.ericsson.com/is/isco/IsTypes" xmlns:MainSwitch="http://www.ericsson.com/is/isco/MainSwitch_1" xmlns:MyBsModel="http://www.ericsson.com/is/isco/MyBsModel_1" xsi:schemaLocation="http://www.ericsson.com/is/isco/IntegratedSite IntegratedSite.xsd">
+
+ <!--
+ The top class - the forefather of all classes.
+
+ Key attributes: []
+
+ Possible children:
+ BladeSystems
+ Hardware
+ NetworkConfiguration
+ Software
+ -->
+ <Is>
+
+
+ <!-- These three are just for verifying that the xml schema allows
+ the correct order of the child elements of the Is class -->
+<!--
+ <Hardware/>
+ <Software/>
+ <NetworkConfiguration/>
+-->
+
+ <!--
+ The BladeSystems mountpoint - parent of all blade systems.
+
+ Key attributes: []
+
+ Possible children:
+ BladeSystemTemplate
+ Mxb
+ MyBsModel
+ Sis
+ -->
+ <BladeSystems>
+
+ <!--
+ This class describes a Blade System. It will be cloned for each
+ new blade system type registered in the system. The new clone
+ will serve as a mountpoint for the blade system specific model.
+
+ Key attributes: [name]
+
+ Possible children:
+ Blade
+ BsIpTrafficClass
+ BsLanTrafficClass
+ BsLogicalNetwork
+ BsVlan
+ -->
+ <MyBsModel>
+ <!--
+ A user friendly Blade System name, must be set at creation and can be
+ changed when BS is locked.
+ -->
+ <name>bs_localhost_101</name>
+ <!--
+ An identifier for the BS. A new integer has to be used every time a new
+ BS is created. ??? Kvar ???
+ -->
+ <!--
+ The model for a blade system. Includes som mim files, which also uses
+ stuff from a sis model.
+ -->
+
+ <!--
+ This is a template for the MyBsModel model version 1,
+ which consists of the following mim files:
+ /vobs/isac/sis/OAM_CRA1190047_1/CCS_CNA113082/test/local_test/ccs_parser_SUITE_data/myTest_mim.xml, Version: /main/R2A/10
+ /vobs/isac/sis/OAM_CRA1190047_1/CCS_CNA113082/test/local_test/ccs_parser_SUITE_data/other_mim.xml
+
+ -->
+ <MyBsModel:model>
+
+ <!--
+ This is a class which can be assigned as an attribute of ChildClass.
+ Key attribute is 'id'.
+
+ Key attributes: [id]
+ -->
+ <Blipp nc:operation="replace">
+ <id>name1</id>
+ <truefalse>true</truefalse>
+ <ipAddress>
+ 10.11.12.13
+ </ipAddress>
+ <macAddress>AA:BB:CC:DD:EE:FF</macAddress>
+ <moAttributeDeep nc:operation="replace">
+ /IntegratedSite:model/Is/BladeSystems/MyBsModel[name='bs_localhost_101']/MyBsModel:model/MyClass[id1='Obj'][id2='1']/ChildClass[id='Obj2']
+ </moAttributeDeep>
+ </Blipp>
+
+ <Blipp>
+ <id>name2</id>
+ <truefalse>false</truefalse>
+ <ipAddress>20.21.22.23</ipAddress>
+ <macAddress>01:02:03:04:5:6</macAddress>
+ <moAttributeDeep>
+ MyClass[id1='Obj'][id2='1']/ChildClass[id='Obj3']
+ </moAttributeDeep>
+ </Blipp>
+
+ <!--
+ My Test Class
+ The class hierarky looks like this:
+
+ +==========+
+ |MountPoint|
+ +==========+
+ / \
+ / \
+ +=======+ +=======+
+ | Blipp | |MyClass|
+ +=======+ +=======+
+ |
+ |
+ +==========+
+ |ChildClass|
+ +==========+
+
+ Key attributes: [id1,id2]
+
+ Possible children:
+ ChildClass:
+ Definition of children under MyClass
+ -->
+ <MyClass>
+ <!-- Test class identifyer - part1 -->
+ <id1>Obj</id1>
+ <!-- Test class identifyer - part2 -->
+ <id2>1</id2>
+ <date>2006-03-08T03:00:00.9+03:00</date>
+ <date2>2006-03-15T22:59:58.99-01:00</date2>
+ <list>
+ <item>0</item>
+ <item>1</item>
+ <item nc:operation="delete">3</item>
+ </list>
+ <list2>
+ <item>
+ <!-- Struct: sis_model:uselessStruct -->
+ <field1>hei</field1>
+ <field2 nc:operation="replace">1</field2>
+ </item>
+ <item nc:operation="replace">
+ <!-- Struct: sis_model:uselessStruct -->
+ <field1>
+ hopp
+ </field1>
+ <field2>2</field2>
+ </item>
+ </list2>
+ <list3>
+ <item>hei</item>
+ <item>hopp</item>
+ </list3>
+ <yesNo>
+ yes
+ </yesNo>
+ <!-- Attribute description. -->
+ <commonStruct>
+ <!--
+ Struct: myNamedStruct
+ Struct description
+ -->
+ <counter>0</counter>
+ <state>locked</state>
+ <dummyStructRef>
+ <!-- Struct: sis_model:uselessStruct -->
+ <field1>hei</field1>
+ <field2>1</field2>
+ </dummyStructRef>
+ <dummySequence>
+ <item>
+ <field1>hopp</field1>
+ <field2>2</field2>
+ </item>
+ <item>
+ <field1>sa</field1>
+ <field2>3</field2>
+ </item>
+ <item>
+ <field1>sa</field1>
+ <field2>4</field2>
+ </item>
+ </dummySequence>
+ <inlineStruct>
+ <a>1</a>
+ <b>1.0</b>
+ <c>true</c>
+ </inlineStruct>
+ </commonStruct>
+ <dummyInternal>hei</dummyInternal>
+ <trueOrFalse>false</trueOrFalse>
+ <!--
+ Child of MyClass
+
+ Key attributes: [id]
+ -->
+ <ChildClass>
+ <id>Obj2</id>
+ <moAttribute>/IntegratedSite:model/Is/BladeSystems/MyBsModel[name='bs_localhost_101']/MyBsModel:model/Blipp[id='name1']</moAttribute>
+ <moAttributeNamed>
+ /IntegratedSite:model/Is/BladeSystems/MyBsModel[name='bs_localhost_101']/MyBsModel:model/MyClass[id1='Obj'][id2='1']
+ </moAttributeNamed>
+ </ChildClass>
+ <ChildClass>
+ <id>Obj3</id>
+ <moAttribute>../../Blipp[id='name2']</moAttribute>
+<!-- <moAttributeNamed>../MyClass[id1='Obj'][id2='1']</moAttributeNamed> -->
+ <moAttributeNamed>Dummy/MyClass[id1='Obj'][id2='1']</moAttributeNamed>
+ </ChildClass>
+ </MyClass>
+
+ </MyBsModel:model>
+ </MyBsModel>
+
+ </BladeSystems>
+<!--
+ <MainSwitch:model/>
+-->
+ </Is>
+</IntegratedSite:model>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/mim.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/mim.xsd
new file mode 100644
index 0000000000..e0534e8e14
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/mim.xsd
@@ -0,0 +1,486 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.ericsson.com/is/isco/mim/2.0" xmlns="http://www.ericsson.com/is/isco/mim/2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <!--
+ ============================================================================
+ %CCaseFile: mim.xsd %
+ %CCaseRev: /main/P4B/1 %
+ %CCaseDate: 2007-05-29 %
+ %CCaseDocNo: 22/155 19-CNA 113 082 Ux %
+ %Rev: Error in Revision! %
+ Author: EAB/AUL/IS Siri Hansen
+
+ ============================================================================
+
+ Copyright (c) Ericsson AB 2006-2007 All rights reserved.
+
+ The information in this document is the property of Ericsson.
+
+ Except as specifically authorized in writing by Ericsson, the
+ receiver of this document shall keep the information contained
+ herein confidential and shall protect the same in whole or in
+ part from disclosure and dissemination to third parties.
+
+ Disclosure and disseminations to the receivers employees shall
+ only be made on a strict need to know basis.
+ -->
+ <!-- Common -->
+ <xs:element name="description" type="xs:string"/>
+ <xs:element name="extension">
+ <xs:complexType>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="anyElement"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="anyAttribute">
+ <xs:anyAttribute processContents="skip"/>
+ </xs:attributeGroup>
+ <xs:group name="anyElement">
+ <xs:sequence>
+ <xs:any processContents="skip"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Mim definition -->
+ <xs:element name="mim">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="topClass"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="dataTypeDef"/>
+ <xs:element ref="exception"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="relationship"/>
+ </xs:sequence>
+ <xs:attribute name="version"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="topClass">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sortPriority"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ <xs:attribute name="minOccurs"/>
+ <xs:attribute name="maxOccurs"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- MO class definition -->
+ <xs:element name="class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="default_access"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element ref="singleton"/>
+ <xs:element minOccurs="0" ref="systemCreated"/>
+ <xs:element minOccurs="0" ref="readOnly"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="dataTypeDef"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="attribute"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="systemCreated"/>
+ <xs:element minOccurs="0" ref="readOnly"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="dataTypeDef"/>
+ <xs:element maxOccurs="unbounded" ref="attribute"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="action"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z][A-Za-z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="singleton">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="systemCreated">
+ <xs:complexType/>
+ </xs:element>
+ <!-- Relations -->
+ <xs:element name="relationship">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element ref="containment"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="containment">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="parent"/>
+ <xs:element ref="child"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="parent" type="hasClass"/>
+ <xs:element name="child">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="hasClass">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="cardinality"/>
+ <xs:element minOccurs="0" ref="sortPriority"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="sortPriority" type="xs:int"/>
+ <xs:element name="cardinality" type="rangeType"/>
+ <xs:complexType name="hasClass">
+ <xs:sequence>
+ <xs:element ref="hasClass"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="hasClass">
+ <xs:complexType>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- Data types -->
+ <xs:element name="simple_type" abstract="true" substitutionGroup="type"/>
+ <xs:element name="type" abstract="true"/>
+ <!-- For attributes, parameters and exceptions -->
+ <xs:group name="dataType">
+ <xs:sequence>
+ <xs:element name="dataType" nillable="true">
+ <xs:complexType>
+ <xs:choice>
+ <xs:element ref="type" minOccurs="0"/>
+ <xs:element ref="xs_list" minOccurs="0"/>
+ </xs:choice>
+ <xs:attribute name="name.ref" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="simpleDataType">
+ <xs:sequence>
+ <xs:element name="dataType" nillable="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="simple_type" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="name.ref" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="dataTypeDef">
+ <xs:sequence>
+ <xs:element name="dataType">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:choice>
+ <xs:element ref="type"/>
+ <xs:element ref="xs_list"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- For actions -->
+ <xs:element name="returnType">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:choice>
+ <xs:element ref="void"/>
+ <xs:group ref="dataType"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- Return data types -->
+ <xs:element name="void">
+ <xs:complexType/>
+ </xs:element>
+ <!-- Primitive data types -->
+ <xs:complexType name="stringRestrictionType">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="lengthRange"/>
+ <xs:element minOccurs="0" ref="validValues"/>
+ <xs:element minOccurs="0" ref="pattern"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="dateTimeRestrictionType">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="range"/>
+ <xs:element minOccurs="0" ref="validValues"/>
+ <xs:element minOccurs="0" ref="pattern"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="numRestrictionType">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="range"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="boolean" substitutionGroup="simple_type">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="dateTime" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="float" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="integer" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="string" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="pattern" type="xs:string"/>
+ <xs:element name="validValues">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="value"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="value">
+ <xs:complexType>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="lengthRange" type="rangeType"/>
+ <xs:element name="range" type="rangeType"/>
+ <xs:complexType name="rangeType">
+ <xs:sequence>
+ <xs:element name="min" type="xs:string" minOccurs="0"/>
+ <xs:element name="max" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="defaultValue" type="xs:string"/>
+ <!-- Struct data type -->
+ <xs:element name="struct" substitutionGroup="type">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="structMember"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="structMember">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:group ref="dataType"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- List data type -->
+ <xs:element name="xs_list">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="simpleDataType"/>
+ <xs:element minOccurs="0" ref="lengthRange"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- MoRef data type -->
+ <xs:element name="moRef" substitutionGroup="simple_type">
+ <xs:complexType>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z][A-Za-z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <!-- Attribute -->
+ <xs:element name="attribute">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="default_access"/>
+ <xs:group ref="dataType"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="initialValue"/>
+ <xs:element ref="pmData"/>
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="key"/>
+ <xs:element ref="readOnly"/>
+ </xs:choice>
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="readOnly"/>
+ <xs:choice>
+ <xs:element ref="mandatory"/>
+ <xs:element ref="restricted"/>
+ </xs:choice>
+ </xs:choice>
+ <xs:element ref="nonPersistent"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-z][a-zA-Z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="initialValue" type="xs:string"/>
+ <xs:element name="key">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="mandatory">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="nonPersistent">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="pmData">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="extension"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="readOnly">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="restricted">
+ <xs:complexType/>
+ </xs:element>
+ <!-- Action -->
+ <xs:element name="action">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="default_access"/>
+ <xs:element ref="returnType"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="raisesException"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-z][a-zA-Z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="parameter">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:group ref="dataType"/>
+ <xs:element minOccurs="0" ref="initialValue"/>
+ <xs:element minOccurs="0" ref="isOptional"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="isOptional">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="exception">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionParameter"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="exceptionParameter">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:group ref="dataType"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="raisesException">
+ <xs:complexType>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- xs types, introduced in IS 2.0 -->
+ <xs:element name="xs_normalizedString" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_token" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_string" type="stringRestrictionType" substitutionGroup="simple_type"/>
+
+ <xs:element name="xs_base64Binary" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_hexBinary" type="stringRestrictionType" substitutionGroup="simple_type"/>
+
+ <xs:element name="xs_integer" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_positiveInteger" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_negativeInteger" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_nonNegativeInteger" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_nonPositiveInteger" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_long" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_unsignedLong" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_int" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_unsignedInt" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_short" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_unsignedShort" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_byte" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_unsignedByte" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_decimal" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_float" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_double" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_boolean" type="numRestrictionType" substitutionGroup="simple_type"/>
+
+ <xs:element name="xs_duration" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_dateTime" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_date" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_time" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gYear" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gYearMonth" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gMonth" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gMonthDay" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gDay" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+
+ <xs:element name="xs_QName" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_Name" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_NCName" type="stringRestrictionType" substitutionGroup="simple_type"/>
+
+ <xs:element name="xs_anyURI" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_language" type="stringRestrictionType" substitutionGroup="simple_type"/>
+
+ <!-- Authorization information -->
+ <xs:element name="default_access">
+ <xs:complexType>
+ <xs:attribute name="role" type="xs:token" use="required"/>
+ <xs:attribute name="permissions" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="[rwx]{3}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/mim2.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/mim2.xsd
new file mode 100644
index 0000000000..da6ff6bd7d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/mim2.xsd
@@ -0,0 +1,506 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.ericsson.com/is/isco/mim/2.0" xmlns="http://www.ericsson.com/is/isco/mim/2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <!--
+ ============================================================================
+ %CCaseFile: mim.xsd %
+ %CCaseRev: /main/P4B/3 %
+ %CCaseDate: 2007-06-07 %
+ %CCaseDocNo: 22/155 19-CNA 113 082 Ux %
+ %Rev: Error in Revision! %
+ Author: EAB/AUL/IS Siri Hansen
+
+ ============================================================================
+
+ Copyright (c) Ericsson AB 2006-2007 All rights reserved.
+
+ The information in this document is the property of Ericsson.
+
+ Except as specifically authorized in writing by Ericsson, the
+ receiver of this document shall keep the information contained
+ herein confidential and shall protect the same in whole or in
+ part from disclosure and dissemination to third parties.
+
+ Disclosure and disseminations to the receivers employees shall
+ only be made on a strict need to know basis.
+ -->
+ <!-- Common -->
+ <xs:element name="description" type="xs:string"/>
+ <xs:element name="extension">
+ <xs:complexType>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="anyElement"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="anyAttribute">
+ <xs:anyAttribute processContents="skip"/>
+ </xs:attributeGroup>
+ <xs:group name="anyElement">
+ <xs:sequence>
+ <xs:any processContents="skip"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Mim definition -->
+ <xs:element name="mim">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="topClass"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="dataTypeDef"/>
+ <xs:element ref="exception"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="relationship"/>
+ </xs:sequence>
+ <xs:attribute name="version"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="topClass">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sortPriority"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ <xs:attribute name="minOccurs"/>
+ <xs:attribute name="maxOccurs"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- MO class definition -->
+ <xs:element name="class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="default_access"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element ref="singleton"/>
+ <xs:element minOccurs="0" ref="systemCreated"/>
+ <xs:element minOccurs="0" ref="readOnly"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="dataTypeDef"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="attribute"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="systemCreated"/>
+ <xs:element minOccurs="0" ref="readOnly"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="dataTypeDef"/>
+ <xs:element maxOccurs="unbounded" ref="attribute"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="action"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z][A-Za-z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="singleton">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="systemCreated">
+ <xs:complexType/>
+ </xs:element>
+ <!-- Relations -->
+ <xs:element name="relationship">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element ref="containment"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="containment">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="parent"/>
+ <xs:element ref="child"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="parent" type="hasClass"/>
+ <xs:element name="child">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="hasClass">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="cardinality"/>
+ <xs:element minOccurs="0" ref="sortPriority"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="sortPriority" type="xs:int"/>
+ <xs:element name="cardinality" type="rangeType"/>
+ <xs:complexType name="hasClass">
+ <xs:sequence>
+ <xs:element ref="hasClass"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="hasClass">
+ <xs:complexType>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- Data types -->
+ <xs:element name="simple_type" abstract="true" substitutionGroup="type"/>
+ <xs:element name="type" abstract="true"/>
+ <!-- For attributes, parameters and exceptions -->
+ <xs:group name="dataType">
+ <xs:sequence>
+ <xs:element name="dataType" nillable="true">
+ <xs:complexType>
+ <xs:choice>
+ <xs:element ref="type" minOccurs="0"/>
+ <xs:element ref="xs_list" minOccurs="0"/>
+ </xs:choice>
+ <xs:attribute name="name.ref" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="simpleDataType">
+ <xs:sequence>
+ <xs:element name="dataType" nillable="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="simple_type" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="name.ref" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="dataTypeDef">
+ <xs:sequence>
+ <xs:element name="dataType">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:choice>
+ <xs:element ref="type"/>
+ <xs:element ref="xs_list"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- For actions -->
+ <xs:element name="returnType">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:choice>
+ <xs:element ref="void"/>
+ <xs:group ref="dataType"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- Return data types -->
+ <xs:element name="void">
+ <xs:complexType/>
+ </xs:element>
+ <!-- Primitive data types -->
+ <xs:complexType name="stringRestrictionType">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="lengthRange"/>
+ <xs:element minOccurs="0" ref="validValues"/>
+ <xs:element minOccurs="0" ref="pattern"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="dateTimeRestrictionType">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="range"/>
+ <xs:element minOccurs="0" ref="validValues"/>
+ <xs:element minOccurs="0" ref="pattern"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="numRestrictionType">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="range"/>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="boolean" substitutionGroup="simple_type">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="dateTime" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="float" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="integer" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="string" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="pattern" type="xs:string"/>
+ <xs:element name="validValues">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="value"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="value">
+ <xs:complexType>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="lengthRange" type="rangeType"/>
+ <xs:element name="range" type="rangeType"/>
+ <xs:complexType name="rangeType">
+ <xs:sequence>
+ <xs:element name="min" type="xs:string" minOccurs="0"/>
+ <xs:element name="max" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="defaultValue" type="xs:string"/>
+ <!-- Struct data type -->
+ <xs:element name="struct" substitutionGroup="type">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="structMember"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="structMember">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:group ref="dataType"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- List data type -->
+ <xs:element name="xs_list">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="simpleDataType"/>
+ <xs:element minOccurs="0" ref="lengthRange"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- MoRef data type -->
+ <xs:element name="moRef" substitutionGroup="simple_type">
+ <xs:complexType>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z][A-Za-z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <!-- Attribute -->
+ <xs:element name="attribute">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="default_access"/>
+ <xs:group ref="dataType"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="initialValue"/>
+ <xs:element ref="pmData"/>
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="key"/>
+ <xs:element ref="readOnly"/>
+ </xs:choice>
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="readOnly"/>
+ <xs:choice>
+ <xs:element ref="mandatory"/>
+ <xs:element ref="restricted"/>
+ </xs:choice>
+ </xs:choice>
+ <xs:element ref="nonPersistent"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-z][a-zA-Z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="initialValue" type="xs:string"/>
+ <xs:element name="key">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="mandatory">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="nonPersistent">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="pmData">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="readOnly">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="restricted">
+ <xs:complexType/>
+ </xs:element>
+ <!-- Action -->
+ <xs:element name="action">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="default_access"/>
+ <xs:element ref="returnType"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="raisesException"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-z][a-zA-Z0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="parameter">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:group ref="dataType"/>
+ <xs:element minOccurs="0" ref="initialValue"/>
+ <xs:element minOccurs="0" ref="isOptional"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="isOptional">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="exception">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionParameter"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="exceptionParameter">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:element minOccurs="0" ref="extension"/>
+ <xs:group ref="dataType"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="raisesException">
+ <xs:complexType>
+ <xs:attribute name="name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- xs types, introduced in IS 2.0 -->
+ <xs:element name="xs_normalizedString" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_token" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_string" type="stringRestrictionType" substitutionGroup="simple_type"/>
+
+ <xs:element name="xs_base64Binary" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_hexBinary" type="stringRestrictionType" substitutionGroup="simple_type"/>
+
+ <xs:element name="xs_integer" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_positiveInteger" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_negativeInteger" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_nonNegativeInteger" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_nonPositiveInteger" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_long" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_unsignedLong" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_int" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_unsignedInt" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_short" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_unsignedShort" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_byte" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_unsignedByte" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_decimal" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_float" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_double" type="numRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_boolean" substitutionGroup="simple_type">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="defaultValue"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="xs_duration" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_dateTime" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_date" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_time" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gYear" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gYearMonth" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gMonth" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gMonthDay" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_gDay" type="dateTimeRestrictionType" substitutionGroup="simple_type"/>
+
+ <xs:element name="xs_QName" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_Name" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_NCName" type="stringRestrictionType" substitutionGroup="simple_type"/>
+
+ <xs:element name="xs_anyURI" type="stringRestrictionType" substitutionGroup="simple_type"/>
+ <xs:element name="xs_language" type="stringRestrictionType" substitutionGroup="simple_type"/>
+
+ <!-- Password type -->
+ <!-- This is a string, which will not be visible in the CLI or in any logs. -->
+ <!-- The 'encrypt' attribute indicates if the string shall be sent encrypted -->
+ <!-- or in clear text to the blade system -->
+ <xs:element name="password" substitutionGroup="simple_type">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="lengthRange"/>
+ </xs:sequence>
+ <xs:attribute name="enrypt" type="xs:boolean" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Authorization information -->
+ <xs:element name="default_access">
+ <xs:complexType>
+ <xs:attribute name="role" type="xs:token" use="required"/>
+ <xs:attribute name="permissions" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="[rwx]{3}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/nc.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/nc.xsd
new file mode 100644
index 0000000000..60a320a61e
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/nc.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ericsson.com/is/isco/nc" xmlns="http://www.ericsson.com/is/isco/nc">
+ <xsd:attribute name="operation">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:normalizedString">
+ <xsd:whiteSpace value="collapse"/>
+ <xsd:enumeration value="merge"/>
+ <xsd:enumeration value="create"/>
+ <xsd:enumeration value="replace"/>
+ <xsd:enumeration value="delete"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+</xsd:schema>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/swm_mim.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/swm_mim.xml
new file mode 100644
index 0000000000..90afcb2b68
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/sis/swm_mim.xml
@@ -0,0 +1,881 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<!--
+
+Copyright (C) Ericsson AB 2006 All rights reserved.
+
+The information in this document is the property of Ericsson.
+
+Except as specifically authorized in writing by Ericsson, the
+receiver of this document shall keep the information contained
+herein confidential and shall protext the same in whole or in part
+from disclosure and dissemination to third parties.
+
+Disclosure and disseminations to the receivers employees shall
+only be made on a strict need to know basis.
+
+-->
+
+
+<!-- MIM file for SWM -->
+
+
+ <mim xmlns="http://www.ericsson.com/is/isco/mim/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ericsson.com/is/isco/mim/2.0 /vobs/isac/sis/OAM_CRA1190047_1/CCS_CNA113082/doc/15519/mim.xsd ">
+
+ <!--___ Data types ________________________________ -->
+
+ <dataType name="SwmMatchStrategy">
+ <description>
+ Interpretation of given filename and path .
+ </description>
+ <string>
+ <validValues>
+ <value name="exact"/>
+ <value name="prefix"/>
+ <value name="unknown"/>
+ </validValues>
+ <!--defaultValue>exact</defaultValue-->
+ </string>
+ </dataType>
+
+ <dataType name="SwmDownloadStrategy">
+ <description>
+ Interpretation according to existing files.
+ </description>
+ <string>
+ <validValues>
+ <value name="onlyIfMissing"/>
+ <value name="always"/>
+ <value name="unknown"/>
+ </validValues>
+ <!--defaultValue>onlyIfMissing</defaultValue-->
+ </string>
+ </dataType>
+
+ <dataType name="ContainerType">
+ <description>
+ Type of a load module container.
+ </description>
+ <string>
+ <validValues>
+ <value name="bladeSystemInformation"/>
+ <value name="bladeInformation"/>
+ <value name="application"/>
+ <value name="rootFileSystem"/>
+ <value name="kernel"/>
+ <value name="correction"/>
+ </validValues>
+ <!--defaultValue>bladeSystemInformation</defaultValue-->
+ </string>
+ </dataType>
+
+
+ <dataType name="SwgStatus">
+ <description>
+ Indicates status of software groups. A software group is
+ complete if all included load module containers have been
+ downloaded and unpacked correctly. A software group is inconsistent
+ if the checksums of the load module containers do not match the
+ information in the system information CXP, or if the XML
+ data could not be registered.
+ </description>
+ <string>
+ <validValues>
+ <value name="complete"/>
+ <value name="incomplete"/>
+ <value name="inconsistent"/>
+ </validValues>
+ <!--defaultValue>incomplete</defaultValue-->
+ </string>
+ </dataType>
+
+ <dataType name="JobData">
+ <description>
+ Data to specify job progress, during its execution.
+ </description>
+ <struct>
+ <structMember name="jobDateOrdered">
+ <dataType><dateTime/></dataType>
+ </structMember>
+ <structMember name="jobStatus">
+ <description>
+ Indicator of job status.
+ A job should be started immediately, but could be postponed
+ if the total load on the system would become too high.
+ </description>
+ <dataType>
+ <string>
+ <validValues>
+ <value name="notStarted"/>
+ <value name="ongoing"/>
+ <value name="complete"/>
+ </validValues>
+ <!--defaultValue>notStarted</defaultValue-->
+ </string>
+ </dataType>
+ </structMember>
+ <structMember name="jobResult">
+ <description>
+ Possible results of a job action.
+ </description>
+ <dataType>
+ <string>
+ <validValues>
+ <value name="ok"/>
+ <value name="inputError"/>
+ <value name="executionError"/>
+ <value name="unknown"/>
+ </validValues>
+ <!--defaultValue>ok</defaultValue-->
+ </string>
+ </dataType>
+ </structMember>
+ <structMember name="jobInfo">
+ <dataType><string/></dataType>
+ </structMember>
+ <structMember name="jobProgress">
+ <dataType name.ref="IsTypes:Unsigned32"/>
+ </structMember>
+ <structMember name="jobLastStep">
+ <dataType name.ref="IsTypes:Unsigned32"/>
+ </structMember>
+ <structMember name="jobProgressReport">
+ <dataType><boolean/></dataType>
+ </structMember>
+ </struct>
+ </dataType><!-- JobData -->
+
+ <dataType name="FTPData">
+ <description>
+ Data to specify FTP server info, such as host, user,
+ password and path, to locate correct files or destination
+ for files.
+ </description>
+ <struct>
+ <structMember name="host">
+ <dataType><string/></dataType>
+ </structMember>
+ <structMember name="user">
+ <dataType><string/></dataType>
+ </structMember>
+ <structMember name="password">
+ <dataType><string/></dataType>
+ </structMember>
+ <structMember name="path">
+ <description>
+ Absolute path including filename.
+ </description>
+ <dataType><string/></dataType>
+ </structMember>
+ </struct>
+ </dataType><!-- FTPData -->
+
+ <dataType name="BladeUgSpecification">
+ <description>
+ Specification of a blade when an upgrade job is ordered for a
+ specific blade. This data always belongs to and is included in
+ an upgrade job for a blade system.
+ </description>
+ <struct>
+ <structMember name="bladeSubrack">
+ <dataType name.ref="IsTypes:Unsigned32"/>
+ </structMember>
+ <structMember name="bladeSlot">
+ <dataType name.ref="IsTypes:Unsigned32"/>
+ </structMember>
+ <structMember name="bladeSwgProdNr">
+ <dataType><string/></dataType>
+ </structMember>
+ <structMember name="bladeSwgVersion">
+ <dataType><string/></dataType>
+ </structMember>
+ </struct>
+ </dataType> <!-- BladeUgSpecification -->
+
+ <!--___ CLASSes for tables (no STRUCTs) ________________ -->
+
+ <!-- Inventory Classes -->
+
+ <class name="SoftwareDeliveryPackage">
+ <description>
+ Container of files of data, or binary executables, needed to run the system.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="prodNr">
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="version"> <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="name">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="type">
+ <dataType name.ref="ContainerType">
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <action name="delete">
+ <description>
+ Action to delete SoftwareDeliveryPackage.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class> <!-- SoftwareDeliveryPackage -->
+
+ <class name="SoftwareGroup">
+ <description>
+ Contains one or more SoftwareDeliveryPackage.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="prodNr">
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="version">
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="name">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="systemProdNr">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="systemVersion">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="systemName">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="integratedSystemProdNr">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="integratedSystemVersion">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="integratedSystemName">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="relatedCXPs">
+ <dataType>
+ <xs_list>
+ <dataType>
+ <moRef name="SoftwareDeliveryPackage"/>
+ </dataType>
+ </xs_list>
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="status">
+ <dataType name.ref="SwgStatus">
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <action name="delete">
+ <description>
+ Action to delete Software Group.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class> <!-- SoftwareGroup -->
+
+ <class name="LocalBackup">
+ <description>
+ All available backups locally stored.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="backupId">
+ <dataType name.ref="IsTypes:Unsigned32">
+ </dataType>
+ <key/>
+ </attribute>
+ <attribute name="name">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="bladeSystem">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="date">
+ <dataType>
+ <dateTime/>
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="size">
+ <dataType name.ref="IsTypes:Unsigned32">
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <action name="exportBackup">
+ <description>
+ Action to export backup file to FTP server from
+ local disk storage. An instance of the class
+ Software/Jobs/Backup/Export is created as a log of this
+ action.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="jobId">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="host">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="user">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="password">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="path">
+ <description>
+ Absolute path including filename.
+ </description>
+ <dataType><string/></dataType>
+ </parameter>
+ </action>
+ <action name="delete">
+ <description>
+ Action to delete backup.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ </action>
+ </class> <!-- LocalBackup -->
+
+ <class name="Alarm">
+ <description>
+ Information and cause of all currently active software configuration alarms.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="id">
+ <dataType name.ref="IsTypes:Unsigned32"/>
+ <key/>
+ </attribute>
+ <attribute name="bladeSystem">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="cause">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="info">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ </class> <!-- Alarm -->
+
+
+ <!-- Jobs Classes -->
+
+ <class name="DownloadFile">
+ <description>
+ This MO contains information about requested, ongoing,
+ and completed software file download jobs. To start a
+ download job the operator calls an action Inventory class,
+ and a new instance of this MO is created.
+ For load regulating reasons a requested job may not start
+ immediately.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="jobId">
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="jobData">
+ <dataType name.ref="JobData"/>
+ <readOnly/>
+ </attribute>
+ <attribute name="ftpData">
+ <dataType name.ref="FTPData"/>
+ <readOnly/>
+ </attribute>
+ <attribute name="matchStrategy">
+ <dataType name.ref="SwmMatchStrategy">
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="downloadStrategy">
+ <dataType name.ref="SwmDownloadStrategy">
+ </dataType>
+ <readOnly/>
+ </attribute>
+ </class><!-- DownloadFile -->
+
+ <class name="Upgrade">
+ <description>
+ This MO handles upgrade jobs towards the system. The operator
+ may specify a specific blade to run the upgrade on, instead of
+ running an upgrade on the entire blade system.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="jobId">
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="jobData">
+ <dataType name.ref="JobData"/>
+ <readOnly/>
+ </attribute>
+ <attribute name="bladeSystem">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="swgProdNr">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="swgVersion">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="cxrProdNr">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="cxrVersion">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="maxTime">
+ <description>
+ The maximum time allowed for the SW Upgrade
+ job to finish. After this time, the job will be interrupted.
+ The value 0 means that MaxTime will be given the
+ timer value registered with the Blade System Software Group
+ Version. If no such value has been registered,
+ MaxTime will be given a system default timer value.
+ </description>
+ <dataType name.ref="IsTypes:Unsigned32">
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="bladeUgSpecification">
+ <dataType name.ref="BladeUgSpecification"/>
+ <readOnly/>
+ </attribute>
+ </class><!-- Upgrade -->
+
+
+
+ <!-- Backup Classes -->
+
+ <class name="Create">
+ <description>
+ This MO handles creation of backups of the system.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="jobId">
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="jobData">
+ <dataType name.ref="JobData"/>
+ <readOnly/>
+ </attribute>
+ <attribute name="backupId">
+ <dataType name.ref="IsTypes:Unsigned32">
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="targetBladeSystem">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="backupName">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ </class><!-- Create -->
+
+ <class name="Restore">
+ <description>
+ This MO handles restore of backups of the system.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="jobId">
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="jobData">
+ <dataType name.ref="JobData"/>
+ <readOnly/>
+ </attribute>
+ <attribute name="backupId">
+ <dataType name.ref="IsTypes:Unsigned32">
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="targetBladeSystem">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="backupName">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ </class><!-- Restore -->
+
+ <class name="Import">
+ <description>
+ This MO handles import of backup files from the FTP server.
+ The backup file is stored locally, but not loaded into the system.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="jobId">
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="jobData">
+ <dataType name.ref="JobData"/>
+ <readOnly/>
+ </attribute>
+ <attribute name="ftpData">
+ <dataType name.ref="FTPData"/>
+ <readOnly/>
+ </attribute>
+ </class><!-- Import -->
+
+ <class name="Export">
+ <description>
+ This MO handles export of locally stored backup files to
+ the FTP server.
+ </description>
+ <systemCreated/>
+ <readOnly/>
+ <attribute name="jobId">
+ <dataType><string/></dataType>
+ <key/>
+ </attribute>
+ <attribute name="jobData">
+ <dataType name.ref="JobData"/>
+ <readOnly/>
+ </attribute>
+ <attribute name="ftpData">
+ <dataType name.ref="FTPData"/>
+ <readOnly/>
+ </attribute>
+ <attribute name="backupId">
+ <dataType name.ref="IsTypes:Unsigned32">
+ </dataType>
+ <readOnly/>
+ </attribute>
+ <attribute name="backupName">
+ <dataType><string/></dataType>
+ <readOnly/>
+ </attribute>
+ </class><!-- Export -->
+
+
+ <!--____ CLASSes for hierarchic relations __________________ -->
+
+ <class name="Software">
+ <description>
+ Describes the Software management service
+ in the Integrated Site services management functional area (MFA).
+ </description>
+ <singleton/>
+ </class> <!-- software -->
+
+ <class name="Inventory">
+ <description>
+ System created data for information and overview.
+ Some data is created as a result of an action called by the
+ operator.
+ </description>
+ <singleton/>
+ <action name="downloadFile">
+ <description>
+ Action to download file/s from FTP server to
+ local disk storage. An instance of the MO class
+ Software/Jobs/DownloadFile is created as a log of this
+ action.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="jobId">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="host">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="user">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="password">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="path">
+ <description>
+ Absolute path including filename.
+ </description>
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="matchStrategy">
+ <dataType name.ref="SwmMatchStrategy"></dataType>
+ </parameter>
+ <parameter name="downloadStrategy">
+ <dataType name.ref="SwmDownloadStrategy"></dataType>
+ </parameter>
+ </action>
+ <action name="importBackup">
+ <description>
+ Action to import backup file from FTP server to
+ to local disk storage. An instance of the MO class
+ Software/Jobs/Backup/Import is created as a log of this
+ action.
+ </description>
+ <returnType>
+ <void/>
+ </returnType>
+ <parameter name="jobId">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="host">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="user">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="password">
+ <dataType><string/></dataType>
+ </parameter>
+ <parameter name="path">
+ <description>
+ Absolute path including filename.
+ </description>
+ <dataType><string/></dataType>
+ </parameter>
+ </action>
+ </class> <!-- Inventory -->
+
+ <class name="Jobs">
+ <description>
+ Subclass to top class Software. Parent of
+ Jobs classes:
+ DownloadFile,
+ Upgrade,
+ Backup.
+ Contains system created data through ordered job actions.
+ </description>
+ <singleton/>
+ </class> <!-- Jobs -->
+
+ <class name="Backup">
+ <description>
+ Subclass to class Jobs. Parent of
+ Jobs classes:
+ Create,
+ Restore
+ Import,
+ Export.
+<!-- CreateAndExport,
+ ImportAndRestore.-->
+ Contains system created data through ordered backup job actions.
+ </description>
+ <singleton/>
+ </class> <!-- Backup -->
+
+
+ <!--____ RELATIONSHIPs ______________________________-->
+
+ <!-- Top Class Relations -->
+ <relationship name="SwmTop">
+ <containment>
+ <parent>
+ <hasClass name="top_mim:Is"/>
+ </parent>
+ <child>
+ <hasClass name="Software"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Software_to_Inventory">
+ <containment>
+ <parent>
+ <hasClass name="Software"/>
+ </parent>
+ <child>
+ <hasClass name="Inventory"/>
+ <cardinality>
+ <min>1</min>
+ <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Software_to_Jobs">
+ <containment>
+ <parent>
+ <hasClass name="Software"/>
+ </parent>
+ <child>
+ <hasClass name="Jobs"/>
+ <cardinality>
+ <min>1</min>
+ <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <!-- Inventory Class Relations -->
+ <relationship name="Inventory_to_SoftwareDeliveryPackage">
+ <containment>
+ <parent>
+ <hasClass name="Inventory"/>
+ </parent>
+ <child>
+ <hasClass name="SoftwareDeliveryPackage"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Inventory_to_SoftwareGroup">
+ <containment>
+ <parent>
+ <hasClass name="Inventory"/>
+ </parent>
+ <child>
+ <hasClass name="SoftwareGroup"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Inventory_to_LocalBackup">
+ <containment>
+ <parent>
+ <hasClass name="Inventory"/>
+ </parent>
+ <child>
+ <hasClass name="LocalBackup"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Inventory_to_Alarm">
+ <containment>
+ <parent>
+ <hasClass name="Inventory"/>
+ </parent>
+ <child>
+ <hasClass name="Alarm"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <!-- Jobs Class Relations -->
+ <relationship name="Jobs_to_DownloadFile">
+ <containment>
+ <parent>
+ <hasClass name="Jobs"/>
+ </parent>
+ <child>
+ <hasClass name="DownloadFile"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Jobs_to_Upgrade">
+ <containment>
+ <parent>
+ <hasClass name="Jobs"/>
+ </parent>
+ <child>
+ <hasClass name="Upgrade"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Jobs_to_Backup">
+ <containment>
+ <parent>
+ <hasClass name="Jobs"/>
+ </parent>
+ <child>
+ <hasClass name="Backup"/>
+ <cardinality>
+ <min>1</min>
+ <max>1</max>
+ </cardinality>
+ </child>
+ </containment>
+ </relationship>
+
+ <!-- Backup Class Relations -->
+ <relationship name="Backup_to_Create">
+ <containment>
+ <parent>
+ <hasClass name="Backup"/>
+ </parent>
+ <child>
+ <hasClass name="Create"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Backup_to_Restore">
+ <containment>
+ <parent>
+ <hasClass name="Backup"/>
+ </parent>
+ <child>
+ <hasClass name="Restore"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Backup_to_Import">
+ <containment>
+ <parent>
+ <hasClass name="Backup"/>
+ </parent>
+ <child>
+ <hasClass name="Import"/>
+ </child>
+ </containment>
+ </relationship>
+
+ <relationship name="Backup_to_Export">
+ <containment>
+ <parent>
+ <hasClass name="Backup"/>
+ </parent>
+ <child>
+ <hasClass name="Export"/>
+ </child>
+ </containment>
+ </relationship>
+ </mim>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/small.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/small.xml
new file mode 100644
index 0000000000..b0358f467d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/small.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<purchaseOrder
+ xmlns="small"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="small small.xsd"
+ orderDate="1999-10-20">
+This is the content of the element
+</purchaseOrder>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/small.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/small.xsd
new file mode 100644
index 0000000000..00d49db22d
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/small.xsd
@@ -0,0 +1,60 @@
+<xsd:schema
+ targetNamespace="small"
+ xmlns:sm="small"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="purchaseOrder" type="sm:PurchaseOrderType"/>
+
+ <xsd:element name="comment" type="xsd:string"/>
+
+ <xsd:complexType name="PurchaseOrderType" mixed="true">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ <xsd:attribute name="orderStatus" type="xsd:string" default="new"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <complexType name="own1">
+ <complexContent>
+ <restriction base="xsd:anyType">
+ <attribute name="number" type="xsd:integer"/>
+ <attribute name="quantity" type="xsd:positiveInteger"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+
+ <complexType name="PartsType">
+ <sequence>
+ <element name="part" maxOccurs="unbounded">
+ <complexType>
+ <simpleContent>
+ <extension base="xsd:string">
+ <attribute name="number" type="xsd:integer"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+<simpleType name="listOfMyIntType">
+ <list itemType="xsd:integer"/>
+</simpleType>
+
+<simpleType name="SixUSStates">
+ <restriction base="sm:listOfMyIntType">
+ <length value="6"/>
+ </restriction>
+</simpleType>
+
+</xsd:schema>
+
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_7288.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_7288.xml
new file mode 100644
index 0000000000..9108e96bed
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_7288.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <IMSSubscription>
+ <PrivateID>[email protected]</PrivateID>
+ <ServiceProfile>
+ <PublicIdentity>
+ <BarringIndication>1</BarringIndication>
+ <Identity>sip:[email protected]</Identity>
+ </PublicIdentity>
+ <PublicIdentity>
+ <Identity>sip:[email protected]</Identity>
+ </PublicIdentity>
+ <InitialFilterCriteria>
+ <Priority>0</Priority>
+ <TriggerPoint>
+ <ConditionTypeCNF>1</ConditionTypeCNF>
+ <SPT>
+ <ConditionNegated>0</ConditionNegated>
+ <Group>0</Group>
+ <Method>INVITE</Method>
+ </SPT>
+ <SPT>
+ <ConditionNegated>0</ConditionNegated>
+ <Group>0</Group>
+ <Method>MESSAGE</Method>
+ </SPT>
+ <SPT>
+ <ConditionNegated>0</ConditionNegated>
+ <Group>0</Group>
+ <Method>SUBSCRIBE</Method>
+ </SPT>
+ <SPT>
+ <ConditionNegated>0</ConditionNegated>
+ <Group>1</Group>
+ <Method>INVITE</Method>
+ </SPT>
+ <SPT>
+ <ConditionNegated>0</ConditionNegated>
+ <Group>1</Group>
+ <Method>MESSAGE</Method>
+ </SPT>
+
+ <SPT>
+ <ConditionNegated>1</ConditionNegated>
+ <Group>1</Group>
+ <SIPHeader>
+ <Header>From</Header>
+ <Content>"joe"</Content>
+ </SIPHeader>
+ </SPT>
+ </TriggerPoint>
+ <ApplicationServer>
+ <ServerName>sip:[email protected]</ServerName>
+ </ApplicationServer>
+ </InitialFilterCriteria>
+ </ServiceProfile>
+ </IMSSubscription>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_8599.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_8599.xml
new file mode 100644
index 0000000000..1eacfc756e
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_8599.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+
+<persons>
+<person>lars thorsen</person>
+<person></person>
+</persons>
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_8599.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_8599.xsd
new file mode 100644
index 0000000000..977f043bb7
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/ticket_8599.xsd
@@ -0,0 +1,17 @@
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="persons" type="p"/>
+
+ <xs:complexType name="p">
+ <xs:sequence>
+ <xs:element name="person" type="string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+
+ <xs:simpleType name="string">
+ <xs:restriction base="xs:string">
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle.xml
new file mode 100644
index 0000000000..61aacbc8d0
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0"?>
+<root>
+ <state>
+ <code>AL</code>
+ <vehicle plateNumber="1123" state="AL"/>
+ <vehicle plateNumber="1125" state="AK"/>
+ <vehicle plateNumber="1124" state="AL"/>
+ <vehicle plateNumber="1223" state="AL"/>
+ <vehicle plateNumber="1323" state="AL"/>
+ <vehicle plateNumber="1225" state="AS"/>
+ <vehicle plateNumber="1126" state="AZ"/>
+ <vehicle plateNumber="1127" state="AR"/>
+ <vehicle plateNumber="1128" state="FL"/>
+ <vehicle plateNumber="2341" state="FL"/>
+ <vehicle plateNumber="1129" state="FL"/>
+ <vehicle plateNumber="1133" state="FL"/>
+ <vehicle plateNumber="22123" state="MO"/>
+ <vehicle plateNumber="22124" state="MI"/>
+ <person>
+ <car regState="AL" regPlate="1123"/>
+ </person>
+ <person>
+ <car regState="AK" regPlate="1125"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1124"/>
+ <car regState="AL" regPlate="1223"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1323"/>
+ </person>
+ <person>
+ <car regState="AS" regPlate="1225"/>
+ </person>
+ <person>
+ <car regState="AZ" regPlate="1126"/>
+ </person>
+ <person>
+ <car regState="AR" regPlate="1127"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="2341"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1128"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1133"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1129"/>
+ </person>
+ <person>
+ <car regState="MO" regPlate="22123"/>
+ </person>
+ <person>
+ <car regState="MI" regPlate="22124"/>
+ </person>
+ </state>
+ <state>
+ <code>CO</code>
+ <vehicle plateNumber="1123" state="AL"/>
+ <vehicle plateNumber="1120" state="AK"/>
+ <vehicle plateNumber="1124" state="AL"/>
+ <vehicle plateNumber="1221" state="AL"/>
+ <vehicle plateNumber="1323" state="AL"/>
+ <vehicle plateNumber="1223" state="AS"/>
+ <vehicle plateNumber="1126" state="AZ"/>
+ <vehicle plateNumber="1127" state="AR"/>
+ <vehicle plateNumber="1128" state="FL"/>
+ <vehicle plateNumber="2341" state="FL"/>
+ <vehicle plateNumber="1125" state="FL"/>
+ <vehicle plateNumber="1133" state="FL"/>
+ <vehicle plateNumber="22123" state="MO"/>
+ <vehicle plateNumber="22124" state="MI"/>
+ <person>
+ <car regState="AL" regPlate="1123"/>
+ </person>
+ <person>
+ <car regState="AK" regPlate="1120"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1124"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1221"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1323"/>
+ </person>
+ <person>
+ <car regState="AS" regPlate="1223"/>
+ </person>
+ <person>
+ <car regState="AZ" regPlate="1126"/>
+ </person>
+ <person>
+ <car regState="AR" regPlate="1127"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="2341"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1128"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1133"/>
+ <car regState="FL" regPlate="1125"/>
+ </person>
+ <person>
+ <car regState="MO" regPlate="22123"/>
+ </person>
+ <person>
+ <car regState="MI" regPlate="22124"/>
+ </person>
+ </state>
+</root> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle.xsd b/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle.xsd
new file mode 100644
index 0000000000..2e7c053497
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle.xsd
@@ -0,0 +1,82 @@
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="vehicle">
+ <xs:complexType>
+ <xs:attribute name="plateNumber" type="xs:integer"/>
+ <xs:attribute name="state" type="twoLetterCode"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="state">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="code" type="twoLetterCode"/>
+ <xs:element ref="vehicle" maxOccurs="unbounded"/>
+ <xs:element ref="person" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:key name="reg"> <!-- vehicles are keyed by their plate within states -->
+ <xs:selector xpath=".//vehicle"/>
+ <xs:field xpath="@plateNumber"/>
+ </xs:key>
+ </xs:element>
+
+ <xs:element name="root">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="state" maxOccurs="51"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:key name="state"> <!-- states are keyed by their code -->
+ <xs:selector xpath=".//state"/>
+ <xs:field xpath="code"/>
+ </xs:key>
+
+ <xs:keyref name="vehicleState" refer="state">
+ <!-- every vehicle refers to its state -->
+ <xs:selector xpath=".//vehicle"/>
+ <xs:field xpath="@state"/>
+ </xs:keyref>
+
+ <xs:key name="regKey"> <!-- vehicles are keyed by a pair of state and plate -->
+ <xs:selector xpath=".//vehicle"/>
+ <xs:field xpath="@state"/>
+ <xs:field xpath="@plateNumber"/>
+ </xs:key>
+
+ <xs:keyref name="carRef" refer="regKey"> <!-- people's cars are a reference -->
+ <xs:selector xpath=".//car"/>
+ <xs:field xpath="@regState"/>
+ <xs:field xpath="@regPlate"/>
+ </xs:keyref>
+
+ </xs:element>
+
+ <xs:element name="person">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="car" maxOccurs="2">
+ <xs:complexType>
+ <xs:attribute name="regState" type="twoLetterCode"/>
+ <xs:attribute name="regPlate" type="xs:integer"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="twoLetterCode">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="threeLetterCode">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle2.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle2.xml
new file mode 100644
index 0000000000..6b60c83e6a
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle2.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<root>
+ <state>
+ <code>AL</code>
+ <vehicle plateNumber="1123" state="AL"/>
+ <vehicle plateNumber="1121" state="AK"/>
+ <vehicle plateNumber="1124" state="AL"/>
+ <vehicle plateNumber="1221" state="AL"/>
+ <vehicle plateNumber="1122" state="AL"/>
+ <vehicle plateNumber="1225" state="AS"/>
+ <vehicle plateNumber="1126" state="AZ"/>
+ <vehicle plateNumber="1127" state="AR"/>
+ <vehicle plateNumber="1128" state="FL"/>
+ <vehicle plateNumber="2341" state="FL"/>
+ <vehicle plateNumber="1125" state="FL"/>
+ <vehicle plateNumber="1133" state="FL"/>
+ <vehicle plateNumber="22123" state="MO"/>
+ <vehicle plateNumber="22124" state="MI"/>
+ <person>
+ <car regState="AL" regPlate="1122"/>
+ </person>
+ <person>
+ <car regState="AK" regPlate="1121"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1124"/>
+ <car regState="AL" regPlate="1221"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1123"/>
+ </person>
+ <person>
+ <car regState="AS" regPlate="1225"/>
+ </person>
+ <person>
+ <car regState="AZ" regPlate="1126"/>
+ </person>
+ <person>
+ <car regState="AR" regPlate="1127"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="2341"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1128"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1133"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1125"/>
+ </person>
+ <person>
+ <car regState="MO" regPlate="22123"/>
+ </person>
+ <person>
+ <car regState="MI" regPlate="22124"/>
+ </person>
+ </state>
+
+</root> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle3.xml b/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle3.xml
new file mode 100644
index 0000000000..37536c7335
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_SUITE_data/vehicle3.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0"?>
+<root>
+ <state>
+ <code>AL</code>
+ <vehicle plateNumber="1123" state="AL"/>
+ <vehicle plateNumber="1125" state="AK"/>
+ <vehicle plateNumber="1124" state="AL"/>
+ <vehicle plateNumber="1223" state="AL"/>
+ <vehicle plateNumber="1323" state="AL"/>
+ <vehicle plateNumber="1225" state="AS"/>
+ <vehicle plateNumber="1126" state="AZ"/>
+ <vehicle plateNumber="1127" state="AR"/>
+ <vehicle plateNumber="1128" state="FL"/>
+ <vehicle plateNumber="2341" state="FL"/>
+ <vehicle plateNumber="1129" state="FL"/>
+ <vehicle plateNumber="1133" state="FL"/>
+ <vehicle plateNumber="22123" state="MO"/>
+ <vehicle plateNumber="22124" state="MI"/>
+ <person>
+ <car regState="AL" regPlate="1123"/>
+ </person>
+ <person>
+ <car regState="AK" regPlate="1125"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1124"/>
+ <car regState="AL" regPlate="1223"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1323"/>
+ </person>
+ <person>
+ <car regState="AS" regPlate="1225"/>
+ </person>
+ <person>
+ <car regState="AZ" regPlate="1126"/>
+ </person>
+ <person>
+ <car regState="AR" regPlate="1127"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="2341"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1128"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1133"/>
+ </person>
+ <person>
+ <car regState="FL" regPlate="1129"/>
+ </person>
+ <person>
+ <car regState="MO" regPlate="22123"/>
+ </person>
+ <person>
+ <car regState="MI" regPlate="22124"/>
+ </person>
+ </state>
+ <state>
+ <code>CO</code>
+ <vehicle plateNumber="1123" state="CO"/>
+ <vehicle plateNumber="1120" state="AK"/>
+ <vehicle plateNumber="1124" state="CO"/>
+ <vehicle plateNumber="1221" state="AL"/>
+ <vehicle plateNumber="1323" state="CO"/>
+ <vehicle plateNumber="1223" state="AS"/>
+ <vehicle plateNumber="1126" state="CO"/>
+ <vehicle plateNumber="1127" state="CA"/>
+ <vehicle plateNumber="1128" state="DE"/>
+ <vehicle plateNumber="2341" state="DC"/>
+ <vehicle plateNumber="1125" state="FL"/>
+ <vehicle plateNumber="1133" state="GA"/>
+ <vehicle plateNumber="22123" state="GU"/>
+ <vehicle plateNumber="22124" state="HI"/>
+ <person>
+ <car regState="CO" regPlate="1123"/>
+ </person>
+ <person>
+ <car regState="AK" regPlate="1120"/>
+ </person>
+ <person>
+ <car regState="CO" regPlate="1124"/>
+ </person>
+ <person>
+ <car regState="AL" regPlate="1221"/>
+ </person>
+ <person>
+ <car regState="CO" regPlate="1323"/>
+ </person>
+ <person>
+ <car regState="AS" regPlate="1223"/>
+ </person>
+ <person>
+ <car regState="CO" regPlate="1126"/>
+ </person>
+ <person>
+ <car regState="CA" regPlate="1127"/>
+ </person>
+ <person>
+ <car regState="DC" regPlate="2341"/>
+ </person>
+ <person>
+ <car regState="DE" regPlate="1128"/>
+ </person>
+ <person>
+ <car regState="GA" regPlate="1133"/>
+ <car regState="FL" regPlate="1125"/>
+ </person>
+ <person>
+ <car regState="GU" regPlate="22123"/>
+ </person>
+ <person>
+ <car regState="HI" regPlate="22124"/>
+ </person>
+ </state>
+</root> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE.erl b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE.erl
new file mode 100644
index 0000000000..e619390f65
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE.erl
@@ -0,0 +1,812 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2006-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%%% Purpose : Test suite for the xmerl application
+
+%% Do NOT edit this file. It is generated by the generate_xsd_suite module
+%% For more info read the comments in the header of that file.
+
+-module('xmerl_xsd_Sun2002-01-16_SUITE').
+
+-compile(export_all).
+
+-include_lib("test_server/include/test_server.hrl").
+-include_lib("xmerl/include/xmerl.hrl").
+-include_lib("xmerl/include/xmerl_xsd.hrl").
+
+
+all() ->
+ ['Sun-idc001.nogen', 'Sun-idc002.e', 'Sun-idc002b.e',
+ 'Sun-idc003.e', 'Sun-idc004.nogen', 'Sun-idc004a.e',
+ 'Sun-idc005.nogen', 'Sun-idc006.nogen', 'Sun-xsd001',
+ 'Sun-xsd002', 'Sun-xsd003-1.e', 'Sun-xsd003-2.e',
+ 'Sun-xsd003a', 'Sun-xsd003b', 'Sun-xsd004',
+ 'Sun-xsd005', 'Sun-xsd006', 'Sun-xsd008', 'Sun-xsd011',
+ 'Sun-xsd012', 'Sun-xsd013.e', 'Sun-xsd014.e',
+ 'Sun-xsd015.e', 'Sun-xsd016.e', 'Sun-xsd017.e',
+ 'Sun-xsd018.e', 'Sun-xsd019.e', 'Sun-xsd020.e',
+ 'Sun-xsd020-2.e', 'Sun-xsd020-3.e', 'Sun-xsd020-4.e',
+ 'Sun-xsd021', 'Sun-xsd022', 'Sun-xsd023.e',
+ 'Sun-xsiType1', 'Sun-xsiType-block-1',
+ 'Sun-xsiType-block-2', 'Sun-xsiType-block-3',
+ 'Sun-xsiType-block-4', 'Sun-type-and-subst-1'].
+
+groups() ->
+ [].
+
+init_per_group(_GroupName, Config) ->
+ Config.
+
+end_per_group(_GroupName, Config) ->
+ Config.
+
+
+
+%% initialization before the test suite
+init_per_suite(Config) ->
+ Dog=test_server:timetrap({minutes,10}),
+ xmerl_xsd_lib:unpack(Config,sun),
+ {ok,LogFile} = xmerl_xsd_lib:create_error_log_file(Config,sun),
+ test_server:timetrap_cancel(Dog),
+ [{suite,sun},{xmerl_error_log,LogFile}|Config].
+
+end_per_suite(Config) ->
+ xmerl_xsd_lib:rmdir(Config,sun),
+ xmerl_xsd_lib:close_error_log_file(Config),
+ ok.
+
+%% initialization before each testcase
+init_per_testcase(TestCase,Config) ->
+ Dog=test_server:timetrap({minutes,3}),
+ [{testcase,TestCase},{watchdog, Dog}|Config].
+
+%% clean up after each testcase
+end_per_testcase(_Func,Config) ->
+ Dog=?config(watchdog, Config),
+ test_server:timetrap_cancel(Dog),
+ ok.
+
+%% ID Constranints. Very naive test of identity constraint
+'Sun-idc001.nogen'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/idc001.nogen.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc001.nogen.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc001.nogen.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc001.nogen.v01.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList3).
+
+%% ID Constranints. Reference to an undeclared key
+'Sun-idc002.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/idc002.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% ID Constranints. Reference to an undeclared key in an undeclared namespace
+'Sun-idc002b.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/idc002b.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% ID Constranints. Reference to non-key constraint.
+'Sun-idc003.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/idc003.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% ID Constranints.
+'Sun-idc004.nogen'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/idc004.nogen.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc004.nogen.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc004.nogen.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc004.nogen.n02.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc004.nogen.n03.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc004.nogen.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList5).
+
+%% ID Constraints. Key/keyref field size mismatch.
+'Sun-idc004a.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/idc004a.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% ID Constraints. Very naive test of identity constraint.
+'Sun-idc005.nogen'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/idc005.nogen.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc005.nogen.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc005.nogen.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc005.nogen.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList3).
+
+%% ID Constraints. XPath engine test: ".//a/*/b" and use of "." for both selector and field.
+'Sun-idc006.nogen'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/idc006.nogen.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc006.nogen.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc006.nogen.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/idc006.nogen.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList3).
+
+%% - use of elementFormDefault="unqualified" - unusual minOccurs/maxOccurs (3 and 7 respectively) - complexType with simpleContent, and restriction. - simpleType within restriction.
+'Sun-xsd001'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd001.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.n02.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.n03.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.n04.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.n05.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.n06.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.n07.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.v01.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList10 = [ITRes9|ITResList9],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.v02.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd001.v03.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList12).
+
+%% - use of elementFormDefault="unqualified" - use of elementFormDefault and form attribute. - implicit use of "ur-type" as the content model of element.
+'Sun-xsd002'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd002.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd002.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd002.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd002.n02.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd002.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd002.v01.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList5).
+
+%% Element redefinition. Unable to redefine element.
+'Sun-xsd003-1.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd003-1.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Element redefinition. Unable to redefine element.
+'Sun-xsd003-2.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd003-2.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Element redefinition. Test without redefinition.
+'Sun-xsd003a'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd003a.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd003a.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList1).
+
+%% Element redefinition. Test with redefinition with self-reference.
+'Sun-xsd003b'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd003b.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd003b.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd003b.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd003b.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd003b.v01.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList4).
+
+%% Use of three different type of any element with different @namespace.
+'Sun-xsd004'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd004.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n02.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n03.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n04.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n05.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n06.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n07.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n08.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n09.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList10 = [ITRes9|ITResList9],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n10.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n11.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.n12.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd004.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList14 = [ITRes13|ITResList13],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList14).
+
+%% Complex type derivation.
+'Sun-xsd005'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd005.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd005.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd005.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd005.n02.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd005.n03.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd005.n04.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd005.n05.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd005.n06.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd005.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList8 = [ITRes7|ITResList7],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList8).
+
+%% minOccurs/maxOccurs. Various combinations.
+'Sun-xsd006'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd006.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n02.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n03.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n04.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n05.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n06.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n07.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n08.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n09.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList10 = [ITRes9|ITResList9],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.n10.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd006.v00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList12 = [ITRes11|ITResList11],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList12).
+
+%% Abstract element and element substitution group.
+'Sun-xsd008'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd008.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd008.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd008.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd008.n02.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd008.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList4).
+
+%% Nillable.
+'Sun-xsd011'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd011.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd011.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd011.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd011.n02.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd011.n03.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd011.n04.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd011.v00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList6 = [ITRes5|ITResList5],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList6).
+
+%% Mixed content model.
+'Sun-xsd012'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd012.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd012.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd012.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList2).
+
+%% Reference to undeclared element.
+'Sun-xsd013.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd013.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared element.
+'Sun-xsd014.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd014.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared type (it may be simple or complex).
+'Sun-xsd015.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd015.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared type (it may be simple or complex).
+'Sun-xsd016.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd016.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared complex type.
+'Sun-xsd017.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd017.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared complex type.
+'Sun-xsd018.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd018.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared simple type.
+'Sun-xsd019.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd019.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared simple type.
+'Sun-xsd020.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd020.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared attribute.
+'Sun-xsd020-2.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd020-2.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared model group.
+'Sun-xsd020-3.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd020-3.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Reference to undeclared attribute group.
+'Sun-xsd020-4.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd020-4.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% anyOtherAttribute.
+'Sun-xsd021'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd021.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n01.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n02.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n03.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n04.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n05.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n06.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n07.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n08.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n09.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList10 = [ITRes9|ITResList9],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n10.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.n11.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd021.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList13 = [ITRes12|ITResList12],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList13).
+
+%% Simple type. Various forms of forward reference to the simple type.
+'Sun-xsd022'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd022.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd022.n00.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsd022.v00.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList2).
+
+%% Simple type. Recursive definition.
+'Sun-xsd023.e'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,_} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsd023.e.xsd','./suntest/SunTestsAll',invalid),
+ STResList1 = [STRes0|STResList0],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,[]).
+
+%% Simple type.
+'Sun-xsiType1'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsiType1.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType1.v1.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType1.n1.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList2).
+
+%% Test block attribute (1) - use block="extension" at the B type. This should exclude all types that uses extension.
+'Sun-xsiType-block-1'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsiType-block-1.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-1.v1.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-1.n1.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-1.n2.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-1.n3.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-1.n4.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList5).
+
+%% Test block attribute (2) - use block="extension" as the blockDefault attribute. This should achieve the same result as the previous test case.
+'Sun-xsiType-block-2'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsiType-block-2.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-2.v1.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-2.n1.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-2.n2.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-2.n3.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-2.n4.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList5).
+
+%% Test block attribute (3) - use block="extension" for the child2 element. child2 has no block constraint. - see if @block for element is working as expected.
+'Sun-xsiType-block-3'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsiType-block-3.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-3.v1.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-3.n1.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-3.n2.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-3.n3.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-3.n4.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList5).
+
+%% Test block attribute (4) - use block="extension" for the child2 element. child2 has no block constraint. - use block="restriction" for the Dr type. - see if @block for element and @block for types interacts as expected.
+'Sun-xsiType-block-4'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/xsiType-block-4.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-4.v1.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-4.n1.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-4.n2.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-4.n3.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/xsiType-block-4.n4.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList5).
+
+%% No block attribute is specified. Just test that the substitution group and the type hierarchy is OK. The substitution group hierarchy mirrors the complex type hierarchy.
+'Sun-type-and-subst-1'(Config) when is_list(Config) ->
+ STResList0 = [],
+
+ ?line {STRes0,S0} = xmerl_xsd_lib:schema_test(Config,'./suntest/SunTestsAll/type-and-subst-1.xsd','./suntest/SunTestsAll',valid),
+ STResList1 = [STRes0|STResList0],
+ ITResList0 = [],
+ ?line ITRes0 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.v1.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList1 = [ITRes0|ITResList0],
+ ?line ITRes1 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.v2.xml','./suntest/SunTestsAll',valid,S0),
+ ITResList2 = [ITRes1|ITResList1],
+ ?line ITRes2 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n1.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList3 = [ITRes2|ITResList2],
+ ?line ITRes3 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n2.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList4 = [ITRes3|ITResList3],
+ ?line ITRes4 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n3.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList5 = [ITRes4|ITResList4],
+ ?line ITRes5 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n4.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList6 = [ITRes5|ITResList5],
+ ?line ITRes6 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n5.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList7 = [ITRes6|ITResList6],
+ ?line ITRes7 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n6.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList8 = [ITRes7|ITResList7],
+ ?line ITRes8 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n7.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList9 = [ITRes8|ITResList8],
+ ?line ITRes9 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n8.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList10 = [ITRes9|ITResList9],
+ ?line ITRes10 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n9.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList11 = [ITRes10|ITResList10],
+ ?line ITRes11 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n10.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList12 = [ITRes11|ITResList11],
+ ?line ITRes12 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n11.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList13 = [ITRes12|ITResList12],
+ ?line ITRes13 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n12.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList14 = [ITRes13|ITResList13],
+ ?line ITRes14 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n13.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList15 = [ITRes14|ITResList14],
+ ?line ITRes15 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n14.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList16 = [ITRes15|ITResList15],
+ ?line ITRes16 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n15.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList17 = [ITRes16|ITResList16],
+ ?line ITRes17 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n16.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList18 = [ITRes17|ITResList17],
+ ?line ITRes18 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n17.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList19 = [ITRes18|ITResList18],
+ ?line ITRes19 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n18.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList20 = [ITRes19|ITResList19],
+ ?line ITRes20 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n19.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList21 = [ITRes20|ITResList20],
+ ?line ITRes21 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n20.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList22 = [ITRes21|ITResList21],
+ ?line ITRes22 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n21.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList23 = [ITRes22|ITResList22],
+ ?line ITRes23 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n22.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList24 = [ITRes23|ITResList23],
+ ?line ITRes24 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n23.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList25 = [ITRes24|ITResList24],
+ ?line ITRes25 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n24.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList26 = [ITRes25|ITResList25],
+ ?line ITRes26 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n25.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList27 = [ITRes26|ITResList26],
+ ?line ITRes27 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n26.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList28 = [ITRes27|ITResList27],
+ ?line ITRes28 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n27.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList29 = [ITRes28|ITResList28],
+ ?line ITRes29 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n28.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList30 = [ITRes29|ITResList29],
+ ?line ITRes30 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n29.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList31 = [ITRes30|ITResList30],
+ ?line ITRes31 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n30.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList32 = [ITRes31|ITResList31],
+ ?line ITRes32 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n31.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList33 = [ITRes32|ITResList32],
+ ?line ITRes33 = xmerl_xsd_lib:instance_test(Config,'./suntest/SunTestsAll/type-and-subst-1.n32.xml','./suntest/SunTestsAll',invalid,S0),
+ ITResList34 = [ITRes33|ITResList33],
+
+
+ xmerl_xsd_lib:compare_test_results(Config,STResList1,ITResList34).
+
diff --git a/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/sun_failed_cases.log b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/sun_failed_cases.log
new file mode 100644
index 0000000000..cf0403bdeb
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/sun_failed_cases.log
@@ -0,0 +1,33 @@
+{'Sun-idc004.nogen',{["idc004.nogen.n02.xml", "idc004.nogen.n03.xml"],[]}}.
+{'Sun-idc006.nogen',{["idc006.nogen.n00.xml"],[]}}.
+{'Sun-xsd001',{["xsd001.n04.xml",
+ "xsd001.n05.xml",
+ "xsd001.n06.xml"],[]}}.
+{'Sun-xsd002',{["xsd002.v01.xml","xsd002.v00.xml"],[]}}.
+{'Sun-xsd003a',{["xsd003a.v00.xml"],[]}}.
+{'Sun-xsd003b',{["xsd003b.v01.xml"],[]}}.
+{'Sun-xsd004',{["xsd004.v00.xml",
+ "xsd004.n00.xml",
+ "xsd004.n05.xml",
+ "xsd004.n06.xml",
+ "xsd004.n07.xml",
+ "xsd004.n11.xml",
+ "xsd004.n12.xml"
+ ],[]}}.
+{'Sun-xsd005',{["xsd005.n05.xml"],[]}}.
+{'Sun-xsd008',{[],[]}}.
+{'Sun-xsd012',{["xsd012.v00.xml"],[]}}.
+{'Sun-xsd021',{["xsd021.v00.xml",
+ "xsd021.n03.xml",
+ "xsd021.n02.xml",
+ "xsd021.n06.xml",
+ "xsd021.n07.xml",
+ "xsd021.n01.xml",
+ "xsd021.n00.xml"],[]}}.
+{'Sun-xsd022',{["xsd022.v00.xml"],[]}}.
+{'Sun-xsiType1',{["xsiType1.v1.xml"],[]}}.
+{'Sun-xsiType-block-1',{["xsiType-block-1.n1.xml", "xsiType-block-1.v1.xml"],[]}}.
+{'Sun-xsiType-block-2',{["xsiType-block-2.n1.xml", "xsiType-block-2.v1.xml"],[]}}.
+{'Sun-xsiType-block-3',{["xsiType-block-3.n1.xml", "xsiType-block-3.v1.xml"],[]}}.
+{'Sun-xsiType-block-4',{["xsiType-block-4.n2.xml", "xsiType-block-4.v1.xml"],[]}}.
+{'Sun-type-and-subst-1',{["type-and-subst-1.v2.xml"],[]}}.
diff --git a/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/suntest.tar.gz b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/suntest.tar.gz
new file mode 100644
index 0000000000..bb0de7848b
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/suntest.tar.gz
Binary files differ
diff --git a/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html
new file mode 100644
index 0000000000..5c89ffd95e
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+
+
+ <meta http-equiv="Content-Type" content="text/html"><title>DOCUMENT NOTICE</title>
+
+ <link rel="stylesheet" type="text/css" href="copyright-documents-19990405_files/base.css"></head><body bgcolor="#ffffff" text="#000000">
+<h1>W3C<sup>�</sup> DOCUMENT NOTICE AND LICENSE</h1>
+
+<h3>Copyright � 1994-2002 <a href="http://www.w3.org/">World Wide Web
+Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de Recherche
+en Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio
+University</a>). All Rights Reserved.<br>
+http://www.w3.org/Consortium/Legal/</h3>
+
+<p>Public documents on the W3C site are provided by the copyright holders
+under the following license. The software or Document Type Definitions (DTDs)
+associated with W3C specifications are governed by the <a href="http://www.w3.org/Consortium/Legal/copyright-software.html"> Software
+Notice</a>. By using and/or copying this document, or the W3C document from
+which this statement is linked, you (the licensee) agree that you have read,
+understood, and will comply with the following terms and conditions:</p>
+
+<p>Permission to use, copy, and distribute the contents of this document, or
+the W3C document from which this statement is linked, in any medium for any
+purpose and without fee or royalty is hereby granted, provided that you
+include the following on <i>ALL</i> copies of the document, or portions
+thereof, that you use:</p>
+<ol>
+ <li>A link or URL to the original W3C document.</li>
+ <li>The pre-existing copyright notice of the original author, or if it
+ doesn't exist, a notice of the form: "Copyright � [$date-of-document] <a href="http://www.w3.org/">World Wide Web Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of Technology</a>,
+ <a href="http://www.inria.fr/"> Institut National de Recherche en
+ Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio
+ University</a>). All Rights Reserved.
+ http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but a
+ textual representation is permitted.)</li>
+ <li><em>If it exists</em>, the STATUS of the W3C document.</li>
+</ol>
+
+<p>When space permits, inclusion of the full text of this <b> NOTICE</b>
+should be provided. We request that authorship attribution be provided in any
+software, documents, or other items or products that you create pursuant to
+the implementation of the contents of this document, or any portion
+thereof.</p>
+
+<p>No right to create modifications or derivatives of W3C documents is
+granted pursuant to this license. However, if additional requirements
+(documented in the <a href="http://www.w3.org/Consortium/Legal/IPR-FAQ.html">Copyright FAQ</a>) are satisfied,
+the right to create modifications or derivatives is&nbsp;sometimes granted by the
+W3C to individuals complying with those requirements.</p>
+
+<p>THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
+REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED
+TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE
+FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT
+INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
+
+<p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE
+PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.</p>
+
+<p>The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to this document or its contents without
+specific, written prior permission. Title to copyright in this document will
+at all times remain with copyright holders.</p>
+
+<p>----------------------------------------------------------------------------</p>
+
+<p>This formulation of W3C's notice and license became active on April 05
+1999 so as to account for the treatment of DTDs, schema's and bindings. See
+the <a href="http://www.w3.org/Consortium/Legal/copyright-documents-19990218.html"> older formulation</a> for
+the policy prior to this date. Please see our <a href="http://www.w3.org/Consortium/Legal/IPR-FAQ.html">Copyright FAQ</a> for common questions about using
+materials from our site, including specific terms and conditions for packages
+like libwww, Amaya, and Jigsaw. Other questions about this notice can be
+directed to <a href="mailto:[email protected]">[email protected]</a>.</p>
+<address>
+ <a href="http://w3.org/Help/Webmaster.html">webmaster</a><br>
+ (last updated by reagle on 1999/04/99.)
+</address>
+</body></html> \ No newline at end of file
diff --git a/lib/xmerl/test/xmerl_xsd_lib.erl b/lib/xmerl/test/xmerl_xsd_lib.erl
new file mode 100644
index 0000000000..0b6b1ebc84
--- /dev/null
+++ b/lib/xmerl/test/xmerl_xsd_lib.erl
@@ -0,0 +1,321 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2006-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%%% Purpose : Sub routines for test suite for the xmerl application,
+%%% xmerl_xsd module.
+%%%-------------------------------------------------------------------
+%%% @private
+%%% File : xmerl_xsd_lib.erl
+%%% Author : Bertil Karlsson <bertil@finrod>
+%%% Description :
+%%%
+%%% Created : 28 Apr 2006 by Bertil Karlsson <bertil@finrod>
+%%%-------------------------------------------------------------------
+-module(xmerl_xsd_lib).
+
+-compile(export_all).
+
+-include("test_server.hrl").
+-include("xmerl.hrl").
+-include("xmerl_xsd.hrl").
+-include_lib("kernel/include/file.hrl").
+
+
+compare_test_results(Config, ST, IT) ->
+ ResST=compare_schema_test_results(ST),
+ ResIT=compare_instance_test_results(IT),
+ io:format("compare_test_results:~n ST = ~p~n IT = ~p~n ResST = ~p~n ResIT = ~p~n",[ST, IT, ResST, ResIT]),
+ case process_reference_results(Config, ResST, ResIT) of
+ error ->
+ error;
+ Diff ->
+ return_results(Diff, ResST, ResIT, length(ST)+length(IT))
+ end.
+
+compare_schema_test_results(ST) ->
+ {[N||{N, false}<-ST], [N||{N, enoent}<-ST]}.
+compare_instance_test_results(IT) ->
+ {[N||{N, false}<-IT], [N||{N, enoent}<-IT]}.
+
+return_results({SkippedN, Diff},{STErrs, _},{ITErrs, _}, TotN) ->
+ NumErrs = length(STErrs ++ ITErrs),
+ case NumErrs == TotN of
+ true when TotN > 0 ->
+ ?line exit(all_tests_cases_failed);
+ _ ->
+ return_results2(Diff, TotN - NumErrs, SkippedN, TotN)
+ end.
+
+%% return_results2(Diff,{[],[]},{[],[]},TotN) ->
+%% {comment,io_lib:format("~p successful test cases.~n"++Diff,[TotN])};
+%% return_results2(Diff,{STErrs,[]},{ITErrs,[]},TotN) ->
+%% {comment,io_lib:format("Total number of test cases: ~p~nThe following ~p test cases failed: ~p~n"++Diff,[TotN,length(STErrs++ITErrs),STErrs++ITErrs])};
+%% return_results2(Diff,{STErrs,STOther},{ITErrs,ITOther},TotN) ->
+%% {comment,io_lib:format("Total number of test cases: ~p~nThe following ~p test cases failed: ~p~nThe following ~p test cases was malicious ~p~~n"++Diff,[TotN,length(STErrs++ITErrs),STErrs++ITErrs,length(STOther++ITOther),STOther++ITOther])}.
+
+return_results2(_, 0, 0, 0) ->
+ {comment,io_lib:format("This test case was empty.~n", [])};
+return_results2({[], [], [], []}, NumSucc, SkippedN, TotN) ->
+ {comment,io_lib:format("~p successful tests, ~p skipped tests of totally ~p test cases.~n",
+ [NumSucc, SkippedN, TotN])};
+return_results2({NewFail, NewSuccess, NewMal, NewNotMal}, NumSucc, SkippedN, TotN) ->
+ NFComm =
+ case NewFail of
+ [] -> "";
+ _ -> io_lib:format("These ~p tests are new failures: ~p~n",
+ [length(NewFail), NewFail])
+ end,
+ NSComm =
+ case NewSuccess of
+ [] -> "";
+ _ -> io_lib:format("These ~p skipped tests are new succeeding cases: ~p~n",
+ [length(NewSuccess), NewSuccess])
+ end,
+ NMComm =
+ case NewMal of
+ [] -> "";
+ _ -> io_lib:format("These ~p tests are now malicious: ~p~n",
+ [length(NewMal), NewMal])
+ end,
+ NNMComm =
+ case NewNotMal of
+ [] -> "";
+ _ -> io_lib:format("These ~p skipped tests were malicious, but succeeds now: ~p~n", [length(NewNotMal), NewNotMal])
+ end,
+ ct:comment(io_lib:format("~p successful tests, ~p skipped tests of totally ~p test cases. ~n" ++
+ NFComm ++ NSComm ++ NMComm ++ NNMComm, [NumSucc, SkippedN, TotN])),
+ [] = NewFail.
+
+%% return_results2(Diff,{STErrs,STOther},{ITErrs,ITOther},TotN) ->
+%% {comment,io_lib:format("Total number of test cases: ~p~n The following ~p test cases failed: ~p~nThe following ~p test cases was malicious ~p~~n",[TotN,length(STErrs++ITErrs),STErrs++ITErrs,length(STOther++ITOther),STOther++ITOther])}.
+
+
+process_reference_results(Config, {ErrsST, MalST}, {ErrsIT, MalIT}) ->
+ {RefFailed, RefMalicious} = xsd_reference_log(Config),
+io:format("A: ~p : ~p\n\n",[RefFailed, RefMalicious]),
+ AllErrs = ErrsST ++ ErrsIT,
+ AllMals = MalST ++ MalIT,
+ %% test cases failed now but succeeded in reference results.
+ NewFailures = [X||X<-AllErrs, lists:member(X, RefFailed) == false],
+ %% test cases succeeded now but failed in reference results.
+ NewSucceeds = [X||X<-RefFailed, lists:member(X, AllErrs) == false],
+ %% test cases malicious now but succeeded in reference results.
+ NewMalicious = [X||X<-AllMals, lists:member(X, RefMalicious) == false],
+ %% test cases succeeded now but malicious in reference results.
+ NewNotMal = [X||X<-RefMalicious, lists:member(X, AllMals) == false],
+ write_in_log(Config, AllErrs, AllMals),
+% io:format("process_reference_results:~n AllErrs = ~p~n NewFailures = ~p~n",[AllErrs,NewFailures]),
+ {length(RefFailed) + length(RefMalicious), {NewFailures, NewSucceeds, NewMalicious, NewNotMal}}.
+
+xsd_reference_log(Config) ->
+ DataDir = ?config(data_dir, Config),
+ Suite = ?config(suite, Config),
+ SuiteReferenceLog =
+ filename:join([DataDir, lists:concat([Suite, "_failed_cases.log"])]),
+io:format("B: ~p\n\n",[SuiteReferenceLog]),
+ case file:consult(SuiteReferenceLog) of
+ {ok,List} when is_list(List) ->
+io:format("C: ~p\n\n",[List]),
+ case lists:keysearch(?config(testcase, Config), 1, List) of
+ {value,{_, TCRefFails}} ->
+io:format("D: ~p\n\n",[TCRefFails]),
+ TCRefFails;
+ _ ->
+io:format("D: ~no result\n\n",[]),
+ {[], []}
+ end;
+ _ ->
+ {[], []}
+ end.
+
+write_in_log(_Config, [], []) ->
+ ok;
+write_in_log(Config, AllErrs, AllMals) ->
+ ?line LogFileName = ?config(xmerl_error_log, Config),
+ {ok,IO}=file:open(LogFileName, [append]),
+ ?line TestCase = ?config(testcase, Config),
+ io:format(IO,"{~p,{~p,~p}}.~n", [TestCase, AllErrs, AllMals]),
+ file:close(IO),
+ ok.
+
+schema_test(Config,FileName,XsdBase,Validity) ->
+ ModuleName = filename:basename(FileName),
+ DataDir = ?config(data_dir, Config),
+ case xmerl_xsd:process_schema(filename:join([DataDir, FileName]), [{xsdbase,filename:join([DataDir, XsdBase])}]) of
+ {error, enoent} ->
+ {{ModuleName, enoent},#xsd_state{}};
+ {Ok, S} ->
+ case Validity of
+ valid when Ok == ok ->
+%% io:format("schema_test1: Validity=valid,Ok=ok,S=~p~n",[S]),
+ {{ModuleName, S#xsd_state.errors == []}, S};
+ invalid when Ok == error -> %% S is in this case an error reason
+ {{ModuleName, no_internal_error(S)}, #xsd_state{}};
+ notKnown ->
+ {{ModuleName, true}, #xsd_state{}};
+ valid ->
+ io:format("schema_test2: Validity=valid,Ok=~p,S=~p~n", [Ok, S]),
+%% io:format("FileName: ~p~n",[FileName]),
+ {{ModuleName, false}, #xsd_state{}};
+ _ -> %% invalid Ok == ok
+ io:format("schema_test3: Validity=~p,Ok=~p,S=~p~n", [Validity, Ok, S]),
+ {{ModuleName, false}, S}
+ end
+ end.
+schema_test(Config, FileName, XsdBase, Validity, AccState) ->
+ ModuleName = filename:basename(FileName),
+ DataDir = ?config(data_dir, Config),
+ case xmerl_xsd:process_schema(filename:join([DataDir, FileName]),
+ [{xsdbase, filename:join([DataDir, XsdBase])}, AccState]) of
+ {error, enoent} ->
+ {{ModuleName, enoent}, AccState};
+ {Ok, S} ->
+ case Validity of
+ valid when Ok == ok ->
+ {{ModuleName, S#xsd_state.errors == []}, S};
+ invalid when Ok == error ->
+ {{ModuleName, no_internal_error(S)}, AccState};
+ notKnown ->
+ {{ModuleName, true}, AccState};
+ valid ->
+ {{ModuleName, false}, AccState};
+ _ ->
+ {{ModuleName, false}, S}
+ end
+ end.
+instance_test(Config, FileName, XMLBase, Validity, State) ->
+ ModuleName = filename:basename(FileName),
+ DataDir = ?config(data_dir, Config),
+ case xmerl_scan:file(filename:join([DataDir, FileName]),
+ [{xmlbase, filename:join([DataDir, XMLBase])}]) of
+ {error, enoent} ->
+ {ModuleName, enoent};
+ {E, _} ->
+ {VE, S2} = xmerl_xsd:validate(E, State),
+ case Validity of
+ valid when is_record(VE, xmlElement) ->
+ case S2#xsd_state.errors of
+ [] -> ok;
+ _ -> io:format("test case ~p failed.~nValidity: ~p~nValidation result:~p~n", [FileName, Validity, VE])
+ end,
+ {ModuleName, S2#xsd_state.errors == []};
+ invalid when VE == error ->
+ {ModuleName, no_internal_error(S2)};
+ notKnown ->
+ {ModuleName, true};
+ _ ->
+ io:format("test case ~p failed.~nValidity: ~p~nValidation result:~p~n", [FileName, Validity, VE]),
+ {ModuleName,false}
+ end
+ end.
+
+no_internal_error(R) ->
+ case lists:keymember(internal_error,1,R) of
+ true ->
+ false;
+ _ ->
+ true
+ end.
+
+unpack(Config, Suite) ->
+ TarFile = suite_tar(Suite),
+ ?line file:set_cwd(?config(data_dir, Config)),
+ ?line ok=erl_tar:extract(TarFile, [compressed]),
+ change_mode(filename:rootname(TarFile, ".tar.gz")).
+
+suite_tar(sun) ->
+ "suntest.tar.gz";
+suite_tar(msx) ->
+ "msxsdtest.tar.gz";
+suite_tar(nist) ->
+ "nisttest.tar.gz".
+
+change_mode(Files) ->
+ change_mode3(Files).
+change_mode2(Dir)->
+ ?line {ok, CWD} = file:get_cwd(),
+ ?line {ok, FileList} = file:list_dir(Dir),
+ ?line file:set_cwd(filename:join([CWD, Dir])),
+ change_mode3(FileList),
+ ?line file:set_cwd(CWD).
+change_mode3([]) ->
+ ok;
+change_mode3([F |Fs]) ->
+ case filelib:is_dir(F) of
+ true ->
+ chmod(F),
+ change_mode2(F);
+ _ ->
+ chmod(F)
+ end,
+ change_mode3(Fs).
+
+chmod(F) ->
+ case file:read_file_info(F) of
+ {ok, FileInfo} ->
+ Mode= FileInfo#file_info.mode,
+ file:write_file_info(F, FileInfo#file_info{mode=8#00777 bor Mode});
+ _ ->
+ ok
+ end.
+
+rmdir(Config, Suite) ->
+ ?line file:set_cwd(?config(data_dir, Config)),
+ SuiteDir = filename:rootname(suite_tar(Suite), ".tar.gz"),
+ ?line ok=rm_f_(SuiteDir).
+
+%% Dir is a directory
+rm_f_(Dir) ->
+ ?line {ok, CWD} = file:get_cwd(),
+ ?line {ok, FileList} = file:list_dir(Dir),
+ ?line file:set_cwd(filename:join([CWD, Dir])),
+ rm_files(FileList),
+ ?line file:set_cwd(CWD),
+ ? line ok = file:del_dir(Dir).
+
+rm_files([])->
+ ok;
+rm_files([F |Fs]) ->
+ case filelib:is_dir(F) of
+ true ->
+ rm_f_(F);
+ _ ->
+ io:format("rm_files: ~p~n", [F]),
+ ?line ok = file:delete(F)
+ end,
+ rm_files(Fs).
+
+create_error_log_file(Config, Suite) ->
+ ?line {{Y, M, D}, {H, Min, S}} = calendar:local_time(),
+ DTString=lists:concat([Y, "-", M,"-", D, "_", H, ".", Min, ".", S]),
+ FileName = lists:concat([Suite, "_", DTString, ".errorlog"]),
+%% ?line {ok,_IO} = file:open(filename:join([?config(priv_dir,Config),
+%% FileName]),[append]).
+
+%% ?line {ok,_IO} = file:open(FileName,[append]).
+ io:format("error log file: ~p~n", [filename:join([?config(priv_dir,Config), FileName])]),
+ {ok, filename:join([?config(priv_dir,Config), FileName])}.
+
+close_error_log_file(Config) ->
+ case lists:keysearch(xmerl_error_log, 1, Config) of
+ {value,{_, IO}} ->
+ file:close(IO);
+ _ ->
+ ok
+ end.
diff --git a/lib/xmerl/test/xmlconf.xml b/lib/xmerl/test/xmlconf.xml
new file mode 100644
index 0000000000..c015218e2e
--- /dev/null
+++ b/lib/xmerl/test/xmlconf.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!--
+ @(#)conformance.xml 1.1 98/12/20
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+ Modifications copyright 2001 by OASIS.
+-->
+
+<?xml-stylesheet href="xmlconformance.xsl" type="text/xsl"?>
+
+<!DOCTYPE TESTSUITE SYSTEM "testcases.dtd" [
+
+ <!-- Sun-written testcases -->
+ <!ENTITY sun-valid SYSTEM "sun/sun-valid.xml">
+ <!ENTITY sun-invalid SYSTEM "sun/sun-invalid.xml">
+ <!ENTITY sun-not-wf SYSTEM "sun/sun-not-wf.xml">
+ <!ENTITY sun-error SYSTEM "sun/sun-error.xml">
+
+ <!-- James Clark "XMLTEST" -->
+ <!ENTITY jclark-xmltest SYSTEM "xmltest/xmltest.xml">
+
+ <!-- Fuji Xerox "Japanese Documents" -->
+ <!ENTITY xerox-japanese SYSTEM "japanese/japanese.xml">
+
+ <!-- NIST/OASIS test suite -->
+ <!ENTITY nist-oasis SYSTEM "oasis/oasis.xml">
+
+ <!-- IBM tests -->
+ <!ENTITY ibm-invalid SYSTEM "ibm/ibm_oasis_invalid.xml">
+ <!ENTITY ibm-not-wf SYSTEM "ibm/ibm_oasis_not-wf.xml">
+ <!ENTITY ibm-valid SYSTEM "ibm/ibm_oasis_valid.xml">
+]>
+
+<TESTSUITE PROFILE="XML 1.0 (2nd edition) W3C Conformance Test Suite, 6 October 2000">
+
+ &jclark-xmltest;
+ &xerox-japanese;
+
+<TESTCASES PROFILE="Sun Microsystems XML Tests" xml:base="sun/">
+ &sun-valid;
+ &sun-invalid;
+ &sun-not-wf;
+ &sun-error;
+</TESTCASES>
+
+ &nist-oasis;
+<TESTCASES PROFILE="IBM XML Tests" xml:base="ibm/">
+ &ibm-invalid;
+ &ibm-not-wf;
+ &ibm-valid;
+</TESTCASES>
+</TESTSUITE>
diff --git a/lib/xmerl/test/xmlconformance.msxsl b/lib/xmerl/test/xmlconformance.msxsl
new file mode 100644
index 0000000000..f33e647d25
--- /dev/null
+++ b/lib/xmerl/test/xmlconformance.msxsl
@@ -0,0 +1,527 @@
+<?xml version='1.0'?>
+<!--
+<<<<<<< conformance.msxsl
+ Original version copyright 1999 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+=======
+ XSL IE5 Stylesheet for documenting XML conformance tests.
+ Tested against IE5 5.00.2014.0216
+
+ 1999-06-05 20:10
+
+ XSL 12/16/1998 Stylesheet for documenting XML conformance tests.
+
+ This expects to be run on a document matching the DTD that Sun
+ defined and OASIS modified for merging collections of
+ self-descriptive XML tests.
+
+ Since all those collections will have (by design) the same test
+ architecture, this includes boilerplate describing that design,
+ to be used by all test documentation.
+
+ ISSUES:
+ - Sorting is a bit odd; section numbers can are like "3.3.3"
+ rather than straight numbers, so numeric sort can't work,
+ and yet neither does text sort (2.12 should be after 2.2).
+
+-->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/TR/WD-xsl"
+ xmlns="http://www.w3.org/TR/WD-xhtml"
+ indent-result="yes"
+ >
+
+<!-- default behaviour - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template><xsl:apply-templates/></xsl:template>
+<xsl:template match="textnode()"><xsl:value-of/></xsl:template>
+
+<!-- selective behaviour - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+
+ <!-- ROOT: write an HTML wrapper -->
+ <xsl:template match="/">
+ <xsl:apply-templates select="TESTSUITE"/>
+ </xsl:template>
+
+ <xsl:template match="TESTSUITE">
+ <!-- XHTML namespace -->
+ <html><head>
+ <xsl:comment>Generated by an XSL stylesheet.</xsl:comment>
+ <title> XML Conformance Tests </title>
+ <meta http-equiv="Content-Type"
+ content="text/html;charset=utf-8"/>
+ <style>
+ <xsl:comment>
+ BODY {
+ font-family: Lucida, Helvetica, Univers, sans-serif;
+ }
+ H1, H2, H3, H4 {
+ text-align: left;
+ color: #0066CC;
+ }
+ </xsl:comment>
+ </style>
+ <style>
+ <xsl:comment>
+ a:hover {
+ color: white;
+ background-color: blue;
+ }
+ </xsl:comment>
+ </style>
+ </head><body bgcolor='#ffffff'>
+ <center>
+ <table border="4" width="90%">
+ <tr >
+ <td>
+ <table>
+ <tr >
+ <td width="40%"><img src="files/a_oasis-logo.gif" width="350" height="125"/></td>
+ <td width="30%"/>
+ <td width="40%" align="right"><img src="files/top3.jpe" width="400" height="125"/></td>
+ </tr>
+ </table>
+ <center>
+ <table>
+ <tr>
+ <td ><b><font size="+2">A Joint Development Effort</font></b></td>
+ </tr>
+ </table>
+ </center>
+ </td>
+ </tr>
+ </table>
+ </center>
+ <p/>
+
+ <p/>
+ <h4>OASIS XML Conformance Subcommittee<br/>XML 1.0 Test Suite, Second Edition<br/>Working Draft<br/>15 March 2001</h4>
+ <dl>
+ <dt><b>This version:</b></dt>
+ <dd><ul>
+ <li><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm</a>
+ (<a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.xml">XML</a>)
+ </li>
+ </ul>
+ </dd>
+ <p/>
+ <dt><b>Current Version:</b></dt>
+ <dd>
+ <ul>
+ <li><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf.xml">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf.xml</a></li>
+ </ul>
+ </dd>
+ <p/>
+ <dt><b>Previous Version:</b></dt>
+ <dd>
+ <ul>
+ <li><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1/xmlconf-19990712.xml">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1/xmlconf-19990712.xml</a></li>
+ </ul>
+ </dd>
+ <p/>
+ <dt><b>Test Archive:</b></dt>
+ <dd><ul>
+ <li><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.tar.gz">http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.tar.gz</a>
+ </li>
+ </ul></dd>
+ <p/>
+ <dt><b>OASIS XML Conformance Technical Committee:</b></dt>
+ <dd><ul><li><a href="http://www.oasis-open.org/committees/xml-conformance/">http://www.oasis-open.org/committees/xml-conformance/</a>
+ </li></ul></dd>
+ <p/>
+ <dt><b>Comments:</b></dt>
+ <dd><ul><li>Mary Brady, NIST <a href="mailto:[email protected]">&lt;[email protected]&gt;</a>
+ </li></ul></dd>
+ <p/>
+ </dl>
+ <hr/>
+
+ <a name="contents"/>
+ <h2>Table of Contents</h2>
+ <ol >
+ <li><a href="#intro">Introduction</a></li>
+ <li><a href="#matrix">Test Matrix</a></li>
+ <ol >
+ <li ><a href="#binary">Binary Tests</a></li>
+ <li><a href="#output">Output Tests</a></li>
+ </ol>
+ <li><a href="#listings">Test Case Descriptions</a></li>
+ <ol >
+ <li><a href="#valid">Valid Documents</a></li>
+ <li><a href="#invalid">Invalid Documents</a></li>
+ <li><a href="#not-wf">Not-WF Documents</a></li>
+ <li><a href="#error">Optional Errors</a></li>
+ </ol>
+ <li><a href="#contrib">Contributors</a></li>
+ </ol>
+ <a name="intro"/>
+ <h2>1. Introduction </h2>
+ <p> The <i>OASIS</i> XML Conformance Subcommittee is concerned with
+ improving the quality of XML processors. The tests described in this
+ document provide a set of metrics to determine how well a
+ particular implementation conforms to the
+ <a href="http://www.w3.org/TR/REC-xml">W3C XML 1.0 (Second Edition) Recommendation </a>.
+ The XML Conformance Test Suite is intended
+ to complement the W3C XML 1.0 (Second Edition) Recommendation. All interpretations of
+ this Recommendation are subject to confirmation by the
+ <a href="http://www.w3.org/XML/Activity.html">W3C XML Coordination Group</a>.
+ </p>
+ <p>
+ Conformance tests can be used by developers, content creators, and
+ users alike to increase their level of confidence in product quality. In
+ circumstances where interoperability is necessary, these tests can also
+ be used to determine that differing implementations support the same set
+ of features. </p>
+
+ <p>This report provides supporting documentation for all of the tests
+ contributed by members of the <i>OASIS</i> XML Conformance Subcommittee.
+ Sources from which these tests have been collected
+ include: <em>
+ <xsl:for-each select="./TESTCASES">
+ <xsl:value-of select="@PROFILE"/>;
+ </xsl:for-each>
+ </em>. Although the tests came from a variety of sources, the actual test
+ descriptions and references back to the recommendation were in many instances
+ added by members of this subcommittee. It is anticipated that this report
+ will supplement the actual tests, which are available from
+ <a href="http://www.oasis-open.org/committees/xml-conformance/xml-test-suite.html">
+ http://www.oasis-open.org/committees/xml-conformance/xml-test-suite.html</a>.</p>
+
+ <p>Comments/suggestions should be
+ forwarded to the XML Conformance Subcommittee Chair, Mary Brady <a href="mailto:[email protected]">&lt;[email protected]&gt;</a>.</p>
+
+
+ <a name="matrix"/>
+ <h2>2. Test Matrix </h2>
+
+ <p> Two basic types of test are presented here. These are
+ respectively <em><a href="#binary">Binary Tests</a></em>
+ and <em><a href="#output">Output Tests</a></em>. </p>
+
+ <a name="binary"/>
+ <h3>2.1 Binary Tests </h3>
+
+ <p> <em>Binary</em> conformance tests are documents which
+ are grouped into one of four categories. Given a document
+ in a given category, each kind of XML parser must treat it
+ consistently and either accept it (a <em>positive test</em>)
+ or reject it (a <em>negative test</em>). It is in that sense
+ that the tests are termed "binary". The XML 1.0 (Second Edition) Recommendation
+ talks in terms of two types of XML processor:
+ <em>validating</em> ones, and <em>nonvalidating</em> ones.
+ There are two differences between these types of processors: </p>
+
+ <ol>
+ <li> Validating processors check special productions that
+ nonvalidating parsers don't, called <em>validity
+ constraints</em>. (Both must check a basic set of productions,
+ requiring XML documents to be <em>well formed</em>.) </li>
+
+ <li> Nonvalidating processors are permitted to not
+ include <em>external entities</em>, such as files with
+ text. Accordingly, they may not report errors which
+ would have been detected had those entities been read.</li>
+ </ol>
+
+ <p> There are two types of such entity, <em>parameter
+ entities</em> holding definitions which affect validation
+ and other processing; and <em>general entities</em> which
+ hold marked up text. It will be appreciated that there are
+ then five kinds of XML processor: validating processors,
+ and four kinds of nonvalidating processor based on the
+ combinations of external entity which they include.</p>
+
+ <center>
+ <table border="1" bgcolor="#ffffff" cellpadding="4">
+
+ <caption>
+ <b>Basic XML Parsing Test Matrix</b><br/>
+ Test Document Type v. Parser Type
+ </caption>
+
+ <tr bgcolor="#ffffcc">
+ <th widthH="5%" rowspan="2">&#160;</th>
+ <th widthH="20%" colspan="2">Nonvalidating</th>
+ <th widthH="5%" rowspan="2">Validating</th>
+ </tr>
+
+ <tr bgcolor="#ffffcc">
+ <th>External Entities<br/>Ignored (3 cases)</th>
+ <th>External Entities<br/>Read</th>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Valid Documents</th>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Invalid Documents</th>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Non-WF Documents</th>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">WF Errors tied<br/>
+ to External Entity</th>
+ <td align="center"><b>accept</b><br/>(varies)</td>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Documents with<br/> Optional Errors</th>
+ <td align="center">(not specified)</td>
+ <td align="center">(not specified)</td>
+ <td align="center">(not specified)</td>
+ </tr>
+
+ </table>
+ </center>
+
+ <p> At this time, the XML community primarily uses parsers
+ which are in the rightmost two columns of this table, calling
+ them <em>Well Formed XML Parsers</em> (or "WF Parsers") and
+ <em>Validating XML Parsers</em>. A second test matrix
+ could be defined to address the variations in the types of
+ of XML processor which do not read all external entities.
+ That additional matrix is not provided here at this time. </p>
+
+
+ <a name="output"/>
+ <h3>2.2 Output Tests</h3>
+
+ <p> The XML 1.0 (Second Edition) Recommendation places a number of requirements
+ on XML processors, to ensure that they report information to
+ applications as needed. Such requirements are testable.
+ Validating processors are required to report slightly more
+ information than nonvalidating ones, so some tests will
+ require separate output files. Some of the information that
+ must be reported will not be reportable without reading all
+ the external entities in a particular test. Many of the tests for
+ valid documents are paired with an output file to ensure that
+ the XML processor provides the correct information. </p>
+
+ <p>The output of these tests is provided in two forms, as
+ described in <a href="sun/cxml.html">SUN Microsystems XML
+ Canonical Forms</a>. At present, the <em>James Clark</em>
+ collection provides corresponding output in <em>First XML
+ Canonical Form</em>, and the <em>SUN Microsystems</em>
+ collection provides corresponding output in <em>Second XML
+ Canonical Form</em>. When the <a href="http://www.w3.org/XML/">
+ W3C XML Group </a>finalizes its work on Canonical XML, these
+ output files will be updated.
+ </p>
+
+ <a name="listings"/>
+ <h2>3. Test Case Descriptions</h2>
+
+ <p> This section of this report contains descriptions of test
+ cases, each of which fits into the categories noted above.
+ Each test case includes a document of one of the types in the
+ binary test matrix above (e.g. valid or invalid documents).
+ </p>
+
+ <p> In some cases, an <a href="#output">output file </a>, as
+ described in Section 2.2, will also be associated with
+ a valid document, which is used for output testing. If such
+ a file exists, it will be noted at the end of the description
+ of the input document. </p>
+
+ <p> The description for each test case is presented as a two
+ part table. The right part describes what the test does.
+ This description is intended to have enough detail to evaluate
+ diagnostic messages. The left part includes: <ul>
+
+ <li> An entry describing the <em>Sections and/or Rules</em>
+ from the <a href="http://www.w3.org/TR/2000/REC-xml-20001006">
+ XML 1.0 (Second Edition) Recommendation</a> which this case excercises.</li>
+
+ <li> The unique <em>Test ID</em> within a given <em>Collection</em>
+ for this test. </li>
+
+ <li> The <em>Collection</em> from which this test originated.
+ Given the <em>Test ID</em> and the <em>Collection</em>, each
+ test can be uniquely identified. </li>
+
+ <li> Some tests may have a field identifying the kinds of
+ external <em>Entities</em> a nonvalidating processor must
+ include (parameter, general, or both) to be able to
+ detect any errors in that test case. </li>
+
+ </ul></p>
+
+ <p><em>Note that the output format of this report is subject
+ to change. Also, since XSL does not currently support the
+ type of sorting rule necessary to make section numbers like
+ 2.12 appear after 2.2, the ordering is not quite what is
+ desired.</em></p>
+
+ <a name="valid"/>
+ <h3>3.1 Valid XML Documents</h3>
+
+ <p> All conforming <em> XML 1.0 Processors </em> are
+ <b>required</b> to accept valid documents, reporting no
+ errors. In this section of this test report are found
+ descriptions of test cases which fit into this category. </p>
+
+ <xsl:apply-templates select=".// TEST [ @TYPE = 'valid' ]"
+ order-by="@SECTIONS"/>
+
+ <a name="invalid"/>
+ <h3>3.2 Invalid XML Documents</h3>
+
+ <p> All conforming XML 1.0 <em> Validating Processors </em>
+ are <b>required</b> to report recoverable errors in the case
+ of documents which are <em>Invalid</em>. Such errors are
+ violations of some <em>validity constraint (VC)</em>. </p>
+
+ <p> If a validating processor does not report an error when
+ given one of these test cases, or if the error reported is
+ a fatal error, it is not conformant. If the error reported
+ does not correspond to the problem listed in this test
+ description, that could also be a conformance problem; it
+ might instead be a faulty diagnostic. </p>
+
+ <p> All conforming XML 1.0 <em> Nonvalidating Processors </em>
+ should accept these documents, reporting no errors. </p>
+
+ <xsl:apply-templates select=".//TEST[@TYPE='invalid']"
+ order-by="@SECTIONS"/>
+
+ <a name="not-wf"/>
+ <h3>3.3 Documents that are Not Well Formed</h3>
+
+ <p> All conforming XML 1.0 Processors are <b>required</b> to
+ report fatal errors in the case of documents which are not
+ <em>Well Formed</em>. Such errors are basically of two types:
+ <em>(a)</em> the document violates the XML grammar; or else
+ <em>(b)</em> it violates a <em>well formedness constraint
+ (WFC)</em>. There is a single <em>exception to that
+ requirement</em>: nonvalidating processors which do not read
+ certain types of external entities are not required to detect
+ (and hence report) these errors. </p>
+
+ <p> If a processor does not report a fatal error when given
+ one of these test cases, it is not conformant. If the error
+ reported does not correspond to the problem listed in this
+ test description, that could also be a conformance problem;
+ it might instead be a faulty diagnostic. </p>
+
+ <xsl:apply-templates select=".// TEST [ @TYPE = 'not-wf' ]"
+ order-by="@SECTIONS"/>
+
+ <a name="error"/>
+ <h3>3.4 XML Documents with Optional Errors</h3>
+
+ <p> Conforming XML 1.0 Processors are permitted to ignore
+ certain errors, or to report them at user option. In this
+ section of this test report are found descriptions of
+ test cases which fit into this category. </p>
+
+ <p> Processor behavior on such test cases does not affect
+ conformance to the XML 1.0 (Second Edition) Recommendation, except as noted. </p>
+
+ <xsl:apply-templates select=".//TEST[@TYPE='error']"
+ order-by="@SECTIONS"/>
+
+ <a name="contrib"/>
+ <h3>4. Contributors (Non-normative)</h3>
+
+ <p> A team of volunteer members have participated in the
+ development of this work. Contributions have come from:
+ </p>
+ <ul>
+ <li>Murry Altheim, Sun Microsystems</li>
+ <li>Mary Brady, NIST</li>
+ <li>Tim Boland, NIST</li>
+ <li>David Brownell, Sun Microsystems</li>
+ <li>James Clark</li>
+ <li>Karin Donker, IBM</li>
+ <li>Irina Golfman, Inera Incorporated</li>
+ <li>Tony Graham, Mulberry Technologies</li>
+ <li>G. Ken Holman, Crane Softwrights Ltd</li>
+ <li>Alex Milowski, Veo Systems, Inc</li>
+ <li>Makota Murata, Fuji Xerox</li>
+ <li>Miles O'Reilly, Microstar Software, Ltd</li>
+ <li>Matt Timmermans, Microstar Software, Ltd</li>
+ <li>Richard Rivello, NIST</li>
+ <li>Lynne Rosenthal, NIST</li>
+ <li>Brian Schellar, Chrystal Software</li>
+ <li>Bill Smith, Sun Microsystems</li>
+ <li>Trevor Veary, Software AG</li>
+ <li>Eric Ye, IBM</li>
+ </ul>
+ <p>End</p>
+
+ </body></html>
+ </xsl:template>
+
+ <xsl:template match="TEST">
+ <table width="100%">
+ <tr valign="top">
+ <td width='40%'><table bgcolor='#eeeeff'
+ border='1' width='100%' height="100%">
+ <tr>
+ <td width='50%'><b>Sections [Rules]:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="@SECTIONS"/></td>
+ </tr>
+ <tr valign="top">
+ <td width='50%'><b>Test ID:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="@ID"/></td>
+ </tr>
+ <xsl:if test=".[not ( @ENTITIES = 'none')
+ and ( @TYPE = 'not-wf' )]">
+ <tr valign="top">
+ <td width='50%'><b>Entities:</b></td>
+ <td bgcolor='#ffffcc'><font color='blue'>
+ <xsl:value-of select="@ENTITIES"/>
+ </font></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="../@PROFILE">
+ <tr valign="top">
+ <td width='50%'><b>Collection:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="../@PROFILE"/>
+ </td>
+ </tr>
+ </xsl:if>
+ </table></td>
+ <td bgcolor='#ccffff'>
+ <p><xsl:apply-templates/></p>
+ <xsl:if test="@OUTPUT | @OUTPUT3">
+ <p>There is an output test associated with this
+ input file.</p>
+ </xsl:if>
+ </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+ <!-- XT takes 'B|EM' and xsl:copy, IE5b2 doesn't -->
+ <xsl:template match="EM">
+ <em><xsl:apply-templates/></em>
+ </xsl:template>
+ <xsl:template match="B">
+ <b><xsl:apply-templates/></b>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/lib/xmerl/test/xmlconformance.xsl b/lib/xmerl/test/xmlconformance.xsl
new file mode 100644
index 0000000000..fd1acb3d82
--- /dev/null
+++ b/lib/xmerl/test/xmlconformance.xsl
@@ -0,0 +1,498 @@
+<?xml version='1.0'?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+<<<<<<< conformance.xsl
+ Original version copyright 1999 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+ Modifications copyright 2001 by OASIS.
+ Modifications copyright 2002 by W3C.
+=======
+ XSL Stylesheet for documenting XML conformance tests.
+ Tested against LOTUS Xalan processor.
+>>>>>>> 1.3
+
+ XSL 2001-03-15 Stylesheet for documenting XML conformance tests.
+
+ This expects to be run on a document matching the DTD that Sun
+ defined for merging collections of self-descriptive XML tests.
+
+ Since all those collections will have (by design) the same test
+ architecture, this includes boilerplate describing that design,
+ to be used by all test documentation.
+
+ ISSUES:
+ - Sorting is a bit odd; section numbers can are like "3.3.3"
+ rather than straight numbers, so numeric sort can't work,
+ and yet neither does text sort (2.12 should be after 2.2).
+-->
+
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:output method="html" indent="yes"/>
+
+ <!-- ROOT: write an HTML wrapper -->
+ <xsl:template match="/TESTSUITE">
+ <!-- XHTML namespace -->
+
+ <html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <title> XML Conformance Tests </title>
+ <meta http-equiv="Content-Type"
+ content="text/html;charset=utf-8"/>
+ <style type="text/css">
+
+ tr.premiere { background-color: #BEDCE6; }
+
+ th { text-align: left; vertical-align: top }
+
+ .editor { color: red; }
+
+ .countdown { color: white; background-color: red; }
+
+ blockquote, q { font-family: Arial, Helvetica, sans-serif; }
+
+ .quote { font-family: Arial, Helvetica, sans-serif; }
+
+ pre.quote { margin-left: 2.5em; }
+
+ ol.quote { font-family: Arial, Helvetica, sans-serif; margin-left: 3em; }
+
+ .diff-add { background-color: yellow; }
+
+ .diff-chg { background-color: lime; }
+
+ .diff-del { text-decoration: line-through; }
+
+ </style>
+
+ </head><body bgcolor='#ffffff'>
+ <p><a href="http://www.w3.org/"><img src="http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/files/w3c_home.gif"
+
+ alt="W3C" height="48" width="72" border="0"/></a><a href="http://www.w3.org/Architecture/"
+
+ rel="in-domain"><img src="http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/files/arquitecture.bmp" alt="Architecture Domain" border="0"/></a> <a
+
+ href="../" rel="in-area"> XML</a> | <a href="/Member/#confidential">Member-Confidential!</a></p>
+
+ <h1 align="center">XML 1.0 (Second Edition) errata 20020320,</h1>
+ <h1 align="center">W3C Conformance Test Suite 20020606</h1> <dl>
+
+
+ <dt><b>This version:</b></dt>
+ <dd><ul>
+ <li><p><a href="xmlconf-20020606.htm">
+ http://www.w3.org/XML/Test/xmlconf-20020606.htm</a>
+ (<a href="xmlconf-20020606.xml">XML</a>)</p>
+ </li>
+ </ul>
+ </dd>
+
+ <dt><b>Current Version:</b></dt>
+ <dd>
+ <ul>
+ <li><p><a href="xmlconf-20020606.xml">
+ http://www.w3.org/XML/Test/xmlconf-20020606.xml</a></p></li>
+ </ul>
+ </dd>
+
+ <dt><b>Previous Version:</b></dt>
+ <dd>
+ <ul>
+ <li><p><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm</a>
+ (<a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.xml">XML</a>)</p></li>
+ </ul>
+ </dd>
+
+ <dt><b>Test Archive:</b></dt>
+ <dd><ul>
+ <li><p><a href="xmlts20020606.zip">http://www.w3.org/XML/Test/xmlts20020606.zip</a>
+ </p></li>
+ <li><p><a href="xmlts20020606.tar">http://www.w3.org/XML/Test/xmlts20020606.tar</a>
+ </p></li>
+ </ul></dd>
+
+ <dt><b>W3C XML Core Working Group:</b></dt>
+ <dd><ul><li><p><a href="http://www.w3.org/XML/Group/Core">http://www.w3.org/XML/Group/Core</a>
+ </p></li></ul></dd>
+
+ <dt><b>Comments:</b></dt>
+ <dd><ul><li>Sandra I. Martinez, NIST <a href="mailto:[email protected]"> [email protected]</a>
+ </li></ul></dd>
+
+ </dl>
+
+ <a name="contents"/>
+ <h2>Table of Contents</h2>
+ <ol >
+ <li><a href="#intro">Introduction</a></li>
+ <li><a href="#matrix">Test Matrix</a></li>
+ <ol >
+ <li ><a href="#binary">Binary Tests</a></li>
+ <li><a href="#output">Output Tests</a></li>
+ </ol>
+ <li><a href="#listings">Test Case Descriptions</a></li>
+ <ol >
+ <li><a href="#valid">Valid Documents</a></li>
+ <li><a href="#invalid">Invalid Documents</a></li>
+ <li><a href="#not-wf">Not-WF Documents</a></li>
+ <li><a href="#error">Optional Errors</a></li>
+ </ol>
+ <li><a href="#contrib">Contributors</a></li>
+ </ol>
+ <a name="intro"/>
+ <h2>1. Introduction </h2>
+ <p>
+ The tests described in this document provide an initial set of metrics to determine how well a
+ particular implementation conforms to the
+ <a href="http://www.w3.org/TR/REC-xml">W3C XML 1.0 (Second Edition) Recommendation</a>.
+ The XML Conformance Test Suite is intended
+ to complement the W3C XML 1.0 (Second Edition) Recommendation. All interpretations
+ of this Recommendation are subject to confirmation by the
+ <a href="http://www.w3.org/XML/">
+ W3C XML Group </a>.
+ </p>
+ <p>
+ Conformance tests can be used by developers, content creators, and
+ users alike to increase their level of confidence in product quality. In
+ circumstances where interoperability is necessary, these tests can also
+ be used to determine that differing implementations support the same set
+ of features. </p>
+
+ <p>The XML Test Suite was transferred from OASIS to W3C and is being augmented to reflect the
+ current work of the W3C XML Core Working Group, including
+ <a href="http://www.w3.org/XML/Group/2002/02/xml10-test-suite-issues">resolved issues</a> related to the
+ Recommendation and published Errata. This report provides supporting documentation for all the tests included in
+ the test suite. Sources from which these tests have been collected
+ include: <em>
+ <xsl:for-each select="TESTCASES">
+ <xsl:value-of select="@PROFILE"/>
+ <xsl:text>; </xsl:text>
+ </xsl:for-each>
+ </em>. </p>
+
+ <a name="matrix"/>
+ <h2>2. Test Matrix </h2>
+
+ <p> Two basic types of test are presented here. These are
+ respectively <em><a href="#binary">Binary Tests</a></em>
+ and <em><a href="#output">Output Tests</a></em>. </p>
+
+ <a name="binary"/>
+ <h3>2.1 Binary Tests </h3>
+
+ <p> <em>Binary</em> conformance tests are documents which
+ are grouped into one of four categories. Given a document
+ in a given category, each kind of XML parser must treat it
+ consistently and either accept it (a <em>positive test</em>)
+ or reject it (a <em>negative test</em>). It is in that sense
+ that the tests are termed "binary". The XML 1.0 (Second Edition) Recommendation
+ talks in terms of two types of XML processor:
+ <em>validating</em> ones, and <em>nonvalidating</em> ones.
+ There are two differences between these types of processors: </p>
+
+ <ol>
+ <li> Validating processors check special productions that
+ nonvalidating parsers don't, called <em>validity
+ constraints</em>. (Both must check a basic set of productions,
+ requiring XML documents to be <em>well formed</em>.) </li>
+
+ <li> Nonvalidating processors are permitted to not
+ include <em>external entities</em>, such as files with
+ text. Accordingly, they may not report errors which
+ would have been detected had those entities been read.</li>
+ </ol>
+
+ <p> There are two types of such entity, <em>parameter
+ entities</em> holding definitions which affect validation
+ and other processing; and <em>general entities</em> which
+ hold marked up text. It will be appreciated that there are
+ then five kinds of XML processor: validating processors,
+ and four kinds of nonvalidating processor based on the
+ combinations of external entity which they include.</p>
+
+ <center>
+ <table border="1" bgcolor="#ffffff" cellpadding="4">
+
+ <caption>
+ <b>Basic XML Parsing Test Matrix</b><br/>
+ Test Document Type v. Parser Type
+ </caption>
+
+ <tr bgcolor="#ffffcc">
+ <th widthH="5%" rowspan="2"><xsl:text> </xsl:text></th>
+ <th widthH="20%" colspan="2">Nonvalidating</th>
+ <th widthH="5%" rowspan="2">Validating</th>
+ </tr>
+
+ <tr bgcolor="#ffffcc">
+ <th>External Entities<br/>Ignored (3 cases)</th>
+ <th>External Entities<br/>Read</th>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Valid Documents</th>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Invalid Documents</th>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Non-WF Documents</th>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">WF Errors tied<br/>
+ to External Entity</th>
+ <td align="center"><b>accept</b><br/>(varies)</td>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Documents with<br/> Optional Errors</th>
+ <td align="center">(not specified)</td>
+ <td align="center">(not specified)</td>
+ <td align="center">(not specified)</td>
+ </tr>
+
+ </table>
+ </center>
+
+ <p> At this time, the XML community primarily uses parsers
+ which are in the rightmost two columns of this table, calling
+ them <em>Well Formed XML Parsers</em> (or "WF Parsers") and
+ <em>Validating XML Parsers</em>. A second test matrix
+ could be defined to address the variations in the types of
+ of XML processor which do not read all external entities.
+ That additional matrix is not provided here at this time. </p>
+
+
+ <a name="output"/>
+ <h3>2.2 Output Tests</h3>
+
+ <p> The XML 1.0 (Second Edition) Recommendation places a number of requirements
+ on XML processors, to ensure that they report information to
+ applications as needed. Such requirements are testable.
+ Validating processors are required to report slightly more
+ information than nonvalidating ones, so some tests will
+ require separate output files. Some of the information that
+ must be reported will not be reportable without reading all
+ the external entities in a particular test. Many of the tests for
+ valid documents are paired with an output file as the canonical
+ representation of the input file, to ensure that the XML
+ processor provides the correct information. </p>
+
+ <a name="listings"/>
+ <h2>3. Test Case Descriptions</h2>
+
+ <p> This section of this report contains descriptions of test
+ cases, each of which fits into the categories noted above.
+ Each test case includes a document of one of the types in the
+ binary test matrix above (e.g. valid or invalid documents).
+ </p>
+
+ <p> In some cases, an <a href="#output">output file </a>, as
+ described in Section 2.2, will also be associated with
+ a valid document, which is used for output testing. If such
+ a file exists, it will be noted at the end of the description
+ of the input document. </p>
+
+ <p> The description for each test case is presented as a two
+ part table. The right part describes what the test does.
+ This description is intended to have enough detail to evaluate
+ diagnostic messages. The left part includes: <ul>
+
+ <li> An entry describing the <em>Sections and/or Rules</em>
+ from the <a href="http://www.w3.org/TR/2000/REC-xml-20001006">
+ XML 1.0 (Second Edition) Recommendation</a> which this case excercises.</li>
+
+ <li> The unique <em>Test ID</em> within a given <em>Collection</em>
+ for this test. </li>
+
+ <li> The <em>Collection</em> from which this test originated.
+ Given the <em>Test ID</em> and the <em>Collection</em>, each
+ test can be uniquely identified.</li>
+
+ <li> Some tests may have a field identifying the kinds of
+ external <em>Entities</em> a nonvalidating processor must
+ include (parameter, general, or both) to be able to
+ detect any errors in that test case. </li>
+
+ </ul></p>
+
+ <a name="valid"/>
+ <h3>3.1 Valid XML Documents</h3>
+
+ <p> All conforming <em> XML 1.0 Processors </em> are
+ <b>required</b> to accept valid documents, reporting no
+ errors. In this section of this test report are found
+ descriptions of test cases which fit into this category. </p>
+
+ <xsl:apply-templates select="//TEST[@TYPE='valid']">
+ <xsl:sort select="@SECTIONS"/>
+ </xsl:apply-templates>
+
+ <a name="invalid"/>
+ <h3>3.2 Invalid XML Documents</h3>
+
+ <p> All conforming XML 1.0 <em> Validating Processors </em>
+ are <b>required</b> to report recoverable errors in the case
+ of documents which are <em>Invalid</em>. Such errors are
+ violations of some <em>validity constraint (VC)</em>. </p>
+
+ <p> If a validating processor does not report an error when
+ given one of these test cases, or if the error reported is
+ a fatal error, it is not conformant. If the error reported
+ does not correspond to the problem listed in this test
+ description, that could also be a conformance problem; it
+ might instead be a faulty diagnostic. </p>
+
+ <p> All conforming XML 1.0 <em> Nonvalidating Processors </em>
+ should accept these documents, reporting no errors. </p>
+
+ <xsl:apply-templates select="//TEST[@TYPE='invalid']">
+ <xsl:sort select="@SECTIONS"/>
+ </xsl:apply-templates>
+
+ <a name="not-wf"/>
+ <h3>3.3 Documents that are Not Well Formed</h3>
+
+ <p> All conforming XML 1.0 Processors are <b>required</b> to
+ report fatal errors in the case of documents which are not
+ <em>Well Formed</em>. Such errors are basically of two types:
+ <em>(a)</em> the document violates the XML grammar; or else
+ <em>(b)</em> it violates a <em>well formedness constraint
+ (WFC)</em>. There is a single <em>exception to that
+ requirement</em>: nonvalidating processors which do not read
+ certain types of external entities are not required to detect
+ (and hence report) these errors. </p>
+
+ <p> If a processor does not report a fatal error when given
+ one of these test cases, it is not conformant. If the error
+ reported does not correspond to the problem listed in this
+ test description, that could also be a conformance problem;
+ it might instead be a faulty diagnostic. </p>
+
+ <xsl:apply-templates select="//TEST[@TYPE='not-wf']">
+ <xsl:sort select="@SECTIONS"/>
+ </xsl:apply-templates>
+
+ <a name="error"/>
+ <h3>3.4 XML Documents with Optional Errors</h3>
+
+ <p> Conforming XML 1.0 Processors are permitted to ignore
+ certain errors, or to report them at user option. In this
+ section of this test report are found descriptions of
+ test cases which fit into this category. </p>
+
+ <p> Processor behavior on such test cases does not affect
+ conformance to the XML 1.0 (Second Edition) Recommendation, except as noted. </p>
+
+ <xsl:apply-templates select="//TEST[@TYPE='error']">
+ <xsl:sort select="@SECTIONS"/>
+ </xsl:apply-templates>
+
+ <a name="contrib"/>
+ <h3>4. Contributors (Non-normative)</h3>
+
+ <p> A team of volunteer members have participated in the
+ development of this work. Contributions have come from:
+ </p>
+ <ul>
+ <li>Murry Altheim, Sun Microsystems</li>
+ <li>Mary Brady, NIST</li>
+ <li>Tim Boland, NIST</li>
+ <li>David Brownell, Sun Microsystems</li>
+ <li>James Clark</li>
+ <li>Karin Donker, IBM</li>
+ <li>Irina Golfman, Inera Incorporated</li>
+ <li>Tony Graham, Mulberry Technologies</li>
+ <li>G. Ken Holman, Crane Softwrights Ltd</li>
+ <li>Alex Milowski, Veo Systems, Inc</li>
+ <li>Makota Murata, Fuji Xerox</li>
+ <li>Miles O'Reilly, Microstar Software, Ltd</li>
+ <li>Matt Timmermans, Microstar Software, Ltd</li>
+ <li>Richard Rivello, NIST</li>
+ <li>Lynne Rosenthal, NIST</li>
+ <li>Brian Schellar, Chrystal Software</li>
+ <li>Bill Smith, Sun Microsystems</li>
+ <li>Trevor Veary, Software AG</li>
+ <li>Richard Tobin, University of Edinburgh</li>
+ <li>Jonathan Marsh, Microsoft </li>
+ <li>Daniel Veillard, Imaq</li>
+ <li>Jonathan Marsh, Microsoft</li>
+ <li>Paul Grosso, Arbortext</li>
+
+ </ul>
+
+ <p>End</p>
+ </body></html>
+ </xsl:template>
+
+ <xsl:template match="TEST">
+ <table width="100%">
+ <tr valign="top">
+ <td width='40%'><table bgcolor='#eeeeff'
+ border='1' width='100%' height="100%">
+ <tr>
+ <td width='50%'><b>Sections [Rules]:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="@SECTIONS"/></td>
+ </tr>
+ <tr valign="top">
+ <td width='50%'><b>Test ID:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="@ID"/></td>
+ </tr>
+ <xsl:if test="not ( @ENTITIES = 'none')
+ and ( @TYPE = 'not-wf' )">
+ <tr valign="top">
+ <td width='50%'><b>Entities:</b></td>
+ <td bgcolor='#ffffcc'><font color='blue'>
+ <xsl:value-of select="@ENTITIES"/>
+ </font></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="../@PROFILE">
+ <tr valign="top">
+ <td width='50%'><b>Collection:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="../@PROFILE"/>
+ </td>
+ </tr>
+ </xsl:if>
+ </table></td>
+ <td bgcolor='#ccffff'>
+ <p>
+ <xsl:apply-templates/></p>
+ <xsl:if test="@OUTPUT | @OUTPUT3">
+ <p>There is an output test associated with this
+ input file.</p>
+ </xsl:if>
+ </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+ <!-- XT takes 'B|EM' and xsl:copy, IE5b2 doesn't -->
+ <xsl:template match="EM">
+ <em><xsl:apply-templates/></em>
+ </xsl:template>
+ <xsl:template match="B">
+ <b><xsl:apply-templates/></b>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/lib/xmerl/vsn.mk b/lib/xmerl/vsn.mk
index 280ff10efa..965a0ae7b4 100644
--- a/lib/xmerl/vsn.mk
+++ b/lib/xmerl/vsn.mk
@@ -1 +1 @@
-XMERL_VSN = 1.2.8
+XMERL_VSN = 1.2.9
diff --git a/make/otp.mk.in b/make/otp.mk.in
index bf287be416..a4e9dad46f 100644
--- a/make/otp.mk.in
+++ b/make/otp.mk.in
@@ -4,7 +4,7 @@
#
# %CopyrightBegin%
#
-# Copyright Ericsson AB 1997-2010. All Rights Reserved.
+# Copyright Ericsson AB 1997-2011. All Rights Reserved.
#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
@@ -240,9 +240,10 @@ FOP = @FOP@
DOCGEN=$(ERL_TOP)/lib/erl_docgen
SPECS_ESRC = ../../src
+SPECS_EXTRACTOR=$(DOCGEN)/priv/bin/specs_gen.escript
# Extract specifications and types from Erlang source files (-spec, -type)
$(SPECDIR)/specs_%.xml: $(SPECS_ESRC)/%.erl
- escript $(DOCGEN)/priv/bin/specs_gen.escript $(SPECS_FLAGS) -o$(dir $@) $<
+ escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) -o$(dir $@) $<
$(MAN1DIR)/%.1: %.xml